nicholasKluge
commited on
Update app.py
Browse files
app.py
CHANGED
@@ -7,67 +7,51 @@ from sklearn.metrics.pairwise import cosine_similarity
|
|
7 |
from sklearn.feature_extraction.text import TfidfVectorizer
|
8 |
from transformers import AutoTokenizer, AutoModelForCausalLM, AutoModelForSequenceClassification
|
9 |
|
10 |
-
# download the instruct-aira-dataset
|
11 |
dataset = load_dataset("nicholasKluge/instruct-aira-dataset", split='portuguese')
|
12 |
|
13 |
-
# convert the dataset to a pandas dataframe
|
14 |
df = dataset.to_pandas()
|
15 |
|
16 |
-
# rename the columns
|
17 |
df.columns = ['Prompt', 'Completion']
|
18 |
|
19 |
-
# add a column to store the cosine similarity
|
20 |
df['Cosine Similarity'] = None
|
21 |
|
22 |
-
# Load the saved prompt TfidfVectorizer
|
23 |
prompt_tfidf_vectorizer = joblib.load('prompt_vectorizer.pkl')
|
24 |
-
|
25 |
-
# load the prompt tfidf_matrix
|
26 |
prompt_tfidf_matrix = joblib.load('prompt_tfidf_matrix.pkl')
|
27 |
|
28 |
-
# Load the saved completion TfidfVectorizer
|
29 |
completion_tfidf_vectorizer = joblib.load('completion_vectorizer.pkl')
|
30 |
-
|
31 |
-
# load the completion tfidf_matrix
|
32 |
completion_tfidf_matrix = joblib.load('completion_tfidf_matrix.pkl')
|
33 |
|
34 |
-
# specify the model's ids
|
35 |
model_id = "nicholasKluge/Aira-2-portuguese-124M"
|
36 |
rewardmodel_id = "nicholasKluge/RewardModelPT"
|
37 |
toxicitymodel_id = "nicholasKluge/ToxicityModelPT"
|
38 |
|
39 |
-
# specify the device (cuda if available)
|
40 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
41 |
|
42 |
-
# load the models (chatbot, reward model, toxicity model)
|
43 |
model = AutoModelForCausalLM.from_pretrained(model_id)
|
44 |
rewardModel = AutoModelForSequenceClassification.from_pretrained(rewardmodel_id)
|
45 |
toxicityModel = AutoModelForSequenceClassification.from_pretrained(toxicitymodel_id)
|
46 |
|
47 |
-
# set the models to evaluation mode
|
48 |
model.eval()
|
49 |
rewardModel.eval()
|
50 |
toxicityModel.eval()
|
51 |
|
52 |
-
# set the models to the device
|
53 |
model.to(device)
|
54 |
rewardModel.to(device)
|
55 |
toxicityModel.to(device)
|
56 |
|
57 |
-
# load the tokenizers
|
58 |
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
59 |
rewardTokenizer = AutoTokenizer.from_pretrained(rewardmodel_id)
|
60 |
toxiciyTokenizer = AutoTokenizer.from_pretrained(toxicitymodel_id)
|
61 |
|
62 |
|
63 |
intro = """
|
64 |
-
## O que é
|
65 |
|
66 |
-
[
|
67 |
|
68 |
## Limitações
|
69 |
|
70 |
-
Desenvolvemos os nossos chatbots
|
71 |
|
72 |
**Alucinações:** Esse modelo pode produzir conteúdo que pode ser confundido com a verdade, mas que é, de fato, enganoso ou totalmente falso, ou seja, alucinação.
|
73 |
|
@@ -77,25 +61,25 @@ Desenvolvemos os nossos chatbots de conversação de domínio aberto através de
|
|
77 |
|
78 |
## Uso Intendido
|
79 |
|
80 |
-
|
81 |
|
82 |
## Como essa demo funciona?
|
83 |
|
84 |
-
Para esta demonstração, utilizamos o modelo mais leve que treinamos (
|
85 |
"""
|
86 |
|
87 |
search_intro ="""
|
88 |
<h2><center>Explore o conjunto de dados da Aira 🔍</h2></center>
|
89 |
|
90 |
-
Aqui, os usuários podem procurar instâncias no conjunto de dados de ajuste fino
|
91 |
|
92 |
-
Os usuários podem usar
|
93 |
"""
|
94 |
|
95 |
disclaimer = """
|
96 |
**Isenção de responsabilidade:** Esta demonstração deve ser utilizada apenas para fins de investigação. Os moderadores não censuram a saída do modelo, e os autores não endossam as opiniões geradas por este modelo.
|
97 |
|
98 |
-
Se desejar apresentar uma reclamação sobre qualquer mensagem produzida
|
99 |
"""
|
100 |
|
101 |
with gr.Blocks(theme='freddyaboulton/dracula_revamped') as demo:
|
|
|
7 |
from sklearn.feature_extraction.text import TfidfVectorizer
|
8 |
from transformers import AutoTokenizer, AutoModelForCausalLM, AutoModelForSequenceClassification
|
9 |
|
|
|
10 |
dataset = load_dataset("nicholasKluge/instruct-aira-dataset", split='portuguese')
|
11 |
|
|
|
12 |
df = dataset.to_pandas()
|
13 |
|
|
|
14 |
df.columns = ['Prompt', 'Completion']
|
15 |
|
|
|
16 |
df['Cosine Similarity'] = None
|
17 |
|
|
|
18 |
prompt_tfidf_vectorizer = joblib.load('prompt_vectorizer.pkl')
|
|
|
|
|
19 |
prompt_tfidf_matrix = joblib.load('prompt_tfidf_matrix.pkl')
|
20 |
|
|
|
21 |
completion_tfidf_vectorizer = joblib.load('completion_vectorizer.pkl')
|
|
|
|
|
22 |
completion_tfidf_matrix = joblib.load('completion_tfidf_matrix.pkl')
|
23 |
|
|
|
24 |
model_id = "nicholasKluge/Aira-2-portuguese-124M"
|
25 |
rewardmodel_id = "nicholasKluge/RewardModelPT"
|
26 |
toxicitymodel_id = "nicholasKluge/ToxicityModelPT"
|
27 |
|
|
|
28 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
29 |
|
|
|
30 |
model = AutoModelForCausalLM.from_pretrained(model_id)
|
31 |
rewardModel = AutoModelForSequenceClassification.from_pretrained(rewardmodel_id)
|
32 |
toxicityModel = AutoModelForSequenceClassification.from_pretrained(toxicitymodel_id)
|
33 |
|
|
|
34 |
model.eval()
|
35 |
rewardModel.eval()
|
36 |
toxicityModel.eval()
|
37 |
|
|
|
38 |
model.to(device)
|
39 |
rewardModel.to(device)
|
40 |
toxicityModel.to(device)
|
41 |
|
|
|
42 |
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
43 |
rewardTokenizer = AutoTokenizer.from_pretrained(rewardmodel_id)
|
44 |
toxiciyTokenizer = AutoTokenizer.from_pretrained(toxicitymodel_id)
|
45 |
|
46 |
|
47 |
intro = """
|
48 |
+
## O que é Aira?
|
49 |
|
50 |
+
[Aira](https://huggingface.co/nicholasKluge/Aira-2-portuguese-124M) é uma série de chatbots de domínio aberto (português e inglês) obtidos por meio de ajuste fino supervisionado e DPO. Aira-2 é a segunda versão da série Aira. A série Aira foi desenvolvida para ajudar os pesquisadores a explorar os desafios relacionados ao problema de alinhamento.
|
51 |
|
52 |
## Limitações
|
53 |
|
54 |
+
Desenvolvemos os nossos chatbots através de ajuste fino supervisionado e DPO. Esta abordagem tem muitas limitações. Apesar de podermos criar um chatbot capaz de responder a perguntas sobre qualquer assunto, é difícil forçar o modelo a produzir respostas de boa qualidade. E por boa, queremos dizer texto **factual** e **não tóxico**. Isto leva-nos a alguns problemas:
|
55 |
|
56 |
**Alucinações:** Esse modelo pode produzir conteúdo que pode ser confundido com a verdade, mas que é, de fato, enganoso ou totalmente falso, ou seja, alucinação.
|
57 |
|
|
|
61 |
|
62 |
## Uso Intendido
|
63 |
|
64 |
+
Aira destina-se apenas à investigação acadêmica. Para mais informações, leia nossa [carta modelo](https://huggingface.co/nicholasKluge/Aira-2-portuguese-124M).
|
65 |
|
66 |
## Como essa demo funciona?
|
67 |
|
68 |
+
Para esta demonstração, utilizamos o modelo mais leve que treinamos (Aira-2-portuguese-124M). Esta demonstração utiliza um [modelo de recompensa](https://huggingface.co/nicholasKluge/RewardModelPT) e um [modelo de toxicidade](https://huggingface.co/nicholasKluge/ToxicityModelPT) para avaliar a pontuação de cada resposta candidata, considerando o seu alinhamento com a mensagem do utilizador e o seu nível de toxicidade. A função de geração organiza as respostas candidatas por ordem da sua pontuação de recompensa e elimina as respostas consideradas tóxicas ou nocivas. Posteriormente, a função de geração devolve a resposta candidata com a pontuação mais elevada que ultrapassa o limiar de segurança, ou uma mensagem pré-estabelecida se não forem identificados candidatos seguros.
|
69 |
"""
|
70 |
|
71 |
search_intro ="""
|
72 |
<h2><center>Explore o conjunto de dados da Aira 🔍</h2></center>
|
73 |
|
74 |
+
Aqui, os usuários podem procurar instâncias no conjunto de dados de ajuste fino. Para permitir uma pesquisa rápida, usamos a representação Term Frequency-Inverse Document Frequency (TF-IDF) e a similaridade de cosseno para explorar o conjunto de dados. Os vetorizadores TF-IDF pré-treinados e as matrizes TF-IDF correspondentes estão disponíveis neste repositório. Abaixo, apresentamos as dez instâncias mais semelhantes no conjunto de dados de ajuste fino utilizado.
|
75 |
|
76 |
+
Os usuários podem usar essa ferramenta para explorar como o modelo interpola os dados de ajuste fino e se ele é capaz de seguir instruções que estão fora da distribuição de ajuste fino.
|
77 |
"""
|
78 |
|
79 |
disclaimer = """
|
80 |
**Isenção de responsabilidade:** Esta demonstração deve ser utilizada apenas para fins de investigação. Os moderadores não censuram a saída do modelo, e os autores não endossam as opiniões geradas por este modelo.
|
81 |
|
82 |
+
Se desejar apresentar uma reclamação sobre qualquer mensagem produzida pelo modelo, por favor contatar [[email protected]](mailto:[email protected]).
|
83 |
"""
|
84 |
|
85 |
with gr.Blocks(theme='freddyaboulton/dracula_revamped') as demo:
|