Włącz CI/CD wieloregionalnych punktów końcowych Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Włącz CI/CD wieloregionalnych punktów końcowych Amazon SageMaker

Amazon Sage Maker i Punkty końcowe wnioskowania SageMaker zapewnić możliwość szkolenia i wdrażania obciążeń związanych z AI i uczeniem maszynowym (ML). Dzięki punktom końcowym wnioskowania możesz wdrażać modele do wnioskowania w czasie rzeczywistym lub wsadowego. Punkty końcowe obsługują różne typy modeli ML hostowanych przy użyciu Kontenery AWS Deep Learning lub własne kontenery z niestandardowymi algorytmami AI/ML. Kiedy uruchamiasz punkty końcowe wnioskowania SageMaker z wieloma instancjami, SageMaker rozdziela instancje w wielu Strefach Dostępności (w jednym Regionie) w celu zapewnienia wysokiej dostępności.

Jednak w niektórych przypadkach, aby zapewnić możliwie najmniejsze opóźnienia dla klientów w różnych obszarach geograficznych, może być konieczne wdrożenie punktów końcowych wnioskowania w wielu regionach. Wieloregionalne wdrażanie punktów końcowych SageMaker oraz innych powiązanych aplikacji i komponentów infrastruktury może również stanowić część strategii odzyskiwania po awarii dla obciążeń o znaczeniu krytycznym, mającej na celu ograniczenie ryzyka awarii regionalnej.

Projekty SageMakera implementuje zestaw gotowych szablonów MLOps, które mogą pomóc w zarządzaniu wdrożeniami punktów końcowych. W tym poście pokazujemy, jak można rozszerzyć potok projektów MLOps SageMaker, aby umożliwić wieloregionalne wdrażanie punktów końcowych wnioskowania AI/ML.

Omówienie rozwiązania

SageMaker Projects wdraża zarówno szkolenia, jak i potoki MLOPs; można ich użyć do trenowania modelu i wdrażania go przy użyciu punktu końcowego wnioskowania. Aby zmniejszyć złożoność i koszt rozwiązania obejmującego wiele regionów, zakładamy, że trenujesz model w jednym regionie i wdrażasz punkty końcowe wnioskowania w co najmniej dwóch regionach.

Ten post przedstawia rozwiązanie, które nieznacznie modyfikuje szablon projektu SageMaker w celu obsługi wdrażania w wielu regionach. Aby lepiej zilustrować zmiany, poniższy rysunek przedstawia zarówno standardowy potok MLOps utworzony automatycznie przez SageMaker (kroki 1-5), jak i zmiany wymagane do rozszerzenia go na region pomocniczy (kroki 6-11).

Szablon SageMaker Projects automatycznie wdraża standardowe rozwiązanie MLOps, które obejmuje następujące komponenty:

  1. Most zdarzeń Amazona monitory Zatwierdzenie kodu AWS repozytoria zmian i rozpoczyna się seria AWS Code Pipeline jeśli wykryto zatwierdzenie kodu.
  2. Jeśli nastąpi zmiana kodu, Tworzenie kodu AWS organizuje szkolenie modelu przy użyciu zadań szkoleniowych programu SageMaker.
  3. Po zakończeniu pracy szkoleniowej, Rejestr modeli SageMaker rejestruje i kataloguje przeszkolony model.
  4. Aby przygotować się do etapu wdrożenia, CodeBuild rozszerza domyślny Tworzenie chmury AWS szablonowe pliki konfiguracyjne z parametrami zatwierdzonego modelu z rejestru modeli.
  5. Na koniec CodePipeline uruchamia szablony CloudFormation, aby wdrożyć zatwierdzony model w punktach końcowych wnioskowania tymczasowego i produkcyjnego.

Poniższe dodatkowe kroki modyfikują szablon projektów MLOps, aby umożliwić wdrożenie modelu AI/ML w regionie pomocniczym:

  1. Replika Usługa Amazon Simple Storage Zasobnik (Amazon S3) w regionie podstawowym przechowujący artefakty modelu jest wymagany w regionie dodatkowym.
  2. Szablon CodePipeline został rozszerzony o więcej etapów, aby uruchomić wdrożenie zatwierdzonego modelu w wielu regionach.
  3. W ramach procesu wdrażania w wielu regionach szablon CodePipeline używa nowego szablonu CloudFormation do wdrażania punktu końcowego wnioskowania w regionie pomocniczym. Szablon CloudFormation wdraża model z artefaktów modelu z zasobnika repliki S3 utworzonego w kroku 6.

