Ведущий пробел перед запросом обязателен — словарь состоит из токенов вида " привет", потому что gpt2-регексп пре-токенизатора отрезает куски вместе с пробелом. Без него всё уедет в <unk>.
transformers
python
1from transformers import LlamaForCausalLM
2import json, torch
34model = LlamaForCausalLM.from_pretrained("EBLANSoft/eblangpt-falos67")5vocab = json.load(open("vocab_plain.json", encoding="utf-8"))6inv ={v: k for k, v in vocab.items()}78ids =[vocab["<bos>"]]+[vocab.get(t, vocab["<unk>"])for t in"как дела".split()]+[vocab["<sep>"]]9out = model.generate(10 torch.tensor([ids]),11 max_new_tokens=12,12 do_sample=True,13 temperature=0.8,14 top_k=20,15 repetition_penalty=1.1,16 eos_token_id=vocab["<eos>"],17)18print(" ".join(inv[i]for i in out[0,len(ids):].tolist()if i != vocab["<eos>"]))
🧪 Обучение
Данные: 742 уникальные пары «реплика → ответ», развёрнутые до 6000 сэмплов. 13 категорий: приветствие, «как дела», согласие, отрицание, посыл, прощание, фоллбэк на мусор.
Железо: один поток CPU. GPU не использовалась и не требуется.
Время: ~7 минут.
Углеродный след: примерно как у чайника. Одного. Наполовину.
Оптимизатор: AdamW, OneCycleLR, 30 эпох, lr 3e-3.
Лосс: маскируется до <sep> — модель учится только генерировать ответ.
⚖️ Ограничения и риски
Раздел не является шуткой.
Модель не понимает язык. Она распознаёт категорию по 1–3 входным словам и выдаёт одну из 6–10 заготовленных реплик этой категории. По сути это классификатор на 13 классов со стохастическим декодером.
Памяти диалога нет вообще. Каждая реплика собирается с чистого <bos>. Скажешь «меня зовут Вася», следующим сообщением спросишь «как меня зовут» — она не в курсе, что был первый вопрос.
Всё за пределами 13 категорий уходит в фоллбэк (хз 🤷).
Обучалась на последовательностях до 11 токенов. Дальше RoPE экстраполирует плохо даже у больших моделей, а у двухслойной — просто рассыпается.
Без repeat_penalty уверенно залипает в да да да да да.
В обучающих данных есть мат. Это заложено намеренно, модель будет посылать. Не ставьте её в прод к клиентам.
📜 Дисклеймер
Ни в каких странах эта модель не запрещена, никакой опасности не представляет и представлять физически не способна.
Весь раздел про 67 юрисдикций, класс угрозы ASL-67 и «чрезвычайную смертельность» — шутка в жанре пародии на маркетинг ИИ-лабораторий. Число 67 выбрано под количество тысяч параметров.
Технические характеристики, примеры генерации и раздел про ограничения — настоящие.