Jesusrodriguezf90/chem-rag-artifacts
Qwen2.5-1.5B — Fine-tuning QLoRA en Química Organometálica Adaptadores LoRA de Qwen/Qwen2.5-1.5B-Instruct especializados en química organometálica mediante QLoRA sobre el dataset chemistry-organometallic-qa. Componente del pipeline RAG del proyecto chem-rag-assistant. Repositorio: chem-rag-assistant Métricas de evaluación Evaluación cuantitativa sobre 5 preguntas de ground truth usando similitud coseno BGE-M3 como métrica semántica. Comparación entre tres… See the full description on the dataset page: https://huggingface.co/datasets/Jesusrodriguezf90/chem-rag-artifacts.
Qwen2.5-1.5B — Fine-tuning QLoRA en Química Organometálica
Adaptadores LoRA de Qwen/Qwen2.5-1.5B-Instruct especializados en química organometálica mediante QLoRA sobre el dataset chemistry-organometallic-qa. Componente del pipeline RAG del proyecto chem-rag-assistant.
Repositorio: chem-rag-assistant
Métricas de evaluación
Evaluación cuantitativa sobre 5 preguntas de ground truth usando similitud coseno BGE-M3 como métrica semántica. Comparación entre tres aproximaciones:
Nota importante sobre los resultados: la loss final de entrenamiento fue 0.0000, indicando overfitting severo sobre el dataset de entrenamiento. La mejora sobre el modelo base es marginal (+0.0002, +0.0%), lo que indica que los adaptadores LoRA no lograron divergir del comportamiento base con suficiente señal. Con 167 pares de un único paper (PMC10967698), el modelo memorizó el dataset sin generalizar conocimiento nuevo. Esta es una limitación documentada del experimento — no un error técnico. El pipeline RAG con Qwen3-8B sigue siendo la aproximación de producción recomendada para este dominio.Uso
Este modelo requiere cargar el modelo base Qwen/Qwen2.5-1.5B-Instruct y aplicar los adaptadores con PEFT:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import PeftModel
# Configuración de quantización 4-bit — idéntica a la usada en entrenamiento
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
# 1. Cargar modelo base
modelo_base = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2.5-1.5B-Instruct",
quantization_config=bnb_config,
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-1.5B-Instruct")
# 2. Aplicar adaptadores LoRA
modelo = PeftModel.from_pretrained(
modelo_base,
"Jesusrodriguezf90/qwen2.5-1.5b-chemistry-lora",
is_trainable=False,
)
modelo.eval()
# 3. Inferencia
mensajes = [
{"role": "system", "content": "You are an expert in organometallic chemistry."},
{"role": "user", "content": "What metals are used in NHC complexes?"},
]
texto = tokenizer.apply_chat_template(
mensajes,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(texto, return_tensors="pt").to(modelo.device)
with torch.no_grad():
output = modelo.generate(**inputs, max_new_tokens=300)
respuesta = tokenizer.decode(output[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)
print(respuesta)Arquitectura y proceso de fine-tuning
Quantización 4-bit NF4 (BitsAndBytes)
Reduce el modelo de ~6GB en float32 a ~1.5GB en 4-bit para que quepa en una GPU T4 (15GB VRAM). NF4 (Normal Float 4) preserva mejor la distribución estadística de los pesos que int4 estándar. Sin quantización el fine-tuning en T4 gratuita sería inviable.
LoRA — Low-Rank Adaptation (PEFT)
En lugar de entrenar los 1.5B parámetros del modelo completo, añade matrices pequeñas de rango bajo sobre las capas de atención. Solo estas matrices se entrenan — aproximadamente el 1-3% de los parámetros totales. El resultado son 73.9MB de adaptadores en lugar de los ~3GB del modelo completo.
SFTTrainer (TRL)
Aplica automáticamente el chat template de Qwen2.5 a los pares QA en formato messages, garantizando la tokenización correcta para un modelo instruction-tuned.
Dataset
chemistry-organometallic-qa — 167 pares pregunta-respuesta generados automáticamente con un LLM sobre el paper PMC10967698 (química organometálica de complejos NHC con Pd, Pt y Au). Formato messages (system/user/assistant) compatible con el chat template de Qwen2.5.
🔗 Jesusrodriguezf90/chemistry-organometallic-qa
Limitaciones
- Entrenado sobre un único paper (
PMC10967698) — el conocimiento especializado está limitado a ese documento - Loss de entrenamiento 0.0000 indica overfitting severo — el modelo memorizó los 167 pares sin generalizar
- La mejora sobre el modelo base es marginal (+0.0002) —
Qwen2.5-1.5B-Instructya tiene conocimiento químico general suficiente para este dominio - Para uso en producción sobre química organometálica se recomienda el pipeline RAG completo con
Qwen3-8B+ ChromaDB + BGE-M3
Licencia
MIT