9–11 opcjonalnie utwórz zasoby w Amazon trasy 53, Brama Amazon API, AWS Lambda do kierowania ruchu aplikacji do punktów końcowych wnioskowania w regionie pomocniczym.

Wymagania wstępne

Utwórz projekt SageMaker w swoim regionie podstawowym (w tym poście us-east-2). Wykonaj kroki w Tworzenie, automatyzowanie, zarządzanie i skalowanie przepływów pracy ML przy użyciu Amazon SageMaker Pipelines aż do sekcji Modyfikowanie przykładowego kodu dla niestandardowego przypadku użycia.

Zaktualizuj swój potok w CodePipeline

W tej sekcji omówimy, jak dodać ręczne zatwierdzanie CodePipeline i etapy wdrażania modelu między regionami do istniejącego potoku utworzonego dla Ciebie przez SageMaker.

  1. W konsoli CodePipeline w regionie podstawowym znajdź i wybierz potok zawierający nazwę projektu i kończący się wdrażaniem. Ten potok został już stworzony dla Ciebie przez SageMaker Projects. Zmodyfikuj ten potok, aby dodać etapy wdrażania punktu końcowego AI/ML dla regionu pomocniczego.
  2. Dodaj Edytuj.
  3. Dodaj Dodaj etap.
  4. W razie zamówieenia projektu Pseudonim artystyczny, wchodzić SecondaryRegionDeployment.
  5. Dodaj Dodaj etap.
  6. W SecondaryRegionDeployment scena, wybierz Dodaj grupę akcjiW tej grupie akcji dodajesz krok ręcznego zatwierdzania wdrażania modelu w regionie pomocniczym.
  7. W razie zamówieenia projektu Nazwa akcji, wchodzić ManualApprovaltoDeploytoSecondaryRegion.
  8. W razie zamówieenia projektu Dostawca akcjiwybierz Zatwierdzenie ręczne.
  9. Pozostaw wszystkie inne ustawienia domyślne i wybierz Gotowe .
  10. W SecondaryRegionDeployment scena, wybierz Dodaj grupę akcji (po ManualApprovaltoDeploytoSecondaryRegion).W tej grupie akcji dodajesz krok wdrażania między regionami AWS CloudFormation. Określasz nazwy artefaktów kompilacji, które utworzysz później w tym poście.
  11. W razie zamówieenia projektu Nazwa akcji, wchodzić DeploytoSecondaryRegion.
  12. W razie zamówieenia projektu Dostawca akcjiwybierz Tworzenie chmury AWS.
  13. W razie zamówieenia projektu Region, wprowadź nazwę regionu dodatkowego (na przykład us-west-2).
  14. W razie zamówieenia projektu Artefakty wejściowe, wchodzić BuildArtifact.
  15. W razie zamówieenia projektu Tryb akcji, wchodzić CreateorUpdateStack.
  16. W razie zamówieenia projektu Nazwa stosu, wchodzić DeploytoSecondaryRegion.
  17. Pod szablon, Dla Nazwa artefaktu, Wybierz BuildArtifact.
  18. Pod szablon, Dla Nazwa pliku, wchodzić template-export-secondary-region.yml.
  19. wieża Użyj pliku konfiguracyjnego jeden.
  20. Pod szablon, Dla Nazwa artefaktu, Wybierz BuildArtifact.
  21. Pod szablon, Dla Nazwa pliku, wchodzić secondary-region-config-export.json.
  22. Pod Nasze możliwościwybierz CAPABILITY_NAMED_IAM.
  23. W razie zamówieenia projektu Rolawybierz AmazonSageMakerServiceCatalogProductsUseRole stworzony przez SageMaker Projects.
  24. Dodaj Gotowe .
  25. Dodaj Zapisz.
  26. Jeśli Zapisz zmiany potoku pojawi się okno dialogowe, wybierz Zapisz ponownie.

Zmodyfikuj rolę uprawnień

