← Volver al blog

Scikit-learn 1.9 Entrega Callbacks y Aceleración GPU el 12 de junio

Scikit-learn 1.9, lanzado el 12 de junio de 2026, introduce una API de callbacks en tiempo real y soporte GPU expandido, profundizando su integración con el ecosistema ML de Hugging Face.

Compartir: XFacebookLinkedInWhatsApp
Desliza para seguir leyendo

Scikit-learn 1.9 Lanzado el 12 de junio de 2026: Un Salto Mayor para la Ingeniería de ML Clásico

El equipo principal de scikit-learn lanzó la versión 1.9.0 el 12 de junio de 2026, marcando uno de los lanzamientos más ricos en características de la biblioteca en la memoria reciente. La actualización llega en un momento crítico para el ecosistema de aprendizaje automático: mientras que los modelos de lenguaje grande continúan dominando los titulares, los mantenedores de scikit-learn han intensificado lo que la biblioteca hace mejor — aprendizaje automático clásico rápido, interpretable y de grado de producción — mientras que simultáneamente modernizan su interfaz para la próxima generación de herramientas de ML. El lanzamiento está disponible en PyPI y es compatible con Python 3.11 a 3.14.

Para ingenieros que construyen tuberías de ML en datos estructurados y tabulares — el pan de cada día del ML empresarial — scikit-learn 1.9 entrega una cascada de mejoras: un sistema de callbacks experimental completamente nuevo para monitoreo de entrenamiento, aceleración GPU expandida a través de la Array API, una capa de compatibilidad con dataframes más ligera vía narwhals, y visualización de estimadores HTML significativamente más rica. Estos cambios abordan colectivamente puntos de fricción de larga data para profesionales que despliegan modelos de sklearn a escala.

El lanzamiento también llega en el contexto de una asociación activa con Hugging Face, la plataforma de IA que se ha convertido en el centro del ecosistema de ML de código abierto. Aunque la versión 1.9 no incluye código de integración específica de Hugging Face, las dos organizaciones han pasado los últimos cuatro años construyendo una infraestructura compartida — principalmente a través de la biblioteca skops — que ahora aloja casi 800 modelos de scikit-learn en el Hugging Face Hub. Juntos, el lanzamiento 1.9 y la tubería sklearn–Hugging Face que madura representan un momento pivote para el ML clásico en la era de los modelos fundacionales.

La API de Callbacks: El Monitoreo de Entrenamiento en Tiempo Real Llega a Scikit-learn

La adición más impactante en la versión 1.9 es el mecanismo de callback experimental, una característica solicitada durante mucho tiempo que introduce monitoreo en tiempo real y visibilidad del progreso en el bucle de entrenamiento de los estimadores de scikit-learn. Hasta ahora, los ingenieros de ML que usan sklearn no tenían forma nativa de observar el ajuste de un modelo en progreso — sin barras de progreso, sin curvas de pérdida en vivo, sin ganchos de parada temprana. Esa brecha obligó a los equipos a depender de soluciones alternativas como indicadores de registro detallado o bibliotecas externas. La versión 1.9 la cierra definitivamente.

El sistema de callbacks introduce dos implementaciones concretas listas para usar:

  • sklearn.callback.ProgressBar — renderiza una barra de progreso en vivo durante fit(), dando a los ingenieros una vista en tiempo real de qué tan avanzado está el entrenamiento sin dejar el notebook o terminal
  • sklearn.callback.ScoringMonitor — registra métricas de puntuación en cada iteración del bucle de optimización, permitiendo el seguimiento de convergencia sin herramientas externas o código repetitivo personalizado

En la versión 1.9, el sistema de callbacks es soportado por un conjunto específico pero significativo de estimadores: LogisticRegression (usando el solucionador lbfgs), la familia completa SearchCV (GridSearchCV, RandomizedSearchCV, HalvingGridSearchCV, y HalvingRandomSearchCV), Pipeline, y StandardScaler. Los mantenedores han señalado explícitamente que esto es una base, no un techo — el blog de lanzamiento describe el mecanismo de callbacks como uno que "abre la puerta a barras de progreso o monitoreo avanzado de convergencia," con cobertura de estimadores más amplia planeada para lanzamientos posteriores.

