Esegui PyTorch Lightning e PyTorch DDP nativo su Amazon SageMaker Training, con Amazon Search PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Esegui PyTorch Lightning e PyTorch DDP nativo su Amazon SageMaker Training, con Amazon Search

Così tanti dati, così poco tempo. Esperti di machine learning (ML), data scientist, ingegneri e appassionati hanno riscontrato questo problema in tutto il mondo. Dall'elaborazione del linguaggio naturale alla visione artificiale, dalle tabelle alle serie temporali e tutto il resto, l'annoso problema dell'ottimizzazione della velocità durante l'esecuzione dei dati su quante più GPU possibili ha ispirato innumerevoli soluzioni. Oggi siamo felici di annunciare le funzionalità per gli sviluppatori PyTorch che utilizzano framework open source nativi, come Fulmine PyTorch ed PyTorchDDP, che semplificherà il loro percorso verso il cloud.

Amazon Sage Maker è un servizio completamente gestito per ML e il training del modello SageMaker è un ambiente di calcolo ottimizzato per un training ad alte prestazioni su larga scala. L'addestramento dei modelli SageMaker offre un'esperienza di addestramento a distanza con un piano di controllo senza interruzioni per addestrare e riprodurre facilmente modelli ML ad alte prestazioni e a basso costo. Siamo entusiasti di annunciare le nuove funzionalità nel portfolio di formazione SageMaker che rendono l'esecuzione di PyTorch su larga scala ancora più semplice e accessibile:

  1. È ora possibile integrare PyTorch Lightning Libreria parallela di dati distribuiti di SageMaker con una sola riga di modifica del codice.
  2. Formazione del modello SageMaker ora ha il supporto per i dati distribuiti nativi PyTorch in parallelo con il back-end NCCL, consentendo agli sviluppatori di migrare su SageMaker più facilmente che mai.

In questo post, discutiamo di queste nuove funzionalità e scopriamo anche come Amazon Search ha eseguito PyTorch Lightning con il backend di formazione distribuito ottimizzato in SageMaker per accelerare i tempi di formazione del modello.

Prima di tuffarci nel case study di Amazon Search, per coloro che non hanno familiarità vorremmo fornire alcune informazioni di base Libreria parallela di dati distribuiti di SageMaker. Nel 2020 abbiamo sviluppato e lanciato una configurazione cluster personalizzata per la discesa del gradiente distribuita su larga scala che aumenta l'efficienza complessiva del cluster, introdotta su Amazon Science come Aringa. Utilizzando il meglio dei server dei parametri e delle topologie ad anello, SageMaker Distributed Data Parallel (SMDDP) è ottimizzato per il Cloud di calcolo elastico di Amazon (Amazon EC2) topologia di rete, incluso EFA. Per cluster di dimensioni maggiori, SMDDP è in grado di fornire miglioramenti del throughput del 20–40% rispetto a Horovod (TensorFlow) e PyTorch Distributed Data Parallel. Per dimensioni di cluster più piccole e modelli supportati, consigliamo il Compilatore di formazione SageMaker, che è in grado di ridurre il tempo di lavoro complessivo fino al 50%.

In evidenza i clienti: PyTorch Lightning sul backend ottimizzato di SageMaker con Amazon Search

Amazon Search è responsabile dell'esperienza di ricerca e scoperta su Amazon.com. Alimenta l'esperienza di ricerca per i clienti che cercano prodotti da acquistare su Amazon. Ad alto livello, Amazon Search crea un indice per tutti i prodotti venduti su Amazon.com. Quando un cliente inserisce una query, Amazon Search utilizza una varietà di tecniche di machine learning, inclusi modelli di deep learning, per abbinare prodotti pertinenti e interessanti alla query del cliente. Quindi classifica i prodotti prima di mostrare i risultati al cliente.

Gli scienziati di Amazon Search hanno utilizzato PyTorch Lightning come uno dei framework principali per addestrare i modelli di deep learning che alimentano il ranking di Search grazie alle sue funzionalità di usabilità aggiuntive rispetto a PyTorch. SMDDP non era supportato per i modelli di deep learning scritti in PyTorch Lightning prima di questo nuovo lancio di SageMaker. Ciò ha impedito agli scienziati di Amazon Search che preferiscono utilizzare PyTorch Lightning di ridimensionare l'addestramento del modello utilizzando tecniche di parallelismo dei dati, rallentando notevolmente i tempi di addestramento e impedendo loro di testare nuovi esperimenti che richiedono un addestramento più scalabile.

