Active learning (активное обучение) — это подход в машинном обучении, при котором алгоритм не просто пассивно потребляет данные, а активно участвует в процессе обучения. Вместо того чтобы сразу маркировать весь набор данных, модель выбирает наиболее информативные точки данных, которые нужно маркировать в первую очередь. Это позволяет быстрее обучаться, используя гораздо меньше размеченных примеров.
Этапы работы
1. Сначала маркируется небольшая часть набора данных для обучения начальной, слабой модели.
2. Затем модель генерирует прогнозы и оценки достоверности для размеченных данных.
3. Вычисляется метрика достоверности (например, вероятностный разрыв) для каждого прогноза.
4. Выбираются только образцы с наименьшей достоверностью — те, в которых модель наиболее неуверенна.
5. Эти неопределённые образцы вручную маркируются и добавляются в обучающий набор.
6. Модель переобучается, и цикл повторяется: прогнозирование → ранжирование достоверности → маркировка → переобучение.
После нескольких итераций модель может достичь почти полностью контролируемой производительности, требуя при этом гораздо меньше размеченных образцов.
Установка и импорт библиотек
«`
pip install numpy pandas scikit-learn matplotlib
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.modelselection import traintest_split
from sklearn.metrics import accuracy_score
«`
Для этого руководства мы будем использовать набор данных make_classification из библиотеки sklearn.
Данные и стратегия разделения
Этот блок обрабатывает генерацию данных и начальное разделение, которое обеспечивает весь эксперимент по активному обучению. Сначала используется make_classification для создания 1000 синтетических образцов для задачи с двумя классами. Затем набор данных делится на 10% удерживаемого тестового набора для окончательной оценки и 90% пула для обучения. Из этого пула только 10% остаётся в качестве небольшого начального размеченного набора — что соответствует ограничению начала работы с очень ограниченными аннотациями — а остальные 90% становятся немаркированным пулом.
Генерация данных и стратегия разделения для активного обучения
«`
X, y = make_classification(
    nsamples=NSAMPLES, nfeatures=10, ninformative=5, n_redundant=0,
    nclasses=2, nclustersperclass=1, flipy=0.1, randomstate=SEED
)
1. Split into 90% Pool (samples to be queried) and 10% Test (final evaluation)
Xpool, Xtest, ypool, ytest = traintestsplit(
    X, y, testsize=0.10, randomstate=SEED, stratify=y
)
2. Split the 90% Pool into Initial Labeled (10% of the pool) and Unlabeled (90% of the pool)
Xlabeledcurrent, Xunlabeledfull, ylabeledcurrent, yunlabeledfull = traintestsplit(
    Xpool, ypool, testsize=1.0 — INITIALLABELED_PERCENTAGE,
    randomstate=SEED, stratify=ypool
)
«`
Начальное обучение и базовая оценка
Этот блок обучает начальную модель логистической регрессии, используя только небольшой размеченный начальный набор, и оценивает её точность на удерживаемом тестовом наборе. Количество размеченных образцов и базовая точность затем сохраняются как первые точки в истории производительности, устанавливая начальный ориентир перед началом активного обучения.
Цикл активного обучения
Этот блок содержит суть процесса активного обучения, где модель итеративно выбирает наиболее неопределённый образец, получает его истинную метку, переобучается и оценивает производительность. В каждой итерации текущая модель прогнозирует вероятности для всех немаркированных образцов, идентифицирует образец с наибольшей неопределённостью (наименьшей достоверностью) и «запрашивает» его истинную метку — имитируя человека-аннотатора.
SkyRL tx v0.1.0: локальный движок RL в стиле Tinker для кластеров GPU
Команда Anyscale и NovaSky (UC Berkeley) выпустила SkyRL tx v0.1.0, который даёт разработчикам возможность запускать унифицированный движок для обучения и вывода напрямую на их собственном оборудовании, сохраняя при этом тот же минимальный API, который Tinker предоставляет в управляемой службе.
SkyRL tx — это экспериментальная кроссплатформенная библиотека, которая предоставляет локальный REST API, подобный Tinker, для постобработки моделей. Она становится системным уровнем, который соединяет логику RL, среды и обучающий код с конкретными ресурсами GPU через интерфейс Tinker.
Что добавляет v0.1.0?
- Выборка теперь намного быстрее, поскольку она скомпилирована и правильно пакетная и сегментированная в движке.
 
