Amazon MLA-C01: Trenowanie modeli i optymalizacja hiperparametrów — Przewodnik do nauki
Część AWS Machine Learning Engineer Associate MLA-C01 — Przewodnik do nauki. Ćwicz ze zweryfikowanymi odpowiedziami w centrum egzaminów Amazon, albo rozwiąż testy na czas na ExamRoll.io.
Podstawowa koncepcja
Trenowanie modelu w Amazon SageMaker to zorkiestrowany proces, który łączy skonteneryzowany kod treningowy, zasoby obliczeniowe, trwałą pamięć masową i opcjonalne mechanizmy komunikacji rozproszonej. Zadanie treningowe SageMaker jest definiowane przez obraz treningowy lub estymator frameworka, specyfikację danych wejściowych wskazującą na lokalizacje w S3 oraz konfigurację zasobów, która obejmuje InstanceType, InstanceCount i VolumeSizeInGB. W przypadku zarządzanego trenowania na instancjach spot ustawiasz EnableManagedSpotTraining na true i podajesz MaxWaitTimeInSeconds oraz MaxRuntimeInSeconds, aby SageMaker mógł licytować zapasową moc obliczeniową i wznawiać lub zatrzymywać zadania w dozwolonym oknie czasowym. Tworzenie punktów kontrolnych (checkpointing) jest konfigurowane za pomocą CheckpointConfig z S3Uri i LocalPath; podczas korzystania z zarządzanych instancji spot musisz często tworzyć punkty kontrolne i ustawić MaxWaitTimeInSeconds na wartość znacznie większą niż MaxRuntimeInSeconds, aby przerwane zadania mogły być ponowione.
Trenowanie rozproszone jest implementowane jako strategie równoległości danych (data-parallel) lub równoległości modelu (model-parallel). SageMaker wspiera natywne, rozproszone trenowanie z równoległością danych za pomocą PyTorch DistributedDataParallel lub Horovod, a także oferuje bibliotekę smdistributed z smdistributed.dataparallel dla zoptymalizowanej komunikacji NCCL. Równoległość modelu jest dostępna poprzez smdistributed.modelparallel lub partycjonowanie specyficzne dla danego frameworka. Wysokoprzepustowa komunikacja międzywęzłowa wymaga rodzin instancji ze wsparciem dla NVLink i EFA (Elastic Fabric Adapter) — wybierz typy instancji ml.p4d, ml.p3dn lub inne z obsługą EFA i ustaw use_mpi lub use_nccL zgodnie z wymaganiami skryptu treningowego, aby uzyskać wydajną operację all-reduce na gradientach. W przypadku zadań na dużą skalę, dostarcz InstanceTypes z pamięcią GPU i charakterystyką sieci dostosowaną do rozmiarów fragmentów (shardów) modelu, aby zrównoważyć stosunek czasu obliczeń do czasu komunikacji.
Optymalizacja hiperparametrów jest obsługiwana przez SageMaker Automatic Model Tuning (AMT), który uruchamia wiele zadań treningowych w celu przeszukania przestrzeni hiperparametrów i optymalizacji metryki celu. Konfiguracja HyperParameterTuningJobConfig zawiera ParameterRanges, ResourceLimits z MaxNumberOfTrainingJobs i MaxParallelTrainingJobs oraz Strategy (domyślnie bayesowska; alternatywy to losowa (Random) lub siatkowa (Grid) dla wyczerpujących lub mniej skorelowanych przeszukiwań). Zdefiniuj ObjectiveMetricName i MetricDefinitions, aby AMT mógł parsować logi treningowe; jeśli Twoim celem jest metryka F1 score, ustaw ObjectiveType na Maximize i upewnij się, że wyrażenie regularne w MetricDefinitions pasuje do emitowanej metryki. Aby przyspieszyć strojenie przy jednoczesnym oszczędzaniu budżetu, użyj WarmStartConfig do ponownego wykorzystania wyników z poprzednich zadań strojenia i włącz polityki wczesnego zatrzymywania (EarlyStoppingType: Auto), tam gdzie są wspierane, aby kończyć nieobiecujące zadania treningowe.
Kluczowe usługi i konfiguracja
Podczas budowania kompleksowego przepływu pracy (workflow) trenowania i strojenia, często będziesz używać razem kilku usług AWS i możliwości SageMaker:
- Amazon SageMaker Training Jobs (Estimator API / CreateTrainingJob)
- SageMaker Automatic Model Tuning (CreateHyperParameterTuningJob)
- SageMaker Model Registry (ModelPackage i CreateModelPackageGroup)
- AWS Glue / AWS Lake Formation do bezpiecznego, scentralizowanego katalogowania danych
- Amazon S3 do trwałego przechowywania punktów kontrolnych i artefaktów
W konfiguracji zadania treningowego określisz ResourceConfig, w tym InstanceType i InstanceCount, a hiperparametry przekażesz za pomocą HyperParameters. W przypadku zarządzanego trenowania na instancjach spot dołącz EnableManagedSpotTraining i ustaw CheckpointConfig.S3Uri, aby przerwane zadania zapisywały swój stan. Uruchamiając zadania strojenia za pomocą CreateHyperParameterTuningJob, wypełnij HyperParameterTuningJobConfig.ParameterRanges wpisami IntegerParameterRange, ContinuousParameterRange i CategoricalParameterRange, a także ustaw ResourceLimits z MaxNumberOfTrainingJobs i MaxParallelTrainingJobs. Użyj WarmStartConfig z ParentHyperParameterTuningJobs i WarmStartType ustawionym na IDENTICAL_DATA_AND_ALGORITHM lub TRANSFER_LEARNING, aby inicjować przeszukiwanie na podstawie wcześniejszych wyników.
Dla bezpieczeństwa i kontroli operacyjnej, centralizuj artefakty modeli, rejestrując obiekty ModelPackage w ModelPackageGroup w SageMaker Model Registry; ustaw ModelApprovalStatus na PendingManualApproval, aby wymagać ręcznej zmiany na Approved przed wdrożeniem. Połącz zdarzenia z Model Registry z AWS CodePipeline lub AWS Step Functions, aby zbudować akcję ręcznego zatwierdzania, która aktualizuje ModelPackage.ModelApprovalStatus za pomocą API UpdateModelPackage. Do monitorowania działających endpointów i wykrywania dryftu, włącz DataCaptureConfig na endpointach i użyj SageMaker Model Monitor do stworzenia bazowych statystyk przedwdrożeniowych za pomocą CreateMonitoringSchedule, a następnie użyj przechwytywania danych z BatchTransform lub RealTimeInference z S3 DestinationS3Uri do ciągłej ewaluacji.
Wzorce projektowe i kompromisy
Wybór rozproszonego treningu z równoległością danych (data-parallel) z wieloma mniejszymi fragmentami (shards) zapewnia proste skalowanie i jest zazwyczaj najprostszym wzorcem, gdy model mieści się w pamięci pojedynczego GPU. Podejścia oparte na równoległości danych, wykorzystujące PyTorch DDP lub Horovod, skalują się dobrze, jeśli infrastruktura sieciowa jest wysokowydajna, a instancje obsługują EFA i NCCL. Gdy wagi modelu przekraczają pamięć pojedynczego GPU, wymagana jest równoległość modelu (model-parallelism) lub równoległość potokowa (pipeline parallelism); smdistributed.modelparallel pomaga w partycjonowaniu tensorów pomiędzy GPU, ale zwiększa to złożoność debugowania, tworzenia punktów kontrolnych (checkpointing) i równoważenia obliczeń w stosunku do komunikacji. Praktycznym wzorcem projektowym jest podejście hybrydowe: użycie shardingu modelu dla bardzo dużych warstw i równoległości danych pomiędzy grupami roboczymi (worker groups).
Kompromisy w dostrajaniu hiperparametrów dotyczą głównie czasu w stosunku do kosztów. Szerokie przeszukiwanie losowe (Random search) lub siatkowe (Grid search) jest proste, ale kosztowne; optymalizacja bayesowska (domyślna strategia AMT) wykorzystuje wcześniejsze wyniki do zawężenia obszaru poszukiwań i może zmniejszyć liczbę zadań treningowych potrzebnych do osiągnięcia dobrej konfiguracji. Użyj WarmStartConfig, aby przenieść wiedzę z wcześniejszego dostrajania do nowych eksperymentów, gdy zmiany w zbiorze danych lub modelu są przyrostowe. Równoległe uruchamianie wielu zadań treningowych przyspiesza optymalizację w czasie rzeczywistym (wall-clock), ale zwiększa chwilowy koszt i może prowadzić do osiągnięcia limitów usług (service quotas); skonfiguruj MaxParallelTrainingJobs konserwatywnie i używaj instancji Spot do zadań dostrajania, aby zmniejszyć wydatki, ale zawsze konfiguruj CheckpointConfig i MaxWaitTimeInSeconds, aby zapewnić odporność na przerwania.
Częstotliwość tworzenia punktów kontrolnych (checkpointów) i wybór miejsca ich przechowywania wpływają zarówno na odporność, jak i na koszty. Częste punkty kontrolne zmniejszają utratę postępu obliczeń w przypadku przerwań, ale generują dodatkowe obciążenie przepustowości i opóźnień w S3; stosuj przyrostowe tworzenie punktów kontrolnych wewnątrz kontenera (LocalPath) i synchronizuj je asynchronicznie z S3 w celu trwałego odzyskiwania. Podczas trenowania na zarządzanych instancjach spot, ustaw solidny interwał tworzenia punktów kontrolnych i używaj mniejszej liczby instancji dla zadań treningowych, które mogą zakończyć się w typowych oknach czasowych przed przerwaniem, lub zaprojektuj pętlę treningową tak, aby była odporna na wywłaszczenie (preemption), używając dostarczonych przez SageMaker haków SIGTERM do tworzenia spójnych punktów kontrolnych.
Częste pułapki i kryteria decyzyjne
Częstą pułapką operacyjną jest poleganie na niestandardowych obrazach kontenerów bez testów wydajności; obrazy dostarczane przez framework (predefiniowane obrazy SageMaker dla PyTorch, TensorFlow, XGBoost) uruchamiają się szybciej, zawierają integrację do automatycznej emisji metryk i minimalizują opóźnienie zimnego startu. Kolejnym częstym błędem w HPO jest błędnie skonfigurowane MetricDefinitions lub ObjectiveMetricName, co uniemożliwia AMT znalezienie i optymalizację właściwego sygnału; zawsze weryfikuj wyrażenie regularne (regex) używane do ekstrakcji metryk z logów przed skalowaniem zadania strojenia. Pominięcie włączenia CheckpointConfig podczas korzystania z zarządzanego treningu na instancjach spot spowoduje utratę postępów zadania w przypadku przerwania i może prowadzić do dłuższego skumulowanego czasu wykonania oraz wyższych kosztów.
Decyzje dotyczące bezpieczeństwa i ładu korporacyjnego muszą koncentrować się na zasadzie najmniejszych uprawnień i kontroli cyklu życia modelu. Używaj SageMaker Model Registry wraz z przepływem pracy zatwierdzania ModelPackage i politykami IAM, aby zapewnić, że tylko autoryzowane wersje ModelPackage trafią do środowiska produkcyjnego. Chroń dane treningowe w S3 za pomocą szyfrowania (SSE-S3 lub SSE-KMS) i kontroluj dostęp za pomocą ról IAM przyjmowanych przez zadanie treningowe (parametr RoleArn w CreateTrainingJob) oraz Lake Formation, gdy wymagane są centralne polityki dostępu do danych. Do wykrywania dryftu i analizy przyczyn źródłowych połącz SageMaker Model Monitor z artefaktami z Model Registry, aby śledzić, które wersje artefaktów ulegają degradacji i uruchamiać przepływy pracy wymagające ludzkiej akceptacji (human-in-the-loop) przed ponownym wdrożeniem.
Problem praktyczny: Scenariusz użycia
Firma: FinGuard Inc. — Wyzwanie: zbudować model wykrywania oszustw trenowany na logach transakcji przechowywanych w S3 i profilach klientów z lokalnej bazy danych MySQL, zminimalizować koszty, tolerować przerwania instancji spot, uruchamiać zautomatyzowaną optymalizację hiperparametrów, wymuszać ręczną akceptację przed wdrożeniem na produkcję oraz wykrywać stronniczość (bias) lub dryft po wdrożeniu.
Agregacja i przygotowanie danych: Przetwarzaj logi transakcji z S3 bezpośrednio i użyj AWS Glue z połączeniem JDBC do lokalnej bazy danych MySQL, aby skanować (crawl) i katalogować tabele profili klientów. Zarejestruj wyselekcjonowane cechy w SageMaker Feature Store
FeatureGroup, aby zapewnić dostęp z niskim opóźnieniem i wymusić spójność schematu; zaszyfrujOfflineStoreS3 za pomocą SSE-KMS i kontroluj dostęp za pomocą polityk IAM i Lake Formation.Trening i konfiguracja rozproszona: Użyj estymatora SageMaker z wbudowanym kontenerem XGBoost dla początkowego modelu; skonfiguruj
ResourceConfigzInstanceTypeml.m5.4xlarge jako bazę i skaluj do ml.p3.2xlarge dla eksperymentów z akceleracją GPU. W przypadku dużych eksperymentów użyjsmdistributed.dataparallelna instancjach z obsługą EFA (ml.p3dn.24xlarge lub ml.p4d.24xlarge) i ustawCheckpointConfig.S3Urina s3://finguard-checkpoints/{job-name} orazLocalPathna /opt/ml/checkpoints. Włącz zarządzany trening na instancjach spot, ustawiającEnableManagedSpotTrainingna true iMaxWaitTimeInSecondsna co najmniej 2×MaxRuntimeInSeconds, aby umożliwić ponowne próby.Optymalizacja hiperparametrów: Uruchom SageMaker Automatic Model Tuning z
HyperParameterTuningJobConfig.ParameterRangesdlaeta,max_depthiscale_pos_weight(aby zaradzić niezbalansowaniu klas bez intensywnego przetwarzania wstępnego). UstawObjectiveMetricNamenavalidation:F1i podaj wyrażenie regularne (regex) wMetricDefinitions, które wyodrębnia wartość F1. UżyjStrategyBayesian,ResourceLimitszMaxNumberOfTrainingJobs50 iMaxParallelTrainingJobs5, orazWarmStartConfig, jeśli iterujesz na podstawie wyników poprzedniego strojenia. Uruchamiaj zadania strojenia na zarządzanych instancjach spot, aby zmniejszyć koszty, upewniając się, żeCheckpointConfigjest aktywny dla każdego zadania treningowego.Zarządzanie modelem i wdrożenie: Zarejestruj najlepsze artefakty modelu w SageMaker Model Registry jako
ModelPackagew ramachModelPackageGroupi ustawModelApprovalStatusnaPendingManualApproval. Zaimplementuj potok AWS Step Functions, który zawiera krok ręcznej akceptacji (zadanie manualne) i po zatwierdzeniu wywołujeUpdateModelPackage, aby ustawićModelApprovalStatusnaApproved, a następnie uruchamiaCreateModeliCreateEndpointConfig/CreateEndpointw celu wdrożenia. UżyjDataCaptureConfigdla endpointu, aby przechwytywać żądania i odpowiedzi inferencyjne do s3://finguard-capture dla Model Monitor.
Uzasadnienie użycia AWS: AWS Glue centralizuje i kataloguje hybrydowe źródła danych oraz integruje się z SageMaker; SageMaker Feature Store standaryzuje cechy i zabezpiecza je na potrzeby treningu i inferencji; zarządzany trening na instancjach spot w połączeniu z CheckpointConfig redukuje koszty obliczeniowe, zachowując postępy między przerwaniami; SageMaker Automatic Model Tuning z MetricDefinitions i WarmStartConfig przyspiesza znajdowanie solidnych hiperparametrów, kontrolując jednocześnie budżet; Model Registry z PendingManualApproval w połączeniu z Step Functions lub CodePipeline wymusza ład korporacyjny i promocję modeli do produkcji zgodnie z zasadą najmniejszych uprawnień; SageMaker Model Monitor i DataCaptureConfig zapewniają zautomatyzowane wykrywanie dryftu i stronniczości (bias) w celu bieżącej kontroli kondycji modelu.
← Inżynieria danych i inżynieria cech · Wszystkie domeny · Ewaluacja i wybór modeli →
Przećwicz te pytania → · Testy na czas na ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Zdaj egzamin →