CoolFace
Datasetpublic

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.

sourceHugging Facemitupdated 4mo agoView on Hugging Face
0likes17downloads
Dataset Card

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:

ModeloSimilitud media BGE-M3
Qwen2.5-1.5B-Instruct (base)0.9943
Qwen2.5-1.5B + LoRA (este modelo)0.9945
Qwen3-8B + RAG (referencia producción)0.6901
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:

python
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.

ParámetroValor
Modelo baseQwen/Qwen2.5-1.5B-Instruct
DatasetJesusrodriguezf90/chemistry-organometallic-qa
Pares de entrenamiento167
Épocas10
LoRA r32
LoRA alpha64
LoRA dropout0.05
Target modulesq_proj, k_proj, v_proj, o_proj
Quantización4-bit NF4, double quant, compute dtype bfloat16
Batch size efectivo8 (2 × gradientaccumulationsteps=4)
Learning rate5e-4
Warmup ratio0.03
Max seq length512
Loss final0.0000 (overfitting — ver nota en métricas)
HardwareGoogle Colab GPU T4
Tamaño adaptadores73.9MB

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-Instruct ya 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