Ce face Accelerate (multi-GPU, DeepSpeed, precizie mixtă, estimate-memory)
Accelerate este stratul de distribuire folosit de Transformers. Două utilizări sunt frecvente: device_map="auto" la încărcarea modelelor mari, care pune greutățile întâi pe dispozitivul cel mai rapid și apoi pe CPU sau disc, și antrenarea distribuită.
Pentru antrenare, configurezi o dată mediul cu accelerate config și pornești scriptul cu accelerate launch. În cod, accelerator.prepare() înfășoară modelul, optimizatorul și dataloader-ul, iar accelerator.backward(loss) înlocuiește loss.backward().
accelerate estimate-memory încarcă modelul pe dispozitivul meta (fără greutăți reale) și afișează, pentru float32, float16, int8 și int4, cel mai mare strat, dimensiunea totală și memoria pentru antrenare cu Adam. Documentația precizează că valoarea acoperă doar încărcarea modelului, nu inferența, pentru care se adaugă până la aproximativ 20%. Suportă modele transformers și timm.
Sintaxă și opțiuni
| Opțiune / Parametru | Descriere |
|---|---|
accelerate config |
Întrebări interactive despre mediul de antrenare. |
accelerate launch --num_processes N |
Numărul de procese (de obicei unul pe GPU). |
accelerate launch --mixed_precision [no|fp16|bf16|fp8] |
Precizia mixtă. BF16 cere GPU-uri NVIDIA Ampere sau mai noi. |
accelerate launch --multi_gpu |
Antrenare pe mai multe GPU-uri. |
accelerate estimate-memory MODEL |
Estimarea memoriei pentru încărcare. |
estimate-memory --dtypes float32 float16 ... |
Doar anumite tipuri. |
estimate-memory --library_name [transformers|timm] |
Biblioteca modelului. |
Exemple practice
Exemplul 1: Estimarea memoriei pentru un model
accelerate estimate-memory bert-base-cased --dtypes float32 float16
Rezultat
Memory Usage for loading `bert-base-cased`:
| dtype | Largest Layer | Total Size | Training using Adam |
|---------|---------------|------------|---------------------|
| float32 | 84.95 MB | 413.18 MB | 1.61 GB |
| float16 | 42.47 MB | 206.59 MB | 826.36 MB |
Exemplul 2: Lansare pe 4 GPU-uri
accelerate launch --multi_gpu --num_processes=4 script_finetune.py
Exemplul 3: Bucla de antrenare adaptată
from accelerate import Accelerator
accelerator = Accelerator()
model, optimizer, loader = accelerator.prepare(model, optimizer, loader)
for batch in loader:
loss = model(**batch).loss
accelerator.backward(loss)
optimizer.step()
optimizer.zero_grad()
Greșeli frecvente și bune practici
- Iei cifra din
estimate-memoryca necesar pentru inferență. Ea acoperă doar încărcarea; documentația adaugă până la 20% pentru inferență. - Apelezi
loss.backward()în loc deaccelerator.backward(loss)într-un script lansat cu Accelerate. - Rulezi scriptul cu
python train.pydupăaccelerate config. Configurația se aplică prinaccelerate launch.
Întrebări & Exemple practice:
Accelerate (multi-GPU, DeepSpeed, precizie mixtă, estimate-memory)Ai o întrebare despre Accelerate (multi-GPU, DeepSpeed, precizie mixtă, estimate-memory) sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.