I primi risultati del benchmarking del team mostrano tempi di addestramento 7.3 volte più veloci per un modello di esempio quando addestrato su otto nodi rispetto a una linea di base di addestramento a nodo singolo. Il modello di base utilizzato in questi benchmarking è una rete neurale percettron multistrato con sette strati densi completamente connessi e oltre 200 parametri. La tabella seguente riassume il risultato del benchmarking sulle istanze di formazione ml.p3.16xlarge SageMaker.

Numero di istanze Tempo di allenamento (minuti) Progresso
1 99 Linea di base
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

Successivamente, ci addentriamo nei dettagli sui nuovi lanci. Se lo desideri, puoi scorrere il nostro corrispondente esempio taccuino.

Esegui PyTorch Lightning con la libreria di formazione distribuita SageMaker

Siamo lieti di annunciare che SageMaker Data Parallel ora si integra perfettamente con PyTorch Lightning all'interno della formazione SageMaker.

PyTorch Lightning è un framework open source che semplifica la scrittura di modelli personalizzati in PyTorch. In un certo senso simile a quello che ha fatto Keras per TensorFlow, o anche probabilmente Hugging Face, PyTorch Lightning fornisce un'API di alto livello con astrazioni per gran parte delle funzionalità di livello inferiore di PyTorch stesso. Ciò include la definizione del modello, la profilazione, la valutazione, la potatura, il parallelismo del modello, le configurazioni degli iperparametri, l'apprendimento del trasferimento e altro ancora.

In precedenza, gli sviluppatori di PyTorch Lightning erano incerti su come migrare senza problemi il loro codice di addestramento su cluster GPU SageMaker ad alte prestazioni. Inoltre, non c'era modo per loro di trarre vantaggio dai guadagni di efficienza introdotti da SageMaker Data Parallel.

Per PyTorch Lightning, in generale, dovrebbero esserci modifiche minime o nulle al codice per eseguire semplicemente queste API su SageMaker Training. Nei quaderni di esempio utilizziamo il Strategia DDP ed Plugin DPP metodi.

Esistono tre passaggi per utilizzare PyTorch Lightning con SageMaker Data Parallel come backend ottimizzato:

  1. Usa un supportato Contenitore per l'apprendimento profondo di AWS (DLC) come immagine di base o, facoltativamente, crea il tuo contenitore e installa tu stesso il back-end SageMaker Data Parallel. Assicurati di avere PyTorch Lightning incluso nei pacchetti necessari, ad esempio con a requirements.txt file.
  2. Apporta alcune piccole modifiche al codice allo script di addestramento che abilitano il back-end ottimizzato. Questi includono:
    1. Importa la libreria SM DDP:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. Configura l'ambiente PyTorch Lightning per SageMaker:
      from pytorch_lightning.plugins.environments.lightning_environment 
        import LightningEnvironment
      
      env = LightningEnvironment()
      env.world_size = lambda: int(os.environ["WORLD_SIZE"])
      env.global_rank = lambda: int(os.environ["RANK"])

    3. Se stai utilizzando una versione di PyTorch Lightning precedente alla 1.5.10, dovrai aggiungere alcuni passaggi in più.
      1. Innanzitutto, aggiungi la variabile di ambiente:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. In secondo luogo, assicurati di utilizzare DDPPlugin, Anziché DDPStrategy. Se stai utilizzando una versione più recente, che puoi facilmente impostare posizionando il file requirements.txt nel source_dir per il tuo lavoro, allora questo non è necessario. Vedere il codice seguente:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. Facoltativamente, definisci il backend del tuo gruppo di processi come "smddp" nel DDPSTrategy oggetto. Tuttavia, se stai utilizzando PyTorch Lightning con il backend PyTorch DDP, anch'esso supportato, rimuovi semplicemente questo `process_group_backend` parametro. Vedere il codice seguente:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. Assicurati di avere un metodo di distribuzione annotato nello stimatore, ad esempio distribution={"smdistributed":{"dataparallel":{"enabled":True} se stai usando il backend Herring, o distribution={"pytorchddp":{"enabled":True}.
  • Per un elenco completo dei parametri idonei nel file distribution parametro, vedere la nostra documentazione qui.

