Instructions to use CarlosAGDev/ltv-lora-qa with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use CarlosAGDev/ltv-lora-qa with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("google/gemma-4-E2B-it") model = PeftModel.from_pretrained(base_model, "CarlosAGDev/ltv-lora-qa") - Notebooks
- Google Colab
- Kaggle
Upload README.md with huggingface_hub
Browse files
README.md
CHANGED
|
@@ -12,104 +12,122 @@ tags:
|
|
| 12 |
|
| 13 |
# CarlosAGDev/ltv-lora-qa
|
| 14 |
|
| 15 |
-
LoRA-QA (v0.
|
| 16 |
-
auto-contenidas para verificar una afirmacion check-worthy clasificada.
|
| 17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
|
| 19 |
## Formato de salida
|
| 20 |
|
| 21 |
```json
|
| 22 |
{
|
| 23 |
"questions": [
|
| 24 |
-
{"question": "...", "answer_type": "
|
| 25 |
-
{"question": "...", "answer_type": "
|
| 26 |
]
|
| 27 |
}
|
| 28 |
```
|
| 29 |
|
| 30 |
-
`answer_type`
|
| 31 |
|
| 32 |
## Detalles del Entrenamiento
|
| 33 |
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
|
| 39 |
-
|
|
| 40 |
-
|
|
| 41 |
-
|
|
| 42 |
-
|
|
| 43 |
-
|
|
| 44 |
-
|
|
| 45 |
-
| **
|
| 46 |
-
|
| 47 |
-
##
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
## Resultados (v0.1.0)
|
| 57 |
|
| 58 |
-
|
| 59 |
-
Tiempo de evaluacion: 32m 6s (~17.5 s/ejemplo).
|
| 60 |
|
| 61 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
| **JSON valido + schema OK** | **110/110 (100%)** |
|
| 66 |
-
| **Fallos de parseo** | **0** |
|
| 67 |
|
| 68 |
-
###
|
| 69 |
|
| 70 |
-
|
|
| 71 |
| :--- | :---: | :---: |
|
| 72 |
-
|
|
| 73 |
-
|
|
| 74 |
-
|
|
| 75 |
-
| Position Statement | 1/1 | 100% |
|
| 76 |
|
| 77 |
-
###
|
| 78 |
|
| 79 |
-
|
|
| 80 |
-
| :---
|
| 81 |
-
|
|
| 82 |
-
|
|
| 83 |
-
|
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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.
|