← Вернуться в блог

Scikit-learn 1.9 получает функции обратного вызова и ускорение GPU 12 июня

Scikit-learn 1.9, выпущенный 12 июня 2026 года, представляет API функций обратного вызова в реальном времени и расширенную поддержку GPU, углубляя интеграцию с экосистемой Hugging Face ML.

Поделиться: XFacebookLinkedInWhatsApp
Desliza para seguir leyendo

Scikit-learn 1.9 выпущен 12 июня 2026 года: Крупный скачок в инженерии классического машинного обучения

Команда разработчиков scikit-learn выпустила версию 1.9.0 12 июня 2026 года, что стало одним из самых насыщенных функциями релизов в недавней истории библиотеки. Обновление выходит в критический момент для экосистемы машинного обучения: в то время как большие языковые модели продолжают доминировать в заголовках, сопровождающие scikit-learn удвоили свои усилия на том, что библиотека делает лучше всего — быстрое, интерпретируемое, производственное классическое машинное обучение — одновременно модернизируя интерфейс для следующего поколения инструментов ML. Релиз доступен на PyPI и совместим с Python 3.11 по 3.14.

Для инженеров, строящих конвейеры ML на структурированных табличных данных — основе корпоративного ML — scikit-learn 1.9 предоставляет каскад улучшений: совершенно новую экспериментальную систему обратного вызова для мониторинга обучения, расширенное ускорение GPU через Array API, более легкий слой совместимости dataframe через narwhals и значительно богатую HTML-визуализацию оценщика. Эти изменения в совокупности решают давние проблемы трения для практиков, развертывающих модели sklearn в масштабе.

Релиз также выходит на фоне активного партнерства с Hugging Face, платформой AI, которая превратилась в центральный узел сообщества открытого исходного кода ML. Хотя версия 1.9 не содержит новый код интеграции для Hugging Face, две организации потратили последние четыре года на создание общей инфраструктуры — наиболее заметно через библиотеку skops — которая теперь размещает почти 800 моделей scikit-learn на Hugging Face Hub. Вместе релиз 1.9 и созревающий конвейер sklearn–Hugging Face представляют поворотный момент для классического ML в эпоху моделей-основ.

API обратного вызова: мониторинг обучения в реальном времени приходит в Scikit-learn

Наиболее значительное добавление в версию 1.9 — это экспериментальный механизм обратного вызова, давно запрашиваемая функция, которая вводит мониторинг в реальном времени и видимость прогресса в цикл обучения оценщиков scikit-learn. До сих пор инженеры ML, использующие sklearn, не имели встроенного способа наблюдать за подгонкой модели в процессе — нет полос прогресса, нет живых кривых потерь, нет хуков ранней остановки. Эта пробел заставлял команды полагаться на обходные пути, такие как флаги подробного логирования или внешние библиотеки. Версия 1.9 окончательно закрывает этот разрыв.

Система обратного вызова вводит две конкретные реализации из коробки:

  • sklearn.callback.ProgressBar — отображает живую полосу прогресса во время fit(), предоставляя инженерам в реальном времени вид того, как далеко продвинулось обучение без необходимости покидать блокнот или терминал
  • sklearn.callback.ScoringMonitor — логирует метрики оценки на каждой итерации цикла оптимизации, позволяя отслеживать сходимость без внешних инструментов или пользовательского шаблонного кода

В версии 1.9 система обратного вызова поддерживается целевым, но значительным набором оценщиков: LogisticRegression (с использованием решателя lbfgs), полное семейство SearchCV (GridSearchCV, RandomizedSearchCV, HalvingGridSearchCV и HalvingRandomSearchCV), Pipeline и StandardScaler. Сопровождающие явно подали сигнал, что это основа, а не потолок — пост блога релиза описывает механизм обратного вызова как тот, который "открывает дверь к полосам прогресса или продвинутому мониторингу сходимости", с более широким покрытием оценщика, запланированным на последующие релизы.

