Последние полгода я обучал свою небольшую нейросеть с нуля на одной rtx 4060. Сжег кучу времени, перебрал кучу данных и в итоге дошел до версии 2.1 — это крошечная LLM всего на 260 млн параметров.

Зачем вообще было это делать? Мне просто стало интересно, можно ли научить такую микроскопическую нейронку (а более большую я обучить и не мог) хоть какой‑то логике.

Что в итоге вышло:

  • Во‑первых, она умеет считать по разрядам. Она может считать большие числа, которые другие модели того же размера считают неверно.

(после файн тюнинга она стала считать немного хуже, так что может ошибаться в длинных примерах. В будущих версиях ошибки будут исправлены.)
(после файн тюнинга она стала считать немного хуже, так что может ошибаться в длинных примерах. В будущих версиях ошибки будут исправлены.)
  • Во‑вторых, она умеет разбивать слова по буквам, считать количество букв в словах. Например, может сказать сколько букв «r» в слове «strawberry».

(в длинных словах могут быть ошибки, также если сформулировать запрос иначе может не понять что сделать)
(в длинных словах могут быть ошибки, также если сформулировать запрос иначе может не понять что сделать)
  • Ну и базово понимает русский, английский и французский. Может переводить простые фразы и поддерживать простой диалог.

что под капотом:

  • Архитектура: Llama 3 (20 слоев, размерность 1024, 16 голов). Контекст 4096, словарь 16384.

  • На претрейне скормил ей 11.8 млрд токенов (батч 512k).

  • На SFT ушло больше 16.5 млн токенов качественной синтетики, которую я сам генерировал через Gemma 4, Qwen 3.5 и DeepSeek v4.

Немного о процессе обучения и данных: Обучать с нуля даже 260М модель на домашней RTX 4060 (с её 8 ГБ видеопамяти) — то еще удовольствие. Чтобы впихнуть невпихуемое, пришлось повозиться с размером батча (накапливал градиенты) и оптимизаторами. Сам претрейн занял у меня около 3 недель. Изначально модель должна была быть немного больше, на ~300м параметров, но из‑за того что не хватало памяти был включен gradient_checkpoint, который замедлял обучение, чтобы ускорить его я отрезал нейросети 4 слоя (изначально было 24) и продолжил учить намного быстрее.

Отдельная история — это данные. Для базового обучения (11.8 млрд токенов) я взял википедию на ru/en/fr, датасет culturaX, Cosmopedia и код. А чтобы научить её нормально считать и бить слова по буквам, я сгенерировал скриптом поразрядную математику и спеллинг в формате ChatML и учил ее считать и писать так сразу еще на претрейне. В предыдущих версиях я на претрейне давал ей сырые примеры, без формата чата, и в итоге после файнтюнинга когда формат менялся она ломалась и считала неверно.

Для файнтюнинга я не брал готовые датасеты, а сгенерировал свои при помощи локальной Gemma 4, Qwen 3.5, и для сложных запросов Deepseek 4 flash по апи. На сбор и генерацию данных в сумме ушло около месяца.

Модель можно запустить через Lm Studio, как чат версию так и базовую модель.

Название модели: dpp‑gptV2.1 Pro.

Ссылка на чат версию: https://huggingface.co/dikiyplayerpig/dpp‑gpt‑V2.1-Pro-260m

Ссылка на base версию (просто продолжает текст): https://huggingface.co/dikiyplayerpig/dpp‑gpt‑V2.1-base-260m

Кстати, сейчас я обучаю flash версию на ~90м параметров. Она почти в 3 раза меньше, посмотрим сможет ли она считать. Буду очень рад любым советам и критике от тех, кто глубоко шарит в ML и обучении моделей. Если у вас есть идеи, как лучше фильтровать датасеты, оптимизировать процесс или улучшить математику у таких малюток — добро пожаловать в комменты!

