Что такое интерактивное обучение (предварительная версия) в Microsoft Foundry?

Important

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

Important

Для интерактивного обучения требуется явное разрешение на доступ. Запросите доступ через форму предварительной регистрации и дождитесь утверждения перед созданием обучающего сеанса.

Интерактивное обучение (предварительная версия) — это API для создания собственного цикла дообучения над моделями с открытыми весами в Microsoft Foundry. Вы управляете экспериментом в Python. Foundry выполняет выборку модели и обновления низкоранговой адаптации (LoRA) на бессерверных GPU.

Для обучения с подкреплением (RL) ваш код управляет сбором rollout-ов, наградами, преимуществами и планированием обновлений. Те же примитивы поддерживают обучение с учителем, обучение предпочтений, дистилляцию и рабочие процессы с пользовательской функцией потерь.

Когда его использовать

Используйте интерактивное обучение, когда сам цикл обучения является частью исследования:

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

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

Кто что делает

Ваша программа на Python управляет обучением. Он подготавливает входные данные и координирует эксперимент. Foundry поддерживает состояние модели и адаптера и выполняет запрошенные операции.

Схема, отделяющая драйвер Python от выполнения модели в Foundry. Драйвер владеет токенизацией, вознаграждениями, преимуществами, целями и планированием экспериментов. Он отправляет токены и запросы операций в Foundry и получает сэмплы, лог-вероятности, метрики и идентификаторы контрольных точек. Foundry выполняет выборку, прямой и обратный проходы, а также выполняет обновления оптимизатора и управляет операциями контрольных точек.

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

Основные понятия и примитивы

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

Базовый элемент Что делает
Сеанс обучения и адаптер LoRA FineTuningSession.create инициализирует поддерживаемую базовую модель с конфигурацией адаптера. Сеанс содержит состояние, используемое в последующих операциях.
Токенизированные пакеты и маски Datum содержит входные данные модели и входные данные функции потерь. Маски определяют, какие токены участвуют в обучении, например токены помощника, а не промпты или наблюдения инструментов.
Выборка sample создает ответы из выбранного чекпоинта сэмплера. Входные данные RL сопоставляют сэмплированные токены с логарифмами вероятностей rollout и преимуществами, производными от вознаграждения.
Прямой и обратный проход forward возвращает выходные данные функции потери для каждого примера без накапливания градиентов. forward_backward вычисляет выбранную целевую функцию и накапливает градиенты. Он не применяет обновление оптимизатора.
Обновление оптимизатора optim_step применяет накопленные градиенты с параметрами оптимизатора Adam. Вы выбираете, когда следует обновлять и какую скорость обучения следует использовать.
контрольная точка Sampler save_weights_for_sampler подготавливает веса адаптера для генерации. Обновите эти веса после обновления перед выборкой из обновленного адаптера.
Контрольная точка при обучении save_weights сохраняет веса адаптера и состояние оптимизатора. FineTuningSession.create_from_checkpoint возобновляет тренировку в совместимом сеансе.

Пакет SDK включает в себя cross_entropy для обновлений с учителем и потерь RL, таких как importance_sampling и ppo. Эти потери являются примитивами потерь, а не предопределенными сквозными алгоритмами. Сведения о входных контрактах и пользовательской композиции функции потерь см. в основных понятиях.

Как работает цикл RL

Рассмотрим эксперимент по математическому рассуждению: модель создает несколько ответов на каждую проблему, и ваша программа оценивает их правильность. Чтобы посмотреть пример с пошаговым разбором, перейдите к Get started.

Схема одной итерации RL. Foundry обновляет веса сэмплера и сэмплирует rollout’ы. Драйвер вычисляет награды, преимущества и маски токенов. Foundry вычисляет градиенты и применяет обновление оптимизатора. Цикл возвращается для обновления весов сэмплера перед сбором новых rollout’ов.

Создайте отложенные базовые показатели и протестируйте функцию вознаграждения перед первым обновлением. Затем повторите:

  1. Подготовьте текущую политику для отбора. Сохраните веса сэмплера из обучающего адаптера, а затем соберите несколько ответов, или rollouts, для каждого запроса.
  2. Оцените и сравните ответы. Функция вознаграждения назначает оценку каждой траектории. Вычитайте среднее вознаграждение группы запросов, чтобы получить advantage каждого rollout.
  3. Подготовьте обучающий сигнал. Сопоставьте сэмплированные токены ассистента с логарифмами вероятностей rollout и преимуществами. Исключите подсказки и наблюдения за средой из сигнала обучения.
  4. Вычислите градиенты. Отправьте пакет в forward_backward с importance_sampling. Завершите вычисление градиента перед обновлением, которое потребляет этот градиент.
  5. Обновите адаптер. Вызовите optim_step, а затем обновите веса сэмплера перед сбором ответов из обновлённой policy.
  6. Оцените и сохраните прогресс. Сравните правильность на отложенной выборке с базовым уровнем и сохраните контрольные точки обучения с выбранной периодичностью.

Get started

Выберите отправную точку, которая соответствует вашей задаче:

Поддерживаемые модели и регионы

Ознакомьтесь с обзором по точной настройке: поддерживаемые модели и поддерживаемые регионы.