Значение этой функции выходит за пределы пользовательского опыта. Для команд, интегрирующих scikit-learn в более крупные конвейеры MLOps — где мониторинг, оповещение и проверяемость являются непреложными требованиями — API обратного вызова обеспечивает программный крючок, который может питать инфраструктуру логирования, приборные панели или трекеры экспериментов, такие как MLflow и Weights & Biases. Это указывает на то, что команда scikit-learn серьезно думает об операционном контексте, в котором используется их библиотека, а не только о статистической корректности своих алгоритмов.

"Механизм обратного вызова открывает дверь к полосам прогресса или продвинутому мониторингу сходимости," — объявление о выпуске scikit-learn 1.9, июнь 2026

Глядя вперед, экспериментальный статус API обратного вызова означает, что интерфейс может развиваться перед стабилизацией. Инженеры, строящие производственные системы на его основе, должны рассматривать поверхность API как подверженную изменениям в версиях 1.10 и 1.11. Тем не менее, дизайн уже достаточно выразителен, чтобы охватить наиболее распространенные случаи использования мониторинга, и отклик сообщества со времени выпуска 12 июня был в основном положительным, с несколькими сопровождающими инструментов MLOps, уже экспериментирующими с адаптерами обратного вызова для своих платформ.

Ускорение GPU и Array API: Scikit-learn движется к нейтральности оборудования

Одной из определяющих повествований периода 2024–2026 годов в инженерии ML было ускорение разнообразия оборудования: инженеры больше не ограничены CPU для классического ML. Ответ Scikit-learn на эту тенденцию — постепенное развертывание поддержки Array API — сделало значительный шаг вперед в версии 1.9. Релиз расширяет совместимое с GPU выполнение на более широкий набор оценщиков и метрик, дополнительно разделяя scikit-learn от предположения, что все вычисления происходят на CPU с массивами NumPy.

В версии 1.9 основные оценщики, получившие поддержку GPU через Array API, являются:

  • linear_model.LogisticRegression с solver="lbfgs" — один из наиболее широко используемых оценщиков в библиотеке теперь работает изначально на GPU
  • linear_model.PoissonRegressor с solver="lbfgs" — критически важно для данных подсчета и приложений страховки или актуарии
  • kernel_approximation.Nystroem — ускоренная GPU аппроксимация ядра разблокирует крупномасштабные рабочие процессы ядра SVM
  • pipeline.FeatureUnion — позволяя полностью ускоренные GPU многоветвевые конвейеры комбинирования признаков

Функции метрик также получили покрытие в 1.9: d2_absolute_error_score, d2_pinball_score и average_precision_score теперь принимают совместимые с Array API входные данные, что означает, что они могут работать непосредственно с тензорами GPU без копирования данных обратно на CPU. Релиз также содержит новую утилиту, sklearn.utils._array_api.move_estimator_to, которая позволяет инженерам перемещать атрибуты массива подогнанного оценщика на другое устройство или пространство имен — критический инструмент для смешанных устройств конвейеров ML, где предварительная обработка может происходить на CPU, а вывод работает на GPU.

Практические последствия значительны. Независимые тесты, опубликованные :probabl. в марте 2026 года, продемонстрировали ускорение до 15 раз в сложных конвейерах scikit-learn при запуске на GPU через Array API. Хотя эти выигрыши в значительной степени зависят от типа модели и размера данных — меньшие наборы данных часто не видят никакой выгоды из-за накладных расходов передачи данных — они подтверждают стратегическое направление: для больших табличных наборов данных и вычислительно интенсивных конвейеров ускоренный GPU sklearn теперь является жизнеспособным производственным вариантом.

Модернизация интерфейса разреженности

Версия 1.9 также вводит ключ конфигурации "sparse_interface", который позволяет пользователям контролировать, возвращает ли scikit-learn разреженные матрицы SciPy или новый интерфейс разреженного массива:

import sklearn
sklearn.set_config(sparse_interface="sparray")  # выбрать в разреженные массивы

