Новости ИИ

Как собрать русскоязычную GPT с нуля на PyTorch

Два монитора с кодом, распечатки на столе и оборудование для разработки ИИ-модели

Разработчик показал, как сделал компактную русскоязычную GPT-модель на 112 млн параметров без готового AutoModelForCausalLM. В проекте он собрал не только саму архитектуру, но и токенизатор, подготовку данных, обучение, чат в терминале и Telegram-бота.

Что именно получилось собрать

Проект jarvis — это decoder-only transformer для русского текста и диалогов. Автор реализовал модель на PyTorch вручную: с RoPE, RMSNorm, SwiGLU, tied embeddings и 14 слоями, а для генерации добавил KV-cache. Это полезно тем, кто хочет не просто пользоваться LLM по API, а понять, как устроен весь цикл от данных до ответа.

Вместе с моделью автор сделал свой byte-level BPE-токенизатор на 16 384 токена. Такой подход удобен тем, что модель не ломается на незнакомых символах и лучше работает с русскими словами, пунктуацией и диалогами. Готовый SFT-checkpoint и токенизатор уже выложены на Hugging Face.

Как устроено обучение и данные

Сначала модель училась предсказывать следующий токен на большом корпусе, а потом проходила SFT на диалогах. Для обучения использовались русскоязычный веб, статьи и наборы диалогов; данные чистили, нормализовали роли, объединяли подряд идущие реплики одной роли и убирали дубликаты.

Отдельная важная деталь — маска loss для SFT. Во время дообучения вес получают только токены ответа ассистента, а токены пользователя не считаются в ошибке. Это делает обучение полезнее: модель учится именно отвечать, а не просто продолжать переписку с обеих сторон.

Что внутри репозитория и зачем это может пригодиться

В репозитории есть всё, что нужно для полного цикла: подготовка данных, обучение токенизатора, токенизация корпуса, стриминговый датасет через numpy.memmap, локальная генерация, self-test и бенчмарк BPC. Автор также добавил AMP, DDP, checkpoint/resume и разные настройки генерации вроде temperature, top-k, top-p и repetition penalty.

Для практики это хороший пример того, как можно собрать небольшой, но рабочий AI-проект под свои задачи. Такой опыт полезен разработчикам, которые хотят делать собственных чат-ботов, тестировать идеи без зависимости от внешнего API или просто лучше понимать, как из текстов и кода получается языковая модель.

Почему это интересно не только разработчикам

Даже если вы не пишете нейросети каждый день, у проекта есть прикладная ценность. Он показывает, как можно собрать удобный чат-инструмент для русского языка, где есть и консольный режим, и Telegram-бот, и сохранённые контрольные точки для дальнейшей работы.

Для предпринимателей, маркетологов и студентов это напоминание, что современные LLM — не магия, а набор вполне понятных шагов: данные, токенизация, обучение, дообучение и интерфейс. Понимание этой цепочки помогает лучше формулировать задачи для ИИ-сервисов и точнее оценивать, что можно автоматизировать у себя в работе.

Частые вопросы

Что нового в этом проекте, если уже есть готовые LLM?
Главная ценность в том, что модель и весь пайплайн собраны вручную. Это помогает понять, как устроены токенизация, обучение, SFT и генерация, а не только пользоваться готовым API.
Зачем нужен отдельный токенизатор для русского языка?
Он лучше адаптируется к русскому тексту и диалогам, чем универсальный вариант. Byte-level BPE ещё и не ломается на редких символах, потому что в крайнем случае кодирует текст байтами.
Почему в SFT считают loss не по всему диалогу?
Потому что во время дообучения важнее научить модель отвечать, а не продолжать реплики пользователя. Поэтому токены пользователя маскируются, а токены ассистента учитываются в обучении.
Чем это может быть полезно обычному специалисту?
Такой проект помогает лучше понять, как работают чат-боты и генерация текста, а значит — точнее ставить задачи для ИИ-инструментов. Это пригодится в разработке, контенте, поддержке клиентов и автоматизации рутинных ответов.

Читайте также

Попробовать Lord GPT бесплатно →