Best practice per l'addestramento dei modelli - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Best practice per l'addestramento dei modelli

Esistono diverse operazioni consigliate per migliorare le prestazioni dei modelli Neptune ML.

Scelta della proprietà del nodo corretta

Non tutte le proprietà del grafo sono significative o pertinenti per le attività di machine learning. Tutte le proprietà non pertinenti devono essere escluse durante l'esportazione dei dati.

Ecco alcune best practice:

  • Rivolgiti a esperti del settore per valutare l'importanza delle funzionalità e la fattibilità del relativo utilizzo per le previsioni.

  • Rimuovi le funzionalità che ritieni ridondanti o irrilevanti per ridurre il rumore nei dati e le correlazioni non importanti.

  • Esegui iterazioni mentre costruisci il tuo modello. Modifica le funzionalità, le combinazioni di funzionalità e gli obiettivi di ottimizzazione man mano che procedi.

La sezione relativa all'elaborazione delle funzionalità in Amazon Machine Learning Developer Guide fornisce linee guida aggiuntive per l'elaborazione delle funzionalità pertinenti per Neptune ML.

Gestione degli outlier nei punti dati

Un outlier è un punto dati che è significativamente diverso dai dati rimanenti. Gli outlier nei dati possono compromettere o fuorviare il processo di addestramento causando tempi di addestramento più lunghi o modelli meno accurati. A meno che non siano veramente importanti, è consigliabile eliminare gli outlier prima di esportare i dati.

Rimozione di nodi e archi duplicati

Nei grafi archiviati in Neptune possono essere presenti nodi o archi duplicati. Questi elementi ridondanti introdurranno rumore nell'addestramento dei modelli di machine learning. Elimina i nodi o gli archi duplicati prima di esportare i dati.

Ottimizzazione della struttura del grafo

Quando il grafo viene esportato, è possibile modificare la modalità di elaborazione delle funzionalità e la modalità di creazione del grafo, per migliorare le prestazioni del modello.

Ecco alcune best practice:

  • Quando una proprietà dell'arco ha lo stesso significato di categorie di archi, in alcuni casi vale la pena trasformarla in tipi di archi.

  • La policy di normalizzazione predefinita utilizzata per una proprietà numerica è min-max, ma in alcuni casi altre policy di normalizzazione garantiscono un risultato migliore. È possibile pre-elaborare la proprietà e modificare la policy di normalizzazione come spiegato in Elementi di un file model-HPO-configuration.json.

  • Il processo di esportazione genera automaticamente i tipi di funzionalità in base ai tipi delle proprietà. Ad esempio, tratta le proprietà String come funzionalità categoriali e le proprietà Float e Int come funzionalità numeriche. Se necessario, è possibile modificare il tipo di funzionalità dopo l'esportazione (consulta Elementi di un file model-HPO-configuration.json).

Ottimizzazione degli intervalli e dei valori predefiniti degli iperparametri

L'operazione di elaborazione dei dati deduce gli intervalli di configurazione degli iperparametri dal grafo. Se gli intervalli di iperparametri e i valori predefiniti del modello generati non sono adatti ai dati del grafo, puoi modificare il file di configurazione dell'ottimizzazione degli iperparametri per creare una strategia di ottimizzazione degli iperparametri personalizzata.