График лосса. Во время обучения (оно длилось больше 3 недель) данные немного менялись, из за этого есть скачки и просадки лосса. Примерно на 23000 шаге начался файн тюнинг.
График лосса. Во время обучения (оно длилось больше 3 недель) данные немного менялись, из за этого есть скачки и просадки лосса. Примерно на 23 000 шаге начался файн тюнинг.
Лучший стих, написанный dpp-gpt. (обычно рифмы нет вообще).
Лучший стих, написанный dpp‑gpt. (обычно рифмы нет вообще).

Оговорюсь: изначально я написал этот пост для Пикабу, но там сугубо технические детали мало кому интересны. Поэтому решил прийти в Песочницу Хабра, чтобы получить реальный фидбек и советы от профильного сообщества.

Комментарии (28)


  1. Bardakan
    19.06.2026 10:31

    Например, может сказать сколько букв «r» в слове «strawberry».

    что если агенту с нейросетью, которая не умеет это делать, в промпт добавить что-нибудь вроде "используй python"?


    1. dikiyplayerpig Автор
      19.06.2026 10:31

      Тогда она, конечно, сможет это сделать. Я даже проверял это: давал локальной Gemma 4 доступ к исполнению кода и просил разбить слова по буквам. Версия 4B отлично справляется с использованием кода, а 2B - хуже. Она почему-то часто запускает код, получает правильную строку, но вместо того чтобы просто вывести её, начинает сама разбивать слово по буквам (и делает это неправильно). Но вообще это рабочий подход, особенно с большими моделями.

      Но в рамках моего проекта мне было интересно научить именно саму нейросеть разбивать слова по буквам "в уме". Ну и чтобы вызывать инструменты моя ии пока слишком глупая :)


  1. linux-over
    19.06.2026 10:31

    Вот как учат модель понимать слова - я понимаю. Берём много текстов и заставляем предсказывать удалённое слово.

    а вот как потом после этого доучивают её считать - этого я пока не понял. у Вас в статье написано что это разные фазы. Можете в двух словах пояснить?

    PS: спасибо за интересную статью


    1. dikiyplayerpig Автор
      19.06.2026 10:31

      Так, я вроде бы не писал, что это разные фазы, возможно, я выразился двусмысленно или вы что-то не так поняли, но, по сути, я не учил ее считать как-то необычно.

      Как делают с другими нейросетями, я не знаю, но я вливал в нее математику сразу еще на претрейне точно так же, как и обычный текст, но в формате диалога, так же, как на файнтюнинге в ChatML. В предыдущих версиях я либо не учил ее считать на претрейне, либо учил считать в другом формате, но в результате этого она либо вообще не умела считать, либо в момент файнтюнинга ломала все знания соответственно. Так что теперь я просто учу ее сразу с ее первого шага в формате диалога математике, параллельно с текстом без какого-либо формата.


  1. wintermute2025
    19.06.2026 10:31

    Есть пословица: "один в поле не воин, а путник". Вы же доказали обратное. Пусть размер LLM-ки маленький, но начало положено - моделька на хагинфейсе, поддерживает Ollama & LM Studio. Вам бы ещё датасет покачественнее раздобыть бы, да кластер из пользованных V100 сделать - того гляди и модель на миллиард параметров осилили бы.
    Но даже в её нынешнем состоянии эта LLM-ка выглядит как добротный прототип, который показать не стыдно ;)


  1. dikiyplayerpig Автор
    19.06.2026 10:31

    Спасибо за отзыв!
    Кластер из V100 это конечно круто... Но пока что у меня есть лишь одна 4060. В будущем 5070 ti купить планирую, наверно выйдет обучить 500-700м.

    А датасет качественнее 100% станет в будущем!


    1. Weron2
      19.06.2026 10:31

      Если сделать gguf то сразу больше пользователей будет)

      А вообще было бы интересно само описание процесса. Вы говорите берете llama3 открываете ее в какой-то программе, в этой программе указываете датасет, и нажимаете кнопку учись? Или как это происходит? Какая программа? Почему бы не взять за основу ту же gemma4 - более современная

      Хотя кажется я вообще не так все понял и llama3 это просто архитектура и от нее ничего не было от готовой. Тогда все еще интереснее - что и как сделать в домашних условиях.


      1. dikiyplayerpig Автор
        19.06.2026 10:31

        Архитектура llama3, а веса инициализированы рандомные. И нет, gemma 4 не лучше для таких микро моделей, во первых она мультимодальна, что мне не нужно пока, во вторых там другая функция активации, и для такого размера модели это может быть хуже. Хотя это только теория, а мультимодальность можно вырезать, основная причина в том что ллама3 итак одна из лучших архитектур, и нет смысла менять.

        И нет никакой программы, есть python и терпение, а датасет я беру с хагингфейса, вики, culturaX, код, и еще по мелочи, для файнтюнинга датасет сам генерировал, нигде не брал готовый.

        А .gguf уже есть, на том же хагингфейсе.


    1. debagger
      19.06.2026 10:31

      Поищи 2080 ti с 22gb vram, их можно найти за 35-40т.р.


      1. dikiyplayerpig Автор
        19.06.2026 10:31

        а она точно быстрее будет? Она уже старая же очень. Я планирую 5070 ti купить, вот она точно будет быстрее намного.


        1. debagger
          19.06.2026 10:31

          Если скорость важнее объёма vram, то 5070 ti будет конечно быстрее. Просто на 16 гб быстро станет тесно.


          1. dikiyplayerpig Автор
            19.06.2026 10:31

            просто если ии такого размера, который занимает 22 гб претрейнить на 2080 ти, то сколько он будет учится? пол года? сделать его поменьше но обучить за 2 недели конечно лучше


            1. debagger
              19.06.2026 10:31

              По скорости (это моя оценка, исходя из пропускной скорости памяти и бенчмарков) 5070 ti будет 30-50% быстрее чем 2080 ti. Просто на 22гб врам уже реально запустить кванты хороших локальных ллм типа qwen3.6 или gemma4, а на 16гб не получится (можно попробовать moe с выгрузкой экспертов в ram, но это все равно будет сильно медленнее). В общем то решать вам, я просто подсветил, что есть такой вариант на рынке и можно его рассмотреть.


              1. dikiyplayerpig Автор
                19.06.2026 10:31

                Мне вроде запускать ллм особо не надо, я обучаю ее. А запускается у меня на 4060 с выгрузкой на цпу квен 3.6 35б с 30 ток/c, так как он MoE. Вроде норм скорость.

                А еще скорость скорее всего на 5070 ti относительно 2080 ti будет все же выше чем на 30-50% быстрее, у нее не только пропускная способность памяти выше, у нее также более новые тензорные ядра. 5070 ti выдает в 4 раза больше терафлопс чем 2080 ti.


                1. debagger
                  19.06.2026 10:31

                  Упор идет в память. На 2080ti qwen3.6-35b грузит cuda-ядра на 60-70%, при этом дает 70т/с. У 5070ti пропускная способность примерно на 30% выше (память быстрее, но шина более узкая). Поэтому я так оцениваю. Gpu быстрее, но при генерации он простаивает из-за того что память не успевает подгружать новые данные. Вот prefill может быть значительно быстрее, поскольку он обрабатывает токены пачками.


  1. morginalium8
    19.06.2026 10:31

    Получилось супер. Я обычно более мелкие модели тренирую, но могу добавить немного важной инфы:

    1. Используй датасеты с HF. Там уже куча синтетических диалогов и много датасетов для претрейна.

    2. Размерность 1024 - ну, как будто много... Можно было глянуть тесты на 512 и 768.

    3. Сравнивать такую маленькую модель на бенчах бесполезно. Попробуй измерить PPL и тд, они много инфы дадут.

    А что касается самое статьи - было интересно почитать про архитектуру. Какие именно 20 слоев, что по активациям и линейным слоям, какой тип внимания, что с остаточными связями и другие моменты.

    Если хочешь - напиши мне в личку, вместе можем что-нибудь классное придумать. Вторую версию сделать, например. Или эту доработать.


    1. dikiyplayerpig Автор
      19.06.2026 10:31

      Это уже не первая версия, и следущая версия будет в будущемю А с эмбедингом 512 модель значительно хуже факты запоминает (по моему опыту), она и так то особо ничо не знает, но если еще понижать то еще хуже. А размер хотел сделать 260-300м, если бы я эмбединг ставил 512 или 768 слоев было бы слишком много.

      Для претрейна я с хг и качал, но я не знаю какой датасет брать для файнтюнинга, и вроде сам я сделал нормально.

      Насчет вопросов, архитектура вроде llama3 особо без изменений.


      1. morginalium8
        19.06.2026 10:31

        дле претрейна zyda очень хорош. там и статьи, и код, и инет. вышел пару месяцев назад, очень хорошо отфильтрован.

        есть ру-диалоги, глянь у гусева или у вихрей. они там 4о дистилили, так что качество хорошее. если есть желание ризонинг прокачать - OpenThoughts, там 1М диалогов (но на англ).

        llama3 это база. что с головами в gqa, как распределил K и V?


        1. dikiyplayerpig Автор
          19.06.2026 10:31

          16 Q голов, 4 KV головы. А zyda посмотрю, спасибо.


  1. ENick
    19.06.2026 10:31

    Интересная статья! Успехов!


  1. art3012
    19.06.2026 10:31

    Последние полгода я обучал свою небольшую нейросеть с нуля на одной rtx 4060.

    Во‑первых, она умеет считать по разрядам. Она может считать большие числа

    Во‑вторых, она умеет разбивать слова по буквам, считать количество букв в словах.

    ZX-Spectrum, Basic, 1991 год, потратил субботний вечер.

    Я нисколько не хочу приуменьшить Ваш эксперимент. Любой эксперимент, доведенный до результата и описанный заслуживает уважения.

    Я о том, что последние года четыре в ИТ-лексиконе понятие «алгоритм» постепенно вытесняется понятием ИИ/LLM.


    1. dikiyplayerpig Автор
      19.06.2026 10:31

      Я не понял в чем проблема с алгоритмом и как это противоречит LLM


      1. dikiyplayerpig Автор
        19.06.2026 10:31

        Алгоритм это хорошо, но 30 летний алгоритм может написать стих? Или понять по текстовой задаче что надо сделать, вычесть или сложить?


      1. art3012
        19.06.2026 10:31

        Нейросеть - это также алгоритм. Просто тенденция последних лет это чрезмерное обобщение существующих десятилетия различных алгоритмов под одной аббревиатурой ИИ/LLM, что вводит многих людей в заблуждение касательно реального предназначения нейросетей.


        1. dikiyplayerpig Автор
          19.06.2026 10:31

          А какое реальное предназначение нейросетей? Я вроде не называл никакие десятилетние алгоритмы LLM.


        1. avshkol
          19.06.2026 10:31

          LLM отличаются алгоритмом/механизмом трансформера и внимания, а они существуют далеко не десятилетия, а (одно) десятилетие. Поэтому когда говорим LLM, а не "нейросеть" вообще, речь идёт о новой технологии.


  1. avshkol
    19.06.2026 10:31

    Интересно, вы обучали на русском, английском и французском?

    Интересный был бы эксперимент, если бы только на русском - да, не могла бы переводить с английского, но насколько лучше или хуже отвечала бы по-русски?

    И французский - возможно в такой маленькой модели, он только отнимал время обучения, но не давал прироста качества ответа (по сравнению со связкой русский-английски)? Но это предположение.


    1. dikiyplayerpig Автор
      19.06.2026 10:31

      Качества французский и русский язык может не давал, но он давал ей возможность говорить на русском и французском, а не только на английском. Я хотел сделать ее мультиязычной, и в планах было добавить еще пару языков, хотя есть сомнения.

      А вообще французский у нее хуже всего, видимо его в датасете было меньше, это тоже надо бы будет исправить.