Claude получил возможность файн-тюнить языковые модели с помощью нового инструмента под названием Hugging Face Skills. Не просто писать скрипты для обучения, а реально отправлять задачи на облачные GPU, следить за прогрессом и пушить готовые модели на Hugging Face Hub. В этом туториале показано, как это работает и как использовать самому.

Claude Code умеет использовать "скиллы" — упакованные инструкции, скрипты и доменные знания для выполнения специализированных задач. Скилл hf-llm-trainer учит Claude всему, что нужно знать про обучение: какой GPU выбрать под размер модели, как настроить аутентификацию на Hub, когда использовать LoRA вместо полного файн-тюнинга, и как разрулить десятки других решений, от которых зависит успешный запуск обучения.

С этим скиллом можно сказать Claude что-то вроде:

Fine-tune Qwen3-0.6B on the dataset open-r1/codeforces-cots

И Claude:

  1. Провалидирует формат датасета

  2. Выберет подходящее железо (t4-small для модели на 0.6B)

  3. Использует и обновит скрипт обучения с мониторингом через Trackio

  4. Отправит задачу на Hugging Face Jobs

  5. Сообщит ID задачи и примерную стоимость

  6. Проверит прогресс, когда спросите

  7. Поможет отладить, если что-то пойдет не так

Модель обучается на GPU Hugging Face, пока можно заниматься другими делами. Когда закончится — зафайнтюненная модель появится на Hub, готовая к использованию.

Скилл поддерживает те же методы обучения, что используются в продакшене: supervised fine-tuning, direct preference optimization и reinforcement learning with verifiable rewards. Можно обучать модели от 0.5B до 70B параметров, конвертировать их в GGUF для локального деплоя и запускать многоэтапные пайплайны, комбинирующие разные техники.

Установка и настройка

Перед началом понадобится:

  • Аккаунт Hugging Face с планом Pro или Team (Jobs требуют платный план)

  • Токен с правами записи с huggingface.co/settings/tokens

  • Кодинг-агент типа Claude Code, OpenAI Codex или Google Gemini CLI

Hugging Face Skills совместимы с Claude Code, Codex и Gemini CLI. Интеграции с Cursor, Windsurf и Continue на подходе.

Claude Code

  1. Зарегистрировать репозиторий как маркетплейс плагинов:

/plugin marketplace add huggingface/skills
  1. Чтобы установить скилл:

/plugin install <skill-folder>@huggingface-skills

Например:

/plugin install hf-llm-trainer@huggingface-skills

Codex

  1. Codex определит скиллы через файл AGENTS.md. Можно проверить, что инструкции загружены:

codex --ask-for-approval never "Summarize the current instructions."
  1. Подробности в гайде Codex AGENTS.

Gemini CLI

  1. Репозиторий включает gemini-extension.json для интеграции с Gemini CLI.

  2. Установить локально:

gemini extensions install . --consent

или использовать GitHub URL:

gemini extensions install https://github.com/huggingface/skills.git --consent

Подробнее в документации Gemini CLI extensions.

Подключение к Hugging Face

Нужно аутентифицировать аккаунт Hugging Face токеном с правами записи, чтобы задача могла создать репозиторий модели.

Настройка токена:

hf auth login
# или
export HF_TOKEN=hf_your_write_access_token_here

Hugging Face MCP Server нужно настроить для использования токена с правами записи, передавая его через HF_TOKEN или HTTP-заголовок Authorization: Bearer.

Первый запуск обучения

Разберем полный пример. Файнтюним маленькую модель, чтобы увидеть весь воркфлоу, а потом рассмотрим более продвинутые возможности.

Инструкция кодинг-агенту

Начать стоит с простой и понятной инструкции зафайнтюнить конкретную модель:

Fine-tune Qwen3-0.6B on the open-r1/codeforces-cots dataset for instruction following.

Кодинг-агент анализирует запрос и готовит конфигурацию обучения. Для модели на 0.6B на демо-датасете он выбирает t4-small — достаточно GPU для этого размера модели и самый дешевый доступный вариант.

