Wydajne trenowanie za pomocą Hugging Face Accelerate
accelerate.Accelerator, trenowanie niezależne od urządzenia, akumulacja gradientów, integracja z DeepSpeed.
Wydajne trenowanie za pomocą Hugging Face Accelerate to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Problem z kodem powtarzalnym
Ręczne pisanie kodu odpowiedzialnego za rozmieszczanie na urządzeniach, konfigurację DDP i mixed precision jest rozwlekłe oraz podatne na błędy. Hugging Face Accelerate usuwa ten kod powtarzalny: ten sam skrypt działa na CPU, jednym GPU, wielu GPU, a nawet na TPU bez zmian w kodzie.
Obiekt Accelerator
Sercem biblioteki jest Accelerator. Tworzą go Państwo na początku skryptu; wykrywa środowisko i zarządza za Państwa urządzeniami, konfiguracją rozproszoną oraz precyzją obliczeń.
from accelerate import Accelerator
accelerator = Accelerator()
device = accelerator.devicePrzygotowywanie obiektów
accelerator.prepare przyjmuje model, optymalizator i dataloader, a następnie zwraca ich wersje dostosowane do bieżącej konfiguracji: przeniesione na właściwe urządzenie, w razie potrzeby opakowane w DDP, a także z dataloaderem podzielonym między procesy.
model, optimizer, dataloader = accelerator.prepare(
model, optimizer, dataloader
)Działanie prepare
W tle prepare wykonuje zadania, które w przeciwnym razie musieliby Państwo zrealizować ręcznie: przenoszenie na urządzenie, opakowanie w DDP, próbkowanie rozproszone oraz podłączenie mixed precision. Jedno wywołanie zastępuje dziesiątki wierszy kodu.
Brak ręcznego .to(device)
Ponieważ przygotowany dataloader zwraca batche znajdujące się już na właściwym urządzeniu, można usunąć ręczne wywołania x.to(device). Ta sama pętla działa wszędzie.
for batch in dataloader:
inputs, labels = batch # already on device
outputs = model(inputs)
loss = loss_fn(outputs, labels)accelerator.backward
Zamiast loss.backward() należy wywołać accelerator.backward(loss). Automatycznie kieruje to operację właściwą ścieżką dla trenowania rozproszonego i w trybie mixed precision, w tym z użyciem skalowania gradientów.
optimizer.zero_grad()
accelerator.backward(loss)
optimizer.step()Kompletna pętla trenowania
Pełna pętla Accelerate jest wyjątkowo przejrzysta i niezależna od urządzenia.
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()Mixed precision za pomocą konfiguracji
FP16/BF16 można włączyć bez modyfikowania kodu, ustawiając je podczas tworzenia obiektu Accelerator lub za pomocą konfiguracji CLI. Accelerate zajmie się za Państwa autocast i skalowaniem gradientów.
accelerator = Accelerator(mixed_precision="fp16")unwrap_model podczas zapisywania
Po wywołaniu prepare model może być opakowany w DDP. Przed zapisaniem należy wywołać accelerator.unwrap_model(model), aby uzyskać zwykły model bazowy i utworzyć czysty, przenośny checkpoint.
unwrapped = accelerator.unwrap_model(model)
accelerator.save(unwrapped.state_dict(), "model.pt")Uruchamianie na różnych urządzeniach
Ten sam skrypt uruchamia się za pomocą polecenia accelerate launch, które odczytuje konfigurację (liczbę procesów, maszyn i precyzję), a następnie uruchamia procesy, przejrzyście obsługując przypadki z jedną kartą GPU, wieloma kartami GPU oraz wieloma węzłami.
accelerate config # one-time interactive setup
accelerate launch train.pyDlaczego Accelerate
Accelerate zapewnia przejrzystą obsługę wielu urządzeń: wystarczy napisać jedną przejrzystą pętlę, aby skalować rozwiązanie od procesora CPU w laptopie do wielowęzłowego klastra GPU bez przepisywania kodu. Biblioteka opiera się na poznanych już koncepcjach DDP i AMP, ukrywając jedynie całą infrastrukturę.
Szybki test
Proszę sprawdzić swoją wiedzę na temat Accelerate.
Podsumowanie
Poznali Państwo efektywne trenowanie modeli za pomocą Hugging Face Accelerate:
Accelerator()wykrywa środowisko i zarządza nimacc.prepare(model, optimizer, dataloader)konfiguruje wszystkie elementy dla bieżących urządzeńacc.backward(loss)obsługuje propagację wsteczną w środowisku rozproszonym i przy mieszanej precyzjiacc.unwrap_modeludostępnia czysty model do zapisania- Jeden skrypt można przejrzyście skalować od CPU do wielowęzłowego środowiska GPU
Często zadawane pytania
Czy lekcja „Wydajne trenowanie za pomocą Hugging Face Accelerate” jest bezpłatna?
Tak — pełny tekst „Wydajne trenowanie za pomocą Hugging Face Accelerate” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Wydajne trenowanie za pomocą Hugging Face Accelerate”?
accelerate.Accelerator, trenowanie niezależne od urządzenia, akumulacja gradientów, integracja z DeepSpeed. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Wydajne trenowanie za pomocą Hugging Face Accelerate”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Trenowanie na wielu GPU za pomocą DataParallel
- DistributedDataParallel (DDP)
- Trenowanie z mieszaną precyzją za pomocą AMP
- Wydajne trenowanie za pomocą Hugging Face Accelerate