Это часть более широкого выравнивания с направлением экосистемы SciPy, которое движется от устаревшего формата csr_matrix к csr_array с SciPy 1.8. Текущее значение по умолчанию остается "spmatrix" для обратной совместимости, но команда указала будущее изменение значения по умолчанию на "sparray" в грядущих релизах. Инженеры, строящие новые конвейеры, должны рассмотреть возможность выбора нового интерфейса сегодня, чтобы избежать разрушительной миграции позже.

Интеграция Narwhals: Более легкий путь к межпроцедурной совместимости Dataframe

Одно из тихих, но стратегически важных изменений в scikit-learn 1.9 — это добавление narwhals в качестве новой зависимости библиотеки. Narwhals — это легкий слой совместимости, который позволяет коду Python работать безупречно в нескольких библиотеках dataframe — в основном pandas и Polars — без необходимости условного ветвления для конкретной библиотеки. Принимая narwhals, scikit-learn признает реальность, которую практики чувствовали в течение последних двух лет: экосистема Python данных больше не синонимична pandas одному.

Непосредственным импульсом для этого изменения является устаревание протокола обмена dataframe (__dataframe__) командой Polars. Scikit-learn полагался на этот протокол для обработки не-pandas dataframes через свой set_output API, введенный в версии 1.2. С Polars, устаревающим протоколом, команде sklearn нужно было более надежное решение, которое не сломается по мере того, как API Polars продолжал развиваться. Как объясняет журнал изменений версии 1.9, narwhals обеспечивает ровно это: унифицированный, легкий интерфейс, который находится выше слоя dataframe и переводит операции в основную библиотеку.

Для инженеров ML это значительное улучшение качества жизни с реальными производственными последствиями. Polars, которая приоритизирует производительность через ленивое вычисление, многопоточную обработку и пишущий на Rust на основе, получила существенное признание как альтернатива pandas для предварительной обработки данных в масштабе. Команды, которые перенесли свои конвейеры предварительной обработки в Polars, теперь могут использовать set_output(transform="polars") в scikit-learn без попадания в проблемы совместимости, которые мучили подход протокола обмена. Мост narwhals гарантирует, что выходы трансформера sklearn — ли из StandardScaler, ColumnTransformer или пользовательских оценщиков — могут быть возвращены как Polars DataFrames изначально, сохраняя ленивый контекст выполнения ниже по потоку.

Выбор narwhals — проект, управляемый сообществом, а не первосторонний решение либо от pandas, либо от команд Polars — отражает предпочтение команды scikit-learn для нейтральности экосистемы. Вместо того чтобы делать ставку на внутренний API одной библиотеки dataframe, они приняли слой абстракции, который будет развиваться наряду с более широкой экосистемой. Это одна и та же философский подход, который мотивировал принятие Array API: где возможно, scikit-learn должен быть потребителем стандартов сообщества, а не определителем проприетарных интерфейсов.

Для ученых данных, работающих на пересечении sklearn и современных инструментов стека данных — конвейеры, которые поглощаются из Parquet через DuckDB, предварительно обрабатываются с Polars и моделируют с sklearn — narwhals закрывает пробел, который ранее требовал этапов ручного преобразования или кода пользовательского обертывания. Сквозной конвейер теперь может оставаться на родной территории Polars на всем пути через этап трансформации sklearn.

Scikit-learn и Hugging Face Hub: 800 моделей и углубляющееся партнерство

Релиз scikit-learn 1.9 не включает новый первосторонний код интеграции Hugging Face, но он выходит в экосистеме, которая тихо созревала с июня 2022 года, когда Hugging Face стала официальным спонсором консорциума scikit-learn в Fondation Inria в Париже. Это партнерство, теперь в его четвертом году, произвело конкретные изменения инфраструктуры, которые трансформируют, как модели классического ML распределяются, развертываются и обнаруживаются.

