Все публикации
9 мин чтения
Исследования2 ноября 2026 г.

Эффективные агенты с дистилляцией знаний в Amazon SageMaker AI

Как дистиллировать агента для покупок с помощью SeqKD и Amazon SageMaker AI: учитель через Bedrock, отбор решённых траекторий и бессерверное дообучение.

SMNTCN — AI & Tech News·SMNTCN (Semanticon) — глобальные новости ИИ
Первоисточник
Ключевые инсайты
  • 01.Как дистиллировать агента для покупок с помощью SeqKD и Amazon SageMaker AI: учитель через Bedrock, отбор решённых траекторий и бессерверное дообучение.
AI QAZAQSTAN
KZ·AI 3742
Эффективные агенты с дистилляцией знаний в Amazon SageMaker AI

Согласно материалу AWS Machine Learning, агент для покупок, построенный на фронтирной модели, работает корректно, но стоит дорого. Покупатель просит найти чёрную поясную сумку дешевле двадцати долларов в магазине с рейтингом не ниже 4,5 звезды, и агент ищет товары в каталоге, проверяет кандидатов, сверяет ограничения и делает рекомендацию. Однако агентное приложение состоит не из одного вызова модели, а из цикла: поиск, чтение результатов, уточнение, проверка и решение. Одна выполненная задача может включать несколько вызовов фронтирной модели, и за каждый из них приходится платить при каждом обращении покупателя. В промышленном масштабе стоимость задачи накапливается, снижает окупаемость проекта и мешает его запуску. Один из способов сделать агентное приложение эффективнее — использовать модель меньшего размера, которая быстрее отвечает и дешевле в развёртывании. Проблема в качестве: меньшая модель обычно хуже справляется с задачей, поэтому изначально выбирали крупную. Дистилляция знаний сокращает этот разрыв, перенося поведение большой модели-«учителя» в меньшую модель-«ученика». Ученик обучается воспроизводить результаты учителя и сохраняет большую часть качества при скорости и стоимости меньшей модели. В материале описано, как с помощью дистилляции знаний, и в частности дистилляции на уровне последовательностей (SeqKD), дообучить агента для покупок в Amazon SageMaker AI. Авторы показывают, как получить качественные многошаговые траектории от фронтирного учителя и оставить только те, которые решают задачу, как закодировать их для контролируемого дообучения, как запустить обучение на бессерверной инфраструктуре и как оценить ученика на отложенном наборе задач. SeqKD — самая простая применимая форма дистилляции. Учитель генерирует качественные ответы, а ученик дообучается на них с помощью контролируемого дообучения. Для SeqKD нужен только текст учителя: доступ к логитам и инфраструктура обучения с подкреплением не требуются, поэтому метод работает даже с закрытой модели, доступной только через API. По сравнению с подходами на основе логитов или on-policy SeqKD занимает самый экономичный и переносимый край спектра дистилляции. Полученные ответы сохраняются как набор данных, который можно повторно использовать для обучения или тестирования разных учеников без повторной генерации. Теоретически ученик должен воспроизводить полное распределение возможных выходов учителя, но на практике это невозможно: пространство последовательностей слишком велико. SeqKD обходит это ограничение, приближая распределение выборками, которые действительно генерирует учитель. Для агента последовательность — это не блок текста, а траектория: упорядоченная цепочка рассуждений, вызовов инструментов и возвращаемых наблюдений, где каждый шаг зависит от всего предыдущего. Обучение на всей последовательности учит ученика не одному ответу, а рассуждениям, ведущим к каждому действию, и самому многошаговому плану действий. Поэтому агентные задачи хорошо иллюстрируют дистилляцию на уровне последовательностей, ведь копируется само поведение. SeqKD подходит в нескольких ситуациях. Во-первых, когда есть входные данные, но нет качественных целевых ответов: метод по сути является генерацией данных, где входы задаёт разработчик, а цели пишет учитель. Цели могут быть как простыми одиночными ответами, так и многоходовыми траекториями использования инструментов. Такие траектории особенно трудно получить, поскольку одна задача порождает множество частично правильных прогонов, а отличить решённый прогон от неудачного можно только с надёжным оценщиком. Бенчмарк с программной системой оценки как раз предоставляет такой оценщик. Во-вторых, SeqKD подходит, когда учитель доступен только через API, что типично для фронтирных моделей: нельзя получить веса, логиты или дообучить модель. Метод освобождает от оплаты фронтирных цен за каждый запрос после того, как ученик берёт работу на себя. В-третьих, SeqKD — сильный экономичный первый шаг. Некоторые из лучших компактных моделей рассуждений созданы во многом именно с помощью SeqKD. Например, дистиллированные модели DeepSeek-R1 получены дообучением меньших моделей Qwen и Llama на сгенерированных большой моделью трассах рассуждений. Для воспроизведения примера нужны учётная запись AWS с ролью IAM для SageMaker AI, которая имеет доступ на чтение и запись к бакету Amazon S3 и право вызывать модель-учителя. Также нужна фронтирная модель-учитель (в примере используется модель на Amazon Bedrock), доступ к настройке моделей SageMaker AI в поддерживаемом регионе и среда Amazon SageMaker Studio или локальная IDE с настроенным AWS CLI на Python 3.12 или выше. Для блокнота рекомендуется инстанс ml.m5.4xlarge, так как подготовка данных и локальная оценка выполняются на CPU. Кроме того, понадобятся знание Python, контролируемого дообучения и агентов с инструментами, а также задача с программной системой оценки. В примере используется тестовый набор ShoppingBench, но его можно заменить собственной задачей. Конвейер состоит из нескольких этапов. Фронтирный учитель GLM-5.3 на Amazon Bedrock выступает в роли агента ShoppingBench и генерирует траектории. Встроенная система оценки бенчмарка оставляет только решившие задачу траектории, и на них бессерверно дообучается студент Qwen3.5-4B с помощью контролируемого дообучения в Amazon SageMaker AI. Затем дистиллированная модель проверяется на отложенной части ShoppingBench и разворачивается на эндпоинте реального времени Amazon SageMaker AI Inference, который выполняет цикл вызова инструментов. Подготовка данных — самая трудная часть, и именно система оценки ShoppingBench отделяет успешные прогоны от неудачных. Бенчмарк содержит 750 синтезированных задач с покупками: по 250 на каждый тип намерения — товар, магазин и купон. Каждая задача имеет скрытый эталонный ответ и ограничения, определяющие успех. Задачи разделены один раз на 426 обучающих и 324 оценочных, по фиксированным индексам, чтобы наборы не пересекались. Для каждой обучающей задачи учитель GLM-5.3 работает с включённым режимом рассуждений и температурой 1,0. Он ищет товары в каталоге примерно из 2,7 миллиона позиций, изучает кандидатов и рекомендует те, что соответствуют ограничениям. Каждая задача сэмплируется дважды, что даёт 850 траекторий, после чего система оценки ShoppingBench оставляет только решившие задачу. Температура 1,0 выбрана намеренно. Сэмплирование вместо жадного декодирования заставляет две попытки исследовать разные запросы и пути рассуждений, что увеличивает число задач с хотя бы одной решённой траекторией и разнообразие данных для обучения. Этот шаг отбора по результату превращает способного, но несовершенного учителя в чистый обучающий набор: достаточно, чтобы он правильно решал задачи достаточно часто и решённые прогоны стоило имитировать. Каждая решённая траектория представляет собой полный эпизод: запрос покупателя, рассуждения учителя и вызовы инструментов на каждом шаге (поиск, проверка, рекомендация, завершение), а также наблюдение, которое вернула среда. Рассуждения хранятся вместе с действиями, и, как показывают результаты, именно это позволяет ученику приблизиться к учителю. Траектории кодируются как список сообщений с ходами чата, а шаблон чата самой модели-ученика превращает их в текст. Так токены, которые видит обучающий процесс, совпадают с токенами, которые агент выдаёт при инференсе. Каждая траектория превращается в отдельную строку обучения на каждый шаг. Ход пользователя содержит системный промпт и разговор до текущего момента. Ход ассистента содержит рассуждения шага и вызов инструмента, к которому они ведут, в формате блока рассуждений и списка вызовов. Потери вычисляются только по ходу ассистента, поэтому модель учится формировать следующее рассуждение и действие, а не предсказывать наблюдения среды. После фильтрации решённые траектории дают около 2600 строк для обучения и 130 для валидации. Разбиение данных производится по задачам, а не по строкам. Поскольку учитель сэмплируется дважды на задачу, а каждая траектория содержит несколько шагов, многие строки относятся к одной задаче. При разбиении по строкам почти идентичный контекст попал бы и в обучение, и в валидацию. Поэтому целиком выделяется около пяти процентов задач. Стоимость покомандного кодирования — повторяющийся контекст, так как каждая строка заново содержит растущий разговор. Бессерверное дообучение обрезает всё, что превышает dataset_max_len, поэтому строки, выходящие за предел, теряют часть нужной информации. Чтобы не допустить обрезки, строки держат в пределах бюджета. Главный способ — сжимать наблюдения инструментов, которые занимают большую часть токенов. Для результатов поиска сохраняются только поля, от которых зависит следующее решение: идентификатор, цена, рейтинг и проверяемые ограничения. Текст карточки товара удаляется, а число результатов на запрос ограничивается. Если траектории всё ещё превышают бюджет, ограничивается число шагов. В примере dataset_max_len равен 16 384 токенам, что достаточно для большинства траекторий после сокращения наблюдений. Обучение проводится с помощью настройки моделей SageMaker AI и бессерверного SFT. Базовая модель выбирается из каталога, задание указывает на закодированные наборы данных, а управляемый сервис сам выделяет вычислительные ресурсы, запускает задание и возвращает настроенную модель. Метрики отслеживаются в Amazon SageMaker с MLflow. Поскольку данные уже в поддерживаемом формате, скрипт обучения, образ контейнера и инстанс не требуются. Результаты записываются в группу пакетов моделей, которая хранит все версии созданных моделей. Для обучения используется LoRA-адаптер с рангом 64, три эпохи на небольшом наборе, длина последовательности увеличена до 16 384 токенов. Перед запуском конфигурация проверяется сухим прогоном, после чего из результата обучения берётся ARN пакета модели, который используется на этапах оценки и развёртывания. Оценка проводится в два этапа, от самого дешёвого к самому дорогому. Полная сквозная оценка требует много времени и ресурсов: нужно поднять поисковый сервер над миллионами товаров, развернуть эндпоинт и прогнать многошаговый цикл агента по каждой отложенной задаче. Поэтому сначала запускается дешёвая предварительная проверка через оценку моделей SageMaker AI, которая оценивает каждый сгенерированный шаг по эталонному действию учителя. Для дистилляции вызовов инструментов проверяется выбор инструментов: вызвала ли модель нужные инструменты в правильном порядке, без учёта форматирования аргументов, поскольку именно это поведение важнее всего передать. Пользовательская функция вознаграждения извлекает названия инструментов из действия ученика и эталона и сравнивает их. Оценка выполняется для базовой модели и для ученика, а решение простое: ученик должен превзойти базовую модель на этой проверке. Только тогда дистилляция считается удачной и имеет смысл полная оценка. Иначе сначала нужно исправлять обучение. Дистиллированная модель сама инструменты не запускает. Дообучение учит её выдавать правильный вызов инструмента в нужный момент в виде текста, но что-то должно выполнить вызов и вернуть результат. При инференсе модель оборачивается в небольшой детерминированный обвязочный код: он формирует промпт, разбирает вызов инструмента, выполняет его, добавляет наблюдение и снова запрашивает модель, пока та не выдаст окончательный ответ. Это обычный прикладной код или готовый фреймворк для обслуживания, а не обучение с подкреплением. Ученик представляет собой LoRA-адаптер поверх открытой базовой модели. Поэтому базовая модель разворачивается один раз, а ученик подключается как адаптер в виде второго компонента инференса на том же эндпоинте реального времени. При вызове указывается нужный компонент, и один эндпоинт обслуживает и базовую модель, и дистиллированного ученика для сравнения бок о бок. Для обслуживания используется контейнер Deep Java Library Large Model Inference с движком vLLM, зафиксированной версией для воспроизводимых переразвёртываний. Список типов инстансов задаёт порядок предпочтения: SageMaker AI разворачивает модель на первом типе, где есть свободная мощность, и переходит к следующему, если её нет. Материал подготовлен нейросетью на основе оригинальной публикации. ИИ может ошибаться в деталях (цифры, имена, даты, цитаты) — для важной информации сверяйтесь с первоисточником.

Материал агрегирован в рамках национального инфопотока AI Qazaqstan с сохранением ссылки на автора.

Связанные материалы

Все материалы →
Исследования1 мин

Anthropic запретила Claude создавать клоны видеоигр

Anthropic изменила промпт Claude Code: ИИ больше не должен создавать клоны существующих видеоигр, но собственные игры остаются доступны.

SMNTCN (Semanticon) — глобальные новости ИИ