Датасет open-r1/codeforces-cots — это датасет задач и решений с Codeforces. Хороший датасет для instruction tuning модели на решение сложных задач по программированию.

Проверка перед отправкой

Прежде чем кодинг-агент что-то отправит, будет показана конфигурация:

I'll fine-tune Qwen/Qwen3-0.6B on open-r1/codeforces-cots using SFT.

Configuration:
- Hardware: t4-small (~$0.75/hour)
- Estimated time: ~20 minutes
- Estimated cost: ~$0.30
- Output: username/qwen-codeforces-cots-sft

The model will be pushed to Hub automatically. Should I submit?

В этот момент можно что-то поменять. Можно изменить имя выходного репозитория, выбрать другое железо или попросить Claude изменить параметры обучения. После одобрения агент отправляет задачу.

Например, можно попросить агента сделать тестовый прогон:

Do a quick test run on 100 examples.

Отслеживание прогресса

После отправки приходят детали задачи:

✅ Job submitted successfully!

Job ID: abc123xyz
Monitor: https://huggingface.co/jobs/username/abc123xyz

Expected time: ~20 minutes
Estimated cost: ~$0.30

View real-time metrics at: https://huggingface.co/spaces/username/trackio

Скилл включает интеграцию с Trackio, так что можно наблюдать, как падает training loss в реальном времени.

Задачи выполняются асинхронно, так что можно закрыть терминал и вернуться позже. Когда нужен апдейт:

How's my training job doing?

Агент вытащит логи и резюмирует прогресс:

Job abc123xyz is running (45 minutes elapsed)

Current step: 850/1200
Training loss: 1.23 (↓ from 2.41 at start)
Learning rate: 1.2e-5

Estimated completion: ~20 minutes

Использование модели

Когда обучение завершится, модель на Hub:

from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("username/qwen-codeforces-cots-sft")
tokenizer = AutoTokenizer.from_pretrained("username/qwen-codeforces-cots-sft")

Вот и весь цикл. Описание того, что нужно, обычным языком — а агент разруливает выбор GPU, генерацию скрипта, отправку задачи, аутентификацию и персистентность. Все это обошлось примерно в тридцать центов.

Методы обучения

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

Supervised Fine-Tuning (SFT)

С SFT начинается большинство проектов. Предоставляются демонстрационные данные — примеры входов и желаемых выходов — и обучение подстраивает модель под эти паттерны.

SFT стоит использовать, когда есть качественные примеры нужного поведения. Разговоры с поддержкой, пары для генерации кода, доменно-специфичные Q&A — все, где можно показать модели, как выглядит хороший результат.

Fine-tune Qwen3-0.6B on my-org/support-conversations for 3 epochs.

Агент валидирует датасет, выбирает железо (a10g-large с LoRA для модели на 7B) и настраивает обучение с чекпоинтами и мониторингом.

Для моделей больше 3B параметров агент автоматически использует LoRA (Low-Rank Adaptation), чтобы снизить требования к памяти. Это делает обучение моделей на 7B или 13B возможным на одном GPU, сохраняя большую часть качества полного файн-тюнинга.

Direct Preference Optimization (DPO)

DPO обучается на парах предпочтений — ответах, где один "выбранный", а другой "отклоненный". Это выравнивает выходы модели с человеческими предпочтениями, обычно после начального этапа SFT.

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

Run DPO on my-org/preference-data to align the SFT model I just trained.
The dataset has 'chosen' and 'rejected' columns.

DPO чувствителен к формату датасета. Требуются колонки с точными названиями chosen и rejected, или колонка prompt со входом. Агент сначала это проверяет и показывает, как замапить колонки, если датасет использует другие названия.

Group Relative Policy Optimization (GRPO)

GRPO — это задача reinforcement learning, которая доказала эффективность на верифицируемых задачах типа решения математических задач, написания кода или любых задач с программным критерием успеха.

Train a math reasoning model using GRPO on the openai/gsm8k dataset based on Qwen3-0.6B.

Модель генерирует ответы, получает награды на основе корректности и учится на результатах. Это сложнее, чем SFT или DPO, но конфигурация похожа.