Центральной частью интеграции sklearn–Hugging Face является skops, библиотека Python, созданная специально для моста двух экосистем. Skops предоставляет две основные возможности, которые решают реальные боли в дистрибуции моделей классического ML:

  1. Безопасная сериализация через skops.io — модели scikit-learn упаковываются как архивы zip с сопровождающими файлами JSON схемы, заменяя небезопасный формат pickle, который долгое время вызывал озабоченность безопасности в обмене моделями ML. В отличие от pickle, формат skops позволяет потребителям модели проверять полную структуру объекта перед загрузкой, обеспечивая значимую защиту от атак цепи поставки через вредоносные файлы моделей — вектор угрозы, который становится все более актуальным по мере масштабирования Hugging Face Hub.
  2. Интеграция Hugging Face Hub через skops.card — с skops инженеры могут отправлять обученные модели sklearn непосредственно на Hub, автоматически генерировать карточки моделей из метаданных оценщика и делать модели доступными для вывода в браузере через Hugging Face Spaces. Одна лишь генерация карточки модели устраняет бремя документации, которая ранее отговаривала практиков от публичного обмена классическими моделями ML.

Масштаб этой интеграции отражен в текущей статистике Hub: по состоянию на июнь 2026 года на Hugging Face Hub размещены 799 моделей scikit-learn, охватывающие табличную классификацию, табличную регрессию и растущий набор задач структурированного предсказания, включая кредитный скоринг, выявление мошенничества, предсказание оттока клиентов и медицинскую стратификацию риска. Это число представляет библиотеку, которая четыре года назад практически не имела присутствия на Hub — платформа Hugging Face была построена в основном вокруг моделей глубокого обучения для NLP, видения и аудио. Рост моделей sklearn на Hub сигнализирует об важном расширении объема платформы: она становится домом для полного стека ML, а не только нейронных сетей.

Человеческий капитал позади партнерства

Институциональные инвестиции, лежащие в основе сотрудничества, одинаково примечательны. Два опытных разработчика встроены в Hugging Face специально для развития экосистемы sklearn: Adrin Jalali, основной участник scikit-learn, который был центральным в управлении библиотеки и дизайна API, и Benjamin Bossan, автор широко используемой библиотеки skorch, которая мосты scikit-learn и PyTorch. Их присутствие в Hugging Face гарантирует, что интеграция управляется инженерами, которые понимают внутренние компоненты scikit-learn на уровне, требуемом для построения надежного, совместимого вперед инструментария.

Партнерство также имеет институциональную глубину через библиотеку Evaluate, платформу Hugging Face для эффективного, стандартизированного ML оценивания. Библиотека evaluate расширяется, чтобы изначально поддерживать метрики scikit-learn в своем API, что позволит инженерам вычислять и сравнивать метрики sklearn — точность, полнота, F1, AUC, калибровка — наряду с метриками глубокого обучения в рамках одного конвейера оценивания. Это важный шаг к объединенному инструментарию оценивания ML в классических и нейронных подходах, снижая операционную сложность, которая в настоящее время происходит от поддержания отдельного кода оценивания для разных семейств моделей.

Что релиз Scikit-learn 1.9 означает для размещенных на Hub моделей

Для 799 моделей уже размещенных на Hub, улучшения scikit-learn 1.9 переводятся непосредственно в улучшенное качество модели. Улучшенная обработка веса образца в основанных на дереве моделях и улучшенная численная стабильность в моделях гребневой регрессии означают, что модели переполученные на 1.9 должны выдавать более статистически правильные выходы, особенно для моделей, обученных на данных опроса или административных, где веса образцов распространены. Инженеры, которые сопровождают модели sklearn на Hub, должны рассмотреть возможность переобучения с версией 1.9 и обновления своих карточек моделей — новый вид HTML оценщика делает создание точных описаний архитектуры модели значительно проще.

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

Помимо основных функций, scikit-learn 1.9 содержит плотный пакет алгоритмических улучшений, обновления визуализации и исправления ошибок, которые приносят пользу повседневной работе по инженерии ML. Несколько из них заслуживают внимания от практиков, которые иначе могли бы пропустить их в заметках о выпуске.

