0Pricing
Learn AI with Python · Lezione

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.device

Preparazione 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.py

Perché 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'ambiente
  • acc.prepare(model, optimizer, dataloader) configura tutto per i dispositivi disponibili
  • acc.backward(loss) gestisce la retropropagazione distribuita e a precisione mista
  • acc.unwrap_model restituisce 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

  1. Addestramento multi-GPU con DataParallel
  2. DistributedDataParallel (DDP)
  3. Addestramento a precisione mista con AMP
  4. Addestramento efficiente con Hugging Face Accelerate
← Torna a Learn AI with Python