Środowiska obliczeniowe w AWS Batch: jak skonfigurować

Jeśli chcesz uruchamiać modele szkoleniowe i przeprowadzać złożone analizy w ramach zadań wsadowych na dużą skalę, dobrym rozwiązaniem może być usługa AWS Batch. AWS oferuje specjalną usługę, która pozwala efektywnie wykonywać ogromną liczbę operacji obliczeniowych bez dodatkowych nakładów związanych z zarządzaniem. W tym wpisie na blogu omówiono architekturę AWS Batch oraz zasady konfiguracji przetwarzania wsadowego.

NAKIVO do tworzenia kopii zapasowej AWS EC2

NAKIVO do tworzenia kopii zapasowej AWS EC2

Wykonać kopię zapasową instancji Amazon EC2 na platformie EC2, w usłudze AWS S3 oraz na miejscu. Ochrona przed oprogramowaniem wymuszającym okup. Szybkie odzyskiwanie instancji i obiektów aplikacji.

Czym jest AWS Batch?

AWS Batch to usługa chmurowa oferowana przez Amazon Web Services (AWS), zaprojektowana tak, aby umożliwić programistom, inżynierom i naukowcom łatwe i wydajne uruchamianie tysięcy zadań przetwarzania wsadowego w chmurze AWS. Przetwarzanie wsadowe to metoda przetwarzania dużych ilości danych poprzez podzielenie zadania na mniejsze jednostki, które mogą być przetwarzane jednocześnie.

AWS Batch upraszcza proces wdrażania, zarządzania i skalowania zadań przetwarzania wsadowego. Automatycznie przydziela zasoby obliczeniowe i optymalizuje ich alokację, aby zapewnić wysoką przepustowość przy niskich kosztach. Dzięki AWS Batch nie musisz instalować ani zarządzać oprogramowaniem do przetwarzania wsadowego ani klastrami serwerów, które tradycyjnie obsługują te zadania, co ułatwia uruchamianie złożonych zadań obliczeniowych na dużą skalę.

AWS Batch zapewnia następujące kluczowe funkcje:

  • Dynamic resource allocation. AWS Batch dynamicznie przydziela zasoby, w tym optymalną ilość i typ zasobów obliczeniowych (instancje zoptymalizowane pod kątem Procesora lub pamięci) w oparciu o wielkość i konkretne wymagania dotyczące zasobów przesłanych zadań wsadowych.
  • Managed compute environments. Możesz określić zasoby obliczeniowe dla swoich zadań, a AWS Batch będzie zarządzać infrastrukturą bazową, przeprowadzając skalowanie w górę lub w dół w zależności od potrzeb, aby uruchamiać zadania tak efektywnie, jak to możliwe.
  • Job scheduling. AWS Batch umieszcza zadania w kolejce oraz planuje i harmonogramuje ich wykonanie w oparciu o dostępne zasoby obliczeniowe oraz priorytet zadań wsadowych. Zapewnia to, że zadania o wyższym priorytecie są wykonywane w pierwszej kolejności, a także zarządza zależnościami wykonawczymi między zadaniami, jeśli takie istnieją.
  • Container support. AWS Batch jest zintegrowany z usługą Amazon Elastic Container Service (ECS) i obsługuje Docker, co pozwala na pakowanie zadań do kontenerów. Gwarantuje to izolację i spójność środowisk obliczeniowych, dzięki czemu są one bezpieczniejsze i łatwiejsze w zarządzaniu.
  • Integration with AWS services. AWS Batch można łatwo zintegrować z innymi usługami AWS, takimi jak Amazon S3, Amazon DynamoDB, Amazon RDS, AWS Lambda i innymi, co umożliwia tworzenie złożonych, skalowalnych architektur przetwarzania wsadowego.

Komponenty AWS Batch

