Instructions to use esraderey/chispa-20m-python with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use esraderey/chispa-20m-python with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="esraderey/chispa-20m-python")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("esraderey/chispa-20m-python") model = AutoModelForCausalLM.from_pretrained("esraderey/chispa-20m-python", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use esraderey/chispa-20m-python with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "esraderey/chispa-20m-python" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "esraderey/chispa-20m-python", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/esraderey/chispa-20m-python
- SGLang
How to use esraderey/chispa-20m-python 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 "esraderey/chispa-20m-python" \ --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": "esraderey/chispa-20m-python", "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 "esraderey/chispa-20m-python" \ --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": "esraderey/chispa-20m-python", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use esraderey/chispa-20m-python with Docker Model Runner:
docker model run hf.co/esraderey/chispa-20m-python
CHISPA-20M-python
Modelo diminuto (20.1M parámetros) de completado de línea de Python, entrenado desde cero como laboratorio de la serie de RFC CHISPA. Es un artefacto de investigación, no un asistente de código: completa el resto de una línea; no escribe funciones a partir de un docstring.
A tiny (~20M) Python line-completion model trained from scratch with fill-in-the-middle. Research artifact, not a coding assistant. Code, preregistration and experiments: https://github.com/esraderey/chispa
Arquitectura
LLaMA: d=320, 12 capas, 5 cabezas de 64, SwiGLU 864, RMSNorm, RoPE, embeddings atados, contexto 1,024. Tokenizador BPE a nivel de byte de 16,384 piezas con pretokenización alineada a lexemas de Python (identificador, número, puntuación, salto de línea con sangría). Convertido desde el formato del laboratorio; diferencia máxima de logits en la conversión: 3.6e-05.
Datos y entrenamiento
codeparrot/codeparrot-clean, solo archivos con licencia permisiva (MIT, Apache-2.0, BSD-2/3, ISC, Unlicense), 3228316 archivos de 280112 repositorios de entrenamiento. El 3 % de los repositorios (por hash del nombre) se reservó para evaluación y no se vio al entrenar.- 521M tokens, el 50 % de los documentos en formato FIM (PSM); la mitad de ellos con el hueco al final de una línea.
- AdamW, pico 3e-3, calendario WSD, lote de 131,072 tokens, bf16, una H100. Pérdida final de entrenamiento: 1.56971.
Uso
from transformers import AutoModelForCausalLM, AutoTokenizer
tk = AutoTokenizer.from_pretrained("esraderey/chispa-20m-python")
m = AutoModelForCausalLM.from_pretrained("esraderey/chispa-20m-python")
eos, pad = tk.convert_tokens_to_ids("<|endoftext|>"), tk.convert_tokens_to_ids("<pad>")
# FIM en formato PSM: el modelo rellena el hueco entre prefijo y sufijo
prompt = "<fim_prefix>def read_lines(path):\n with open(path) as f:\n <fim_suffix>\n<fim_middle>"
ids = tk(prompt, return_tensors="pt").input_ids
out = m.generate(ids, max_new_tokens=16, do_sample=False, eos_token_id=eos, pad_token_id=pad)
linea = tk.decode(out[0][ids.shape[1]:], skip_special_tokens=True).split("\n")[0]
print(linea.lstrip()) # -> return f.readlines()
Si el prefijo termina justo después de la sangría, el modelo tiende a empezar con espacios de más: recorta el inicio
de la línea (lstrip) o prohíbe en el primer paso las piezas que empiezan por espacio, que es lo que se hizo en los
experimentos.
Evaluación (repositorios retenidos, 20,000 cursores dentro de cuerpos de función)
| Métrica | Valor |
|---|---|
| Coincidencia exacta del primer identificador de la línea | 17.1% |
| Coincidencia exacta de la línea completa | 1.2% |
| Completados que introducen un nombre indefinido | 11.0% (IC90 10.3%–11.6%) |
Detalle, intervalos y experimentos E1–E5: https://github.com/esraderey/chispa
Limitaciones
Modelo de 20M: inventa nombres, no conoce APIs poco comunes y su ventana es de 1,024 tokens. Solo Python. Las métricas son offline y no se validaron con usuarios. El corpus procede de GitHub y puede contener código con errores o inseguro.
- Downloads last month
- 534