Игорь Градов
Игорь Градов
6 мин
ai

Fine tuning нейросети за вечер: дообучаем модель в Colab бесплатно методом LoRA

Дообучение (fine-tuning) нейросети для задач логического рассуждения на русском языке звучит сложно, но Google Colab, открытый датасет и метод LoRA позволяют пройти весь путь от загрузки данных до работающей модели за один вечер и без платной подписки.

Fine tuning нейросети за вечер: дообучаем модель в Colab бесплатно методом LoRA
Почему это важно

Крупные рассуждающие модели стоят дорого и часто недоступны из РФ по API, а компактная модель, дообученная под конкретную задачу методом LoRA, работает на бесплатном GPU в Colab и не требует ни серверов, ни бюджета.

Открытый корпус SupraLabs reasoning-corpus на платформе Hugging Face собрал миллионы примеров рассуждений от разных моделей. Туториал, опубликованный на странице датасета, описывает полный пайплайн: от потоковой загрузки и фильтрации данных до дообучения модели SmolLM2-135M-Instruct и экспорта результата. Ниже разобран каждый шаг так, чтобы его мог повторить автор Дзена или маркетолог без опыта в машинном обучении.

Что понадобится?

  • Google-аккаунт и доступ к Google Colab (бесплатный тариф с GPU T4 подойдёт)
  • Hugging Face аккаунт (бесплатный, нужен для загрузки датасета и модели)
  • Базовое владение Python на уровне «скопировать код в ячейку и нажать Run»
  • Время: от 1,5 до 3 часов, основная часть уйдёт на само дообучение
  • Библиотеки (устанавливаются одной командой в Colab): datasets, transformers, trl, peft, accelerate, bitsandbytes, matplotlib, pandas

Пошаговая инструкция

1. Создайте блокнот в Colab и подключите GPU

Откройте Colab, выберите «Среда выполнения» и «Сменить тип среды выполнения», укажите GPU (T4). Затем установите все нужные библиотеки одной ячейкой:

import subprocess, sys

def pip_install(pkgs):
    subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", *pkgs])

subprocess.call([sys.executable, "-m", "pip", "uninstall", "-y", "-q", "torchao"])

pip_install([
    "datasets>=3.0.0",
    "transformers>=4.46.0",
    "trl>=0.12.0",
    "peft>=0.13.0",
    "accelerate>=1.0.0",
    "bitsandbytes",
    "matplotlib",
    "pandas",
])

Пакет torchao удаляется намеренно: он конфликтует с остальными зависимостями в окружении Colab.

2. Загрузите данные потоком, не скачивая весь корпус

Датасет SupraLabs весит много, но потоковый режим (streaming) позволяет взять только нужную выборку:

from datasets import load_dataset, Dataset
import itertools

DATASET_ID = "SupraLabs/reasoning-corpus-4K-5M-v1"
SAMPLE_SIZE = 8_000

stream = load_dataset(DATASET_ID, split="train", streaming=True)
stream = stream.shuffle(seed=42, buffer_size=30_000)
rows = list(itertools.islice(stream, SAMPLE_SIZE))
ds = Dataset.from_list(rows)

На выходе вы получите 8 000 строк с полями: repo_id (источник), tok_len (длина в токенах (минимальных единицах текста, которые «видит» модель)), user (запрос), thought_trace (цепочка рассуждений), assistant (финальный ответ).

3. Проанализируйте выборку

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

df = ds.to_pandas()
df["think_chars"] = df["thought_trace"].str.len()
df["answer_chars"] = df["assistant"].str.len()
df["reason_ratio"] = df["think_chars"] / (df["think_chars"] + df["answer_chars"] + 1)

Этот шаг покажет, сбалансирована ли выборка. Если 80% записей окажутся про код, а вам нужна логика на русском, дальше вы сможете отфильтровать лишнее.

4. Отфильтруйте некачественные примеры

Четыре фильтра убирают записи, которые навредят при дообучении:

  • По длине: от 200 до 3 000 токенов (слишком короткие не содержат рассуждений, слишком длинные не влезут в память GPU)
  • По содержанию: убираются пустые или почти пустые рассуждения и ответы
  • По повторам: если одна строка в цепочке рассуждений повторяется более чем в 30% случаев, это «зацикленная» модель, такие примеры вредны
  • По соотношению: сохраняются записи, где рассуждение занимает от 15% до 97% текста
ds_f = ds.filter(filter_length)
ds_f = ds_f.filter(filter_degenerate)
ds_f = ds_f.filter(filter_repetition)
ds_f = ds_f.filter(filter_reason_ratio)

После фильтрации из 8 000 записей останется меньшая, но чистая выборка.

5. Преобразуйте данные в чат-формат с тегами рассуждений

Модель должна научиться выделять «мышление» от финального ответа. Для этого каждый пример оборачивается в чат-формат с тегами <think>:

  • Роль system: короткая инструкция «рассуждай перед ответом»
  • Роль user: запрос из датасета
  • Роль assistant: блок <think>цепочка рассуждений</think> плюс финальный ответ

6. Запустите дообучение через LoRA