La importancia de esta característica va más allá de la experiencia del usuario. Para equipos que integran scikit-learn en tuberías MLOps más grandes — donde el monitoreo, alertas y auditabilidad son requisitos innegociables — la API de callbacks proporciona un gancho programático que puede alimentar infraestructura de registro, paneles o rastreadores de experimentos como MLflow y Weights & Biases. Señala que el equipo de scikit-learn está pensando seriamente en el contexto operativo en el que se usa su biblioteca, no solo en la corrección estadística de sus algoritmos.

"El mecanismo de callbacks abre la puerta a barras de progreso o monitoreo avanzado de convergencia," — anuncio de lanzamiento de scikit-learn 1.9, junio de 2026

De cara al futuro, el estado experimental de la API de callbacks significa que la interfaz puede evolucionar antes de la estabilización. Los ingenieros que construyen sistemas de producción sobre ella deben tratar la superficie de la API como sujeta a cambios en las versiones 1.10 y 1.11. Dicho esto, el diseño ya es lo suficientemente expresivo para cubrir los casos de uso de monitoreo más comunes, y la respuesta de la comunidad desde el lanzamiento del 12 de junio ha sido mayormente positiva, con varios mantenedores de herramientas MLOps ya experimentando con adaptadores de callbacks para sus plataformas.

Aceleración GPU y Array API: Scikit-learn Se Mueve Hacia la Neutralidad de Hardware

Una de las narrativas definitorias del período 2024–2026 en la ingeniería de ML ha sido la aceleración de la diversidad de hardware: los ingenieros ya no están confinados a CPUs para ML clásico. La respuesta de Scikit-learn a esta tendencia — el despliegue gradual del soporte de Array API — dio un paso significativo adelante en la versión 1.9. El lanzamiento expande la ejecución compatible con GPU a un conjunto más amplio de estimadores y métricas, desacoplando más a scikit-learn de la suposición de que toda la computación ocurre en una CPU con arrays NumPy.

En la versión 1.9, los estimadores principales para ganar soporte GPU a través de la Array API son:

  • linear_model.LogisticRegression con solver="lbfgs" — uno de los estimadores más ampliamente utilizados en la biblioteca ahora se ejecuta nativamente en GPU
  • linear_model.PoissonRegressor con solver="lbfgs" — crítico para datos de conteo y aplicaciones de seguros o actuariales
  • kernel_approximation.Nystroem — aproximación de kernel acelerada por GPU desbloquea flujos de trabajo SVM kernel a gran escala
  • pipeline.FeatureUnion — habilitando tuberías de combinación de características de múltiples ramas completamente aceleradas por GPU

Las funciones de métrica también ganaron cobertura en 1.9: d2_absolute_error_score, d2_pinball_score, y average_precision_score ahora aceptan entradas compatibles con Array API, lo que significa que pueden operar directamente en tensores GPU sin copiar datos de vuelta a la CPU. El lanzamiento también incluye una nueva utilidad, sklearn.utils._array_api.move_estimator_to, que permite a los ingenieros mover atributos de array de un estimador ajustado a un dispositivo o espacio de nombres diferente — un factor clave para tuberías de ML de dispositivos mixtos donde el preprocesamiento puede ocurrir en CPU mientras que la inferencia se ejecuta en GPU.

Las implicaciones prácticas son sustanciales. Benchmarks independientes publicados por :probabl. en marzo de 2026 demostraron hasta aceleración de 15x en tuberías complejas de scikit-learn cuando se ejecutan en GPU a través de la Array API. Aunque estas ganancias dependen en gran medida del tipo de modelo y tamaño de datos — conjuntos de datos más pequeños a menudo no ven beneficio debido a la sobrecarga de transferencia de datos — validan la dirección estratégica: para conjuntos de datos tabulares grandes y tuberías computacionalmente intensivas, sklearn acelerada por GPU es ahora una opción de producción viable.

Modernización de Interfaz Dispersa

La versión 1.9 también introduce la clave de configuración "sparse_interface", que permite a los usuarios controlar si scikit-learn devuelve matrices dispersas de SciPy o la interfaz de array disperso más nueva:

import sklearn
sklearn.set_config(sparse_interface="sparray")  # opt into sparse arrays

Esto es parte de una alineación más amplia con la dirección del ecosistema SciPy, que ha estado migrando del formato heredado csr_matrix hacia csr_array desde SciPy 1.8. El valor predeterminado actual sigue siendo "spmatrix" para compatibilidad hacia atrás, pero el equipo ha señalado un cambio de valor predeterminado futuro a "sparray" en lanzamientos próximos. Los ingenieros que construyen nuevas tuberías deben considerar optar por la nueva interfaz hoy para evitar una migración disruptiva después.