Aby lepiej zrozumieć usługę AWS Batch, należy wiedzieć, jakie główne komponenty są w niej wykorzystywane. Głównymi komponentami AWS Batch są:

  • Job definitions. Są to szablony opisujące sposób wykonywania zadań. Definicja zadania określa różne ustawienia związane z zadaniem, takie jak obraz Docker, który ma zostać użyty, wymagania dotyczące procesorów wirtualnych (vCPU) i pamięci, polecenie do wykonania, zmienne środowiskowe, strategia ponownych prób oraz woluminy danych, a także inne parametry konfiguracyjne. Można utworzyć wiele definicji zadań dla różnych rodzajów zadań, które planuje się uruchomić.
  • Job queues. Kolejki zadań to miejsca, w których zadania pozostają do momentu zaplanowania ich uruchomienia w środowiskach obliczeniowych. Można mieć wiele kolejek zadań dla różnych poziomów priorytetów (na przykład wysoki, średni, niski) lub różnych typów zadań. Zadania w kolejce są planowane na podstawie ich priorytetu oraz kolejności przypisania środowiska obliczeniowego do kolejki zadań.
  • Compute environments. Środowiska obliczeniowe AWS Batch to zbiory zasobów obliczeniowych wykorzystywanych do uruchamiania zadań wsadowych. Środowiska obliczeniowe mogą być zarządzane lub niezarządzane.
  • Jobs. Zadania to pojedyncze jednostki pracy przesyłane do AWS Batch. Każde zadanie uruchamia obraz kontenera Docker, a dla każdego zadania można określić liczbę vCPU, pamięć i inne wymagania. Zadania mogą być zależne, co oznacza, że zadanie może zależeć od pomyślnego zakończenia innego zadania lub zadań przed jego uruchomieniem.
  • Scheduling. Planowanie w AWS Batch to proces, który określa sposób przypisywania zadań do zasobów obliczeniowych. Harmonogram ocenia kolejkę zadań, priorytet i dostępność zasobów obliczeniowych w celu wydajnego wykonywania zadań. Harmonogram AWS Batch może zoptymalizować zarówno wykorzystanie zasobów obliczeniowych, jak i czas realizacji zadań.
  • Lambda functions (optionally). Chociaż nie jest to podstawowy komponent, AWS Lambda może być używana w połączeniu z AWS Batch do różnych celów, takich jak uruchamianie zadań w odpowiedzi na zdarzenia, przetwarzanie wyników zadań lub dynamiczna modyfikacja kolejek zadań lub środowisk obliczeniowych.

Zrozumienie środowisk obliczeniowych

Środowiska obliczeniowe w ramach AWS Batch reprezentują infrastrukturę obliczeniową, która wykonuje zadania wsadowe. Są to zasadniczo środowiska, w których znajdują się zasoby obliczeniowe. Środowisko obliczeniowe można traktować jako pulę zasobów obliczeniowych w ramach AWS Batch, która jest zarządzana i skalowana przez usługę w celu uruchamiania przesłanych zadań wsadowych. Środowiska te można skonfigurować z określonymi typami zasobów obliczeniowych, zdefiniowanymi przez typy instancji, lub zoptymalizować pod kątem konkretnych zadań obliczeniowych.

W AWS Batch istnieją dwa typy środowisk obliczeniowych:

1. Zarządzane środowiska obliczeniowe

W tym typie konfiguracji AWS zarządza środowiskiem obliczeniowym w imieniu użytkownika. Usługa AWS Batch automatycznie zarządza skalowaniem i przydzielaniem zasobów obliczeniowych w oparciu o wymagania zadania. Wystarczy określić żądane typy instancji (lub ich zakres), minimalną, docelową i maksymalną liczbę procesorów vCPU oraz inne szczegóły, takie jak strategia alokacji. AWS Batch zajmie się pozostałymi zadaniami, w tym decyzją o zwiększeniu lub zmniejszeniu skali w zależności od obciążenia, automatycznie dostosowując ilość zasobów obliczeniowych do obciążenia bez konieczności ręcznej interwencji.

To środowisko obsługuje dwa typy instancji: instancje na żądanie oraz instancje spotowe , z opcją ich łączenia w celu optymalizacji kosztów i zwiększenia wydajności.

Zalety zarządzanych środowisk obliczeniowych to:

  • Automatic scaling. AWS Batch może automatycznie skalować zasoby w górę lub w dół w oparciu o wymagania kolejki zadań, co pomaga w optymalizacji kosztów i wykorzystania zasobów.
  • Easy setup. Wymagana jest mniejsza konfiguracja z Państwa strony, ponieważ AWS zarządza infrastrukturą bazową, w tym instancjami i zasadami skalowania.
  • Cost-effectiveness. Możesz skorzystać z instancji spotowych w ramach zarządzanego środowiska obliczeniowego s w celu obniżenia kosztów zadań wsadowych.

