CarlosAGDev commited on
Commit
04a05bc
·
verified ·
1 Parent(s): 9ed2463

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +98 -80
README.md CHANGED
@@ -12,104 +12,122 @@ tags:
12
 
13
  # CarlosAGDev/ltv-lora-qa
14
 
15
- LoRA-QA (v0.1.0) del LTV Framework. Genera 2-4 sub-preguntas atomicas y
16
- auto-contenidas para verificar una afirmacion check-worthy clasificada. Tercer
17
- paso del pipeline de Triage, despues de LoRA-CW y LoRA-CLF.
 
 
 
 
 
 
 
 
 
18
 
19
  ## Formato de salida
20
 
21
  ```json
22
  {
23
  "questions": [
24
- {"question": "...", "answer_type": "Boolean"},
25
- {"question": "...", "answer_type": "Extractive"}
26
  ]
27
  }
28
  ```
29
 
30
- `answer_type` puede ser: `Boolean`, `Extractive`, o `Abstractive`.
31
 
32
  ## Detalles del Entrenamiento
33
 
34
- Entrenado sobre anotaciones sinteticas generadas por `gemini-3.1-flash-lite`.
35
- Pool balanceado: Event/Property Claim capeado a 500 (de 973 disponibles), split
36
- estratificado por claim_type (15% eval, 85% train).
37
-
38
- | Claim type entrenado | Claims (pool) |
39
- | :--- | :---: |
40
- | Event/Property Claim | 500 (cap desde 973) |
41
- | Numerical Claim | 207 |
42
- | Causal Claim | 12 |
43
- | Position Statement | 8 |
44
- | Quote Verification | 0 (ausente en v0.1) |
45
- | **Total** | **727** |
46
-
47
- ### Hiperparametros
48
- - **Modelo Base:** `google/gemma-4-E2B-it`
49
- - **Max Sequence Length:** `512`
50
- - **Epochs:** `1`
51
- - **Batch Size (Per Device):** `4`
52
- - **Gradient Accumulation Steps:** `4`
53
- - **Learning Rate:** `0.0002`
54
- - **Optimizer:** `paged_adamw_8bit`
55
-
56
- ## Resultados (v0.1.0)
57
 
58
- Evaluado sobre 110 muestras (15% held-out, estratificado por claim_type).
59
- Tiempo de evaluacion: 32m 6s (~17.5 s/ejemplo).
60
 
61
- ### Validez del esquema de salida
 
 
 
 
62
 
63
- | Metrica | Valor |
64
- | :--- | :--- |
65
- | **JSON valido + schema OK** | **110/110 (100%)** |
66
- | **Fallos de parseo** | **0** |
67
 
68
- ### Validez por claim_type
69
 
70
- | Claim type | Validos / Total | % |
71
  | :--- | :---: | :---: |
72
- | Event/Property Claim | 76/76 | 100% |
73
- | Numerical Claim | 31/31 | 100% |
74
- | Causal Claim | 2/2 | 100% |
75
- | Position Statement | 1/1 | 100% |
76
 
77
- ### Distribucion de n_questions (Referencia vs Generado)
78
 
