Scikit-learn 1.9 porta callback e accelerazione GPU il 12 giugno
Scikit-learn 1.9, rilasciato il 12 giugno 2026, introduce un'API callback in tempo reale e un supporto GPU espanso, approfondendo la sua integrazione con l'ecosistema ML di Hugging Face.
Scikit-learn 1.9 rilasciato il 12 giugno 2026: un grande passo in avanti per l'ingegneria ML classica
Il team principale di scikit-learn ha distribuito la versione 1.9.0 il 12 giugno 2026, segnando uno dei rilasci più ricchi di funzionalità della storia della libreria. L'aggiornamento arriva in un momento critico per l'ecosistema dell'apprendimento automatico: mentre i grandi modelli di linguaggio continuano a dominare i titoli, i manutentori di scikit-learn hanno raddoppiato gli sforzi su ciò che la libreria fa meglio — apprendimento automatico classico veloce, interpretabile e di qualità produttiva — modernizzando contemporaneamente l'interfaccia per la prossima generazione di strumenti ML. Il rilascio è disponibile su PyPI ed è compatibile con Python 3.11 fino a 3.14.
Per gli ingegneri che costruiscono pipeline ML su dati strutturati e tabulari — il pane e burro della ML aziendale — scikit-learn 1.9 fornisce una cascata di miglioramenti: un nuovo sistema sperimentale di callback per il monitoraggio dell'addestramento, accelerazione GPU espansa tramite l'Array API, un livello di compatibilità dataframe più leggero via narwhals, e una visualizzazione dell'estimatore HTML significativamente più ricca. Questi cambiamenti affrontano collettivamente punti di attrito di lunga data per i professionisti che distribuiscono modelli sklearn su larga scala.
Il rilascio arriva anche sullo sfondo di una partnership attiva con Hugging Face, la piattaforma di AI che è diventata l'hub centrale della comunità ML open-source. Sebbene la versione 1.9 non spedisca nuovo codice di integrazione specifico per Hugging Face, le due organizzazioni hanno trascorso gli ultimi quattro anni costruendo un'infrastruttura condivisa — in particolare attraverso la libreria skops — che ora ospita quasi 800 modelli scikit-learn su Hugging Face Hub. Insieme, il rilascio 1.9 e la pipeline sklearn–Hugging Face in maturazione rappresentano un momento fondamentale per la ML classica nell'era dei modelli foundation.
L'API Callback: il monitoraggio dell'addestramento in tempo reale arriva a Scikit-learn
L'aggiunta più impattante nella versione 1.9 è il meccanismo callback sperimentale, una funzionalità a lungo richiesta che introduce il monitoraggio in tempo reale e la visibilità del progresso nel ciclo di addestramento degli estimatori scikit-learn. Fino ad ora, gli ingegneri ML che utilizzano sklearn non avevano modo nativo di osservare un modello in fase di adattamento — niente barre di progresso, niente curve di perdita dal vivo, nessun hook di arresto anticipato. Questo divario ha costretto i team a fare affidamento su soluzioni alternative come flag di log verbosi o librerie esterne. La versione 1.9 lo risolve definitivamente.
Il sistema di callback introduce due implementazioni concrete pronte all'uso:
sklearn.callback.ProgressBar— visualizza una barra di progresso dal vivo durantefit(), fornendo agli ingegneri una visione in tempo reale di quanto è progredito l'addestramento senza abbandonare il notebook o il terminalesklearn.callback.ScoringMonitor— registra le metriche di scoring ad ogni iterazione del ciclo di ottimizzazione, abilitando il tracciamento della convergenza senza strumenti esterni o boilerplate personalizzato
Nella versione 1.9, il sistema di callback è supportato da un insieme mirato ma significativo di estimatori: LogisticRegression (usando il solver lbfgs), la famiglia completa di SearchCV (GridSearchCV, RandomizedSearchCV, HalvingGridSearchCV, e HalvingRandomSearchCV), Pipeline, e StandardScaler. I manutentori hanno segnalato esplicitamente che questa è una base, non un limite — il post del blog di rilascio descrive il meccanismo di callback come uno che "apre la porta a barre di progresso o monitoraggio avanzato della convergenza", con una copertura più ampia dell'estimatore prevista per i rilasci successivi.
Il significato di questa funzionalità va oltre l'esperienza dell'utente. Per i team che integrano scikit-learn in pipeline MLOps più grandi — dove il monitoraggio, gli avvisi e la verificabilità sono requisiti non negoziabili — l'API di callback fornisce un hook programmatico che può alimentare l'infrastruttura di registrazione, i dashboard o i tracciatori di esperimenti come MLflow e Weights & Biases. Segnala che il team di scikit-learn sta pensando seriamente al contesto operativo in cui la loro libreria viene utilizzata, non solo alla correttezza statistica dei suoi algoritmi.
"Il meccanismo di callback apre la porta a barre di progresso o monitoraggio avanzato della convergenza," — annuncio di rilascio di scikit-learn 1.9, giugno 2026
Guardando al futuro, lo stato sperimentale dell'API di callback significa che l'interfaccia potrebbe evolversi prima della stabilizzazione. Gli ingegneri che costruiscono sistemi di produzione su di essa dovrebbero trattare la superficie dell'API come soggetta a cambiamenti attraverso le versioni 1.10 e 1.11. Detto questo, il design è già abbastanza espressivo per coprire i casi d'uso di monitoraggio più comuni, e la risposta della comunità dal rilascio del 12 giugno è stata in gran parte positiva, con diversi manutentori di strumenti MLOps già sperimentando adattatori di callback per le loro piattaforme.
Accelerazione GPU e Array API: Scikit-learn si muove verso la neutralità hardware
Una delle narrazioni che definiscono il periodo 2024–2026 nell'ingegneria ML è stata l'accelerazione della diversità hardware: gli ingegneri non sono più confinati alle CPU per la ML classica. La risposta di Scikit-learn a questo trend — l'implementazione graduale del supporto dell'Array API — ha fatto un passo significativo in avanti nella versione 1.9. Il rilascio espande l'esecuzione compatibile con GPU a un insieme più ampio di estimatori e metriche, disaccoppiando ulteriormente scikit-learn dall'assunzione che tutti i calcoli avvengono su CPU con array NumPy.
Nella versione 1.9, i principali estimatori a guadagnare il supporto GPU tramite l'Array API sono:
linear_model.LogisticRegressionconsolver="lbfgs"— uno degli estimatori più ampiamente utilizzati nella libreria ora viene eseguito nativamente su GPUlinear_model.PoissonRegressorconsolver="lbfgs"— critico per dati di conteggio e applicazioni assicurative o attuarialikernel_approximation.Nystroem— l'approssimazione del kernel accelerata su GPU sblocca flussi di lavoro SVM kernel su larga scalapipeline.FeatureUnion— abilitando pipeline di combinazione di funzionalità multi-ramo completamente accelerate su GPU
Le funzioni di metrica hanno anche guadagnato copertura nella versione 1.9: d2_absolute_error_score, d2_pinball_score, e average_precision_score ora accettano input conformi all'Array API, il che significa che possono operare direttamente su tensori GPU senza copiare i dati di nuovo su CPU. Il rilascio include anche un nuovo utility, sklearn.utils._array_api.move_estimator_to, che consente agli ingegneri di spostare gli attributi di array di un estimatore adattato su un dispositivo o namespace diverso — un enabler critico per pipeline ML multi-dispositivo dove la preelaborazione può avvenire su CPU mentre l'inferenza viene eseguita su GPU.
Le implicazioni pratiche sono sostanziali. I benchmark indipendenti pubblicati da :probabl. a marzo 2026 hanno dimostrato accelerazioni fino a 15x in pipeline scikit-learn complesse quando eseguite su GPU tramite l'Array API. Sebbene questi guadagni dipendano fortemente dal tipo di modello e dalla dimensione dei dati — dataset più piccoli spesso non vedono alcun beneficio a causa del sovraccarico di trasferimento dati — convalidano la direzione strategica: per dataset tabulari di grandi dimensioni e pipeline computazionalmente intensive, lo sklearn accelerato su GPU è ora un'opzione di produzione valida.
Modernizzazione dell'interfaccia sparse
La versione 1.9 introduce anche la chiave di configurazione "sparse_interface", che consente agli utenti di controllare se scikit-learn restituisce matrici sparse SciPy o la più recente interfaccia sparse array:
import sklearn
sklearn.set_config(sparse_interface="sparray") # opt into sparse arrays
Questo fa parte di un allineamento più ampio con la direzione dell'ecosistema SciPy, che si è spostato dal formato legacy csr_matrix verso csr_array da SciPy 1.8. L'impostazione predefinita corrente rimane "spmatrix" per la compatibilità con le versioni precedenti, ma il team ha segnalato un futuro cambio predefinito a "sparray" nei prossimi rilasci. Gli ingegneri che costruiscono nuove pipeline dovrebbero considerare di optare per la nuova interfaccia oggi per evitare una migrazione dirompente in seguito.
Integrazione Narwhals: un percorso più leggero verso l'interoperabilità dei dataframe
Uno dei cambiamenti più silenziosi ma strategicamente importanti in scikit-learn 1.9 è l'aggiunta di narwhals come nuova dipendenza di libreria. Narwhals è un livello di compatibilità leggero che consente al codice Python di funzionare senza soluzione di continuità su più librerie di dataframe — principalmente pandas e Polars — senza richiedere diramazioni condizionali specifiche della libreria. Nell'adottare narwhals, scikit-learn sta riconoscendo una realtà che i professionisti hanno sentito negli ultimi due anni: l'ecosistema dati Python non è più sinonimo di solo pandas.
L'impulso immediato per questo cambiamento è il deprecamento del protocollo di interscambio di dataframe (__dataframe__) da parte del team Polars. Scikit-learn era stato affidandosi a questo protocollo per gestire i dataframe non-pandas attraverso la sua API set_output, introdotta nella versione 1.2. Con Polars che depreca il protocollo, il team sklearn aveva bisogno di una soluzione più robusta che non si sarebbe rotta mentre l'API di Polars continuava a evolversi. Come spiega il changelog della versione 1.9, narwhals fornisce esattamente questo: un'interfaccia unificata e leggera che si trova sopra il livello di dataframe e traduce le operazioni alla libreria sottostante.
Per gli ingegneri ML, questo è un miglioramento significativo della qualità della vita con implicazioni di produzione reali. Polars, che punta le prestazioni attraverso la valutazione lazy, l'elaborazione multi-thread e un backend Rust, ha guadagnato trazione sostanziale come alternativa a pandas per la preelaborazione dati su larga scala. I team che hanno migrato le loro pipeline di preelaborazione a monte verso Polars possono ora utilizzare set_output(transform="polars") in scikit-learn senza riscontrare i problemi di compatibilità che hanno afflitto l'approccio del protocollo di interscambio. Il ponte narwhals assicura che gli output del trasformatore sklearn — sia da StandardScaler, ColumnTransformer, o estimatori personalizzati — possono essere restituiti come DataFrame Polars nativamente, preservando il contesto di esecuzione lazy a valle.
La scelta di narwhals — un progetto guidato dalla comunità piuttosto che una soluzione di prima parte di uno dei team di pandas o Polars — riflette la preferenza del team scikit-learn per la neutralità dell'ecosistema. Piuttosto che scommettere sull'API interna di una libreria di dataframe, hanno adottato uno strato di astrazione che evolverà insieme all'ecosistema più ampio. Questo è lo stesso approccio filosofico che ha motivato l'adozione dell'Array API: dove possibile, scikit-learn dovrebbe essere un consumatore di standard della comunità piuttosto che un definitor di interfacce proprietarie.
Per gli scienziati dei dati che lavorano all'intersezione di sklearn e strumenti dello stack dati moderno — pipeline che ingeriscono da Parquet via DuckDB, preelaborano con Polars e modellano con sklearn — narwhals riempie un divario che precedentemente richiedeva passaggi di conversione manuale o codice di wrapper personalizzato. La pipeline end-to-end può ora rimanere nel territorio nativo di Polars tutto il modo attraverso lo stadio di trasformazione sklearn.
Scikit-learn e Hugging Face Hub: 800 modelli e una partnership che si approfondisce
Il rilascio di scikit-learn 1.9 non include nuovo codice di integrazione Hugging Face di prima parte, ma arriva all'interno di un ecosistema che è stato silenziosamente maturato dal giugno 2022, quando Hugging Face è diventato uno sponsor ufficiale del consorzio scikit-learn presso la Fondation Inria a Parigi. Quella partnership, ora al suo quarto anno, ha prodotto cambiamenti di infrastruttura concreti che stanno trasformando il modo in cui i modelli ML classici vengono condivisi, distribuiti e scoperti.
Il fulcro dell'integrazione sklearn–Hugging Face è skops, una libreria Python costruita per scopo per collegare i due ecosistemi. Skops fornisce due capacità principali che affrontano i reali punti di dolore nella distribuzione di modelli ML classici:
- Serializzazione sicura tramite
skops.io— i modelli scikit-learn sono confezionati come archivi zip con file schema JSON di accompagnamento, sostituendo il formatopicklenon sicuro che è stato a lungo una preoccupazione di sicurezza nella condivisione di modelli ML. A differenza di pickle, il formato skops consente ai consumatori di modelli di ispezionare la struttura dell'oggetto completo prima di caricarlo, fornendo una salvaguardia significativa contro attacchi della catena di approvvigionamento tramite file di modelli dannosi — un vettore di minaccia che è diventato sempre più rilevante man mano che l'Hub di Hugging Face si ridimensiona. - Integrazione dell'Hub di Hugging Face tramite
skops.card— con skops, gli ingegneri possono spingere i modelli sklearn addestrati direttamente all'Hub, generare automaticamente le schede modello dai metadati dell'estimatore, e rendere i modelli disponibili per l'inferenza nel browser attraverso Hugging Face Spaces. La sola generazione della scheda modello rimuove un onere documentale che precedentemente scoraggiava i professionisti dal condividere pubblicamente i modelli ML classici.
La scala di questa integrazione si riflette nelle statistiche attuali dell'Hub: a giugno 2026, ci sono 799 modelli scikit-learn ospitati su Hugging Face Hub, che spaziano dalla classificazione tabulare, alla regressione tabulare, e un insieme crescente di compiti di previsione strutturata incluse la valutazione del credito, il rilevamento delle frodi, la previsione della chiurna dei clienti, e la stratificazione del rischio medico. Quel numero rappresenta una libreria che, quattro anni fa, aveva praticamente nessuna presenza sull'Hub — la piattaforma di Hugging Face era stata costruita principalmente attorno ai modelli di deep learning per NLP, visione e audio. La crescita dei modelli sklearn sull'Hub segnala un importante allargamento dello scopo della piattaforma: sta diventando una casa per lo stack ML completo, non solo le reti neurali.
Il capitale umano dietro la partnership
L'investimento istituzionale che supporta la collaborazione è ugualmente notevole. Due sviluppatori esperti sono incorporati a Hugging Face specificamente per far avanzare l'ecosistema sklearn: Adrin Jalali, un contributore core di scikit-learn che è stato centrale nella governance e nel design dell'API della libreria, e Benjamin Bossan, autore della libreria skorch ampiamente utilizzata che collega scikit-learn e PyTorch. La loro presenza a Hugging Face assicura che l'integrazione sia guidata da ingegneri che comprendono gli interni di scikit-learn al livello richiesto per costruire strumenti affidabili e forward-compatible.
La partnership ha anche profondità istituzionale attraverso la libreria Evaluate, il framework di Hugging Face per la valutazione ML efficiente e standardizzata. La libreria evaluate viene estesa per supportare nativamente le metriche scikit-learn nella sua API, il che consentirebbe agli ingegneri di calcolare e confrontare le metriche sklearn — precision, recall, F1, AUC, calibrazione — insieme alle metriche di deep learning all'interno di una singola pipeline di valutazione. Questo è un passo importante verso lo strumenti di valutazione ML unificati negli approcci classici e neurali, riducendo la complessità operativa che attualmente viene dalle mantenimento del codice di valutazione separato per diverse famiglie di modelli.
Cosa significa il rilascio di Scikit-learn 1.9 per i modelli ospitati sull'Hub
Per i 799 modelli già ospitati sull'Hub, i miglioramenti di scikit-learn 1.9 si traducono direttamente in una qualità del modello migliore. La migliore gestione dei pesi campionari nei modelli basati su alberi e la stabilità numerica migliorata nei modelli di regressione ridge significano che i modelli riadattati nella versione 1.9 dovrebbero produrre output più statistically corretti, in particolare per i modelli addestrati su dati di sondaggio o amministrativi dove i pesi campionari sono comuni. Gli ingegneri che mantengono modelli sklearn sull'Hub dovrebbero considerare di rieseguire l'addestramento con la versione 1.9 e aggiornare le loro schede modello — la nuova vista HTML dell'estimatore rende la generazione di descrizioni accurate dell'architettura del modello significativamente più facile.
Miglioramenti aggiuntivi: algoritmi più veloci, visualizzazioni più intelligenti e deprecamenti chiave
Oltre alle funzionalità principali, scikit-learn 1.9 spedisce un pacchetto denso di miglioramenti algoritmici, aggiornamenti di visualizzazione e correzioni di bug che avvantaggiano il lavoro quotidiano di ingegneria ML. Diversi di questi meritano l'attenzione di professionisti che altrimenti potrebbero trascurarli nelle note di rilascio.
Guadagni di prestazioni algoritmiche
FastICA con l'algoritmo di deflazione è approssimativamente 10x più veloce nella versione 1.9, un miglioramento drammatico per i team che utilizzano l'analisi di componenti indipendenti per la separazione del segnale nell'elaborazione audio, le neuroscienze (EEG/fMRI), o la decomposizione delle serie temporali finanziarie. RidgeCV e RidgeClassifierCV — tra i modelli più comunemente distribuiti nella ML classica di produzione — sono ora sia più veloci che numericamente più stabili, affrontando i casi limite che potrebbero produrre una selezione alfa inaffidabile su matrici di design mal-condizionate. L'eigensolver ARPACK utilizzato in SpectralEmbedding è stato ottimizzato, avvantaggiando i flussi di lavoro di apprendimento delle varietà basati su grafici che si affidano alla decomposizione eigendecomposizione di grandi matrici sparse.
Nuova funzione metric_at_thresholds()
La nuova funzione metrics.metric_at_thresholds() calcola i valori delle metriche su tutte le soglie di classificazione possibili da un singolo passaggio sulle previsioni del modello. Prima di questa aggiunta, il calcolo delle curve di sensibilità della soglia per i classificatori binari — un compito di routine nella diagnostica medica, nel rilevamento delle frodi, e in qualsiasi applicazione in cui il punto operativo è regolabile — richiedeva codice di ciclo personalizzato o post-elaborazione di output di precision_recall_curve() e roc_curve(). La nuova funzione standardizza questo flusso di lavoro e si integra pulitamente con il resto dell'API delle metriche sklearn.
Visualizzazioni HTML dell'estimatore più ricche
La rappresentazione HTML degli estimatori adattati nei notebook Jupyter è stata significativamente migliorata. Gli attributi adattati (quelli che terminano con _, come coef_, feature_importances_, e n_iter_) sono ora visualizzati in una tabella strutturata all'interno della vista HTML, consentendo agli ingegneri di ispezionare i parametri appresi a colpo d'occhio senza chiamare print(model.coef_). ColumnTransformer ora mostra i nomi delle funzionalità di output con pulsanti di copia negli appunti nella visualizzazione, rendendo notevolmente più facile tracciare come le funzionalità di input sono mappate attraverso pipeline di preelaborazione complesse. Per i team che utilizzano Jupyter per lo sviluppo del modello esplorativo e la comunicazione con gli stakeholder, questi miglioramenti di visualizzazione riducono significativamente l'attrito dell'ispezione del modello.
Miglioramenti degli alberi e dei modelli lineari
RandomForestRegressor ora supporta la gestione nativa dei valori mancanti quando si utilizza il criterio absolute_error — chiudendo un divario che ha costretto i professionisti a imputare i dati prima di adattare i modelli ensemble in contesti (come i record sanitari o i dati dei sensori) dove la mancanza di dati è portatrice di informazioni e non dovrebbe essere imputata. Il rilascio migliora anche la correttezza statistica della gestione del peso campionario in HistGradientBoosting, RandomForest, e ExtraTree, affrontando pregiudizi sottili che potrebbero influenzare i modelli addestrati su dataset sbilanciati o dati di sondaggio con pesi di probabilità. Inoltre, i modelli lineari multi-task ora supportano matrici di input sparse X e pesi campionari — una capacità importante per i professionisti di NLP che utilizzano la regressione multi-output su matrici documento-funzione sparse.
Deprecamenti da controllare
La versione 1.9 introduce diversi deprecamenti che i team dovrebbero pianificare le migrazioni prima dei cambiamenti dirompenti programmati nelle versioni 1.11 e 1.12:
criterion="friedman_mse"nei modelli basati su alberi è deprecato; il criterio standard"squared_error"è la sostituzione consigliata- Il parametro
SVC.probabilityè deprecato; la sostituzione consigliata èCalibratedClassifierCVche avvolge unSVC(probability=False)di base - Il parametro
n_alphasè deprecato inlasso_path()eenet_path() - Lo scoring predefinito in
LogisticRegressionCVcambierà da accuracy a"neg_log_loss"nella versione 1.11 — un cambiamento motivato statisticamente che può sorprendere i team che si affidano al comportamento predefinito corrente per la selezione del modello basato sulla soglia
Questi deprecamenti seguono la convenzione di scikit-learn di avvertire due versioni principali prima dell'arrivo dei cambiamenti dirompenti, dando ai team una pista di rullaggio adeguata per aggiornare il loro codice senza refactoring di emergenza.
Fonti
- Rilascio di scikit-learn 1.9: migliore numerica, nuove funzionalità principali (scikit-learn Blog)
- Versione 1.9 — note di rilascio di scikit-learn 1.9.0 (scikit-learn.org)
- scikit-learn e Hugging Face uniscono le forze (scikit-learn Blog)
- Modelli compatibili con la libreria scikit-learn (Hugging Face Hub)
- skops — Libreria Python per la condivisione sicura di modelli scikit-learn (GitHub)
- Accelerazione di scikit-learn con GPU: accelerazioni 15x via Array API (blog :probabl.)
- scikit-learn 1.9.0 su PyPI
- Aggiornamento sull'adozione dell'Array API in scikit-learn (Quansight Labs)