2. Niezarządzane środowiska obliczeniowe

W niezarządzanym środowisku obliczeniowym samodzielnie zarządzasz zasobami obliczeniowymi. Oznacza to, że masz kontrolę nad konfiguracją i skalowaniem klastra instancji EC2 lub instancji spotowych, na których będą uruchamiane zadania wsadowe. Ta opcja pozwala na bardziej szczegółową kontrolę nad środowiskiem obliczeniowym, ale wymaga od Ciebie większego nakładu pracy związanego z konfiguracją i zarządzaniem. Jest odpowiednia w sytuacjach, w których wymagane są konkretne konfiguracje, niestandardowe obrazy AMI (Amazon Machine Images) lub specjalistyczne zasoby.

Kluczowe atrybuty środowisk obliczeniowych to:

  • Compute resource types. Możesz określić typ instancji, z których będzie korzystać Twoje środowisko. Może to być opcja optymalna (gdzie AWS Batch automatycznie wybiera typ zasobów), konkretne typy instancji lub ich kombinacja dostosowana do wymagań zadania.
  • Scaling policies. W przypadku środowisk zarządzanych AWS Batch dynamicznie skaluje zasoby obliczeniowe w górę lub w dół w oparciu o wzorce przesyłania i realizacji zadań, zapewniając optymalną efektywność kosztową i wydajność.
  • Launch template support. Można określić szablony uruchamiania EC2 dla środowisk obliczeniowych, co pozwala na dostosowanie instancji EC2 w zarządzanych środowiskach obliczeniowych.
  • Spot integration. Usługa AWS Batch oferuje wsparcie dla instancji EC2 Spot zarówno w zarządzanych, jak i niezarządzanych środowiskach obliczeniowych, zapewniając oszczędności w przypadku elastycznych obciążeń.

Zalety tego typu środowiska obliczeniowego to:

  • Complete control. Masz pełną kontrolę nad środowiskiem obliczeniowym, w tym nad typami instancji i szczegółowymi konfiguracjami.
  • Customization. Jest to idealne rozwiązanie w przypadku konkretnych wymagań, których nie można spełnić w zarządzanym środowisku obliczeniowym, zapewniając większą elastyczność pod względem typów instancji, konfiguracji i strategii skalowania.
  • Integration with Existing Infrastructure. Jeśli masz już skonfigurowane środowiska lub szczególne wymagania dotyczące bezpieczeństwa, zgodności lub korzystania z instancji zarezerwowanych, środowisko niezarządzane może być właściwym wyborem.

Przykłady zastosowań AWS Batch