Ora puoi avviare il tuo lavoro di formazione SageMaker! Puoi avviare il tuo lavoro di formazione tramite Python SDK, Boto3, la console SageMaker, il Interfaccia della riga di comando di AWS (AWS CLI) e innumerevoli altri metodi. Dal punto di vista di AWS, questo è un unico comando API: create-training-job. Sia che tu avvii questo comando dal tuo terminale locale, un AWS Lambda funzione, un Amazon Sage Maker Studio notebook, una pipeline KubeFlow o qualsiasi altro ambiente di elaborazione dipende completamente da te.

Tieni presente che l'integrazione tra PyTorch Lightning e SageMaker Data Parallel è attualmente supportata solo per le versioni più recenti di PyTorch, a partire dalla 1.11. Inoltre, questa versione è disponibile solo nei DLC AWS per SageMaker a partire da PyTorch 1.12. Assicurati di indicare questa immagine come base. In us-east-1, questo indirizzo è il seguente:

ecr_image = '763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker'

Quindi puoi estendere il tuo contenitore Docker usando questo come immagine di base, oppure puoi passarlo come variabile in image_uri argomento del Stimatore di formazione SageMaker.

Di conseguenza, sarai in grado di eseguire il tuo codice PyTorch Lightning sulle GPU ottimizzate di SageMaker Training, con le migliori prestazioni disponibili su AWS.

Esegui PyTorch Distributed Data Parallel su SageMaker

Il più grande problema PyTorch Distributed Data Parallel (DDP) risolve è ingannevolmente semplice: velocità. Un buon framework di formazione distribuito dovrebbe fornire stabilità, affidabilità e, soprattutto, prestazioni eccellenti su larga scala. PyTorch DDP offre tutto ciò fornendo agli sviluppatori di torce API per replicare i loro modelli su più dispositivi GPU, in impostazioni sia a nodo singolo che multinodo. Il framework gestisce quindi il partizionamento orizzontale di oggetti diversi dal set di dati di addestramento a ciascuna copia del modello, calcolando la media dei gradienti per ciascuna copia del modello per sincronizzarli a ogni passaggio. Questo produce un modello al completamento totale dell'intero ciclo di addestramento. Il diagramma seguente illustra questo processo.

PyTorch DDP è comune nei progetti che utilizzano set di dati di grandi dimensioni. La dimensione precisa di ciascun set di dati varierà ampiamente, ma una linea guida generale consiste nel ridimensionare i set di dati, calcolare le dimensioni e le dimensioni del modello in rapporti simili. Chiamato anche leggi di scala, la combinazione ottimale di questi tre è oggetto di dibattito e varierà in base alle applicazioni. In AWS, sulla base della collaborazione con più clienti, possiamo vedere chiaramente i vantaggi delle strategie di parallelismo dei dati quando la dimensione complessiva del set di dati è di almeno alcune decine di GB. Quando i set di dati diventano ancora più grandi, l'implementazione di un qualche tipo di strategia di parallelismo dei dati è una tecnica fondamentale per accelerare l'esperimento generale e migliorare il time-to-value.

In precedenza, i clienti che utilizzavano PyTorch DDP per la formazione distribuita in locale o in altri ambienti di elaborazione non disponevano di un framework per migrare facilmente i loro progetti su SageMaker Training per sfruttare le GPU ad alte prestazioni con un piano di controllo senza interruzioni. In particolare, dovevano migrare il proprio framework di dati in parallelo a SMDDP o sviluppare e testare manualmente le capacità di PyTorch DDP su SageMaker Training. Oggi, SageMaker Training è lieta di offrire un'esperienza senza interruzioni ai clienti che eseguono l'onboarding del loro codice PyTorch DDP.

Per utilizzarlo in modo efficace, non è necessario apportare modifiche agli script di formazione.

Puoi vedere questo nuovo parametro nel codice seguente. Nel distribution parametro, aggiungi semplicemente pytorchddp e impostare abilitato come true.

