mdba commited on
Commit
0fc6dee
·
verified ·
1 Parent(s): af199dd

Publica modelo QLoRA mesclado

Browse files
Files changed (1) hide show
  1. README.md +26 -257
README.md CHANGED
@@ -1,257 +1,26 @@
1
- ———
2
-
3
- base_model: Qwen/Qwen2.5-0.5B-Instruct
4
- base_model_relation: finetune
5
- library_name: transformers
6
- language:
7
-
8
- - pt
9
- pipeline_tag: text-generation
10
- metrics:
11
-
12
- - accuracy
13
- tags:
14
-
15
- - qwen
16
- - lora
17
- - merged
18
- - sentiment-analysis
19
- - text-classification
20
- - portuguese
21
- - json-output
22
- license: apache-2.0
23
-
24
- ———
25
-
26
- # EscutIA LoRA
27
-
28
- Modelo especializado em classificação de sentimentos em textos escritos em português.
29
-
30
- O modelo recebe um texto e identifica o sentimento predominante entre três classes:
31
-
32
- - negativo
33
- - neutro
34
- - positivo
35
-
36
- A resposta é produzida como JSON, facilitando sua integração com APIs, pipelines de processamento de linguagem natural e sistemas baseados em agentes.
37
-
38
- ## Visão geral
39
-
40
- Propriedade Valor
41
- ━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
42
- Modelo-base Qwen/Qwen2.5-0.5B-Instruct
43
- ──────────────────────── ──────────────────────────────────────────
44
- Revisão do modelo-base 7ae557604adf67be50417f59c2c2f167def9a775
45
- ──────────────────────── ──────────────────────────────────────────
46
- Idioma principal Português
47
- ──────────────────────── ──────────────────────────────────────────
48
- Técnica de ajuste LoRA
49
- ──────────────────────── ──────────────────────────────────────────
50
- Tarefa Classificação de sentimentos
51
- ──────────────────────── ──────────────────────────────────────────
52
- Classes Negativo, neutro e positivo
53
- ──────────────────────── ──────────────────────────────────────────
54
- Formato de saída JSON
55
- ──────────────────────── ──────────────────────────────────────────
56
- Estado dos pesos LoRA mesclado ao modelo-base
57
- ──────────────────────── ──────────────────────────────────────────
58
- Biblioteca Transformers
59
- ──────────────────────── ──────────────────────────────────────────
60
- Precisão dos pesos FP16
61
-
62
- Este repositório contém o modelo completo após o merge do adapter LoRA. Portanto, não é necessário instalar PEFT nem carregar um adapter separadamente para realizar inferência.
63
-
64
- ## Resultados
65
-
66
- O modelo foi avaliado em um conjunto congelado de 612 amostras, separado para avaliação do projeto.
67
-
68
- Métrica Modelo-base EscutIA LoRA
69
- ━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━ ━━━━━━━━━━━━━━
70
- Acurácia de sentimento 40,20% 64,05%
71
- ────────────────────────── ───────────── ──────────────
72
- Respostas em JSON válido 81,54% 100,00%
73
-
74
- O fine-tuning proporcionou um aumento de aproximadamente 23,85 pontos percentuais na acurácia em relação ao modelo-base.
75
-
76
- Durante a etapa de validação do treinamento, foram observados:
77
-
78
- Métrica Resultado
79
- ━━━━━━━━━━━━ ━━━━━━━━━━━
80
- eval_loss 0,0846
81
- ──────────── ───────────
82
- train_loss 0,0902
83
- ──────────── ───────────
84
- Épocas 2
85
-
86
- > Os resultados representam o conjunto de avaliação utilizado neste projeto e não garantem o mesmo desempenho em outros domínios, estilos de escrita ou distribuições de dados.
87
-
88
- ## Uso recomendado
89
-
90
- O modelo foi treinado para receber instruções no formato conversacional do Qwen. Para obter resultados consistentes, preserve o prompt e utilize geração determinística.
91
-
92
- import json
93
- from transformers import pipeline
94
-
95
- MODEL_ID = "mdba/escutia-lora"
96
-
97
- classificador = pipeline(
98
- task="text-generation",
99
- model=MODEL_ID,
100
- device_map="auto",
101
- )
102
-
103
- texto = "Gostei muito do atendimento, foi excelente!"
104
-
105
- mensagens = [
106
- {
107
- "role": "system",
108
- "content": (
109
- "Você é um roteador de sentimentos. "
110
- "Responda somente com JSON válido no formato "
111
- '{"sentimento":"negativo|neutro|positivo"}.'
112
- ),
113
- },
114
- {
115
- "role": "user",
116
- "content": (
117
- "Classifique o sentimento predominante do texto como negativo, "
118
- "neutro ou positivo e responda somente com um JSON válido no "
119
- 'formato {"sentimento":"<rotulo>"}.\n\n'
120
- f"Texto: {texto}"
121
- ),
122
- },
123
- ]
124
-
125
- resultado = classificador(
126
- mensagens,
127
- max_new_tokens=24,
128
- do_sample=False,
129
- return_full_text=False,
130
- )[0]["generated_text"]
131
-
132
- if isinstance(resultado, list):
133
- resultado = resultado[-1]["content"]
134
-
135
- sentimento = json.loads(resultado)
136
- print(sentimento)
137
-
138
- Saída esperada:
139
-
140
- {
141
- "sentimento": "positivo"
142
- }
143
-
144
- ## Carregamento manual
145
-
146
- Também é possível carregar o modelo e o tokenizer diretamente com Transformers:
147
-
148
- import torch
149
- from transformers import AutoModelForCausalLM, AutoTokenizer
150
-
151
- MODEL_ID = "mdba/escutia-lora"
152
-
153
- tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
154
-
155
- model = AutoModelForCausalLM.from_pretrained(
156
- MODEL_ID,
157
- dtype=torch.float16,
158
- device_map="auto",
159
- )
160
-
161
- ## Formato de resposta
162
-
163
- Quando utilizado com o prompt recomendado, o modelo deve retornar apenas:
164
-
165
- {"sentimento":"positivo"}
166
-
167
- O campo sentimento deve conter um destes valores:
168
-
169
- Valor Interpretação
170
- ━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
171
- negativo Predomínio de insatisfação, tristeza, raiva, rejeição ou crítica
172
- ────────── ──────────────────────────────────────────────────────────────────
173
- neutro Texto informativo, ambíguo ou sem polaridade predominante
174
- ────────── ──────────────────────────────────────────────────────────────────
175
- positivo Predomínio de satisfação, alegria, aprovação ou elogio
176
-
177
- Mesmo com uma taxa de 100% de JSON válido no conjunto avaliado, aplicações em produção devem validar a estrutura e os valores retornados antes de consumi-los.
178
-
179
- ## Treinamento
180
-
181
- O ajuste foi realizado com Supervised Fine-Tuning e LoRA sobre o modelo Qwen/Qwen2.5-0.5B-Instruct.
182
-
183
- ### Configuração principal
184
-
185
- Parâmetro Valor
186
- ━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
187
- Épocas 2
188
- ─────────────────────── ────────────────────────────────
189
- Learning rate 1e-4
190
- ─────────────────────── ────────────────────────────────
191
- Batch por dispositivo 1
192
- ─────────────────────── ────────────────────────────────
193
- Gradient accumulation 8
194
- ─────────────────────── ────────────────────────────────
195
- Comprimento máximo 256 tokens
196
- ─────────────────────── ────────────────────────────────
197
- LoRA rank 8
198
- ─────────────────────── ────────────────────────────────
199
- LoRA alpha 16
200
- ─────────────────────── ────────────────────────────────
201
- LoRA dropout 0,05
202
- ─���───────────────────── ────────────────────────────────
203
- Módulos ajustados q_proj, k_proj, v_proj, o_proj
204
- ─────────────────────── ────────────────────────────────
205
- Scheduler Cosine
206
- ─────────────────────── ────────────────────────────────
207
- Otimizador AdamW
208
- ─────────────────────── ────────────────────────────────
209
- Seed 42
210
-
211
- Após o treinamento, os pesos LoRA foram incorporados ao modelo-base e salvos em FP16.
212
-
213
- ## Casos de uso
214
-
215
- O modelo pode ser utilizado em:
216
-
217
- - classificação de avaliações e comentários;
218
- - análise de feedback de usuários;
219
- - triagem de mensagens;
220
- - monitoramento exploratório de sentimento;
221
- - roteamento de solicitações por polaridade;
222
- - experimentos educacionais com fine-tuning e LoRA.
223
-
224
- ## Limitações
225
-
226
- Este é um modelo experimental e possui limitações importantes:
227
-
228
- - A acurácia observada foi de 64,05%; portanto, classificações incorretas ainda são esperadas.
229
- - Ironia, sarcasmo, humor, negação complexa e mensagens ambíguas podem ser classificados incorretamente.
230
- - Textos muito diferentes dos utilizados no treinamento podem apresentar desempenho inferior.
231
- - O modelo classifica apenas o sentimento predominante e não identifica múltiplos sentimentos simultâneos.
232
- - As classes disponíveis são limitadas a negativo, neutro e positivo.
233
- - O modelo não fornece probabilidades calibradas nem uma medida confiável de confiança.
234
- - Entradas muito longas podem perder informação relevante devido ao limite utilizado durante o treinamento.
235
- - O modelo pode reproduzir vieses presentes no modelo-base ou nos dados de treinamento.
236
-
237
- ## Uso responsável
238
-
239
- Não utilize este modelo como único critério para decisões de alto impacto envolvendo pessoas, incluindo decisões médicas, financeiras, jurídicas, educacionais, trabalhistas ou de
240
- moderação punitiva.
241
-
242
- Em aplicações sensíveis, recomenda-se:
243
-
244
- 1. validar o desempenho com dados representativos do domínio;
245
- 2. manter revisão humana;
246
- 3. monitorar erros por classe e grupo;
247
- 4. registrar entradas, versões e resultados;
248
- 5. implementar tratamento para respostas inválidas ou inesperadas.
249
-
250
- ## Sobre o projeto
251
-
252
- O EscutIA é um projeto de estudo e experimentação com modelos de linguagem, fine-tuning eficiente e classificação estruturada de sentimentos em português.
253
-
254
- Este modelo foi desenvolvido com finalidade educacional e experimental.
255
-
256
- A parte mais importante dessa versão é que ela não tenta vender o modelo como mais preciso do que realmente é: apresenta os 64,05% de acurácia, compara com o modelo-base,
257
- demonstra o prompt correto e explica claramente as limitações. Isso transmite bem mais profissionalismo do que apenas colocar um exemplo que funciona.
 
1
+ ---
2
+ base_model: Qwen/Qwen2.5-1.5B-Instruct
3
+ base_model_relation: finetune
4
+ library_name: transformers
5
+ language:
6
+ - pt
7
+ pipeline_tag: text-generation
8
+ tags:
9
+ - qlora
10
+ - merged
11
+ - sentiment-analysis
12
+ - portuguese
13
+ ---
14
+
15
+ # EscutIA QLoRA
16
+
17
+ Modelo para classificação de sentimentos em português, treinado com QLoRA e mesclado ao modelo-base Qwen/Qwen2.5-1.5B-Instruct.
18
+
19
+ Este repositório contém os pesos completos e pode ser carregado diretamente com transformers; não é necessário aplicar um adapter PEFT separado.
20
+
21
+ Exemplo:
22
+
23
+ from transformers import AutoModelForCausalLM, AutoTokenizer
24
+ model_id = "mdba/escutia-qlora"
25
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
26
+ model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")