AWS Batch może być wykorzystywany w szerokim zakresie scenariuszy. Poniżej wymieniono najczęstsze przypadki użycia, w których AWS Batch zapewnia wydajność i skalowalność, pokazując swoją wszechstronność w różnych branżach i zastosowaniach.

  • Large-scale data processing and analysis. Organizacje zajmujące się znacznymi ilościami danych, takie jak te z dziedziny genomiki, analizy finansowej lub modelowania środowiskowego, mogą wykorzystywać AWS Batch do przetwarzania dużych zestawów danych. Usługa ta pozwala efektywnie zarządzać zasobami obliczeniowymi niezbędnymi do równoległej analizy dużych ilości danych, znacznie skracając czas potrzebny na przetwarzanie i analizę danych z godzin lub dni do minut.
  • Machine learning model training and inference. Analitycy danych i inżynierowie uczenia maszynowego mogą wykorzystywać AWS Batch do szkolenia modeli uczenia maszynowego na dużych zestawach danych. AWS Batch umożliwia dynamiczne skalowanie zasobów obliczeniowych w celu zaspokojenia potrzeb różnych zadań szkoleniowych, od dostosowywania modeli na małą skalę po szkolenie modeli głębokiego uczenia na dużą skalę z wykorzystaniem wielu procesorów graficznych. Podobnie, może obsługiwać zadania wnioskowania wsadowego, efektywnie przetwarzając duże partie żądań wnioskowania.
  • Image or video processing. Firmy medialne, dostawcy treści, a nawet instytucje naukowe często muszą przetwarzać duże zbiory obrazów lub filmów, czy to w celu renderowania, transkodowania, czy analizy (na przykład analiza zdjęć satelitarnych do monitorowania środowiska). AWS Batch może skalować się, aby obsłużyć przetwarzanie tysięcy plików jednocześnie, znacznie przyspieszając przepływ pracy.
  • Simulation and modeling workloads. W branżach zajmujących się symulacjami (farmaceutycznej, motoryzacyjnej, lotniczej itp.), gdzie do modelowania złożonych zjawisk fizycznych lub testowania różnych scenariuszy mogą być potrzebne tysiące symulacji, usługa AWS Batch umożliwia wydajne wykonywanie tych wymagających dużej mocy obliczeniowej zadań. Zapewnia ona, że każda symulacja dysponuje niezbędnymi zasobami obliczeniowymi, co może skrócić czas uzyskania wyników z tygodni do dni lub godzin.
  • Financial risk modeling. Instytucje finansowe mogą wykorzystywać usługę AWS Batch do uruchamiania złożonych modeli ryzyka na dużych zestawach danych. Dzięki dynamicznemu skalowaniu zasobów obliczeniowych AWS Batch zapewnia, że oceny ryzyka, które wymagają analizy ogromnych ilości historycznych danych finansowych, mogą być szybko zakończone, co pomaga w szybkim podejmowaniu decyzji.
  • Software build and test pipelines. Zespoły programistów mogą wykorzystać AWS Batch do automatyzacji swoich procesów kompilacji i testowania. W przypadku projektów z dużymi zestawami testów lub wymagających kompilacji na wielu platformach, AWS Batch może znacznie skrócić czas realizacji poprzez równoległe uruchamianie testów i skalowanie w celu zaspokojenia szczytowego zapotrzebowania.

Przewodnik konfiguracji krok po kroku

Przyjrzyjmy się, jak skonfigurować zadanie AWS Batch, środowisko obliczeniowe i inne wymagane komponenty.

Kroki przygotowawcze

Przygotuj role AWS, które będą używane do zadań AWS Batch:

  1. Przejdź do konsoli IAM. Otwórz AWS Management Console, wyszukaj IAM servicei otwórz go.
  2. Utwórz AWSBatchServiceRole:
    • Na pulpicie nawigacyjnym IAM wybierz Roles , a następnie kliknij Create role.
    • Wybierz usługę AWS jako podmiot zaufany, wybierz Batch, a następnie kliknij Next: Permissions.
    • Dołącz politykę AWSBatchServiceRole . Jeśli jej nie widzisz, wyszukaj ją w pasku wyszukiwania.
    • Kliknij Next, nadaj nazwę roli (na przykład AWSBatchServiceRole ) i utwórz rolę.
  3. Utwórz rolę instancji EC2:
    • Powtórz proces tworzenia roli, ale tym razem wybierz EC2 jako podmiot zaufany.
    • Dołącz AmazonEC2ContainerServiceforEC2Role politykę lub dowolną inną politykę wymaganą w danym przypadku użycia.
    • Nadaj nazwę roli (na przykład ecsInstanceRole) i utwórz ją.

Uzyskiwanie dostępu do AWS Batch

Wpisz batch w polu wyszukiwania usług AWS i kliknij AWS Batch, gdy ta pozycja zostanie wyświetlona.

How to access AWS Batch

Powinna się teraz otworzyć strona pulpitu nawigacyjnego AWS Batch.

Tworzenie środowiska obliczeniowego

Środowiska obliczeniowe zawierają instancje kontenerów Amazon ECS, na których będą uruchamiane zadania. Kliknij Compute environments na stronie pulpitu nawigacyjnego AWS Batch, a następnie wybierz Create , aby utworzyć nowe środowisko obliczeniowe.

How to create an AWS Batch compute environment