Ecco alcune best practice:

  • Quando il grafo diventa grande, le dimensioni predefinite della dimensione nascosta potrebbero non essere sufficienti per contenere tutte le informazioni. Puoi modificare l'iperparametro num-hidden per controllare le dimensioni della dimensione nascosta.

  • Per i modelli di incorporamento del grafo della conoscenza, potrebbe essere necessario modificare il modello specifico usato in base alla struttura del grafo e al budget.

    I modelli TrainsE hanno difficoltà a gestire le relazioni uno-a-molti (1-N), molti-a-uno (N-1) e molti-a-molti (N-N). I modelli DistMult hanno difficoltà a gestire relazioni simmetriche. Il modello RotatE consente di modellare tutti i tipi di relazioni ma è più costoso rispetto a TrainsE e DistMult durante l'addestramento.

  • In alcuni casi, quando sono importanti sia l'identificazione dei nodi che le informazioni sulle funzionalità del nodo, è necessario usare `concat-node-embed` per indicare al modello Neptune ML di recuperare la rappresentazione iniziale di un nodo concatenando le sue funzionalità con gli incorporamenti iniziali.

  • Quando si ottengono prestazioni ragionevolmente buone su alcuni iperparametri, è possibile regolare lo spazio di ricerca degli iperparametri in base a tali risultati.

Arresto anticipato del processo di addestramento dei modelli in Neptune ML

L'arresto anticipato può ridurre in modo significativo il tempo di esecuzione dell'addestramento del modello e i costi associati senza compromettere le prestazioni del modello. Inoltre, impedisce l'overfitting del modello sui dati di addestramento.

L'arresto anticipato dipende dalle misurazioni regolari delle prestazioni del set di convalida. Inizialmente, le prestazioni migliorano con il procedere dell'addestramento, ma quando si verifica l'overfitting, peggiora nuovamente. La funzionalità di arresto anticipato identifica il punto di overfitting del modello e arresta l'addestramento del modello in quel momento.

Neptune ML monitora le chiamate alle metriche di convalida e confronta la metrica di convalida più recente con la media delle metriche di convalida delle ultime n valutazioni, dove n è un numero impostato utilizzando il parametro window-for-early-stop. Non appena la metrica di convalida è peggiore di quella media, Neptune ML arresta l'addestramento del modello e salva il miglior modello generato fino a quel momento.

Puoi controllare l'arresto anticipato utilizzando i seguenti parametri:

  • window-for-early-stop: il valore di questo parametro è un numero intero che specifica il numero di punteggi di convalida recenti in base a cui calcolare la media per decidere se effettuare un arresto anticipato. Il valore predefinito è 3.

  • enable-early-stop: usa questo parametro booleano per disattivare la funzionalità di arresto anticipato. Per impostazione predefinita, il suo valore è true.

Arresto anticipato del processo di ottimizzazione degli iperparametri in Neptune ML

La funzione di arresto anticipato di Neptune ML interrompe anche i processi di addestramento che presentano prestazioni peggiori rispetto ad altri processi di aggiornamento, mediante la funzionalità di avvio a caldo dell'ottimizzazione degli iperparametri di SageMaker. Anche questa operazione consente di ridurre i costi e migliorare la qualità dell'ottimizzazione degli iperparametri.

Per una descrizione del funzionamento, consulta Esecuzione di un processo di ottimizzazione degli iperparametri con avvio a caldo.

L'avvio a caldo permette di trasferire le informazioni apprese dai processi di addestramento precedenti ai processi di addestramento successivi e offre due vantaggi distinti:

  • Innanzitutto, i risultati dei processi di ottimizzazione precedenti vengono utilizzati per indicare le combinazioni di iperparametri valide da cercare nel nuovo processo di ottimizzazione.

  • In secondo luogo, consente l'arresto anticipato per accedere a più esecuzioni del modello, riducendo così i tempi di ottimizzazione.

Questa funzionalità è abilitata automaticamente in Neptune ML e consente di trovare un equilibrio tra il tempo di addestramento del modello e le prestazioni. Se sei soddisfatto delle prestazioni del modello corrente, puoi utilizzare tale modello. In caso contrario, occorre eseguire altre ottimizzazioni degli iperparametri con avvio a caldo con i risultati delle esecuzioni precedenti in modo da individuare un modello migliore.

Servizi di supporto professionali

AWS offre servizi di supporto professionale per aiutarti a risolvere i problemi di machine learning sui progetti Neptune. Se rimani bloccato, contatta il Supporto AWS.