79
- | n preguntas | Referencia | Generado |
80
- | :---: | :---: | :---: |
81
- | 2 | 14 | 2 |
82
- | 3 | 92 | **107** |
83
- | 4 | 4 | 1 |
84
-
85
- ### Distribucion de answer_type (Referencia vs Generado)
86
-
87
- | answer_type | Ref count | Ref % | Gen count | Gen % |
88
- | :--- | :---: | :---: | :---: | :---: |
89
- | Boolean | 130 | 40.6% | 127 | 38.6% |
90
- | Extractive | 146 | 45.6% | 171 | **52.0%** |
91
- | Abstractive | 44 | 13.8% | 31 | 9.4% |
92
-
93
- ### Notas de comportamiento
94
-
95
- - **Generacion perfecta en v0.1:** el modelo produce JSON valido y schema-correcto en
96
- el 100% de los casos evaluados, para los 4 tipos de claim disponibles.
97
- - **Preferencia por 3 preguntas:** el modelo genera 3 sub-preguntas en el 97% de los
98
- casos (referencia: 84%), colapsando los extremos (2 y 4 preguntas se usan mucho menos).
99
- Para la mayoria de afirmaciones esto es correcto, pero puede infragenerar preguntas
100
- para claims complejos que merecen 4.
101
- - **Sesgo Extractive / falta de Abstractive:** genera Extractive un 6% mas de lo esperado
102
- (52% vs 45.6%) y Abstractive un 4% menos (9.4% vs 13.8%). El modelo favorece preguntas
103
- de hecho concreto sobre preguntas de sintesis o explicacion causal.
104
-
105
- ### Limitaciones y mejoras para v0.2.0
106
-
107
- 1. **Quote Verification ausente:** 0 ejemplos en el batch sintetico actual. Al completar
108
- las 7,440 anotaciones aparecera este tipo. Hasta entonces el modelo no ha aprendido a
109
- generar preguntas para citas textuales.
110
- 2. **Causal y Position muy escasos (12 y 8 claims):** los resultados 100% para estos tipos
111
- son prometedores pero no estadisticamente robustos con 2 y 1 ejemplos de eval.
112
- 3. **Distribucion de n_questions sesgada hacia 3:** agregar ejemplos con 2 y 4 preguntas
113
- equilibrara la distribucion generada.
114
- 4. **Reducir sesgo Extractive:** el batch sintetico completo dara mas ejemplos con
115
- Abstractive (tipicamente en Causal y Position Statement).
 
 
 
 
 
 
 
 
 
 
 
12
 
13
  # CarlosAGDev/ltv-lora-qa
14
 
15
+ LoRA-QA (v0.2.0) del LTV Framework. Genera 2-4 sub-preguntas atomicas y
16
+ auto-contenidas para verificar una afirmacion check-worthy clasificada.
17
+
18
+ ## Mejoras en v0.2.0
19
+
20
+ - **Pool ~6.7x mas grande:** ~4,879 claims con sub-preguntas (vs 727 en v0.1.0),
21
+ re-anotados 100% con prompts v2 por `gemini-3.1-flash-lite`.
22
+ - **Quote Verification presente:** ~290 ejemplos de entrenamiento (0 en v0.1.0).
23
+ - **Sin cap de Event/Property:** la distribucion natural del dataset v2 (E/P ~52%)
24
+ ya esta bajo el 57.8% real de AVeriTeC — no se descarto ningun ejemplo.
25
+ - **Prompts v2:** guia de n_questions (media humana AVeriTeC: 2.6, no colapsar a 3)
26
+ y de answer_type (Boolean con moderacion).
27
 
28
  ## Formato de salida
29
 
30
  ```json
31
  {
32
  "questions": [
33
+ {"question": "...", "answer_type": "Extractive"},
34
+ {"question": "...", "answer_type": "Abstractive"}
35
  ]
36
  }
37
  ```
38
 
39
+ `answer_type`: `Boolean`, `Extractive`, o `Abstractive`.
40
 
41
  ## Detalles del Entrenamiento
42
 
43
+ | Parametro | Valor |
44
+ | :--- | :--- |
45
+ | **Modelo Base** | `google/gemma-4-E2B-it` |
46
+ | **Max Sequence Length** | `512` |
47
+ | **Epochs** | `1` |
48
+ | **Batch Size (Per Device)** | `4` |
49
+ | **Gradient Accumulation** | `4` |
50
+ | **Learning Rate** | `2e-4` |
51
+ | **Optimizer** | `paged_adamw_8bit` |
52
+ | **GPU** | NVIDIA L4 (23.7 GB VRAM) |
53
+ | **Eval set** | 732 claims, estratificado por claim_type |
54
+ | **Tiempo de evaluacion** | 331 min (~27 s/ejemplo, max_new_tokens=300) |
55
+
56
+ ## Resultados (v0.2.0)
57
+
58
+ ### Metricas globales
59
+
60
+ | Metrica | v0.1.0 | v0.2.0 |
61
+ | :--- | :---: | :---: |
62
+ | **JSON valido + schema OK** | 100% (110/110) | 91.0% (666/732) |
63
+ | **Tipos con soporte en eval** | 4 de 5 | **5 de 5** |
64
+ | **Sesgo hacia 3 preguntas** | 97% | 85% |
 
65
 
66
+ ### Distribucion n_questions (eval n=732)
 
67
 