LoRA (Low-Rank Adaptation) позволяет обновлять лишь малую часть параметров модели, что критически снижает требования к памяти. В туториале дообучается SmolLM2-135M-Instruct, модель со 135 миллионами параметров, которая помещается в бесплатный GPU Colab.

Обучение запускается через SFTTrainer из библиотеки TRL. Процесс занимает от 30 минут до часа на T4.

7. Проверьте модель и экспортируйте результат

После обучения модель генерирует ответ на тестовый промпт (текстовую инструкцию для нейросети). Результат можно сохранить в формат Parquet для дальнейшего использования или выгрузить на Hugging Face Hub.

Что ввели и что получили

На вход подали задачу: «У Маши 5 яблок, она отдала 2 и купила ещё 3. Сколько у неё яблок?» Модель до дообучения выдавала сразу «6» без объяснений. После fine tuning нейросети результат выглядит иначе: в теге <think> модель записывает «начальное количество 5, отдала 2, осталось 3, купила 3, итого 6», а затем даёт итоговый ответ. Цепочка рассуждений видна и проверяема: если модель ошиблась, вы точно знаете, на каком шаге.

Частые ошибки
  • Пропустить фильтрацию данных. Без удаления зацикленных и пустых примеров модель учится воспроизводить мусор, а не рассуждать.
  • Взять слишком большую модель. На бесплатном Colab модели с 7 миллиардами параметров и больше вылетают по памяти. SmolLM2-135M выбрана именно потому, что помещается в T4.
  • Обучать на английских данных, а тестировать на русских. Корпус SupraLabs преимущественно англоязычный. Для русскоязычных задач лучше добавить собственные примеры на русском в тот же чат-формат или искать RU-датасеты отдельно.
  • Забыть удалить torchao. Конфликт пакетов приводит к ошибкам при импорте, которые сложно диагностировать новичку.
  • Ожидать уровня GPT-4. Модель со 135 миллионами параметров не заменит большую рассуждающую модель. Но для узких задач (классификация, логические цепочки, генерация пояснений) она работает и обходится бесплатно.

Кому это пригодится и что делать прямо сейчас?

Авторам Дзена. Дообученная модель умеет генерировать пошаговые объяснения. Это полезно для рубрик «разбор», «как работает», «почему так»: модель даёт скелет рассуждения, который вы редактируете и превращаете в публикацию.

Маркетологам. Fine tuning нейросети под вашу нишу означает, что вы можете натренировать компактную модель отвечать в логике вашего продукта: объяснять выгоды, разбирать возражения, сравнивать тарифы, и всё это без оплаты API крупных моделей.

Предпринимателям из РФ и СНГ. Google Colab работает из России. Hugging Face доступен. Всё, что описано, можно запустить без VPN и без оплаты. Из российских аналогов для дообучения существуют YandexGPT (с ограниченным fine-tuning через Yandex Cloud) и GigaChat (Сбер), но открытых моделей с таким уровнем доступа к процессу обучения они пока не дают.

Мнение редакции dzen.guru

Я прошёл этот пайплайн целиком. Главное открытие: 90% работы занимает не само обучение, а очистка данных. Четыре фильтра из туториала превращают хаотичный датасет в учебник для модели, и именно этот этап определяет качество результата. Если вы никогда не занимались дообучением, начните с этого туториала: он достаточно компактный, чтобы уложиться в один сеанс Colab, и достаточно полный, чтобы понять, как устроен весь процесс. Честная оговорка: модель на 135 миллионов параметров не будет рассуждать как o3 от OpenAI. Но она покажет вам механику, и когда вы возьмёте модель покрупнее, вы уже будете знать, что делать с данными.

Попробуйте генерацию контента с ИИ

В dzen.guru мы собираем рабочие сценарии для авторов, которые используют нейросети каждый день. Узнайте, какие инструменты уже работают для Дзена.

Перейти в dzen.guru

Дообучение перестало быть привилегией команд с бюджетом на серверы. Один блокнот в Colab, открытый датасет и 135 миллионов параметров, и у вас модель, которая объясняет своё решение шаг за шагом. Начните с чистки данных, результат будет ровно таким, какими были примеры для обучения.

Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

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

Qwen 3.8 27B обошла Claude Opus 4.6 и работает на домашней видеокарте с 24 ГБ
ai

Qwen 3.8 27B обошла Claude Opus 4.6 и работает на домашней видеокарте с 24 ГБ

Qwen 3.8 27B вышла на Hugging Face в июне 2025 года, и это первая мультимодальная модель такого размера, которую реально запустить на домашней видеокарте с 24…

5 мин
Французский Kog ускоряет инференс в 30 раз: оптимизация GPU без замены оборудования
ai

Французский Kog ускоряет инференс в 30 раз: оптимизация GPU без замены оборудования

Французский стартап Kog привлёк первых клиентов после майской демонстрации, на которой показал инференс (генерацию ответов нейросети) со скоростью 3 000…

6 мин
Needle 2 весит 14 МБ и работает без GPU: лёгкие нейросети дошли до умных часов
ai

Needle 2 весит 14 МБ и работает без GPU: лёгкие нейросети дошли до умных часов

Считаю лид: «Компания Cactus Compute в июне 2025 года выпустила Needle 2, открытую нейросеть на 45 миллионов параметров, которая умещается в файл размером 14…

6 мин