Neptune.ai vs ClearML

Neptune.ai e ClearML sono entrambe piattaforme ML che aiutano con il tracking degli esperimenti, la gestione dei modelli e la collaborazione tra data scientist e MLOps engineers.

Questo confronto risale al primo trimestre del 2023.

Sebbene esistano alcune somiglianze tra queste due piattaforme, esiste una differenza fondamentale: Neptune.ai si concentra fortemente sul tracking degli esperimenti (logging, condivisione e collaborazione degli esperimenti) mentre ClearML ha un focus più ampio e una gamma più estesa di funzionalità con particolare attenzione a automazione e scalabilità dei flussi di lavoro machine learning: messa a punto/ottimizzazione automatizzata degli iperparametri, gestione delle pipeline ML, versionamento, gestione dei dati, orchestrazione dei modelli, …

Entrambi dispongono di funzionalità di tracking degli esperimenti, ma ClearML fornisce anche:

  • Ottimizzazione degli iperparametri: ClearML fornisce strumenti di ottimizzazione degli iperparametri che consentono agli utenti di ottimizzare i propri modelli ottimizzando automaticamente gli iperparametri. ClearML consente di ottimizzare automaticamente un determinato task, monitorando e registrando i dettagli di esecuzione di ogni run.
    https://clear.ml/docs/latest/docs/fundamentals/hpo/
  • Pipeline: ClearML fornisce diverse funzionalità per la creazione e la gestione di pipeline di machine learning. In poche parole: ClearML consente di creare “blocchi” di codice (ovvero attività) e combinarli per creare avanzate pipeline automatizzate (orchestrazione delle attività, ad esempio: eseguire l’attività 2 se l’esecuzione 1 è stata eseguita con successo o se il modello aveva una accuracy > un dato soglia).
    https://clear.ml/docs/latest/docs/pipelines/
  • Gestione/produzione e monitoraggio: ClearML fornisce una CLI per la gestione dei modelli e per la loro distribuzione e orchestrazione. Consente la distribuzione del modello, inclusa la fornitura e la pre elaborazione del codice in un cluster Kubernetes o in soluzioni personalizzate basate su containers. Le caratteristiche principali sono: Distribuzione automatica CI/CD e Monitoraggio dei modelli in tempo reale.
    https://clear.ml/docs/latest/docs/clearml_serving/
  • Strumento di report integrato: un ambiente markdown per la creazione di report, con funzionalità integrate per includere rapidamente i risultati dai moduli ClearML.
    https://clear.ml/blog/introducing-clearml-reports/
  • Auto-Scaler: si possono definire regole e soglie per il provisioning e il de-provisioning automatico di risorse come macchine virtuali o cluster Kubernetes in base alla richiesta del carico di lavoro delle attività. Autoscaler si integra con i provider cloud più diffusi come AWS, Azure e GCP, nonché con l’infrastruttura locale.
    https://clear.ml/docs/latest/docs/guides/services/aws_autoscaler/
  • Hyper-dataset (solo a pagamento, non open source): sono essenzialmente raccolte di dati che possono essere controllate, monitorate e condivise tra più esperimenti. Un’astrazione di set di dati con funzionalità utili.
    https://clear.ml/docs/latest/docs/hyperdatasets/overview/

 

Confronto degli Aspetti Principali

Setup/Requisiti

Non c’è nessun requisito speciale per la configurazione oltre all’installazione del clearML python package (se si utilizza l’hosting gestito) o del neptune-client.

In caso di ClearML ospitato autonomamente; le opzioni pre-disponibili sono:

  • AMI AWS EC2 precostruite
  • immagini personalizzate GCP predefinite
  • immagini docker predefinite
  • Kubernetes + Helm

È possibile accedere ai metadati tracciati tramite CLI/API personalizzata o SDK Python.

  • ClearML supporta anche l’accesso API REST
  • Neptune.ai ha anche un SDK R

Il tracking e altre funzionalità richiedono poche modifiche al codice: aggiunta di decoratori o chiamate API per avviare il tracking, creare attività, registrazione, ecc. Non è necessario modificare il codice, basta aggiungere alcune righe di codice.

Esempio in ClearML: crea un’attività da uno script .py

from clearml import Task
task = Task.init(project_name=’project’, task_name=’experiment’)

Confronto delle Funzionalità di Tracking degli Esperimenti

Entrambe le piattaforme possono svolgere il tracking degli esperimenti: il processo di logging di tutte le informazioni relative agli esperimenti che risultano di interesse per ogni esperimento eseguito. Questi “metadati di interesse” dipenderanno fortemente dal progetto, ma potrebbero includere: script utilizzati per eseguire l’esperimento, file di configurazione dell’ambiente, versioni dei dati utilizzate per l’addestramento e la valutazione, parametri, metriche di valutazione, pesi del modello, prestazioni,…