Integración Narwhals: Un Camino Más Ligero Hacia la Interoperabilidad de Dataframes

Uno de los cambios más silenciosos pero estratégicamente importantes en scikit-learn 1.9 es la adición de narwhals como una nueva dependencia de biblioteca. Narwhals es una capa de compatibilidad ligera que permite que el código Python funcione sin problemas en múltiples bibliotecas de dataframes — principalmente pandas y Polars — sin requerir ramificación condicional específica de la biblioteca. Al adoptar narwhals, scikit-learn está reconociendo una realidad que los profesionales han sentido durante los últimos dos años: el ecosistema de datos de Python ya no es sinónimo solo de pandas.

El impulso inmediato para este cambio es la deprecación del protocolo de intercambio de dataframes (__dataframe__) por el equipo de Polars. Scikit-learn había estado confiando en este protocolo para manejar dataframes que no son de pandas a través de su API set_output, introducida en la versión 1.2. Con Polars deprecando el protocolo, el equipo de sklearn necesitaba una solución más robusta que no se rompería mientras que la API de Polars continuaba evolucionando. Como explica el registro de cambios de la versión 1.9, narwhals proporciona exactamente eso: una interfaz unificada y ligera que se encuentra encima de la capa de dataframe y traduce operaciones a la biblioteca subyacente.

Para ingenieros de ML, esta es una mejora significativa en la calidad de vida con implicaciones reales de producción. Polars, que prioriza el desempeño a través de evaluación perezosa, procesamiento multihilo y un backend Rust, ha ganado tracción sustancial como alternativa a pandas para preprocesamiento de datos a escala. Los equipos que han migrado sus tuberías de preprocesamiento ascendente a Polars ahora pueden usar set_output(transform="polars") en scikit-learn sin golpear los problemas de compatibilidad que atormentaron el enfoque del protocolo de intercambio. El puente narwhals asegura que las salidas de transformador de sklearn — ya sea de StandardScaler, ColumnTransformer, o estimadores personalizados — puedan ser devueltas como DataFrames de Polars nativamente, preservando el contexto de ejecución perezosa aguas abajo.

La elección de narwhals — un proyecto impulsado por la comunidad en lugar de una solución de primera parte de ninguno de los equipos de pandas o Polars — refleja la preferencia del equipo de scikit-learn por la neutralidad del ecosistema. En lugar de apostar por la API interna de una biblioteca de dataframes, han adoptado una capa de abstracción que evolucionará junto con el ecosistema más amplio. Este es el mismo enfoque filosófico que motivó la adopción de la Array API: donde sea posible, scikit-learn debe ser un consumidor de estándares comunitarios en lugar de un definidor de interfaces propietarias.

Para científicos de datos que trabajan en la intersección de sklearn y herramientas modernas de pila de datos — tuberías que ingieren desde Parquet vía DuckDB, preprocesan con Polars, y modelan con sklearn — narwhals cierra una brecha que anteriormente requería pasos de conversión manual o código de envoltorio personalizado. La tubería de extremo a extremo ahora puede permanecer en territorio nativo de Polars todo el camino a través de la etapa de transformación de sklearn.

Scikit-learn y Hugging Face Hub: 800 Modelos y una Asociación que se Profundiza

El lanzamiento de scikit-learn 1.9 no incluye código de integración de Hugging Face de primera parte nueva, pero llega dentro de un ecosistema que ha estado madurando silenciosamente desde junio de 2022, cuando Hugging Face se convirtió en un patrocinador oficial del consorcio de scikit-learn en la Fondation Inria en París. Esa asociación, ahora en su cuarto año, ha producido cambios de infraestructura concretos que están transformando cómo los modelos de ML clásico son compartidos, desplegados y descubiertos.