Железо и стоимость

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

Маппинг размера модели на GPU

Для крошечных моделей до 1B параметров хорошо работает t4-small. Эти модели обучаются быстро — рассчитывать стоит на $1-2 за полный прогон. Идеально для обучения или экспериментов.

Для маленьких моделей (1-3B) стоит переходить на t4-medium или a10g-small. Обучение занимает несколько часов и стоит $5-15.

Для средних моделей (3-7B) нужен a10g-large или a100-large с LoRA. Полный файн-тюнинг не влезает, но LoRA делает их вполне обучаемыми. Закладывать стоит $15-40 на продакшен.

Для больших моделей (7B+) эта HF skills job не подходит.

Демо vs Продакшен

Когда тестируется воркфлоу, начинать стоит с малого:

Do a quick test run to SFT Qwen-0.6B with 100 examples of my-org/support-conversations.

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

Для продакшена стоит быть конкретнее:

SFT Qwen-0.6B for production on the full my-org/support-conversations.
Checkpoints every 500 steps, 3 epochs, cosine learning rate.

Всегда стоит делать демо перед тем, как коммититься на многочасовую продакшен-задачу. Демо за $0.50, которое поймает ошибку формата, экономит $30 на проваленном прогоне.

Валидация датасета

Формат датасета — самый ��астый источник провалов обучения. Агент может провалидировать датасеты до того, как будет потрачено GPU-время.

Check if my-org/conversation-data works for SFT training.

Агент запускает быструю проверку на CPU (доли цента) и выдает отчет:

Dataset validation for my-org/conversation-data:

SFT: ✓ READY
  Found 'messages' column with conversation format

DPO: ✗ INCOMPATIBLE
  Missing 'chosen' and 'rejected' columns

Если датасет требует трансформации, агент покажет как:

My DPO dataset uses 'good_response' and 'bad_response' instead
of 'chosen' and 'rejected'. How do I fix this?

Агент предоставляет код маппинга и может включить его прямо в скрипт обучения.

Мониторинг обучения

Мониторинг в реальном времени помогает ловить проблемы на ранней стадии. Скилл по умолчанию настраивает Trackio — после отправки задачи можно смотреть метрики по адресу:

https://huggingface.co/spaces/username/trackio

Там показывается training loss, learning rate и метрики валидации. У здорового прогона loss стабильно падает.

Спрашивать агента о статусе можно в любое время:

What's the status of my training job?

Если что-то пошло не так, агент помогает диагностировать. Out of memory? Агент предложит уменьшить batch size или апгрейдить железо. Ошибка датасета? Агент определит несоответствие. Таймаут? Агент порекомендует увеличить длительность или ускорить настройки обучения.

Конвертация в GGUF

После обучения может понадобиться запустить модель локально. Формат GGUF работает с llama.cpp и зависимыми инструментами типа LM Studio, Ollama и др.

Convert my fine-tuned model to GGUF with Q4_K_M quantization.
Push to username/my-model-gguf.

Агент отправляет задачу конвертации, которая мержит LoRA-адаптеры, конвертирует в GGUF, применяет квантизацию и пушит на Hub.

Потом можно использовать локально:

llama-server -hf <username>/<model-name>:<quantization>

# Например, чтобы запустить модель Qwen3-1.7B-GGUF на локальной машине:
llama-server -hf unsloth/Qwen3-1.7B-GGUF:Q4_K_M

Что дальше

Показано, что кодинг-агенты типа Claude Code, Codex или Gemini CLI могут справляться с полным циклом файн-тюнинга модели: валидация данных, выбор железа, генерация скриптов, отправка задач, мониторинг прогресса и конвертация результатов. Это превращает то, что раньше было специализированным навыком, в нечто, что можно делать через разговор.

Что попробовать:

  • Зафайнтюнить модель на своем датасете

  • Собрать preference-aligned модель через SFT -> DPO

  • Обучить reasoning-модель с GRPO на математике или коде

  • Сконвертировать модель в GGUF и запустить через Ollama

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


Буду рад за лайк и подписку на канал :) https://t.me/notes_from_cto


Ресурсы