Alcune differenze chiave sono elencate di seguito:

  • Sia Neptune.ai che ClearML possono tenere traccia dei notebook (codice e celle di output): istantanee e controllo delle versioni dei notebook, ma in generale neptune.ai ha un’integrazione/supporto dei notebook più solida:

→ Registra e visualizza i checkpoint del notebook durante l’addestramento del modello

→ Collega i checkpoint del notebook con le esecuzioni di addestramento del modello in Neptune

→ Organizza e sfoglia i checkpoint

→ Confronta i notebook fianco a fianco

  • In generale, Neptune.ai ha un’interfaccia WebUI leggermente più avanzata e interattiva per il tracking degli esperimenti, rispetto a ClearML (anche se ClearML ha alcune piccole funzionalità uniche).
  • ClearML supporta la visualizzazione predittiva (solo per la versione a pagamento e in modo limitato). Neptune.ai non supporta questo tipo di visualizzazione.

→ Matrice di confusione interattiva per la classificazione delle immagini

→ Maschere di previsione sovrapposte per la segmentazione delle immagini, riquadri di delimitazione, …

Confronto di esperimenti: entrambi possono confrontare diversi esperimenti (esecuzioni) con confronti affiancati di parametri, valori, metriche, …

  • Ci sono alcune differenze: ClearML consente anche di confrontare video e clip audio, confronto di file git/sorgente, pip requirements.txt (confronto di ambienti), modelli e file csv. Non fornito da Neptune.ai.
  • Neptune.ai consente il confronto e il tracking delle informazioni di sistema: traccia dello stack degli errori, dettagli del sistema (host, proprietario), registri della console. Meno accurato in ClearML.

L’organizzazione e la ricerca di esperimenti e metadati è leggermente più efficiente/potente in Neptune.ai poiché si basa su un linguaggio di query e dispone di più funzionalità come filtri avanzati, capacità di salvare filtri, cronologia delle ricerche e visualizzazioni di tabelle degli esperimenti,…

Riproducibilità e tracciabilità degli esperimenti: entrambi gli strumenti consentono di tracciare e rieseguire l’esperimento nelle stesse condizioni (l’ambiente è versionato e riproducibile). ClearML gestisce anche una cache di tutti i contenuti scaricati in modo che nulla venga duplicato e il codice non dovrà scaricare due volte lo stesso pezzo.

Panoramica/Report del progetto: ClearML dispone di una funzionalità aggiuntiva che fornisce opzioni per presentare un quadro generale del progetto. La pagina è costituita da un grafico che può mostrare un’istantanea del valore di una metrica specifica negli esperimenti del progetto e da uno spazio per inserire e modificare la descrizione di un progetto nel markdown.
https://clear.ml/docs/latest/docs/webapp/webapp_project_overview/

Una tabella dettagliata che confronta neptune.ai e clearML (in termini di caratteristiche di neptune e clearML): https://neptune.ai/vs/clearml

Registro/Versionamento del Modello

Il controllo delle versioni del modello implica in un certo senso il tracking delle modifiche apportate a un modello ML che è stato precedentemente creato. È un modo per prendere nota delle modifiche apportate al modello modificando gli iperparametri, riqualificando il modello con più dati e così via.
Sia ClearML che Neptune.ai supportano questa funzione. Durante il tracking di un’attività/esperimento, rilevano modelli (da librerie conosciute) e li registrano/tracciano automaticamente.
Le versioni del codice (utilizzate per l’addestramento), i parametri, le versioni del set di dati, i risultati (metriche, visualizzazioni) e i file del modello (modelli e pesi in pacchetto) vengono sottoposti a versione da entrambi gli strumenti.

  • ClearML fornisce anche il controllo delle versioni dell’ambiente (usato python env), neptune.ai no.
  • Neptune.ai fornisce anche un controllo delle versioni con spiegazioni limitate (SHAP, DALEX), ClearML no.
  • Neptune.ai consente di definire per ogni modello con versione un tag di transizione (sviluppo, staging, produzione) e la possibilità di aggiungere annotazioni/commenti dalla WebUI.
  • Durante l’esplorazione dei modelli registrati, neptune.ai fornisce funzionalità di filtro/ricerca più avanzate.

Supporto e Integrazioni

L’elenco delle librerie esterne supportate differisce:

Training del Modello:

  • Supportato da entrambi: fastai, LightGBM, PyTorch (basic, Ignite e Lightning), Scikit Learn, TensorFlow, Keras, XGBoost
  • Solo ClearML: CatBoost
  • Solo Neptune.ai: Catalyst, FBProphet, HuggingFace, Skorch

Ottimizzazione degli Iperparametri:

  • Supportato da entrambi: Keras Tuner, Optuna
  • Solo Neptune.ai: Scikit-Optimize

