nicholasKluge commited on
Commit
d7becd3
1 Parent(s): 7aa74a2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -24
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 é `Aira`?
65
 
66
- [`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 `instruction-tuning` e `RLHF`. 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.
67
 
68
  ## Limitações
69
 
70
- Desenvolvemos os nossos chatbots de conversação de domínio aberto através de ajuste fino por instruções. 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 dois dos problemas mais comuns quando lidando com modelos generativos utilizados em aplicações de conversação:
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
- `Aira` destina-se apenas à investigação academica. Para mais informações, leia nossa [carta modelo](https://huggingface.co/nicholasKluge/Aira-2-portuguese-124M) para ver como desenvolvemos `Aira`.
81
 
82
  ## Como essa demo funciona?
83
 
84
- 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.
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 da Aira em que um determinado prompt ou conclusão se assemelha a uma instrução. 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 cinco instâncias mais semelhantes no conjunto de dados da Aira para cada consulta de pesquisa.
91
 
92
- Os usuários podem usar isso 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.
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 por `Aira`, por favor contatar [[email protected]](mailto:[email protected]).
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: