Addestramento efficiente con Hugging Face Accelerate
accelerate.Accelerator, addestramento indipendente dal dispositivo, accumulo dei gradienti, integrazione con DeepSpeed
Addestramento efficiente con Hugging Face Accelerate è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Il problema del codice ripetitivo
Scrivere manualmente il posizionamento sui dispositivi, la configurazione di DDP e la precisione mista è verboso e soggetto a errori. Hugging Face Accelerate elimina questo codice ripetitivo: lo stesso script viene eseguito su CPU, una GPU, molte GPU o persino TPU senza modifiche al codice.
L'oggetto Accelerator
Il cuore della libreria è Accelerator. Ne crea uno all'inizio dello script; rileva l'ambiente e gestisce per Lei i dispositivi, la configurazione distribuita e la precisione.
from accelerate import Accelerator
accelerator = Accelerator()
device = accelerator.devicePreparazione degli oggetti
accelerator.prepare accetta il modello, l'ottimizzatore e il dataloader e restituisce versioni configurate per l'impostazione corrente: spostate sul dispositivo corretto, avvolte in DDP se necessario, con il dataloader suddiviso tra i processi.
model, optimizer, dataloader = accelerator.prepare(
model, optimizer, dataloader
)Cosa fa prepare
Internamente, prepare gestisce il lavoro che altrimenti dovrebbe eseguire manualmente: trasferimento al dispositivo, avvolgimento in DDP, campionamento distribuito e integrazione della precisione mista. Una sola chiamata sostituisce decine di righe.
Nessun .to(device) manuale
Poiché il dataloader preparato restituisce batch già presenti sul dispositivo corretto, può eliminare le chiamate manuali a x.to(device). Lo stesso ciclo funziona ovunque.
for batch in dataloader:
inputs, labels = batch # already on device
outputs = model(inputs)
loss = loss_fn(outputs, labels)accelerator.backward
Anziché loss.backward(), chiami accelerator.backward(loss). Questo utilizza automaticamente il percorso corretto per l'addestramento distribuito e a precisione mista, incluso il ridimensionamento dei gradienti.
optimizer.zero_grad()
accelerator.backward(loss)
optimizer.step()Un ciclo di addestramento completo
Il ciclo completo di Accelerate è straordinariamente semplice e indipendente dal dispositivo.
accelerator = Accelerator()
model, optimizer, dataloader = accelerator.prepare(model, optimizer, dataloader)
for epoch in range(epochs):
for batch in dataloader:
inputs, labels = batch
outputs = model(inputs)
loss = loss_fn(outputs, labels)
optimizer.zero_grad()
accelerator.backward(loss)
optimizer.step()Precisione mista tramite configurazione
Può abilitare FP16/BF16 senza modificare il codice, impostandolo durante la creazione di Accelerator oppure tramite la configurazione della CLI. Accelerate gestisce quindi automaticamente autocast e il ridimensionamento dei gradienti.
accelerator = Accelerator(mixed_precision="fp16")unwrap_model per il salvataggio
Dopo prepare, il modello potrebbe essere avvolto in DDP. Prima di salvarlo, chiami accelerator.unwrap_model(model) per ottenere il modello sottostante semplice, così il checkpoint sarà pulito e portabile.
unwrapped = accelerator.unwrap_model(model)
accelerator.save(unwrapped.state_dict(), "model.pt")Avvio su più dispositivi
Si esegue lo stesso script con il comando accelerate launch, che legge la configurazione (numero di processi, macchine, precisione) e avvia i processi, gestendo in modo trasparente i casi con una GPU, più GPU o più nodi.
accelerate config # one-time interactive setup
accelerate launch train.pyPerché usare Accelerate
Accelerate offre una gestione trasparente di più dispositivi: si scrive un unico ciclo chiaro e lo si scala dalla CPU di un portatile a un cluster di GPU su più nodi, senza riscrivere il codice. Si basa sugli stessi concetti di DDP e AMP già appresi, nascondendo però la complessità sottostante.
Verifica rapida
Verifichi la Sua conoscenza di Accelerate.
Riepilogo
Ha imparato a eseguire training efficienti con Hugging Face Accelerate:
Accelerator()rileva e gestisce l'ambienteacc.prepare(model, optimizer, dataloader)configura tutto per i dispositivi disponibiliacc.backward(loss)gestisce la retropropagazione distribuita e a precisione mistaacc.unwrap_modelrestituisce un modello pulito da salvare- Un unico script scala in modo trasparente dalla CPU a una GPU su più nodi
Domande Frequenti
La lezione «Addestramento efficiente con Hugging Face Accelerate» è gratuita?
Sì — il testo completo di «Addestramento efficiente con Hugging Face Accelerate» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Addestramento efficiente con Hugging Face Accelerate»?
accelerate.Accelerator, addestramento indipendente dal dispositivo, accumulo dei gradienti, integrazione con DeepSpeed Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Addestramento efficiente con Hugging Face Accelerate»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Addestramento multi-GPU con DataParallel
- DistributedDataParallel (DDP)
- Addestramento a precisione mista con AMP
- Addestramento efficiente con Hugging Face Accelerate