Otworzy się kreator Utwórz środowisko obliczeniowe .

  1. Compute environment configuration.
    • Wybierz platformę obliczeniową, na przykład Amazon Elastic Compute Cloud (Amazon EC2).
    • Wybierz między Managed a Unmanaged. Środowiska zarządzane są obsługiwane przez AWS, natomiast środowiska niezarządzane są obsługiwane przez użytkownika.
    • Wypełnij formularz zgodnie z własnymi potrzebami. Wprowadź nazwę swojego środowiska obliczeniowego ( env01test w tym przykładzie). W razie potrzeby określ role utworzone w etapie przygotowawczym. Alternatywnie możesz utworzyć nową rolę na tym ekranie, jeśli nie zrobiłeś tego wcześniej. Dla każdego pola dostępne są przydatne wskazówki, które pomogą Ci ustawić optymalną wartość.

    Creating an AWS Batch compute environment with EC2

  2. Instance configuration. Ustaw wymagane parametry vCPU (wirtualnego procesora). Wybierz typ instancji. Można wybrać instancje typu Spot lub instancje na żądanie. Należy pamiętać, że jeśli parametr Minimum vCPUs jest ustawiony na 0, zasoby AWS nie będą marnowane, gdy nie ma pracy do wykonania (jest to wartość zalecana).

    Instance configuration for an AWS Batch compute environment

  3. Network. Można pozostawić ustawienia domyślne. Jeśli konieczne jest dostosowanie ustawień sieciowych, można wybrać istniejące identyfikatory VPC i podsieci lub utworzyć nowe.
  4. Review. Sprawdź konfigurację i zapisz środowisko obliczeniowe. Kliknij Create compute environment.

Tworzenie kolejki zadań

Kolejki zadań służą do przechowywania zadań – zadania znajdują się w unikalnej kolejce zadań. Kolejki zadań są powiązane ze środowiskami obliczeniowymi.

  1. Utwórz kolejkę zadań. W panelu AWS Batch kliknij Job queues, a następnie Create.

    How to create a job queue

  2. Wybierz typ orkiestracji, np. Amazon EC2 (dostępne są również opcje Fargate i EKS).

    Creating a job queue for AWS Batch processing

  3. W sekcji konfiguracji kolejki zadań wprowadź nazwę kolejki oraz priorytet (wyższe liczby oznaczają wyższy priorytet, a 1 jest wartością domyślną).
  4. Połącz kolejkę zadań ze środowiskiem obliczeniowym utworzonym w poprzednim kroku (env01test).
  5. Kliknij Create , aby sfinalizować konfigurację kolejki zadań.

    Job queue configuration

Tworzenie definicji zadania

Definicje zadań określają sposób ich wykonywania. Obejmują one obraz Docker do użycia, procesory vCPU, wymagania dotyczące pamięci i inne parametry. Parametry definicji zadania można nadpisać podczas uruchamiania zadania.

Przejdź do Job definitions na pulpicie nawigacyjnym AWS Batch i kliknij Create.

How to create a job definition in AWS Batch

  1. Job definition configuration. Określ, czy zadanie będzie uruchamiane w usłudze Amazon EC2, Fargate czy Elastic Kubernetes Service. Zdefiniuj nazwę definicji zadania.

    Job definition configuration for AWS batching

    • Skonfiguruj właściwości kontenera, w tym obraz, procesory vCPU, pamięć, polecenie (jeśli dotyczy) oraz zmienne środowiskowe.
    • W sekcji „Rola wykonawcza” określ rolę IAM posiadającą uprawnienia do pobrania obrazu Docker oraz, w razie potrzeby, do rejestrowania danych w CloudWatch.
    • Kliknij Dalej na każdym ekranie, aby kontynuować.

    General configuration for an AWS batch job definition

  2. Container configuration. Wybierz składnię polecenia (bash lub JSON). Wprowadź wymagane polecenie w polu polecenia, używając określonej składni. Możesz wybrać konfigurację środowiska, taką jak liczba procesorów vCPU i pamięć, oraz dodać zmienne środowiskowe.
  3. Linux and logging settings. Możesz skonfigurować ustawienia systemu Linux i rejestrowania, w tym informacje o użytkowniku, konfigurację systemu plików, konfigurację rejestrowania itp.
  4. Job definition review. Sprawdź swoją konfigurację. Możesz przejrzeć konfigurację definicji zadania i skopiować tekst konfiguracji (skrypt). Kliknij Create job definition.