Усиления алгоритмической производительности

FastICA с алгоритмом дефляции примерно в 10 раз быстрее в версии 1.9, драматическое улучшение для команд, использующих независимый анализ компонентов для разделения сигналов в обработке аудио, неврологии (EEG/fMRI) или разложении финансовых временных рядов. RidgeCV и RidgeClassifierCV — среди наиболее часто развертываемых моделей в производстве классического ML — теперь оба быстрее и более численно стабильны, решая граничные случаи, которые могли бы произвести ненадежный выбор альфа на плохо обусловленных матрицах дизайна. Решатель ARPACK, используемый в SpectralEmbedding, был оптимизирован, приносящий пользу рабочим процессам обучения многообразия на основе графиков, которые полагаются на собственное разложение больших разреженных матриц.

Новая функция metric_at_thresholds()

Новая функция metrics.metric_at_thresholds() вычисляет значения метрик во всех возможных пороговых значениях классификации из одного прохода над предсказаниями модели. До добавления этой функции вычисление кривых чувствительности к порогу для бинарных классификаторов — стандартная задача в медицинской диагностике, выявлении мошенничества и любом приложении, где рабочая точка подлежит настройке — требовало либо пользовательского кода цикла, либо пост-обработку выходов precision_recall_curve() и roc_curve(). Новая функция стандартизирует этот рабочий процесс и чисто интегрируется с остальным API метрик sklearn.

Более богатые HTML-визуализации оценщика

HTML-представление подогнанных оценщиков в блокнотах Jupyter был значительно улучшен. Подогнанные атрибуты (те, заканчивающиеся на _, такие как coef_, feature_importances_ и n_iter_) теперь отображаются в структурированной таблице в представлении HTML, позволяя инженерам проверять полученные параметры с первого взгляда без вызова print(model.coef_). ColumnTransformer теперь показывает имена функций вывода с кнопками копирования и вставки в визуализацию, делая значительно проще отслеживать, как входные функции отображаются через сложные конвейеры предварительной обработки. Для команд, которые используют Jupyter для исследовательской разработки моделей и коммуникации заинтересованных сторон, эти улучшения визуализации значимо снижают трение проверки модели.

Улучшения дерева и линейной модели

RandomForestRegressor теперь поддерживает встроенную обработку значений, не соответствующих значениям, при использовании критерия absolute_error — закрывая пробел, который заставлял практиков вменять данные перед подгонкой моделей ансамбля в контекстах (таких как медицинские записи или данные датчиков), где отсутствие несет информацию и не должно быть вменено. Релиз также улучшает статистическую корректность обработки веса образца в HistGradientBoosting, RandomForest и ExtraTree, решая тонкие смещения, которые могли бы повлиять на модели, обученные на дисбалансированных наборах данных или данных опроса с весами вероятности. Кроме того, многозадачные линейные модели теперь поддерживают разреженные входные матрицы X и веса образцов — важная возможность для практиков NLP, которые используют многовыходную регрессию на разреженных матрицах документ-функция.

Устаревания для отслеживания

Версия 1.9 вводит нескольк�� устаревания, которые команды должны планировать миграции для перед запланированными разрушительными изменениями в версиях 1.11 и 1.12:

  • criterion="friedman_mse" в основанных на дереве моделях является устаревшим; стандартный критерий "squared_error" — это рекомендуемая замена
  • Параметр SVC.probability является устаревшим; рекомендуемая замена — CalibratedClassifierCV, обертывающий базовый SVC(probability=False)
  • Параметр n_alphas является устаревшим в lasso_path() и enet_path()
  • Оценка по умолчанию в LogisticRegressionCV изменится с точности на "neg_log_loss" в версии 1.11 — статистически мотивированное изменение, которое может удивить команды, полагающиеся на текущее поведение по умолчанию для выбора модели на основе порога

Эти устаревания следуют соглашению scikit-learn предупреждение две основные версии перед разрушительными изменениями, дающие командам адекватный путь для обновления своего кода без экстренных рефакторов.