Uruchom PyTorch Lightning i natywny PyTorch DDP w Szkoleniu Amazon SageMaker, wyposażonym w technologię Amazon Search PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Uruchom PyTorch Lightning i natywny PyTorch DDP w Szkoleniu Amazon SageMaker, w tym Amazon Search

Tyle danych, tak mało czasu. Eksperci ds. uczenia maszynowego (ML), naukowcy zajmujący się danymi, inżynierowie i entuzjaści zetknęli się z tym problemem na całym świecie. Od przetwarzania języka naturalnego po widzenie komputerowe, tabelaryczne, szeregi czasowe i wszystko pomiędzy, odwieczny problem optymalizacji pod kątem szybkości podczas uruchamiania danych na tak wielu procesorach graficznych, jak tylko możesz, zainspirował niezliczone rozwiązania. Dzisiaj z przyjemnością ogłaszamy funkcje dla programistów PyTorch korzystających z natywnych frameworków open-source, takich jak PyTorch Błyskawica i PyTorch DDP, co usprawni ich drogę do chmury.

Amazon Sage Maker to w pełni zarządzana usługa dla ML, a szkolenie modelu SageMaker to zoptymalizowane środowisko obliczeniowe do wysokowydajnego szkolenia na dużą skalę. Szkolenie modeli SageMaker oferuje zdalne szkolenie z bezproblemową płaszczyzną sterowania, aby łatwo trenować i odtwarzać modele ML z wysoką wydajnością i niskim kosztem. Z przyjemnością ogłaszamy nowe funkcje w portfolio treningowym SageMaker, które sprawiają, że korzystanie z PyTorch na dużą skalę jest jeszcze łatwiejsze i bardziej dostępne:

  1. PyTorch Lightning można teraz zintegrować z Równoległa biblioteka danych rozproszonych SageMaker z tylko jedną zmianą kodu.
  2. Trening modelu SageMaker ma teraz wsparcie dla natywnego PyTorch Distributed Data Parallel z NCCL, co pozwala programistom na migrację do SageMaker łatwiej niż kiedykolwiek wcześniej.

W tym poście omówimy te nowe funkcje, a także dowiemy się, w jaki sposób Amazon Search uruchomił PyTorch Lightning ze zoptymalizowanym zapleczem treningu rozproszonego w SageMaker, aby przyspieszyć czas szkolenia modelu.

Zanim zagłębimy się w studium przypadku wyszukiwarki Amazon, dla tych, którzy nie są zaznajomieni, chcielibyśmy przedstawić pewne informacje na ten temat Równoległa biblioteka danych rozproszonych SageMaker. W 2020 r. opracowaliśmy i wprowadziliśmy niestandardową konfigurację klastra do rozproszonego zejścia gradientu na dużą skalę, która zwiększa ogólną wydajność klastra, wprowadzoną w Amazon Science jako Śledź. Korzystając z najlepszych serwerów parametrów i topologii pierścieniowych, SageMaker Distributed Data Parallel (SMDDP) jest zoptymalizowany pod kątem Elastyczna chmura obliczeniowa Amazon (Amazon EC2) topologia sieci, w tym EFA. W przypadku większych rozmiarów klastrów SMDDP jest w stanie zapewnić poprawę przepustowości o 20-40% w porównaniu z Horovod (TensorFlow) i PyTorch Distributed Data Parallel. W przypadku mniejszych rozmiarów klastrów i obsługiwanych modeli zalecamy: Kompilator szkoleń SageMaker, który jest w stanie skrócić całkowity czas pracy nawet o 50%.

W centrum uwagi klienta: PyTorch Lightning na zoptymalizowanym zapleczu SageMaker z wyszukiwarką Amazon

Amazon Search odpowiada za wyszukiwanie i odkrywanie na Amazon.com. Zapewnia obsługę wyszukiwania klientom szukającym produktów do kupienia w Amazon. Na wysokim poziomie Amazon Search tworzy indeks dla wszystkich produktów sprzedawanych na Amazon.com. Gdy klient wprowadza zapytanie, Amazon Search wykorzystuje różne techniki uczenia maszynowego, w tym modele głębokiego uczenia, aby dopasować odpowiednie i interesujące produkty do zapytania klienta. Następnie klasyfikuje produkty przed wyświetleniem wyników klientowi.

