Model Card: qwen-python-slm

Visรฃo geral

qwen-python-slm รฉ um modelo de linguagem pequeno (SLM) especializado em gerar cรณdigo para o ecossistema de Engenharia de Dados, Data Science, Machine Learning, Deep Learning, LLMs, Agentes de IA, DataOps e MLOps.

O modelo รฉ um ajuste fino (SFT com QLoRA) do Qwen/Qwen2.5-Coder-1.5B-Instruct, mantendo a arquitetura de 1,5 bilhรฃo de parรขmetros e adicionando adaptadores LoRA treinados para responder a instruรงรตes tรฉcnicas de dados/IA em Python, SQL e PySpark.

  • Tipo de modelo: Causal LM para geraรงรฃo de cรณdigo
  • Idioma: Portuguรชs (instruรงรตes) + cรณdigo multilรญngue (Python/SQL/PySpark)
  • Licenรงa: Apache 2.0
  • Formatos disponรญveis:
    • Pesos completos (merged, FP16) no Hugging Face Hub
    • GGUF quantizado em Q4_K_M para uso local via Ollama / llama.cpp / Continue.dev

Uso pretendido

  • Geraรงรฃo de scripts Python para ETL/ELT, anรกlise de dados e ML.
  • Escrita de consultas SQL compatรญveis com SQLite/PostgreSQL.
  • Geraรงรฃo de cรณdigo PySpark para processamento distribuรญdo.
  • Prototipagem de agentes de IA com LangChain, LlamaIndex, CrewAI etc.
  • Automaรงรฃo de pipelines de MLOps/DataOps (Airflow, dbt, MLflow).
  • Uso educacional e produtividade de desenvolvedores de dados.

Nรฃo recomendado para: produรงรฃo crรญtica sem revisรฃo humana; geraรงรฃo de cรณdigo com dados sensรญveis sem validaรงรฃo de seguranรงa; substituiรงรฃo de engenheiros especialistas.


Comandos de linguagem

O modelo reconhece prefixos no prompt para forรงar a linguagem/domรญnio desejado:

/python   Cรณdigo Python genรฉrico
/sql      Consultas SQL
/pyspark  Cรณdigo PySpark
/ml       Machine Learning (scikit-learn, PyTorch, etc.)
/llm      LLMs e fine-tuning (transformers, peft, vLLM, etc.)
/agent    Agentes de IA (LangChain, LlamaIndex, CrewAI, etc.)
/dataops  Pipelines/DataOps/MLOps (Airflow, dbt, MLflow, etc.)

Exemplo:

ollama run tel1980/qwen-python-slm "/sql Liste os 10 produtos mais vendidos no รบltimo trimestre."

Detalhes do treinamento

  • Modelo base: Qwen/Qwen2.5-Coder-1.5B-Instruct
  • Tรฉcnica: Supervised Fine-Tuning (SFT) com QLoRA (4-bit NF4)
  • Tamanho de contexto: 1024 tokens
  • Hardware de treino: NVIDIA GeForce RTX 5050 (8 GB VRAM)
  • Hiperparรขmetros LoRA:
    • r = 16
    • alpha = 32
    • dropout = 0.05
    • Mรณdulos alvo: q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
  • Hiperparรขmetros de treino:
    • Batch size efetivo: 16 (1 ร— 16 gradient accumulation)
    • Learning rate: 2e-4
    • Max steps: 500
    • Warmup steps: 30
    • Otimizador: paged_adamw_8bit
  • Resultado do treino: ~1h10min de GPU, loss mรฉdio 0,578, loss final 0,508
  • Parรขmetros treinรกveis: 18,4M (1,18% do total)

Dados de treino

