Instructions to use HDZ2403/finbot-slm with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use HDZ2403/finbot-slm with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-1.5B-Instruct") model = PeftModel.from_pretrained(base_model, "HDZ2403/finbot-slm") - Transformers
How to use HDZ2403/finbot-slm with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="HDZ2403/finbot-slm")# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("HDZ2403/finbot-slm", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use HDZ2403/finbot-slm with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "HDZ2403/finbot-slm" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "HDZ2403/finbot-slm", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/HDZ2403/finbot-slm
- SGLang
How to use HDZ2403/finbot-slm with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "HDZ2403/finbot-slm" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "HDZ2403/finbot-slm", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "HDZ2403/finbot-slm" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "HDZ2403/finbot-slm", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use HDZ2403/finbot-slm with Docker Model Runner:
docker model run hf.co/HDZ2403/finbot-slm
finbot-slm · Adaptador educativo sobre IA generativa
Adaptador LoRA entrenado para explicar conceptos de IA generativa en español a
ejecutivos de empresas chilenas, con ejemplos de negocio. El nombre solicitado
finbot-slm no implica especialización financiera: el conjunto de entrenamiento
abarca fundamentos de LLM, prompts, RAG, agentes, ajuste fino y evaluación/LLMOps.
Esta tarjeta describe el resultado V4 del taller. Es un adaptador PEFT, que necesita descargar su modelo base; no contiene un modelo completo ni un servicio de inferencia alojado. No se volvió a entrenar para preparar la publicación.
Arquitectura y versión
- Base: Qwen/Qwen2.5-1.5B-Instruct, arquitectura
Qwen2ForCausalLM, 28 capas. - Revisión fijada para inferencia:
989aa7980e4cf806f80c7fef2b1adb7bc71aa306. - Esa revisión es la disponible en la caché del taller y se valida al preparar
la publicación. La revisión histórica exacta no quedó registrada:
adapter_config.jsonoriginal teníarevision=null. - LoRA: rango 16, alpha 32, dropout 0,05, tarea
CAUSAL_LM. - Módulos:
q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj. - Pesos LoRA: 392 tensores float32, 73.911.112 bytes en safetensors.
- SHA-256 del adaptador:
1455ef6f673be8722f5370150ce8c112c860fcc8bf190c109c8a67f5b18d0ef4.
Entrenamiento y datos
Se usó destilación mediante respuestas de referencia y ajuste supervisado de LoRA. El código enmascara los tokens de la pregunta y aprende sobre la respuesta. Los pesos de la base permanecen congelados.
Se verificaron 183 pares únicos de entrenamiento y 12 preguntas de examen. El registro contiene 549 pasos: 183 por época durante tres épocas, coherentes con lote 1. La tokenización con la plantilla del taller retiene los 183 ejemplos y no trunca sus respuestas al aplicar el límite actual de 320 tokens.
El valor n_entrenamiento=180 del código no es el conteo real: la generación
conservó los pares válidos excedentes. No hay preguntas idénticas entre
entrenamiento y examen al normalizar mayúsculas y espacios; no se comprobó
independencia semántica.
No existe config_usada.json. El código actual declara AdamW, tasa inicial
1e-4, weight decay 0, programación coseno con warmup de aproximadamente 5%,
semilla 42 y precisión float32. Estos parámetros proceden del código disponible,
no de una configuración histórica persistida. Los parámetros LoRA sí están
en el checkpoint, y las épocas y pasos en su registro.
El flujo admite profesor y juez por API o simulados. Los artefactos finales no acreditan el identificador exacto y versión del profesor/juez ni los términos de la cuenta de origen. No se atribuye un modelo concreto a esos resultados. Los datasets y las respuestas de referencia quedan fuera de la publicación.
Resultados verificados
Agregaciones recalculadas desde examen_antes.jsonl, examen_despues.jsonl y
entrenamiento_log.jsonl del resultado V4:
| Métrica | Base | Con LoRA |
|---|---|---|
| Nota media histórica, escala 1–10, 12 preguntas | 3,0833 | 6,3333 |
| Respuestas con nota ≥7 | 0/12 (0%) | 5/12 (41,67%) |
| Pérdida del primer / último lote de entrenamiento | 2,5324 | 0,8283 |
Las 12 notas históricas aumentan. La última pérdida no es una pérdida de validación ni una media del entrenamiento. Las medias por época son 2,096937; 1,466003 y 0,970612.
Las evaluaciones históricas usaron un límite de generación de 120 tokens según los scripts y el informe conservado. Hay una comparación posterior con 240 tokens sin nuevas calificaciones. Sus respuestas no heredan las notas de la evaluación original. Las cifras anteriores describen un examen pequeño con un juez cuya identidad histórica no se puede verificar; no son un benchmark externo ni una estimación robusta de generalización.
Uso
Python 3.11 y las versiones verificadas del entorno local:
python -m venv .venv
.venv/bin/python -m pip install torch==2.14.1 transformers==5.18.0 peft==0.21.2 accelerate==1.15.0 safetensors==0.8.0 huggingface-hub==2.3.0 tokenizers==0.23.3
Destino preparado: HDZ2403/finbot-slm (pendiente de publicación).
Después de publicar, sustituye SHA_DEL_COMMIT_PUBLICADO por el commit real
registrado en el informe. La preparación local no crea ese repositorio.
import torch
from peft import PeftConfig, PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "HDZ2403/finbot-slm"
revision = "SHA_DEL_COMMIT_PUBLICADO"
cfg = PeftConfig.from_pretrained(repo, revision=revision)
tokenizer = AutoTokenizer.from_pretrained(
cfg.base_model_name_or_path, revision=cfg.revision, trust_remote_code=False
)
base = AutoModelForCausalLM.from_pretrained(
cfg.base_model_name_or_path, revision=cfg.revision,
dtype=torch.float32, trust_remote_code=False, use_safetensors=True
)
model = PeftModel.from_pretrained(base, repo, revision=revision, is_trainable=False)
model.eval()
messages = [
{"role": "system", "content": "Eres un asistente experto en IA generativa. Responde en español, de forma clara y breve."},
{"role": "user", "content": "Explica qué es RAG y cómo podría usarlo una empresa chilena."},
]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt", add_special_tokens=False)
with torch.inference_mode():
output = model.generate(
**inputs, max_new_tokens=240, do_sample=False, repetition_penalty=1.15,
pad_token_id=tokenizer.pad_token_id or tokenizer.eos_token_id,
eos_token_id=tokenizer.eos_token_id,
)
print(tokenizer.decode(output[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True))
El adaptador ocupa unos 74 MB; los pesos base requieren otros 3,09 GB de descarga. La carga float32 necesita más memoria de trabajo que el tamaño de descarga. No requiere credenciales de OpenAI ni archivos de entrenamiento.
El ejemplo anterior descarga base y adaptador directamente desde el Hub; no necesita código ni datasets del taller. La prueba independiente desde el Hub sigue pendiente de publicación y no se presenta como ya ejecutada.
Limitaciones
Puede producir errores conceptuales, citas inventadas y respuestas incompletas. Una respuesta histórica confunde token con letra; otras contienen explicaciones incorrectas de verificación de fuentes. No incorpora recuperación documental, datos financieros actualizados ni controles de producción.
En la prueba local de preparación también inventó el desarrollo de la sigla RAG y afirmó que LoRA reduce el tamaño del modelo. Se conservan esas respuestas sin editar en el informe: son fallos de contenido, aunque la carga y la generación funcionen. No se les asignó una nueva nota.
El tamaño reducido del conjunto, el posible sesgo del profesor/juez y la falta de una evaluación externa limitan las conclusiones. Generar texto no acredita su calidad. El escaneo de los archivos de publicación no descarta memorización en los pesos. Se recomienda revisión humana para el uso educativo y empresarial.
Licencias y estado de publicación
La licencia oficial de la base
es Apache 2.0; se conserva su texto y atribución en LICENSE_BASE_QWEN y NOTICE.
Los pesos Qwen completos no se redistribuyen en este paquete.
La licencia del adaptador y la autorización sobre los datos siguen pendientes
de confirmación por su titular. La metadata no declara una licencia del
adaptador. La licencia base no demuestra esos derechos. Antes de ejecutar la
subida con la CLI hf, deben revisarse los archivos, aprobarse la publicación,
confirmarse el derecho a distribuir el resultado e incorporarse la licencia
aprobada a esta tarjeta.
Este documento se preparó antes de publicar: no acredita una URL activa ni una validación independiente ya ejecutada. El informe local registra esos estados.
- Downloads last month
- 22