Musimy dodać dodatkowe uprawnienia do AWS Zarządzanie tożsamością i dostępem (IAM) rola AmazonSageMakerServiceCatalogProductsUseRole stworzone przez Katalog usług AWS aby włączyć dostęp do zasobnika CodePipeline i S3 na potrzeby wdrażania w wielu regionach.

  1. W konsoli IAM wybierz role w okienku nawigacji.
  2. Wyszukaj i wybierz AmazonSageMakerServiceCatalogProductsUseRole.
  3. Wybierz politykę uprawnień w Nazwa polityki: AmazonSageMakerServiceCatalogProductsUseRole-XXXXXXXXX.
  4. Dodaj Edytuj zasady , a następnie JSON.
  5. Zmodyfikuj uprawnienia AWS CloudFormation, aby umożliwić CodePipeline synchronizację zasobnika S3 w regionie pomocniczym. Możesz zastąpić istniejącą zasadę uprawnień zaktualizowaną spośród następujących GitHub repo (patrz wiersze: 16-18, 198, 213)
  6. Dodaj Zasady weryfikacji.
  7. Dodaj Zapisz zmiany.

Dodaj szablon wdrożenia dla regionu pomocniczego

Aby uruchomić punkt końcowy wnioskowania w regionie drugorzędnym, SecondaryRegionDeployment stage potrzebuje szablonu CloudFormation (dla endpoint-config-template-secondary-region.yml) oraz plik konfiguracyjny (secondary-region-config.json).

Szablon CloudFormation jest konfigurowany całkowicie za pomocą parametrów; możesz go dalej modyfikować, aby dopasować go do swoich potrzeb. Podobnie możesz użyć pliku konfiguracyjnego do zdefiniowania parametrów konfiguracji uruchamiania punktu końcowego, takich jak typ instancji i liczba instancji:

