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à.
Adatta il tuo script di formazione PyTorch
Nota
Amazon SageMaker Debugger non è più aperto a nuovi clienti. I clienti esistenti possono continuare a utilizzare il servizio normalmente. AWS continua a investire in miglioramenti della sicurezza e della disponibilità di Debugger, ma non prevediamo di introdurre nuove funzionalità. Per ulteriori informazioni, consulta Modifica della disponibilità del debugger.
Per iniziare a raccogliere i tensori di output del modello ed eseguire il debug dei problemi di addestramento, apportate le seguenti modifiche allo script di addestramento. PyTorch
Nota
SageMaker Il debugger non è in grado di raccogliere i tensori di output del modello dalle operazioni API. torch.nn.functionaltorch.nn
Per PyTorch 1.12.0
Se si utilizza uno script di PyTorch addestramento, è possibile eseguire il processo di addestramento ed estrarre i tensori di output del modello con alcune righe di codice aggiuntive nello script di addestramento. Devi utilizzare le API hooksagemaker-debugger. Segui le seguenti istruzioni che descrivono le fasi con esempi di codice.
-
Crea un hook.
(Consigliato) Per lavori di formazione nell'ambito dell' SageMaker IA
import smdebug.pytorch as smd hook=smd.get_hook(create_if_not_exists=True)Quando avvii un processo di formazione Avvia lavori di formazione con Debugger utilizzando Python SDK SageMaker con una qualsiasi delle regole presenti DebuggerHookConfig TensorBoardConfig ModelTrainer, SageMaker AI aggiunge un file di configurazione JSON all'istanza di formazione che viene raccolto dalla
get_hookfunzione. Nota che se non includi nessuna delle API di configurazione nella tua ModelTrainer, l'hook non troverà alcun file di configurazione e la funzione verrà restituita.None(Facoltativo) Per lavori di formazione esterni all' SageMaker IA
Se esegui lavori di formazione in modalità locale, direttamente su istanze SageMaker Notebook, istanze Amazon EC2 o dispositivi locali, usa
smd.Hookclass per creare un hook. Tuttavia, questo approccio può solo archiviare le raccolte di tensori ed è utilizzabile per la visualizzazione. TensorBoard SageMaker Le regole integrate di Debugger non funzionano con la modalità locale perché richiedono istanze di addestramento SageMaker AI ML e S3 per archiviare gli output delle istanze remote in tempo reale. In questo caso , l’APIsmd.get_hookrestituisceNone.Se desideri creare un hook manuale per salvare i tensori in modalità locale, usa il seguente frammento di codice con la logica per verificare se l'API
smd.get_hookrestituisceNonee crea un hook manuale utilizzando la classesmd.Hook. Tieni presente che puoi specificare qualsiasi directory di output nel tuo computer locale.import smdebug.pytorch as smd hook=smd.get_hook(create_if_not_exists=True) if hook is None: hook=smd.Hook( out_dir='/path/to/your/local/output/', export_tensorboard=True ) -
Esegui il wrapping del tuo modello con i metodi di classe dell'hook.
Il metodo
hook.register_module()prende il tuo modello e scorre attraverso ogni livello, cercando i tensori che corrispondono alle espressioni regolari che fornirai attraverso la configurazione in Avvia lavori di formazione con Debugger utilizzando Python SDK SageMaker. I tensori raccolti tramite questo metodo hook sono pesi, bias, attivazioni, gradienti, input e output.hook.register_module(model)Suggerimento
Se raccogli tutti i tensori di output da un modello di deep learning di grandi dimensioni, la dimensione totale di tali raccolte può aumentare esponenzialmente e causare colli di bottiglia. Se desideri salvare tensori specifici, puoi anche utilizzare il metodo
hook.save_tensor(). Questo metodo ti aiuta a scegliere la variabile per il tensore specifico e a salvarla in una raccolta personalizzata denominata come desideri. Per ulteriori informazioni, consulta la fase 7 di queste istruzioni. -
Esegui il wrapping della funzione di perdita con i metodi di classe dell'hook.
Il metodo
hook.register_lossconsiste nel racchiudere la funzione di perdita. Estrae i valori di perdita ognisave_intervalche imposterai durante la configurazione in Avvia lavori di formazione con Debugger utilizzando Python SDK SageMaker e li salva nella raccolta"losses".hook.register_loss(loss_function) -
Aggiungi
hook.set_mode(ModeKeys.TRAIN)nel blocco di addestramento. Ciò indica che la raccolta dei tensori viene estratta durante la fase di addestramento.def train(): ... hook.set_mode(ModeKeys.TRAIN) -
Aggiungi
hook.set_mode(ModeKeys.EVAL)nel blocco di convalida. Ciò indica che la raccolta dei tensori viene estratta durante la fase di convalida.def validation(): ... hook.set_mode(ModeKeys.EVAL) -
Usa
hook.save_scalar()per salvare scalari personalizzati. Puoi salvare valori scalari che non sono presenti nel modello. Ad esempio, se desideri registrare i valori di precisione calcolati durante la valutazione, aggiungila seguente riga di codice sotto la riga in cui calcoli la precisione. hook.save_scalar("accuracy", accuracy)Si noti che è necessario fornire una stringa come primo argomento per denominare la raccolta scalare personalizzata. Questo è il nome che verrà utilizzato per visualizzare i valori scalari in TensorBoard e può essere qualsiasi stringa desiderata.
-
Usa
hook.save_tensor()per salvare i tensori personalizzati. Analogamente a hook.save_scalar(), puoi salvare tensori aggiuntivi, definendo la tua raccolta di tensori. Ad esempio, puoi possibile estrarre i dati dell'immagine di input che vengono passati al modello e salvarli come tensore personalizzato aggiungendo la seguente riga di codice, dove "images"è riportato un nome di esempio del tensore personalizzato,image_inputsè una variabile di esempio per i dati dell'immagine di input.hook.save_tensor("images", image_inputs)Nota che devi fornire una stringa al primo argomento per denominare il tensore personalizzato.
hook.save_tensor()ha il terzo argomentocollections_to_writeper specificare la raccolta di tensori per salvare il tensore personalizzato. Il valore predefinito ècollections_to_write="default". Se non specifichi esplicitamente il terzo argomento, il tensore personalizzato viene salvato nella raccolta di tensori"default".
Dopo aver completato l’adattamento dello script di addestramento, procedi con Avvia lavori di formazione con Debugger utilizzando Python SDK SageMaker.