Как собрать русскоязычную 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 — не магия, а набор вполне понятных шагов: данные, токенизация, обучение, дообучение и интерфейс. Понимание этой цепочки помогает лучше формулировать задачи для ИИ-сервисов и точнее оценивать, что можно автоматизировать у себя в работе.