La pieza central de la integración sklearn–Hugging Face es skops, una biblioteca Python construida específicamente para tender un puente entre los dos ecosistemas. Skops proporciona dos capacidades centrales que abordan puntos de dolor reales en la distribución de modelos de ML clásico:

  1. Serialización segura a través de skops.io — los modelos de scikit-learn se empaquetan como archivos zip con archivos de esquema JSON acompañantes, reemplazando el formato inseguro pickle que ha sido una preocupación de seguridad durante mucho tiempo en el intercambio de modelos de ML. A diferencia de pickle, el formato skops permite a los consumidores de modelos inspeccionar la estructura completa del objeto antes de cargarlo, proporcionando una salvaguarda significativa contra ataques de cadena de suministro a través de archivos de modelo maliciosos — un vector de amenaza que se ha vuelto cada vez más relevante a medida que el Hugging Face Hub se escala.
  2. Integración de Hugging Face Hub a través de skops.card — con skops, los ingenieros pueden hacer push de modelos de sklearn entrenados directamente al Hub, generar tarjetas de modelo automáticamente desde metadatos de estimadores, y hacer que los modelos estén disponibles para inferencia en navegador a través de Spaces de Hugging Face. La generación de tarjetas de modelo por sí sola elimina una carga de documentación que anteriormente desalentaba a los profesionales de compartir modelos de ML clásico públicamente.

La escala de esta integración se refleja en las estadísticas actuales del Hub: a partir de junio de 2026, hay 799 modelos de scikit-learn alojados en el Hugging Face Hub, abarcando clasificación tabular, regresión tabular, y un conjunto creciente de tareas de predicción estructurada incluyendo puntuación de crédito, detección de fraude, predicción de abandono de clientes, y estratificación de riesgo médico. Ese número representa una biblioteca que, hace cuatro años, tenía prácticamente ninguna presencia en el Hub — la plataforma de Hugging Face fue construida principalmente alrededor de modelos de aprendizaje profundo para PNL, visión, y audio. El crecimiento de modelos de sklearn en el Hub señala un ensanchamiento importante del alcance de la plataforma: se está convirtiendo en un hogar para la pila completa de ML, no solo redes neuronales.

El Capital Humano Detrás de la Asociación

La inversión institucional que sustenta la colaboración es igualmente destacable. Dos desarrolladores experimentados están incrustados en Hugging Face específicamente para avanzar el ecosistema de sklearn: Adrin Jalali, un contribuidor principal de scikit-learn que ha sido central para la gobernanza y diseño de API de la biblioteca, y Benjamin Bossan, autor de la biblioteca skorch ampliamente utilizada que tiende un puente entre scikit-learn y PyTorch. Su presencia en Hugging Face asegura que la integración sea impulsada por ingenieros que entienden los internos de scikit-learn al nivel requerido para construir herramientas confiables y compatibles hacia adelante.

La asociación también tiene profundidad institucional a través de la biblioteca Evaluate, el marco de Hugging Face para evaluación de ML eficiente y estandarizada. La biblioteca evaluate está siendo extendida para soportar nativamente métricas de scikit-learn en su API, lo que permitiría a los ingenieros calcular y comparar métricas de sklearn — precisión, recall, F1, AUC, calibración — junto con métricas de aprendizaje profundo dentro de una sola tubería de evaluación. Este es un paso importante hacia herramientas de evaluación unificadas de ML en enfoques clásicos y neurales, reduciendo la complejidad operativa que actualmente proviene de mantener código de evaluación separado para diferentes familias de modelos.

Lo Que el Lanzamiento de Scikit-learn 1.9 Significa para Modelos Alojados en el Hub

Para los 799 modelos ya alojados en el Hub, las mejoras de scikit-learn 1.9 se traducen directamente en mejor calidad de modelo. El manejo mejorado de pesos de muestra en modelos basados en árboles y la estabilidad numérica mejorada en modelos de regresión de crestas significan que los modelos reentrenados en 1.9 deben producir salidas estadísticamente más correctas, particularmente para modelos entrenados en datos de encuestas o administrativos donde los pesos de muestra son comunes. Los ingenieros que mantienen modelos de sklearn en el Hub deberían considerar re-ejecutar el entrenamiento con la versión 1.9 y actualizar sus tarjetas de modelo — la nueva vista de estimador HTML hace que generar descripciones precisas de arquitectura de modelo sea significativamente más fácil.

Mejoras Adicionales: Algoritmos Más Rápidos, Visualizaciones Más Inteligentes, y Depreciaciones Clave

Más allá de las características principales, scikit-learn 1.9 envía un paquete denso de mejoras algorítmicas, actualizaciones de visualización, y correcciones de errores que benefician el trabajo cotidiano de ingeniería de ML. Varias de estas merecen atención de profesionales que de otro modo podrían pasarlas por alto en las notas de lanzamiento.

