Sempre quis treinar um modelo de IA para alguma finalidade e não somente utilizá-lo no dia a dia.
Mas treinar um modelo exige um poder computacional grande e uma grande massa de dados.
Quero dizer, exigia.
Hoje quero compartilhar como treinei um modelo de IA com pouca massa de dados para treinamento e com poder computacional moderado, de forma gratuita.
O desafio para o modelo#
O meu problema é o seguinte: transformar o texto de uma receita sem estrutura em um json estruturado para:
Proporcionalidade
- Ajustar a quantidade da receita por número de pessoas ou pela quantidade de um ingrediente específico
Compras
- Tendo a receita estruturada, consigo montar o carrinho de compras baseado na funcionalidade acima
E também deveria “entender” receitas em português, inglês e japonês. Por exemplo, em português:
PT-BR — Vitamina de banana#
Input:
Vitamina de banana
Ingredientes
1 banana
200ml de leite
2 colheres (sopa) de açúcar
gelo a gosto
Modo de preparo
1. Bata tudo no liquidificador.
Resultado esperado (JSON):
{
"title": "Vitamina de banana",
"description": "Vitamina cremosa de banana com leite.",
"servings": 1,
"ingredients": [
{ "name": "banana", "quantity": 1, "unit": "unidade" },
{ "name": "leite", "quantity": 200, "unit": "ml" },
{ "name": "açúcar", "quantity": 2, "unit": "colher de sopa" },
{ "name": "gelo", "quantity": 0, "unit": "a gosto" }
],
"instructions": [{ "step": 1, "description": "Bata tudo no liquidificador." }]
}
Então precisava encontrar um modelo multilíngue, pequeno e eficiente o suficiente para funcionar em um celular e que fosse bom em fazer parsing.
O modelo que encontrei para treinar#
Primeira tarefa era descobrir se tinha como especializar um modelo já treinado para uma tarefa específica.
Fazendo uma pesquisa encontrei o LFM2-1.2B-Extract.
Este modelo é especializado em extrair dados de um texto e transformar em algo estruturado como JSON, YAML ou XML.
E ele era um modelo razoavelmente pequeno e funcional para um smartphone.
Testando de forma pura com o Ollama, a extração de receita não funcionava bem:
- Quantidades eram inventadas ou perdidas, por exemplo “1/2”
- Unidade das quantidades eram inventadas ou perdidas, por exemplo, “a gosto”
- Inventava ingredientes ou passos para fazer a receita
Então resolvi treinar e testar ela pois já entendia o formato json, faltava se especializar em fazer parse de textos de receita.
Como treinei de forma gratuita#
Um dos problemas para treinar um modelo é a necessidade de um poder computacional.
Mas pesquisando um pouco descobri uma técnica chamada LoRA (Low-Rank Adaptation), criada por Edward Hu.
Basicamente, em vez de treinar todos os parâmetros do modelo do zero (caro), o LoRA treina só uma fração e gruda no modelo original — mantendo a qualidade do fine-tune completo a uma fração do custo computacional.


