0Pricing
Learn AI with Python · Lekcja

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

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

Dlaczego 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 nim
  • acc.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 precyzji
  • acc.unwrap_model udostę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

  1. Trenowanie na wielu GPU za pomocą DataParallel
  2. DistributedDataParallel (DDP)
  3. Trenowanie z mieszaną precyzją za pomocą AMP
  4. Wydajne trenowanie za pomocą Hugging Face Accelerate
← Powrót do Learn AI with Python