Ganancias de Desempeño Algorítmico

FastICA con el algoritmo de deflación es aproximadamente 10x más rápido en la versión 1.9, una mejora dramática para equipos que usan análisis de componentes independientes para separación de señales en procesamiento de audio, neurociencia (EEG/fMRI), o descomposición de series de tiempo financieras. RidgeCV y RidgeClassifierCV — entre los modelos más comúnmente desplegados en ML clásico de producción — ahora son tanto más rápidos como numéricamente más estables, abordando casos extremos que podrían producir selección de alfa poco confiable en matrices de diseño mal acondicionadas. El solucionador ARPACK eigenvalue utilizado en SpectralEmbedding ha sido optimizado, beneficiando flujos de trabajo de aprendizaje de variedades basados en gráficos que dependen de la descomposición de eigenvalues de matrices dispersas grandes.

Nueva Función metric_at_thresholds()

La nueva función metrics.metric_at_thresholds() calcula valores de métrica a través de todos los umbrales de clasificación posibles de una sola pasada sobre predicciones de modelo. Antes de esta adición, calcular curvas de sensibilidad de umbral para clasificadores binarios — una tarea rutinaria en diagnósticos médicos, detección de fraude, y cualquier aplicación donde el punto de operación es sintonizable — requería código de bucle personalizado o postprocesamiento de salidas precision_recall_curve() y roc_curve(). La nueva función estandariza este flujo de trabajo e integra limpiamente con el resto de la API de métricas de sklearn.

Visualizaciones de Estimadores HTML Más Ricas

La representación HTML de estimadores ajustados en notebooks Jupyter ha sido significativamente mejorada. Los atributos ajustados (aquellos que terminan con _, como coef_, feature_importances_, y n_iter_) ahora se muestran en una tabla estructurada dentro de la vista HTML, permitiendo a los ingenieros inspeccionar parámetros aprendidos de un vistazo sin llamar a print(model.coef_). ColumnTransformer ahora muestra nombres de características de salida con botones de copiar-pegar en la visualización, haciendo dramáticamente más fácil rastrear cómo las características de entrada se mapean a través de tuberías de preprocesamiento complejas. Para equipos que usan Jupyter para desarrollo de modelos exploratorios y comunicación con partes interesadas, estas mejoras de visualización significativamente reducen la fricción de inspección de modelos.

Mejoras de Modelos de Árboles y Lineales

RandomForestRegressor ahora soporta manejo de valores faltantes nativamente cuando se usa el criterio absolute_error — cerrando una brecha que forzaba a los profesionales a imputar datos antes de ajustar modelos de conjunto en contextos (como registros de salud o datos de sensores) donde la ausencia lleva información y no debe ser imputada. El lanzamiento también mejora la corrección estadística del manejo de pesos de muestra en HistGradientBoosting, RandomForest, y ExtraTree, abordando sesgos sutiles que podrían afectar modelos entrenados en conjuntos de datos desbalanceados o datos de encuestas con pesos de probabilidad. Además, modelos lineales multi-tarea ahora soportan matrices de entrada X dispersas y pesos de muestra — una capacidad importante para profesionales de PNL que usan regresión multi-salida en matrices dispersas de documento-características.

Depreciaciones a Tener en Cuenta

La versión 1.9 introduce varias depreciaciones para las cuales los equipos deben planificar migraciones antes de los cambios de ruptura programados en las versiones 1.11 y 1.12:

  • criterion="friedman_mse" en modelos basados en árboles está deprecado; el criterio estándar "squared_error" es el reemplazo recomendado
  • El parámetro SVC.probability está deprecado; el reemplazo recomendado es CalibratedClassifierCV envoltura de una base SVC(probability=False)
  • El parámetro n_alphas está deprecado en lasso_path() y enet_path()
  • La puntuación predeterminada en LogisticRegressionCV cambiará de precisión a "neg_log_loss" en la versión 1.11 — un cambio estadísticamente motivado que puede sorprender a equipos que confían en el comportamiento predeterminado actual para selección de modelos basada en umbrales

Estas depreciaciones siguen la convención de scikit-learn de advertir dos versiones principales antes de que los cambios de ruptura aterricen, dando a los equipos pista adecuada para actualizar su código sin refactorizaciones de emergencia.