68
+ | n | Referencia | Generado |
69
+ | :---: | :---: | :---: |
70
+ | 2 | 432 (59%) | 92 (14%) |
71
+ | 3 | 287 (39%) | 566 (85%) |
72
+ | 4 | 13 (2%) | 8 (1%) |
73
 
74
+ Media de referencia: **2.43** preguntas/claim (el maestro v2 si adopto la guia del
75
+ prompt). Media generada: **2.87** el adaptador sigue colapsando a 3.
 
 
76
 
77
+ ### Distribucion answer_type
78
 
79
+ | answer_type | Referencia | Generado |
80
  | :--- | :---: | :---: |
81
+ | Boolean | 558 (31.4%) | **74 (3.9%)** |
82
+ | Extractive | 976 (54.9%) | 1471 (76.9%) |
83
+ | Abstractive | 243 (13.7%) | 369 (19.3%) |
 
84
 
85
+ ### Validez por claim_type
86
 
87
+ | Tipo | Validez | Nota |
88
+ | :--- | :---: | :--- |
89
+ | Numerical Claim | 94% (208/222) | |
90
+ | Event/Property Claim | 93% (355/382) | |
91
+ | Causal Claim | 83% (50/60) | |
92
+ | Position Statement | 83% (20/24) | |
93
+ | Quote Verification | **75% (33/44)** | clase nueva — primer entrenamiento |
94
+
95
+ ### Hallazgos principales
96
+
97
+ **Colapso de Boolean (31.4% -> 3.9%) el hallazgo central.** El prompt v2 (presente
98
+ en el turno de usuario de cada ejemplo) instruye "use Boolean sparingly". El adaptador
99
+ sobre-aprendio la instruccion literal en lugar de imitar la distribucion real del
100
+ maestro (que uso Boolean en 31% de sus preguntas). Es un caso de conflicto
101
+ instruccion-vs-demostracion: cuando el prompt dice una cosa y los ejemplos muestran
102
+ otra, el modelo pequeno se ancla a la instruccion.
103
+
104
+ **El sesgo de 3 preguntas persiste (85%).** Mejoro respecto al 97% de v0.1.0, pero el
105
+ maestro v2 se movio a 2 preguntas como moda (59%) y el adaptador no lo siguio. La
106
+ distribucion de salida del adaptador cambia mas lento que la del maestro.
107
+
108
+ **Regresion en validez JSON (100% -> 91%).** Tres factores: eval 6.7x mas grande y
109
+ diverso, clases nuevas dificiles (Quote 75%), y salidas mas variadas. Los fallos se
110
+ concentran en las clases minoritarias (Quote 25% de fallos, Causal/Position 17%).
111
+
112
+ ## Limitaciones conocidas (v0.2.0)
113
+
114
+ - **Boolean casi ausente:** las preguntas si/no (17% del uso humano en AVeriTeC) casi
115
+ no se generan. Para claims tipo Quote Verification ("did X really say this?") el
116
+ Boolean suele ser la pregunta natural su ausencia dana justo a la clase mas debil.
117
+ - **Quote Verification fragil:** 75% de validez con solo 44 ejemplos de eval; los
118
+ fallos de schema se concentran aqui.
119
+ - **Referencia = maestro sintetico:** mide imitacion de `gemini-3.1-flash-lite` con
120
+ prompts v2, no calidad absoluta de las preguntas.
121
+
122
+ ## Mejoras propuestas para v0.3.0
123
+
124
+ 1. **Resolver el conflicto instruccion-demostracion:** alinear la instruccion del
125
+ prompt con la distribucion real del maestro (p. ej. "aim for roughly 1 in 3 Boolean")
126
+ o quitar la guia cuantitativa del prompt de entrenamiento y dejar que los ejemplos
127
+ hablen.
128
+ 2. **Oversampling de Quote Verification y Causal** en train para subir la validez de
129
+ schema en las clases debiles.
130
+ 3. **Inspeccionar los 66 fallos de parseo** (guardarlos en el notebook) para distinguir
131
+ JSON malformado vs schema invalido vs truncamiento por max_new_tokens=300.
132
+ 4. **Acelerar la evaluacion** (27 s/ejemplo es impractico): batched generation o
133
+ vLLM/LoRA para el eval, no para el despliegue.