Przesyłanie zadania

Teraz, gdy wszystko jest skonfigurowane, możesz przesłać zadanie, które jest jednostką pracy wykonywaną przez AWS Batch.

  1. Przejdź do sekcji Jobs i kliknij Submit new job.

    How to submit a job for AWS batching

  2. Ustaw konfigurację zadania. Wprowadź nazwę zadania. Wybierz definicję zadania i kolejkę zadań, które utworzyłeś wcześniej. W razie potrzeby ustaw inne dodatkowe parametry.
  3. Skonfiguruj nadpisania zadania (opcjonalnie).
  4. Sprawdź ustawienia zadania i na końcu kliknij Create job .

    AWS batch job configuration – submitting a job

Zadanie powinno zostać uruchomione w ciągu kilku sekund i przejść w stan wykonywania.

Zarządzanie środowiskami obliczeniowymi

Postęp zadania AWS Batch można monitorować w panelu AWS Batch w sekcji Jobs (Jobs > Wybierz zadanie > Details). AWS Batch umożliwia przeglądanie dzienników w czasie rzeczywistym, statusu zadania oraz wszelkich wyników generowanych przez zadanie.

AWS batch job information

Do monitorowania i zarządzania środowiskami obliczeniowymi można używać następujących narzędzi AWS:

  • Amazon CloudWatch. To narzędzie służy do monitorowania metryk i logów zadań wsadowych oraz środowisk obliczeniowych. Jest niezbędne do zrozumienia wydajności wykonywania zadań i debugowania problemów.
  • AWS CloudTrail. Rejestruje i monitoruje wywołania API do AWS Batch i innych usług AWS. Pomaga to w audycie i śledzeniu zmian w środowiskach obliczeniowych.
  • AWS Cost Explorer. Wykorzystaj to narzędzie do monitorowania i zarządzania kosztami związanymi ze środowiskami obliczeniowymi, co pomoże zidentyfikować możliwości optymalizacji.

Skorzystaj z zalecanych praktyk dotyczących monitorowania:

  • Regularnie przeglądaj wskaźniki i logi AWS Batch w CloudWatch, aby zidentyfikować wąskie gardła wydajności lub niedostatecznie wykorzystywane zasoby.
  • Nieustannie optymalizuj definicje zadań i środowiska obliczeniowe w oparciu o dane dotyczące wydajności.
  • Rozważ wykorzystanie AWS Lambda w połączeniu z AWS Batch do przetwarzania wsadowego sterowanego zdarzeniami.
  • Bądź na bieżąco z najnowszymi funkcjami AWS oraz najlepszymi rozwiązaniami dotyczącymi AWS Batch i powiązanych usług.

Zarządzanie i optymalizacja środowisk obliczeniowych w AWS Batch to ciągłe procesy, które obejmują monitorowanie wydajności, kontrolowanie kosztów oraz dostosowywanie strategii w oparciu o zmieniające się wymagania i nowe możliwości AWS.

Wnioski

AWS Batch nadaje się do szerokiego zakresu zastosowań, od przetwarzania danych i renderowania po szkolenie modeli uczenia maszynowego i modelowanie finansowe. Jest to w pełni zarządzana usługa AWS. Możliwość obsługi złożonych, wymagających dużej mocy obliczeniowej zadań wsadowych bez konieczności zarządzania infrastrukturą bazową sprawia, że AWS Batch jest potężnym narzędziem dla organizacji, które chcą wykorzystać chmurę do obliczeń o dużej przepustowości. Nie zapomnij wykonać kopii zapasowej instancji Amazon EC2, aby chronić dane. NAKIVO Backup & Replication może pomóc Ci skutecznie chronić dane EC2.

Wypróbuj NAKIVO Backup & Replication

Wypróbuj NAKIVO Backup & Replication

Skorzystaj z bezpłatnej wersji próbnej, aby poznać wszystkie funkcje rozwiązania w zakresie ochrony danych. 15 dni za darmo. Bez żadnych ograniczeń dotyczących funkcji ani pojemności. Nie trzeba podawać danych karty kredytowej.

People also read