estimator = PyTorch(
    base_job_name="pytorch-dataparallel-mnist",
    source_dir="code",
    entry_point = "my_model.py",
    ... 
    # Training using SMDataParallel Distributed Training Framework
    distribution = {"pytorchddp": {"enabled": "true"}}
)

Questa nuova configurazione inizia con SageMaker Python SDK versioni 2.102.0 e PyTorch DLC 1.11.

Per gli sviluppatori PyTorch DDP che hanno familiarità con il popolare torcia framework, è utile sapere che ciò non è necessario nell'ambiente di formazione SageMaker, che fornisce già una solida tolleranza agli errori. Tuttavia, per ridurre al minimo le riscritture del codice, puoi portare un altro script di avvio che esegue questo comando come punto di ingresso.

Ora gli sviluppatori PyTorch possono spostare facilmente i loro script su SageMaker, assicurando che i loro script e contenitori possano essere eseguiti senza problemi in più ambienti di elaborazione.

Questo li prepara a, in futuro, trarne vantaggio Librerie di formazione distribuite di SageMaker che forniscono topologie di addestramento ottimizzate per AWS per fornire miglioramenti della velocità fino al 40%. Per gli sviluppatori PyTorch, questa è una singola riga di codice! Per il codice PyTorch DDP, puoi semplicemente impostare il backend su smddp nell'inizializzazione (vedi Modifica uno script di addestramento PyTorch), come indicato nel codice seguente:

import smdistributed.dataparallel.torch.torch_smddp
import torch.distributed as dist
dist.init_process_group(backend='smddp')

Come abbiamo visto sopra, puoi anche impostare il back-end di DDPStrategy a smddp quando si utilizza Lightning. Questo può portare a Accelerazioni complessive del 40%. per grandi grappoli! Per ulteriori informazioni sulla formazione distribuita su SageMaker, vedere il nostro webinar on-demand, supporto computer portatili, rilevante documentazionee documenti.

Conclusione

In questo post, abbiamo introdotto due nuove funzionalità all'interno della famiglia SageMaker Training. Questi rendono molto più facile per gli sviluppatori PyTorch utilizzare il loro codice esistente su SageMaker, sia PyTorch DDP che PyTorch Lightning.

Abbiamo anche mostrato come Amazon Search utilizzi SageMaker Training per addestrare i propri modelli di deep learning, e in particolare PyTorch Lightning con la libreria collettiva ottimizzata SageMaker Data Parallel come back-end. Il passaggio alla formazione distribuita in generale ha aiutato Amazon Search a raggiungere tempi di treno 7.3 volte più veloci.


Circa gli autori

Esegui PyTorch Lightning e PyTorch DDP nativo su Amazon SageMaker Training, con Amazon Search PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Emilia Webber si è unito ad AWS subito dopo il lancio di SageMaker e da allora ha cercato di parlarne al mondo! Oltre a creare nuove esperienze ML per i clienti, Emily ama meditare e studiare il buddismo tibetano.

Esegui PyTorch Lightning e PyTorch DDP nativo su Amazon SageMaker Training, con Amazon Search PlatoBlockchain Data Intelligence. Ricerca verticale. Ai. Karan Dhiman è un ingegnere di sviluppo software presso AWS, con sede a Toronto, Canada. È molto appassionato dello spazio di Machine Learning e della creazione di soluzioni per accelerare i carichi di lavoro di calcolo distribuito.

Esegui PyTorch Lightning e PyTorch DDP nativo su Amazon SageMaker Training, con Amazon Search PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Vishwa Karia è un ingegnere di sviluppo software presso AWS Deep Engine. I suoi interessi si trovano all'intersezione tra Machine Learning e Sistemi Distribuiti ed è anche appassionata di responsabilizzare le donne nella tecnologia e nell'IA.

Esegui PyTorch Lightning e PyTorch DDP nativo su Amazon SageMaker Training, con Amazon Search PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Eiman Elnahrawy è un Principal Software Engineer presso Amazon Search e guida gli sforzi per l'accelerazione, la scalabilità e l'automazione di Machine Learning. La sua esperienza abbraccia più aree, tra cui Machine Learning, Sistemi distribuiti e Personalizzazione.

Timestamp:

Di più da Apprendimento automatico di AWS