Unsloth и Llama 3: как научить модель стабильно вызывать API через JSON
Machine Learning Mastery опубликовал руководство по дообучению Llama 3 под собственный tool calling с помощью библиотеки Unsloth. Проблема в том, что универсальная модель плохо держит строгий JSON под конкретный API: добавляет лишний текст, путает типы, выдумывает поля. Решение — QLoRA-дообучение на примерах вашей схемы. Unsloth, по заявлению проекта, ускоряет обучение до 2 раз и сокращает потребление памяти до 70%, так что 8B-модель можно тюнить на одной GPU класса T4. • Цель: валидный JSON и верные аргументы функций • Метод: QLoRA, 4-битные базовые веса и небольшие адаптеры • Железо: одна видеокарта на 16 ГБ
AI-обработка оригинала Machine Learning Mastery; редакция Hamidun News
Machine Learning Mastery выпустил руководство по дообучению Llama 3 под собственный tool calling с помощью библиотеки Unsloth на Python. Исходная проблема сформулирована в первой же строке: Llama 3 хорошо справляется с широким кругом задач, но агенту, который должен надёжно отдавать структурированный JSON под конкретный API, этой широты не хватает. Один пропущенный аргумент или лишняя фраза перед фигурной скобкой, и вызов функции падает. Из доступного фрагмента известна только постановка задачи, поэтому ниже мы разбираем стандартный подход к ней, а не пересказываем статью построчно.
Почему универсальная модель ломает вызовы
Когда агент работает с API, ошибка в формате обходится дорого. Валидатор схемы отклоняет ответ целиком, а повторный запрос стоит денег и времени. У необученной модели обычно одни и те же сбои: текст до и после JSON, выдуманные поля, строка вместо числа, несуществующее имя функции. Промпт с примерами снижает долю таких ошибок, но не убирает их, особенно когда в схеме десятки функций с вложенными параметрами.
Дообучение решает задачу иначе. Модель получает сотни или тысячи пар «запрос пользователя → корректный вызов» именно в вашей схеме и перестаёт угадывать формат. Он становится для неё привычным способом ответа.
Что даёт Unsloth
Unsloth — открытая библиотека для ускоренного дообучения LLM. Её авторы заявляют ускорение до 2 раз и снижение потребления видеопамяти до 70% по сравнению со стандартным стеком. Это цифры проекта, а не независимые замеры, и на вашем железе они могут отличаться. Практический смысл в другом: связка с QLoRA позволяет держать базовые веса в 4-битном формате и обучать только небольшие LoRA-адаптеры. Модель на 8 млрд параметров в таком режиме помещается на одну видеокарту с 16 ГБ, например на T4 из бесплатного Colab.
Типичный набор для такой задачи:
- База: Llama 3 8B Instruct
- Метод: LoRA или QLoRA с 4-битной квантизацией базовых весов
- Данные: пары «запрос → вызов функции» в JSON строго по схеме вашего API
- Стек: Python, Unsloth, Hugging Face Datasets, TRL (SFTTrainer)
- Железо: одна GPU от 16 ГБ памяти
- Выход: адаптер, который весит малую долю от полной модели; при необходимости его сливают с базой и экспортируют в GGUF для llama.cpp или Ollama
Где подводные камни
Главный риск связан с данными. Если обучающие примеры написаны небрежно, модель выучит эту небрежность с той же уверенностью. Шаблон чата при обучении должен совпадать с тем, что используется при инференсе, включая служебные токены Llama 3. Расхождение здесь — самая частая причина того, что «в ноутбуке работало, а в проде нет».
Вторая ловушка — отсутствие отрицательных примеров. Агент должен уметь не вызывать функцию, когда вопрос к ней не относится, или переспросить, если не хватает аргумента. Без таких кейсов дообученная модель начнёт вызывать инструменты по любому поводу.
Третья проблема — оценка. Тренировочный loss мало говорит о качестве агента. Нужна отложенная выборка и три метрики: доля синтаксически валидного JSON, точность выбора функции и точность значений аргументов.
Практика
Начните с малого. Соберите 300–500 качественных примеров из реальных логов, разметьте их по схеме и обязательно оставьте 10–20% на проверку. Запустите QLoRA на 8B-модели и сравните результат с базовой Llama 3, у которой в промпте те же схемы функций. Если прирост по валидности JSON и точности аргументов заметен, масштабируйте датасет. Если нет, проверьте шаблон чата и качество разметки.
Дообучение не заменяет constrained decoding. Генерация по грамматике или JSON-схеме гарантирует синтаксис, а дообучение отвечает за смысл: какую функцию выбрать и что подставить в аргументы. Вместе эти подходы дают самый предсказуемый результат. К тому же Llama 3 к 2026 году уже не новинка, но сам рецепт переносится на другие модели, которые поддерживает Unsloth.
Системное обучение работе с ИИ и AI-агентами
Образовательная платформа Vibe Academy (vibe-academy.ru) — практические курсы, промпт-инжиниринг, автоматизация процессов и прикладные AI-воркфлоу.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.