Naukowcy z Amazon Search wykorzystali PyTorch Lightning jako jedną z głównych platform do trenowania modeli uczenia głębokiego, które zasilają ranking wyszukiwania ze względu na dodatkowe funkcje użyteczności na szczycie PyTorch. SMDDP nie był obsługiwany dla modeli głębokiego uczenia napisanych w PyTorch Lightning przed wprowadzeniem nowego SageMakera. Uniemożliwiło to naukowcom Amazon Search, którzy wolą używać PyTorch Lightning, skalowanie uczenia modelu za pomocą technik równoległych danych, znacznie spowalniając czas uczenia się i uniemożliwiając im testowanie nowych eksperymentów, które wymagają bardziej skalowalnego uczenia.

Wczesne wyniki testów porównawczych zespołu pokazują 7.3 raza szybszy czas trenowania dla przykładowego modelu podczas trenowania na ośmiu węzłach w porównaniu do początkowego treningu z jednym węzłem. Model bazowy wykorzystany w tych testach porównawczych to wielowarstwowa sieć neuronowa perceptronowa z siedmioma gęstymi, w pełni połączonymi warstwami i ponad 200 parametrami. W poniższej tabeli podsumowano wyniki testu porównawczego na instancjach szkoleniowych ml.p3.16xlarge SageMaker.

Liczba instancji Czas treningu (minuty) Poprawa
1 99 Baseline
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

Następnie zagłębimy się w szczegóły dotyczące nowych premier. Jeśli chcesz, możesz przejść przez nasze odpowiednie przykładowy notatnik .

Uruchom PyTorch Lightning z rozproszoną biblioteką treningową SageMaker

Z przyjemnością informujemy, że SageMaker Data Parallel bezproblemowo integruje się teraz z PyTorch Lightning w ramach szkolenia SageMaker.

PyTorch Lightning to platforma typu open source, która zapewnia uproszczenie pisania niestandardowych modeli w PyTorch. Pod pewnymi względami podobny do tego, co Keras zrobił dla TensorFlow, a nawet prawdopodobnie Hugging Face, PyTorch Lightning zapewnia API wysokiego poziomu z abstrakcjami dla większości funkcji niższego poziomu samego PyTorch. Obejmuje to definiowanie modelu, profilowanie, ocenę, przycinanie, równoległość modelu, konfiguracje hiperparametrów, uczenie transferu i inne.

Wcześniej programiści PyTorch Lightning nie byli pewni, jak bezproblemowo przenieść swój kod szkoleniowy do wysokowydajnych klastrów GPU SageMaker. Ponadto nie było możliwości, aby mogli skorzystać z przyrostu wydajności wprowadzonego przez SageMaker Data Parallel.

Ogólnie rzecz biorąc, w przypadku PyTorch Lightning nie powinno być żadnych zmian w kodzie, aby po prostu uruchomić te interfejsy API w szkoleniu SageMaker. W przykładowych zeszytach używamy Strategia DDP i Wtyczka DPP Metody.