- Теперь поддерживаются различные параметры выборки для каждого запроса, начальные семена запросов и стоп-токены, что полезно, когда многие эксперименты используют базовую модель.
 
- После нескольких исправлений цикл RL теперь правильно работает через движок.
 
- Реализована поддержка контрольных точек градиента и микропакетной выборки.
 
- Теперь поддерживается Postgres в качестве серверной части базы данных, наряду с SQLite.
 
Запуск RL от начала до конца на 8 H100 GPU
Официальный выпуск содержит специальный рецепт кода для запуска обучения с подкреплением от начала до конца на кластере с 8 H100 GPU.
Сначала пользователи клонируют репозиторий SkyRL и в папке skyrl-tx запускают движок с помощью:
«`
uv run —extra gpu —extra tinker -m tx.tinker.api \
  —base-model Qwen/Qwen3-4B \
  —max-lora-adapters 3 \
  —max-lora-rank 1 \
  —tensor-parallel-size 8 \
  —train-micro-batch-size 8 > out.log
«`
Затем они клонируют поваренную книгу Tinker от команды Thinking Machines и в папке tinker_cookbook/recipes запускают:
«`
export TINKERAPIKEY=dummy
export WANDBAPIKEY=
uv run —with wandb —with tinker rl_loop.py \
  base_url=http://localhost:8000 \
  model_name=»Qwen/Qwen3-4B» \
  lora_rank=1 \
  max_length=1024 \
  save_every=100
«`
Это создаёт кривую вознаграждения, которая подтверждает, что цикл RL правильно проходит через локальный бэкенд SkyRL tx.
Ключевые выводы
- SkyRL tx v0.1.0 реализует локальный движок, совместимый с Tinker, который объединяет обучение и вывод для постобработки LLM.
 
- Система предоставляет примитивы Tinker, forwardbackward, optimstep, sample и save_state через REST, одновременно обрабатывая пакетную обработку, адаптеры LoRA и размещение устройств внутри.
 
- Архитектура разделена на API-сервер, SQL-базу данных, планировщик и рабочие, которые выполняют прямые и обратные проходы для одной базовой модели с несколькими адаптерами LoRA.
 
- v0.1.0 добавляет поддержку обучения с подкреплением от начала до конца, более быструю выборку, параметры выборки для каждого запроса, контрольную точку градиента, микропакетную выборку и поддержку Postgres.
 
1. Какие основные этапы включает в себя процесс активного обучения в машинном обучении?
Ответ: активное обучение включает в себя несколько этапов:
1. Маркировка небольшой части набора данных для обучения начальной, слабой модели.
2. Генерация прогнозов и оценок достоверности для размеченных данных.
3. Вычисление метрики достоверности для каждого прогноза.
4. Выбор образцов с наименьшей достоверностью — тех, в которых модель наиболее неуверенна.
5. Ручная маркировка этих неопределённых образцов и добавление их в обучающий набор.
6. Переобучение модели и повторение цикла: прогнозирование → ранжирование достоверности → маркировка → переобучение.
2. Какие библиотеки используются для реализации активного обучения в примере из текста?
Ответ: для реализации активного обучения в примере из текста используются следующие библиотеки:
* numpy;
* pandas;
* scikit-learn;
* matplotlib.
3. Какие параметры используются для генерации синтетических данных в примере из текста?
Ответ: для генерации синтетических данных в примере из текста используются следующие параметры:
* n_samples — количество образцов;
* n_features — количество признаков;
* n_informative — количество информативных признаков;
* n_redundant — количество избыточных признаков;
* n_classes — количество классов;
* nclustersper_class — количество кластеров на класс;
* flip_y — вероятность перестановки меток классов;
* random_state — случайное состояние для воспроизводимости результатов.
4. Какие преимущества предоставляет активное обучение по сравнению с пассивным подходом в машинном обучении?
Ответ: активное обучение позволяет быстрее обучаться, используя гораздо меньше размеченных примеров. Это особенно полезно в ситуациях, когда получение размеченных данных является дорогостоящим или трудоёмким процессом.
5. Какие новые возможности предоставляет версия SkyRL tx v0.1.0?
Ответ: версия SkyRL tx v0.1.0 предоставляет следующие новые возможности:
* значительно ускоренная выборка;
* поддержка различных параметров выборки для каждого запроса;
* поддержка начальных семян запросов и стоп-токенов;
* поддержка контрольных точек градиента и микропакетной выборки;
* поддержка Postgres в качестве серверной части базы данных наряду с SQLite.