{
  "Parameters": {
    "StageName": "secondary-prod",
    "EndpointInstanceCount": "1",
    "EndpointInstanceType": "ml.m5.large",
    "SamplingPercentage": "100",
    "EnableDataCapture": "true"
  }

Aby dodać te pliki do swojego projektu, pobierz je z podanych linków i prześlij je do Studio Amazon SageMaker w regionie podstawowym. W Studio wybierz Przeglądarka plików a następnie folder zawierający nazwę projektu i kończący się na modeldeploy.

Prześlij te pliki do folderu głównego repozytorium wdrożenia, wybierając ikonę przesyłania. Upewnij się, że pliki znajdują się w folderze głównym, jak pokazano na poniższym zrzucie ekranu.

Zrzut ekranu plików konfiguracyjnych

Zmodyfikuj plik kompilacji Python

Następnie musimy dostosować wdrożenie build.py plik, aby umożliwić wdrożenie punktu końcowego programu SageMaker w regionie pomocniczym, aby wykonać następujące czynności:

  • Pobierz lokalizację artefaktów modelu i Rejestr elastycznego pojemnika Amazon (Amazon ECR) URI dla obrazu modelu w regionie drugorzędnym
  • Przygotuj plik parametrów, który jest używany do przekazywania argumentów specyficznych dla modelu do szablonu CloudFormation, który wdraża model w regionie pomocniczym

Możesz pobrać zaktualizowaną wersję build.py plik i zastąp istniejący w swoim folderze. W Studio wybierz Przeglądarka plików a następnie folder zawierający nazwę projektu i kończący się na modeldeploy. Znajdź plik build.py i zastąp go pobranym.

Szablon CloudFormation używa artefaktów modelu przechowywanych w zasobniku S3 i ścieżki obrazu Amazon ECR do wdrożenia punktu końcowego wnioskowania w regionie pomocniczym. Różni się to od wdrożenia z rejestru modeli w regionie podstawowym, ponieważ nie trzeba mieć rejestru modeli w regionie pomocniczym.

Zrzut ekranu podstawowych i wtórnych parametrów środowiska

Zmodyfikuj plik buildspec

buildspec.yml zawiera instrukcje uruchamiane przez CodeBuild. Modyfikujemy ten plik, aby wykonać następujące czynności:

  • Zainstaluj bibliotekę SageMaker Python potrzebną do obsługi uruchamiania kodu
  • Przejść przez –region drugorzędny i parametry specyficzne dla modelu do build.py
  • Dodaj synchronizację zawartości zasobnika S3 z regionu podstawowego do dodatkowego
  • Wyeksportuj pomocniczy szablon regionu CloudFormation i skojarzony plik parametrów jako artefakty kroku CodeBuild

Otwórz buildspec.yml plik z folderu wdrażania modelu i wprowadź podświetlone modyfikacje, jak pokazano na poniższym zrzucie ekranu.

Zrzut ekranu kompilacji pliku yaml

Alternatywnie możesz pobrać następujące buildspec.yml plik, aby zastąpić plik domyślny.

Dodaj zmienne środowiskowe CodeBuild

W tym kroku dodajesz parametry konfiguracyjne wymagane dla CodeBuild do tworzenia plików konfiguracyjnych wdrażania modelu w regionie pomocniczym.

  1. W konsoli CodeBuild w regionie podstawowym znajdź projekt zawierający nazwę projektu i kończący się na wdrażanie. Ten projekt został już stworzony dla Ciebie przez SageMaker Projects.

Zrzut ekranu potoku kodu

  1. Wybierz projekt i na Edytuj menu, wybierz Środowisko.

Zrzut ekranu konfiguracji

  1. W Zaawansowana konfiguracja sekcja, odznacz Zezwól AWS CodeBuild na modyfikowanie tej roli usługi, aby można było jej używać z tym projektem kompilacji.
  2. Dodaj następujące zmienne środowiskowe, definiując nazwy dodatkowych szablonów CloudFormation, regionu pomocniczego i parametrów specyficznych dla modelu:
    1. EXPORT_TEMPLATE_NAME_SECONDARY_REGION - Dla wartość, wchodzić template-export-secondary-region.yml i dla Rodzaj Nieruchomościwybierz Zwykły tekst.
    2. EXPORT_TEMPLATE_SECONDARY_REGION_CONFIG - Dla wartość, wchodzić secondary-region-config-export.json i dla Rodzaj Nieruchomościwybierz Zwykły tekst.
    3. AWS_SECONDARY_REGION - Dla wartość, wpisz us-west-2 i for Rodzaj Nieruchomościwybierz Zwykły tekst.
    4. STRUKTURA - Dla wartość, wchodzić xgboost (zastąp swoim frameworkiem) i dla Rodzaj Nieruchomościwybierz Zwykły tekst.
    5. MODEL_WERSJA - Dla wartość, wpisz 1.0-1 (zastąp wersją swojego modelu) i dla Rodzaj Nieruchomościwybierz Zwykły tekst.
  3. Skopiuj wartość ARTIFACT_BUCKET do Notatnika lub innego edytora tekstu. Potrzebujesz tej wartości w następnym kroku.
  4. Dodaj Zaktualizuj środowisko.

Potrzebujesz wartości, które określiłeś do trenowania modelu dla FRAMEWORK i MODEL_VERSION. Na przykład, aby znaleźć te wartości dla modelu Abalone używanego we wdrożeniu wzorcowym MLOps, otwórz Studio i na Przeglądarka plików menu, otwórz folder z nazwą projektu i kończąc na modelbuild. Nawigować do pipelines/abalone i otwórz pipeline.py plik. Szukaj sagemaker.image_uris.retrieve i skopiuj odpowiednie wartości.

Zrzut ekranu z frameworkiem ML

Utwórz zasobnik repliki S3 w regionie dodatkowym

Musimy utworzyć zasobnik S3 do przechowywania artefaktów modelu w regionie pomocniczym. SageMaker używa tego zasobnika, aby pobrać najnowszą wersję modelu, aby uruchomić punkt końcowy wnioskowania. Wystarczy to zrobić tylko raz. CodeBuild automatycznie synchronizuje zawartość zasobnika w regionie podstawowym z zasobnikiem replikacji przy każdym uruchomieniu potoku.

  1. Na konsoli Amazon S3 wybierz Utwórz wiadro.
  2. W razie zamówieenia projektu Nazwa wiadra, wprowadź wartość ARTEFACT_BUCKET skopiowane w poprzednim kroku i dołączyć -replica do końca (na przykład sagemaker-project-X-XXXXXXXX-replica.
  3. W razie zamówieenia projektu Region AWS, wprowadź swój region dodatkowy (us-west-2).
  4. Wszystkie inne wartości pozostaw domyślne i wybierz Utwórz wiadro.

Zatwierdź model do wdrożenia

Etap wdrażania potoku wymaga do rozpoczęcia zatwierdzonego modelu. Jest to wymagane do wdrożenia w regionie podstawowym.

  1. W Studio (region podstawowy) wybierz Zasoby SageMaker w okienku nawigacji.
  2. W razie zamówieenia projektu Wybierz zasób do wyświetleniawybierz Rejestr modeli.
  3. Wybierz nazwę grupy modeli zaczynając od nazwy projektu.
  4. W prawym okienku sprawdź wersję modelu, etap i status.
  5. Jeśli status pokazuje Oczekuje, wybierz wersję modelu, a następnie wybierz Stan aktualizacji.
  6. Zmień stan na Zatwierdzony, A następnie wybierz Stan aktualizacji.

Wdróż i zweryfikuj zmiany

Wszystkie zmiany wymagane do wdrożenia w wielu regionach punktu końcowego wnioskowania SageMaker są teraz zakończone i można rozpocząć proces wdrażania.

  1. W Studio zapisz wszystkie edytowane pliki, wybierz giti wybierz repozytorium zawierające nazwę projektu i kończące się na wdrażanie.
  2. Wybierz znak plus, aby wprowadzić zmiany.
  3. Pod Zmieniono, Dodaj build.py i buildspec.yml.
  4. Pod Nieśledzone, Dodaj endpoint-config-template-secondary-region.yml i secondary-region-config.json.
  5. Wpisz komentarz w Podsumowanie pole i wybierz Popełnić.
  6. Prześlij zmiany do repozytorium, wybierając Naciskać.

Wypchnięcie tych zmian do repozytorium CodeCommit wyzwala nowe uruchomienie potoku, ponieważ zdarzenie EventBridge monitoruje pod kątem wypchniętych zatwierdzeń. Po kilku chwilach możesz monitorować przebieg, przechodząc do potoku w konsoli CodePipeline.

Upewnij się, że zapewniasz ręczne zatwierdzenie wdrożenia w środowisku produkcyjnym i regionie pomocniczym.

Możesz sprawdzić, czy drugorzędny punkt końcowy regionu został utworzony w konsoli SageMaker, wybierając Panel Użytkownika w okienku nawigacji i potwierdzanie statusu punktu końcowego w Ostatnia aktywność.

Zrzut ekranu pulpitu producenta szałwii

Dodaj bramę interfejsu API i trasę 53 (opcjonalnie)

Możesz opcjonalnie postępować zgodnie z instrukcjami w Wywołaj punkt końcowy modelu Amazon SageMaker za pomocą Amazon API Gateway i AWS Lambda aby udostępnić punkt końcowy wnioskowania SageMaker w regionie drugorzędnym jako API za pomocą API Gateway i Lambda.

Sprzątać

Aby usunąć projekt SageMaker, zobacz Usuń projekt MLOps za pomocą Amazon SageMaker Studio. Aby upewnić się, że dodatkowy punkt końcowy wnioskowania zostanie zniszczony, przejdź do konsoli AWS CloudFormation i usuń powiązane stosy w regionach podstawowym i pomocniczym; to niszczy punkty końcowe wnioskowania SageMaker.

Wnioski

W tym poście pokazaliśmy, jak specjalista MLOps może zmodyfikować wstępnie skonfigurowany szablon MLOps dla własnego przypadku użycia w wielu regionach, takiego jak wdrażanie obciążeń w wielu lokalizacjach geograficznych lub w ramach wdrażania wieloregionalnej strategii odzyskiwania po awarii. Dzięki takiemu podejściu do wdrażania nie trzeba konfigurować usług w regionie pomocniczym i można ponownie użyć konfiguracji CodePipeline i CloudBuild w regionie podstawowym w celu wdrożenia międzyregionalnego. Ponadto możesz zaoszczędzić na kosztach, kontynuując szkolenie modeli w regionie podstawowym, jednocześnie wykorzystując wnioskowanie SageMaker w wielu regionach, aby globalnie skalować wdrożenie AI/ML.

Przekaż nam swoją opinię w sekcji komentarzy.


O autorach

Włącz CI/CD wieloregionalnych punktów końcowych Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI. dr Mehrana Najafiego, jest starszym architektem rozwiązań dla AWS skoncentrowanym na rozwiązaniach AI/ML i SaaS w Scale.

Włącz CI/CD wieloregionalnych punktów końcowych Amazon SageMaker PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Stevena Alechina jest starszym architektem rozwiązań dla AWS skoncentrowanym na MLOps at Scale.

Znak czasu:

Więcej z Uczenie maszynowe AWS