Dataset final combinado: 98.180 amostras.

  • Dataset principal: iamtarun/python_code_instructions_18k_alpaca (Python, filtrado por keywords de dados/IA)
  • Datasets Python extras: flytech/python-codes-25k, m-a-p/CodeFeedback-Filtered-Instruction (filtrado para Python, subamostrado para 30k)
  • Dataset SQL: b-mc2/sql-create-context (subamostrado para 15k)
  • Dataset PySpark: curadoria prรณpria de 1.500 amostras no formato Alpaca (datasets/pyspark_instructions.json)
  • Filtro de domรญnio: amostras sรฃo mantidas apenas se contiverem palavras-chave do ecossistema de dados/IA (pandas, sklearn, PyTorch, Spark, Airflow, MLflow, LangChain etc.)
  • Prompt de sistema: engenheiro de dados/ML sรชnior, especializado em Python/SQL/PySpark para dados e IA.

Mรฉtricas de avaliaรงรฃo

Avaliaรงรฃo executada com src/evaluate.py (Python) e src/evaluate_extended.py (SQL e PySpark), 30 amostras por linguagem.

Ressalva: as amostras de avaliaรงรฃo vรชm dos mesmos datasets usados no treino, entรฃo os nรบmeros tendem a ser otimistas. Servem como sanity check de formato e gramรกtica.

Mรฉtrica Valor
Taxa de compilaรงรฃo Python vรกlida 96,67%
Taxa de execuรงรฃo Python sem erros 83,33%
Taxa de parse SQL vรกlido 100,00%
Taxa de sintaxe PySpark vรกlida 100,00%
BLEU mรฉdio โ€” Python 0,175
BLEU mรฉdio โ€” SQL 0,917
BLEU mรฉdio โ€” PySpark 0,353

Observaรงรตes:

  • Os erros de execuรงรฃo Python foram principalmente ambientais (biblioteca externa ausente, input() sem stdin, arquivo local inexistente), nรฃo falhas de sintaxe.
  • BLEU alto em SQL reflete o forte padrรฃo do dataset sql-create-context; BLEU mede similaridade com a referรชncia, nรฃo correรงรฃo semรขntica.

Futuramente, recomenda-se adicionar pass@1 em benchmarks como HumanEval, MBPP e Spider/BIRD (SQL), com dados nunca vistos no treino.


Limitaรงรตes

  • O modelo foi treinado com recursos limitados (RTX 5050 8 GB, 500 steps), entรฃo pode apresentar alucinaรงรตes ou cรณdigo nรฃo executรกvel.
  • SQL รฉ validado sintaticamente, mas nรฃo executado contra um banco real โ€” a semรขntica depende do schema fornecido.
  • PySpark รฉ tratado como Python; a execuรงรฃo real exige ambiente Spark configurado.
  • O domรญnio รฉ voltado para dados/IA; cรณdigo fora desse escopo (frontend, mobile, etc.) pode ter qualidade inferior.
  • O modelo pode reproduzir vieses presentes nos dados de treino.

Como usar

Ollama (GGUF)

ollama run tel1980/qwen-python-slm "/python Crie uma DAG do Airflow que baixe um CSV e salve no S3."

Transformers (pesos merged)

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "tel1980/qwen-python-slm"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")

messages = [
    {"role": "system", "content": "Vocรช รฉ um engenheiro de dados e Machine Learning sรชnior."},
    {"role": "user", "content": "/sql Liste os clientes com mais de 5 pedidos."},
]
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True).to(model.device)
outputs = model.generate(inputs, max_new_tokens=512, temperature=0.2)
print(tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True))

Licenรงa

Este modelo รฉ distribuรญdo sob a licenรงa Apache 2.0, a mesma do modelo base Qwen2.5-Coder-1.5B-Instruct.


Citaรงรฃo

Se vocรช usar este modelo em trabalhos acadรชmicos, cite o modelo base:

@article{qwen2.5,
  title={Qwen2.5 Technical Report},
  author={Qwen Team},
  journal={arXiv preprint arXiv:2409.12186},
  year={2024}
}

Links

  • Cรณdigo-fonte: https://github.com/tel1980/SLM_python
  • Pesos merged (FP16): https://huggingface.co/tel1980/qwen-python-slm
  • GGUF quantizado: https://huggingface.co/tel1980/qwen-python-slm-gguf
Downloads last month
26
Safetensors
Model size
2B params
Tensor type
F16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for tel1980/qwen-python-slm

Finetuned
(230)
this model

Paper for tel1980/qwen-python-slm