IDE e notebook

JupyterLab, Jupyter Notebook, Google Colab e AWS Sagemaker sono supportati da entrambi gli strumenti. Neptune.ai supporta anche Deepnote.

Altre Librerie:

Neptune.ai supporta anche Kedro, ZenML, MLFlow, Sacred e TensorBoard.
Neptune.ai ha anche un supporto limitato per GitHub Actions mentre Jenkins è supportato da ClearML.

Pricing di ClearML
(I prezzi qui elencati si riferiscono al primo trimestre del 2023)

ClearML dispone di un modello di prezzo basato sul credito (paga per ciò che usi).

→ FREE: fino a 3 utenti; funzionalità limitate → Utilizzo limitato (limiti soglia di utilizzo)
→ PRO: fino a 10 utenti; 15$ per utente/mese + costo di utilizzo.
Ulteriori funzionalità abilitate → Prezzi di utilizzo (dopo aver raggiunto Limiti di soglia GRATUITI): paghi per l’archiviazione degli artefatti, la metrica eventi, chiamate API, utilizzo delle risorse umane dell’applicazione ClearML.

Upgrade FREE ➡️ PRO: Pro ha più funzionalità abilitate, come:

→ Ottimizzazione degli iperparametri

→ Pianificazione delle attività

→ Trigger della pipeline

→ Dashboard di progetto

→ Monitoraggio delle attività

→ Sviluppo remoto ClearML

→ SCALE: prezzo/contratto personalizzato ma utenti illimitati e utilizzo

Upgrade PRO ➡️ SCALE ed ENTERPRISE: funzionalità chiave aggiunte da PRO sono:

→ Hyper-Dataset (livello di astrazione dell’accesso ai dati che separa completamente il codice dai dati, insieme alle funzionalità di query del DB e al controllo della versione integrato)

→ Distribuzione ClearML

→ Integrazione Kubernetes

→Accordo sul livello di servizio

→ ENTERPRISE: prezzo/contratto personalizzato ma illimitato utenti e utilizzo

Upgrade SCALE ➡️ ENTERPRISE: funzionalità chiave aggiunte da SCALE ad ENTERPRISE sono:

→ Configuration Vault (memorizza il vault di configurazione per utente/gruppo/azienda, supporto variabili di ambiente, chiavi di accesso, archiviazione credenziali ecc.)

→ Applicazione personalizzata ClearML (crea la tua app su ClearML)

→ Controllo degli accessi basato sui ruoli

→ Supporto dedicato

Tabella dei prezzi dettagliata: https://clear.ml/pricing

Una serie di brevi video che descrivono ciascun modulo/funzionalità principale di ClearML: https://clear.ml/docs/latest/docs/getting_started/video_tutorials/quick_introduction

Pricing di Neptune.ai
(I prezzi qui elencati si riferiscono al primo trimestre del 2023)

Neptune.ai ha un modello di prezzo per utente e per funzionalità.

→ FREE: 1 utente, 200 ore di registrazione/mese
→ TEAM: 150$/mese → utenti illimitati, 1.500 loggati ora/mese, supporto standard tramite email e chat
→ ORGANIZATION: 600$/mese → utenti illimitati, 6.000 ore di registrazione al mese, supporto prioritario via email e chat, gestione degli accessi degli utenti
→ CUSTOM: $/mese personalizzato → utenti illimitati, utilizzo illimitato, SSO, contratto e SLA personalizzabili, Supporto dedicato e onboarding

Tabella dei prezzi dettagliata: https://neptune.ai/pricing

Valutazione personale (HPA)

I nostri requisiti/necessità: è necessario solo il tracking degli esperimenti (tracciare, confrontare, salvare e riprodurre “attività eseguite manualmente”, ovvero i dati analisi, formazione, pre-elaborazione…) per migliorare la nostra “modellazione-flusso di lavoro”.

Neptune.ai si concentra fortemente su questo; è più avanzato e lucido di ClearML. È la piattaforma all’avanguardia per il tracking degli esperimenti di machine learning, registrazione delle metriche, analisi grafici delle prestazioni e molto altro ancora.

Per un obiettivo più ampio: automatizzare e migliorare l’intero ML ciclo di vita del progetto, dal tracking degli esperimenti alla distribuzione, alla pubblicazione e monitoraggio:

  • ClearML offre uno “stack” di funzionalità, ognuna delle quali può essere utilizzata in autonomia a seconda delle esigenze.
  • ClearML è più complesso ed esteso, la curva di apprendimento è più difficile.
  • ClearML può essere più difficile da configurare rispetto ad altri esperimenti strumenti di tracciamento.
  • La documentazione può essere difficile da consultare, soprattutto per i nuovi utenti poiché è enorme.