Языковые моделиvkusterl
Extrator de cardápios 0.5B
меню в JSON Lines на CPU
2 мин чтения
Это LoRA-дообучение Qwen2.5 0.5B Instruct (0,5 млрд параметров): португалоязычные (pt-BR) меню из WhatsApp, PDF, OCR и постов превращаются в JSON Lines с названием, описанием, ценой, порцией, категорией, ограничениями, размерами и допами. Автор — Vinicius Kuster Lodi (UFV), лицензия Apache 2.0; обучение на синтетике, работает на CPU.
🔥 Ключевые особенности
- 🔥 LoRA (r=16, alpha=32) от Qwen2.5 0.5B Instruct; обучение на GTX 1070 заняло 106 минут.
- 💻 На выходе JSON Lines: один item на строку, поля nome, descricao, preco, categoria, restrições, tamanhos, adicionais.
- 📚 OOD-тест: F1 корректного item 0,645 против 0,450 у rule-based парсера и 0,060 у базовой Qwen 0.5B.
- ⏰ CPU, 2 потока: в среднем 38,2 с на меню и ~8 токенов/с.
- ❗ Только текст: фото нужен OCR; 14 фиксированных категорий; вывод требует проверки человеком.
💻 Пример
from transformers import AutoModelForCausalLM, AutoTokenizer
modelo_id = 'vkusterl/extrator-cardapios-0.5b'
tok = AutoTokenizer.from_pretrained(modelo_id)
modelo = AutoModelForCausalLM.from_pretrained(modelo_id)
mensagens = [{'role': 'system', 'content': 'Extraia o cardápio em JSON Lines...'}, {'role': 'user', 'content': cardapio}]
entrada = tok.apply_chat_template(mensagens, add_generation_prompt=True, return_tensors='pt', return_dict=True)
saida = modelo.generate(**entrada, max_new_tokens=1024, do_sample=False)
print(tok.decode(saida[0, entrada['input_ids'].shape[1]:], skip_special_tokens=True))
Подробнее
F1 корректного item: 0,972 на синтетическом тесте (0,967 на 500 меню), 0,659 на OOD-dev и 0,645 на OOD-test. На OOD-test найдено 101 из 111 item, но 26 получили неверную категорию.CPU: 38,2 с/меню при 2 потоках, ~8 токенов/с. Обучение: 4 000 синтетических меню, 1 эпоха, max 2 048 токенов, GTX 1070 8 ГБ, 106 мин, val loss 0,0108.
Ограничения: обучение только на синтетике; реальные меню с комбинациями, примечаниями и нерегулярной версткой могут терять item или путать цены; на коротких списках возможны выдуманные описания/порции; фиксированные 14 категорий; только текст; нужна человеческая проверка; нельзя выводить аллергены.








Комментарии
Без регистрации: достаточно имени.