LLM de educação financeira que fala a língua da periferia brasileira
MLK de Vila é um modelo de linguagem fine-tuned para ser um educador financeiro que compreende e responde no dialeto da periferia brasileira. Treinado inteiramente em hardware acessível (8GB de memória, GPU integrada, processador ARM).
Gemma 3 1B IT ──CPT──→ Dialeto bruto ──SFT──→ Dialeto + Conteúdo ──DPO──→ Modelo Final
↓ ↓ ↓ ↓
Vocabulário Como falar O que falar Qual estilo
e estruturas da periferia sobre finanças preferir
"Ae parceiro, to no busão chegando na quebrada, mano esse bagulho de grana é embaçado, você dá mó trampo e essa parada de inflação engole sua grana. Na moral, papo reto memo, você precisa pegar a visão de investir."
Model response:
"Vou te passar a visão de investir, mas é importante entender que não é pra ser feito no seu bolso. Se você é um estudante, um jovem de 17 anos, tem que ter um plano. O dinheiro que você ganha no mês é pra ser usado com responsabilidade. Por exemplo, se você é MEI e tem R$ 1.200 por mês, é melhor que você anote cada centavo que recebe e distribua para despesas fixas, como aluguel, contas, e depois deixar um monte pra investir."
The model: (1) understood the intent, (2) responded in dialect ("passar a visão"), (3) provided concrete financial advice contextualized for a young person.
How to Use
With MLX (recommended for Apple Silicon)
python
1from mlx_lm import load, generate
23model, tokenizer = load("lbertolino/MLK-de-Vila-1.0-1.3B")45# IMPORTANT: <end_of_turn> is NOT EOS in Gemma 3 — must add manually6tokenizer.add_eos_token("<end_of_turn>")78messages =[{"role":"user","content":"Mano, como organizar a grana do mês?"}]9prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)1011response = generate(model, tokenizer, prompt=prompt, max_tokens=500)12print(response)
<end_of_turn> is NOT EOS in Gemma 3. You MUST add tokenizer.add_eos_token("<end_of_turn>") or the model will generate infinitely after the end of turn.
Do NOT use system messages. The model was trained with mask_prompt=True, which means it never learned to associate system messages with response style. Including a system message causes immediate <end_of_turn> generation.
This model is optimized for MLX on Apple Silicon. For other frameworks, you may need to convert the weights.
Training Data
Stage
Tokens
Proportion
CPT
~302,000
36%
SFT
~180,000
21%
DPO
~360,000
43%
Total
~842,000
100%
The 64 slang terms used include: mano, parceiro, trampo, grana, bico, quebrada, padoca, busão, corre, maloca, perrengue, rolê, bagulho, embaçado, suave, de boa, na moral, pode crer, é nóis, tá ligado, passa a visão, papo reto, correria, among others.
Key Technical Discoveries
Aggressive CPT is essential to break the alignment resistance of instruction-tuned models
6 bad examples (1% of dataset) corrupted the entire SFT — data quality > quantity
RAG cannot achieve dialect adaptation — it operates on content, not style
alpha parameter is ignored by mlx-lm — only rank, scale, dropout are effective
System message + mask_prompt = broken — model generates immediate <end_of_turn>
Limitations
Small CPT corpus (~302k tokens) — more authentic speech data could deepen comprehension
Qualitative benchmark with 16 questions — automatic dialect metrics are needed
Aggressive CPT can introduce undesirable associations (e.g., periferia → crime) corrected by SFT/DPO
Some SFT/DPO responses show repetitions, suggesting incomplete fluency internalization
Deep/uncommon slang (e.g., "goma" = work) still has limited comprehension
Datasets: Included in the GitHub repository under data/
Citation
bibtex
1@misc{bertolino2025mlkdevila,
2 title={Mlk de Vila: Fine-Tuning de LLMs para Educação Financeira no Dialeto da Periferia Brasileira},
3 author={Bertolino, Levi},
4 year={2025},
5 url={https://github.com/LeviBertolino/MLK-De-Vila}
6}
License
Apache 2.0 — Same as the base model (Gemma 3).
"Quando o jovem da quebrada pergunta 'Mano, como organizar a grana do mês?' e o modelo responde com orientação financeira concreta no dialeto dele — isso não é tradução. É comunicação."