Istnieją trzy kroki, aby użyć PyTorch Lightning z SageMaker Data Parallel jako zoptymalizowanego zaplecza:

  1. Użyj obsługiwanej Kontener głębokiego uczenia AWS (DLC) jako obraz bazowy lub opcjonalnie utwórz własny kontener i samodzielnie zainstaluj backend SageMaker Data Parallel. Upewnij się, że w niezbędnych pakietach znajduje się PyTorch Lightning, na przykład z requirements.txt plik.
  2. Wprowadź kilka drobnych zmian w kodzie w swoim skrypcie szkoleniowym, aby umożliwić zoptymalizowany backend. Obejmują one:
    1. Zaimportuj bibliotekę SM DDP:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. Skonfiguruj środowisko PyTorch Lightning dla SageMaker:
      from pytorch_lightning.plugins.environments.lightning_environment 
        import LightningEnvironment
      
      env = LightningEnvironment()
      env.world_size = lambda: int(os.environ["WORLD_SIZE"])
      env.global_rank = lambda: int(os.environ["RANK"])

    3. Jeśli używasz wersji PyTorch Lightning starszej niż 1.5.10, musisz dodać jeszcze kilka kroków.
      1. Najpierw dodaj zmienną środowiskową:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. Po drugie, upewnij się, że używasz DDPPluginZamiast DDPStrategy. Jeśli używasz nowszej wersji, którą możesz łatwo ustawić, umieszczając requirements.txt source_dir dla twojej pracy, to nie jest to konieczne. Zobacz następujący kod:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. Opcjonalnie zdefiniuj backend grupy procesów jako "smddp" DDPSTrategy obiekt. Jeśli jednak używasz PyTorch Lightning z backendem PyTorch DDP, który również jest obsługiwany, po prostu usuń ten `process_group_backend` parametr. Zobacz następujący kod:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. Upewnij się, że masz zapisaną w estymatorze metodę dystrybucji, taką jak distribution={"smdistributed":{"dataparallel":{"enabled":True} jeśli używasz backendu Herring, lub distribution={"pytorchddp":{"enabled":True}.
  • Aby uzyskać pełną listę odpowiednich parametrów w distribution parametr, zobacz naszą dokumentację tutaj.

Teraz możesz rozpocząć swoją pracę szkoleniową SageMaker! Możesz uruchomić swoje zadanie szkoleniowe za pomocą pakietu Python SDK, Boto3, konsoli SageMaker, Interfejs wiersza poleceń AWS (AWS CLI) i niezliczone inne metody. Z perspektywy AWS jest to pojedyncze polecenie API: create-training-job. Niezależnie od tego, czy uruchomisz to polecenie z lokalnego terminala, AWS Lambda funkcja, plik Studio Amazon SageMaker notatnik, potok KubeFlow lub dowolne inne środowisko obliczeniowe zależy wyłącznie od Ciebie.

Należy pamiętać, że integracja między PyTorch Lightning i SageMaker Data Parallel jest obecnie obsługiwana tylko w nowszych wersjach PyTorch, począwszy od wersji 1.11. Ponadto to wydanie jest dostępne tylko w DLC AWS dla SageMaker począwszy od PyTorch 1.12. Upewnij się, że wskazujesz ten obraz jako swoją bazę. W us-east-1, ten adres jest następujący:

ecr_image = '763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker'

Następnie możesz rozszerzyć kontener Dockera, używając tego jako obrazu bazowego, lub możesz przekazać to jako zmienną do image_uri argument Estymator szkolenia SageMaker.

W rezultacie będziesz mógł uruchomić swój kod PyTorch Lightning na zoptymalizowanych procesorach graficznych SageMaker Training, z najlepszą wydajnością dostępną w AWS.

Uruchom równolegle rozproszone dane PyTorch w programie SageMaker

Największy problem Równolegle rozproszonych danych PyTorch (DDP) rozwiązuje jest zwodniczo prosta: szybkość. Dobre rozproszone ramy szkoleniowe powinny zapewniać stabilność, niezawodność i, co najważniejsze, doskonałą wydajność na dużą skalę. PyTorch DDP zapewnia to poprzez zapewnienie programistom palników interfejsów API do replikowania ich modeli na wielu urządzeniach GPU, zarówno w ustawieniach jedno-, jak i wielowęzłowych. Następnie platforma zarządza fragmentowaniem różnych obiektów z zestawu danych szkoleniowych do każdej kopii modelu, uśredniając gradienty dla każdej kopii modelu w celu zsynchronizowania ich na każdym kroku. Daje to jeden model po całkowitym zakończeniu pełnego treningu. Poniższy diagram ilustruje ten proces.

PyTorch DDP jest powszechny w projektach wykorzystujących duże zestawy danych. Dokładny rozmiar każdego zestawu danych będzie się znacznie różnić, ale ogólną wytyczną jest skalowanie zestawów danych, rozmiary obliczeniowe i rozmiary modeli w podobnych proporcjach. Nazywane również skalowanie praw, optymalna kombinacja tych trzech jest bardzo dyskusyjna i będzie się różnić w zależności od zastosowań. W AWS, w oparciu o pracę z wieloma klientami, wyraźnie widzimy korzyści ze strategii równoległych danych, gdy całkowity rozmiar zestawu danych wynosi co najmniej kilkadziesiąt GB. Gdy zestawy danych stają się jeszcze większe, wdrożenie pewnego rodzaju strategii równoległej danych jest kluczową techniką przyspieszającą ogólny eksperyment i skracającą czas uzyskiwania wartości.

Wcześniej klientom, którzy używali PyTorch DDP do rozproszonych szkoleń lokalnie lub w innych środowiskach obliczeniowych, brakowało struktury umożliwiającej łatwą migrację ich projektów do programu SageMaker Training, aby korzystać z wydajnych procesorów graficznych z bezproblemową płaszczyzną sterowania. W szczególności musieli albo przeprowadzić migrację równoległej struktury danych do SMDDP, albo ręcznie opracować i przetestować możliwości PyTorch DDP na SageMaker Training. Dzisiaj SageMaker Training z przyjemnością zapewnia bezproblemową obsługę klientów wprowadzających swój kod PyTorch DDP.

Aby efektywnie z niego korzystać, nie musisz wprowadzać żadnych zmian w swoich skryptach szkoleniowych.

Możesz zobaczyć ten nowy parametr w poniższym kodzie. w distribution parametr, po prostu dodaj pytorchddp i ustaw włączone jako true.

estimator = PyTorch(
    base_job_name="pytorch-dataparallel-mnist",
    source_dir="code",
    entry_point = "my_model.py",
    ... 
    # Training using SMDataParallel Distributed Training Framework
    distribution = {"pytorchddp": {"enabled": "true"}}
)

Ta nowa konfiguracja zaczyna się od wersji SageMaker Python SDK 2.102.0 i PyTorch DLC 1.11.

Dla programistów PyTorch DDP, którzy znają popularne pochodnia Warto wiedzieć, że nie jest to konieczne w środowisku szkoleniowym SageMaker, które już zapewnia solidną odporność na błędy. Jednak, aby zminimalizować konieczność przepisywania kodu, jako punkt wejścia można wprowadzić inny skrypt programu uruchamiającego, który uruchamia to polecenie.

Teraz programiści PyTorch mogą z łatwością przenosić swoje skrypty do SageMaker, zapewniając płynne działanie ich skryptów i kontenerów w wielu środowiskach obliczeniowych.

To przygotowuje ich do korzystania w przyszłości z Rozproszone biblioteki szkoleniowe SageMaker które zapewniają topologie treningowe zoptymalizowane pod kątem AWS, aby zapewnić do 40% ulepszeń przyspieszenia. Dla programistów PyTorch jest to jedna linijka kodu! W przypadku kodu PyTorch DDP możesz po prostu ustawić backend na smddp w inicjalizacji (patrz Zmodyfikuj skrypt szkoleniowy PyTorch), jak pokazano w następującym kodzie:

import smdistributed.dataparallel.torch.torch_smddp
import torch.distributed as dist
dist.init_process_group(backend='smddp')

Jak widzieliśmy powyżej, możesz również ustawić backend DDPStrategy do smddp podczas korzystania z Błyskawicy. Może to prowadzić do 40% ogólnego przyspieszenia dla dużych klastrów! Aby dowiedzieć się więcej o rozproszonych szkoleniach w SageMaker, zobacz nasze webinarium na żądanie, wspierający laptopy, istotnych dokumentacja, Papiery.

Wnioski

W tym poście wprowadziliśmy dwie nowe funkcje w rodzinie SageMaker Training. Ułatwiają one programistom PyTorch korzystanie z istniejącego kodu w SageMaker, zarówno PyTorch DDP, jak i PyTorch Lightning.

Pokazaliśmy również, w jaki sposób Amazon Search wykorzystuje SageMaker Training do trenowania swoich modeli głębokiego uczenia, a w szczególności PyTorch Lightning ze zoptymalizowaną zbiorową biblioteką SageMaker Data Parallel jako zapleczem. Ogólnie rzecz biorąc, przejście na szkolenia rozproszone pomogło Amazon Search osiągnąć 7.3 razy krótszy czas szkolenia.


O autorach

Uruchom PyTorch Lightning i natywny PyTorch DDP w Szkoleniu Amazon SageMaker, wyposażonym w technologię Amazon Search PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Emily Webber dołączył do AWS zaraz po uruchomieniu SageMaker i od tego czasu próbuje opowiedzieć o tym światu! Poza tworzeniem nowych doświadczeń związanych z ML dla klientów, Emily lubi medytować i studiować buddyzm tybetański.

Uruchom PyTorch Lightning i natywny PyTorch DDP w Szkoleniu Amazon SageMaker, wyposażonym w technologię Amazon Search PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI. Karana Dhimana jest inżynierem rozwoju oprogramowania w AWS z siedzibą w Toronto w Kanadzie. Pasjonuje się przestrzenią uczenia maszynowego i budowaniem rozwiązań do przyspieszania obciążeń obliczeniowych rozproszonych.

Uruchom PyTorch Lightning i natywny PyTorch DDP w Szkoleniu Amazon SageMaker, wyposażonym w technologię Amazon Search PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Vishwa Karia jest inżynierem rozwoju oprogramowania w AWS Deep Engine. Jej zainteresowania leżą na przecięciu uczenia maszynowego i systemów rozproszonych, a także pasjonuje się wzmacnianiem pozycji kobiet w technologii i sztucznej inteligencji.

Uruchom PyTorch Lightning i natywny PyTorch DDP w Szkoleniu Amazon SageMaker, wyposażonym w technologię Amazon Search PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Eimana Elnahrawy'ego jest głównym inżynierem oprogramowania w Amazon Search i kieruje pracami nad akceleracją, skalowaniem i automatyzacją uczenia maszynowego. Jej wiedza obejmuje wiele obszarów, w tym uczenie maszynowe, systemy rozproszone i personalizację.

Znak czasu:

Więcej z Uczenie maszynowe AWS