Hostowanie obciążeń opartych na procesorach GPU przy użyciu usługi Azure Kubernetes Service

Azure Kubernetes Service (AKS)

W tym artykule opisano sposób wydajnego uruchamiania obciążeń korzystających z węzłów procesora GPU w klastrze usługi Azure Kubernetes Service (AKS). Dowiedz się, jak wybrać odpowiednią jednostkę SKU, użyć węzłów procesora GPU do trenowania modeli uczenia maszynowego i użyć węzłów procesora GPU do uruchamiania wnioskowań w usłudze AKS.

Scenariusze

Obciążenia procesora GPU mogą być kosztowne do uruchomienia. Aby uniknąć niepotrzebnych kosztów, dowiedz się, kiedy wdrożyć węzły oparte na procesorze GPU w klastrach usługi AKS.

Procesory GPU są specjalnie zaprojektowane na potrzeby grafiki, sztucznej inteligencji i uczenia maszynowego oraz wyspecjalizowanych zadań, co czyni je idealnym rozwiązaniem w przypadku obciążeń intensywnie korzystających z obliczeń. Procesory CPU skutecznie zarządzają skomplikowanymi logikami i rozgałęzianiami. Procesory GPU są zoptymalizowane pod kątem przepływności. Mogą wydajnie obsługiwać proste operacje arytmetyczne i wektorowe.

Aby określić, kiedy używać procesorów GPU dla obciążeń usługi AKS, musisz zrozumieć optymalizację procesora GPU i intensywność obliczeń, ale należy również wziąć pod uwagę inne czynniki. Aby uzyskać lepszy wgląd w użycie procesora GPU dla obciążeń usługi AKS, rozważ następujące przykłady obciążeń, które korzystają z węzłów procesora GPU w klastrze usługi AKS.

Nauka o danych i analiza

Za pomocą procesorów GPU można przyspieszyć wstępne przetwarzanie danych, inżynierię cech i trenowanie modeli w przepływach pracy nauki o danych. Aby efektywnie korzystać z procesorów GPU, struktury, takie jak RAPIDS i Dask GPU , rozszerzają popularne biblioteki przetwarzania danych, takie jak pandas i scikit-learn.

Oprogramowanie typu open source (OSS) przyspieszane aparaty zapytań SQL i kolumnowe bazy danych, takie jak BlazingSQL i HeavyDB , używają procesorów GPU do szybkiego wykonywania zapytań i analiz na dużych zestawach danych.

Uczenie maszynowe i uczenie głębokie

Popularne struktury uczenia maszynowego i uczenia głębokiego, takie jak TensorFlow i PyTorch , korzystają z procesorów GPU, ponieważ mogą przyspieszyć zadania trenowania i wnioskowania.

Modele uczenia głębokiego mają złożone sieci neuronowe. Przetwarzanie równoległe na procesorach GPU przyspiesza obliczenia modelu. Procesory GPU zapewniają wysoce wydajne mnożenie macierzy i sploty, które są podstawowymi operacjami w uczeniu głębokim.

Za pomocą procesorów GPU można również przyspieszyć zadania, takie jak klasyfikacja obrazów, wykrywanie obiektów, przetwarzanie języka naturalnego i rozpoznawanie mowy.

Przetwarzanie obrazów i obrazów

Zadania przetwarzania obrazów interpretują dane wizualne w celu wyodrębnienia znaczących informacji. Zadania te są coraz częściej stosowane w aplikacjach opartych na sztucznej inteligencji, pojazdach autonomicznych, obrazowaniu medycznym, systemach nadzoru i rzeczywistości rozszerzonej. Procesory GPU używają przetwarzania równoległego, dzięki czemu mogą wydajnie obsługiwać dane obrazów na dużą skalę i złożone obliczenia dla zadań takich jak wykrywanie obiektów, klasyfikacja obrazów i wyodrębnianie funkcji.

Przetwarzanie i przesyłanie strumieniowe wideo

Filmy wideo są coraz bardziej powszechne w biznesie, więc organizacje potrzebują sprzętu opartego na procesorze GPU, a nie procesorów CPU. Obciążenia przetwarzania wideo, w tym transkodowanie, kodowanie i przesyłanie strumieniowe, intensywnie korzystają z obliczeń, zwłaszcza jeśli mają zawartość o wysokiej rozdzielczości lub zawartość 4K. Procesory GPU zapewniają wydajną platformę, która zapewnia środowiska wideo o wysokiej wydajności i małych opóźnieniach w różnych aplikacjach, takich jak przesyłanie strumieniowe wydarzeń sportowych lub wideo firmowych.

Węzły agenta z obsługą procesora GPU zapewniają bogate środowisko klienta w środowiskach pulpitu wirtualnego, ponieważ odciążają zadania intensywnie korzystające z grafiki do procesora GPU. Przyspieszone przez procesor GPU funkcje kodowania i dekodowania wideo pomagają poprawić przesyłanie strumieniowe wideo w czasie rzeczywistym, transkodowanie wideo i analizę wideo.

Aby przyspieszyć zadania przetwarzania obrazów, takie jak wykrywanie obiektów, śledzenie obiektów i przetwarzanie obrazów lub wideo, można użyć struktur, takich jak OpenCV, OpenCL, NVIDIA CUDA i NVIDIA cuDNN.

Platformy gier i usługi gier w chmurze korzystają z procesorów GPU w celu zapewnienia wysokiej jakości grafiki i bezproblemowej rozgrywki.

Obliczenia o wysokiej wydajności

Aplikacje obliczeń o wysokiej wydajności (HPC) często wymagają złożonych symulacji, analizy liczbowej i obliczeń naukowych. Aby szybko uruchomić te zadania, można użyć procesorów GPU do równoległości obciążenia w wielu rdzeniach. Przykłady aplikacji HPC, które wymagają ogromnej mocy przetwarzania równoległego, to symulacje naukowe, prognozowanie pogody, obliczana dynamika płynów i modelowanie molekularne. Procesory GPU są idealne do obliczeń równoległych i znacznie przyspieszają obciążenia HPC. Przedsięwzięcia naukowe i badawcze korzystają z procesorów GPU.

Aby przyspieszyć aplikacje HPC, struktury, takie jak NVIDIA CUDA, OpenCL i OpenACC , zapewniają interfejsy API i biblioteki z obsługą procesora GPU.

Analiza genomowa i bioinformatyka

Obciążenia dotyczące zdrowia i nauk życiowych, takie jak analiza genomiczna i aplikacje bioinformatyczne, są coraz częściej spotykane. Obciążenia te obejmują przetwarzanie danych genetycznych, takich jak sekwencje DNA i struktury białek, oraz wymagają złożonych algorytmów w celu wyrównania sekwencji, wywołania wariantów i wyszukiwania danych genomicznych. Procesory GPU przyspieszają przepływy pracy analizy genomicznej, dzięki czemu naukowcy mogą przetwarzać dane i szybciej odkrywać szczegółowe informacje.

Przed wdrożeniem węzłów procesora GPU w klastrach usługi AKS należy wziąć pod uwagę wpływ na koszty. Omówienie optymalizacji procesora GPU pod kątem zadań intensywnie korzystających z obliczeń, takich jak przetwarzanie obrazów, przetwarzanie wideo, obliczenia HPC i zadania analizy genomicznej. Podczas porównywania zasobów procesora GPU i zasobów procesora CPU w klastrach usługi AKS należy wziąć pod uwagę te czynniki.

Generowanie modeli sztucznej inteligencji

Duże modele językowe (LLM), takie jak OpenAI GPT, Meta Llama, Falcon lub Mistral, mogą korzystać z funkcji przetwarzania równoległego procesora GPU. Użyj procesorów GPU z tymi modelami, aby zwiększyć wydajność.

Procesory GPU mogą przyspieszyć zadania trenowania i wnioskowania, które obejmują złożone obliczenia i duże ilości danych. Procesory GPU mają możliwości przetwarzania równoległego, które dzielą duże zadania obliczeniowe danego modelu na mniejsze podzadania, które są uruchamiane współbieżnie. Ten proces zapewnia szybkie wyniki i poprawia wydajność.

Modele językowe często mają złożone sieci neuronowe z kilkoma warstwami i parametrami, co może zwiększyć zapotrzebowanie obliczeniowe. Procesory GPU przyspieszają kluczowe operacje przetwarzania języka, takie jak mnożenie macierzy i sploty, co przyspiesza czas trenowania i wnioskowania.

Procesory GPU zapewniają wystarczającą pojemność pamięci, przepustowość i moc obliczeniową do obsługi aplikacji opartych na protokole LLM, które mają interfejsy konwersacyjne i generowanie tekstu. Na przykład ulepszenia procesora GPU zapewniają szybki czas odpowiedzi dla użytkowników korzystających z czatbotów i asystentów sztucznej inteligencji.

Nie wszystkie obciążenia korzystają z węzłów agenta z obsługą procesora GPU, a w niektórych przypadkach procesory CPU są wystarczające. Na przykład obciążenia, które są przede wszystkim danymi wejściowymi i wyjściowymi lub nie wymagają dużych obliczeń, mogą nie poprawić się w przypadku procesorów GPU.

Historie klientów

Wielu klientów firmy Microsoft korzysta z obciążeń procesora GPU, aby wprowadzać innowacje dla swoich klientów. Rozważ następujące przykłady:

Najlepsze rozwiązania dotyczące wdrażania obciążeń procesora GPU

Usługa AKS oferuje różne opcje wdrażania pul węzłów i obciążeń z obsługą procesora GPU z obsługą procesora GPU. Aby zapewnić bezproblemowe działanie obciążenia procesora GPU, postępuj zgodnie z tymi najlepszymi rozwiązaniami.

Wdrażanie obciążeń systemu Linux

  • Utwórz pulę węzłów z obsługiwaną maszyną wirtualną z obsługą procesora GPU i ręcznie zainstaluj wtyczkę urządzenia NVIDIA w celu wdrożenia pul węzłów systemu Linux z obsługą procesora GPU. Ta metoda nie obsługuje aktualizowania istniejącej puli węzłów w celu dodania procesorów GPU.

  • Wyświetlanie obsługiwanych maszyn wirtualnych z obsługą procesora GPU na platformie Azure. Zalecamy użycie minimalnego rozmiaru Standard_NC6s_v3 dla pul węzłów usługi AKS. Usługa AKS nie obsługuje serii NVv4 opartej na procesorach GPU AMD.

  • Zapoznaj się z ograniczeniami w przypadku korzystania z puli węzłów z obsługą procesora GPU platformy Azure z systemem Linux. Automatyczne poprawki zabezpieczeń nie są stosowane, a domyślne zachowanie klastra jest niezarządzane.

  • Użyj selektorów węzłów Kubernetes, koligacji węzłów, defektów i tolerancji podczas planowania obciążeń w pulach węzłów z obsługą procesora GPU.

Wdrażanie obciążeń systemu Windows

  • Utwórz pulę węzłów z obsługiwaną maszyną wirtualną z obsługą procesora GPU w celu wdrożenia pul węzłów systemu Windows z obsługą procesora GPU. Usługa AKS automatycznie instaluje sterowniki i niezbędne składniki FIRMY NVIDIA. Ta metoda nie obsługuje aktualizowania istniejącej puli węzłów w celu dodania procesorów GPU.

    Po wybraniu obsługiwanej maszyny wirtualnej z obsługą procesora GPU usługa AKS automatycznie instaluje odpowiedni sterownik NVIDIA CUDA lub GRID. Niektóre obciążenia zależą od określonego sterownika, który może mieć wpływ na wdrożenie. W przypadku rozmiarów maszyn wirtualnych serii NC i ND usługa AKS instaluje sterownik CUDA. W przypadku rozmiarów maszyn wirtualnych serii NV usługa AKS instaluje sterownik GRID.

  • Wyświetlanie obsługiwanych maszyn wirtualnych z obsługą procesora GPU na platformie Azure. Zalecamy użycie minimalnego rozmiaru Standard_NC6s_v3 dla pul węzłów usługi AKS. Usługa AKS nie obsługuje serii NVv4 opartej na procesorach GPU AMD.

  • Zapoznaj się z ograniczeniami w przypadku korzystania z puli węzłów systemu Windows. Platforma Kubernetes w wersji 1.28 lub nowszej nie obsługuje procesorów GPU systemu Windows.

  • Użyj selektorów węzłów Kubernetes, koligacji węzłów, defektów i tolerancji podczas planowania obciążeń w pulach węzłów z obsługą procesora GPU.

Uwaga

Procesor GPU systemu Windows to funkcja w wersji zapoznawczej. Musisz zarejestrować flagę WindowsGPUPreviewfunkcji.

NVIDIA GPU Operator

Operator procesora GPU firmy NVIDIA to narzędzie, którego można użyć do wydajnego wdrażania zasobów procesora GPU i zarządzania nimi w klastrach Kubernetes. Za pomocą operatora można zautomatyzować instalację, konfigurację i konserwację składników oprogramowania. Takie podejście zapewnia optymalne wykorzystanie procesorów GPU FIRMY NVIDIA do wymagających obciążeń, takich jak sztuczna inteligencja i obciążenia uczenia maszynowego.

Operator procesora GPU FIRMY NVIDIA automatycznie zarządza wszystkimi składnikami oprogramowania NVIDIA, które są wymagane do wdrożenia procesorów GPU, takich jak wtyczka urządzenia NVIDIA dla platformy Kubernetes i środowiska uruchomieniowego kontenera NVIDIA. Operator automatycznie instaluje sterownik. Aby uzyskać więcej informacji, zobacz Omówienie firmy NVIDIA.

Jeśli chcesz zwiększyć kontrolę i elastyczność zaawansowanych obciążeń procesora GPU, możesz użyć operatora procesora GPU FIRMY NVIDIA z węzłami obsługującymi procesor GPU w usłudze AKS. Operator procesora GPU firmy NVIDIA nie obsługuje procesorów GPU systemu Windows.

Rozważ następujące najlepsze rozwiązania:

  • Użyj operatora procesora GPU FIRMY NVIDIA, aby wykonać zaawansowane konfiguracje procesora GPU, takie jak wybór wersji sterownika i fragmentowanie czasu.

  • Pomiń automatyczną instalację sterownika przed użyciem operatora procesora GPU.

  • Ustaw minimalną liczbę na 1, gdy używasz operatora procesora GPU z funkcją automatycznego skalowania klastra.

Uwaga

Firma Microsoft nie obsługuje konserwacji i zgodności sterowników NVIDIA ani nie zarządza nimi w ramach wdrażania obrazu węzła podczas korzystania z operatora procesora GPU.

Wdrażanie obciążenia procesora GPU dla usługi LLMs

Operator łańcucha narzędzi Kubernetes AI (KAITO) to operator Kubernetes, który upraszcza uruchamianie maszyn LLM typu open source, takich jak Falcon i Llama2, w klastrze Kubernetes. Możesz wdrożyć aplikację KAITO w klastrze usługi AKS jako zarządzany dodatek dla usługi AKS. Usługa KAITO używa Narzędzia Karpenter do automatycznego aprowizowania i wdrażania węzłów procesora GPU na podstawie specyfikacji w niestandardowej definicji zasobu obszaru roboczego wybranego modelu. Usługa KAITO tworzy serwer wnioskowania jako punkt końcowy dla usługi LLM i skraca ogólny czas dołączania, dzięki czemu można wykonywać operacje uczenia maszynowego, a nie konfigurację infrastruktury i konserwację.

Aby ulepszyć operacje uczenia maszynowego, funkcja KAITO zapewnia następujące możliwości:

  • Zarządzanie obrazami kontenerów: zarządzanie maszynami LLM przy użyciu obrazów kontenerów. Usługa KAITO udostępnia serwer HTTP, dzięki czemu można użyć obsługiwanej biblioteki modeli do wykonywania wywołań wnioskowania.

  • Konfiguracja sprzętu procesora GPU: funkcja KAITO udostępnia wstępnie ustawione konfiguracje, które są automatycznie stosowane na podstawie wymagań dotyczących modelu. Nie musisz ręcznie dostroić parametrów wdrożenia, aby dopasować je do sprzętu procesora GPU.

  • Automatyczna aprowizacja węzła procesora GPU: funkcja KAITO automatycznie aprowizuje węzły procesora GPU na podstawie wymagań dotyczących modelu i zaleca niższe koszty rozmiarów maszyn wirtualnych procesora GPU w celu skonfigurowania rozproszonego wnioskowania.

  • Integracja z Rejestr Artefaktów Microsoft: jeśli licencja LLM zezwala, usługa KAITO może hostować obrazy modeli w publicznym rejestrze artefaktów. Ta metoda upraszcza dostęp do obsługiwanych modeli i ich wdrażanie. W przypadku modeli typu open source z licencjami MIT lub Apache2, które repozytorium KAITO nie obsługuje, możesz przesłać żądanie dotyczące nowego dołączania modelu.

Aby uzyskać więcej informacji na temat interfejsu KAITO, zobacz następujące zasoby:

Skalowanie obciążeń i klastrów

W przypadku scenariuszy sztucznej inteligencji i uczenia maszynowego należy rozróżnić obciążenia szkoleniowe i wnioskowanie z wstępnie wytrenowanych modeli. Aby utworzyć i wytrenować model uczenia maszynowego, rozważ użycie obliczeń procesora GPU przeznaczonych do uczenia głębokiego i równoległego obliczania sztucznej inteligencji. Trenowanie często wymaga stopniowego skalowania i rozkładu dużych ilości danych między procesorami GPU w celu osiągnięcia wysokiej dokładności z równoległością danych.

Fragmentowanie modelu to popularna technika zaawansowana, której można użyć do dzielenia etapów trenowania modelu. Można przypisać procesory GPU do odrębnych zadań i zmaksymalizować ich użycie. Procesory GPU mogą skalować w górę i skalować obciążenia HPC, takie jak maszyny wirtualne serii NV lub ND na platformie Azure. Ta funkcja pomaga zachować wysokie użycie zasobów i zmniejszyć interwencję użytkownika w przypadku procesów trenowania uczenia maszynowego, które są długie i kosztowne.

Alternatywnie można używać wstępnie wytrenowanych modeli sztucznej inteligencji typu open source i uczenia maszynowego tylko do wnioskowania. Rozpocznij pracę z popularnymi modelami, takimi jak Llama, Falcon lub Mistral, jako szybsza i bardziej opłacalna opcja w porównaniu do tworzenia i trenowania llM od podstaw. Aby uzyskać więcej informacji, zobacz Modele językowe w usłudze AKS.

W przypadku używania wstępnie wytrenowanych modeli do wnioskowania może wystąpić dynamiczne i zmienne użycie zasobów w zależności od ilości przetwarzanych danych. Gdy uruchamiasz dane na żywo za pośrednictwem wybranego modelu, skoki ruchu czasami występują w zależności od rozmiaru i wymagań modelu. Należy zachować akceptowalny, niski poziom opóźnienia w procesie wnioskowania. Aby efektywnie korzystać z procesorów GPU w celu zapewnienia wysokiej wydajności i małych opóźnień, możesz przeprowadzić wnioskowanie rozproszone za pomocą modeli, które obsługuje KAITO. Takie podejście rozszerza opcje obliczeniowe, aby uwzględnić niższe jednostki SKU z liczbą procesorów GPU, które mają jedną lub dwie jednostki GPU, zapewniają wysoką dostępność w regionach świadczenia usługi Azure i zmniejszają koszty konserwacji.

Zarządzanie kosztami obciążeń procesora GPU

Procesory GPU mogą zwiększyć koszty. Właściwie monitoruj obciążenia, aby ułatwić zrozumienie kosztów procesora GPU i identyfikowanie możliwości optymalizacji. Aby zwiększyć widoczność kosztów, możesz użyć dodatku do analizy kosztów usługi AKS.

Poniższe scenariusze korzystają z widoczności kosztów.

Koszt rozmiaru maszyny wirtualnej z obsługą procesora GPU

Wybierz odpowiedni rozmiar maszyny wirtualnej z obsługą procesora GPU, aby zoptymalizować koszt uruchomionych procesorów GPU. Koszty dzienne mogą się różnić w zależności od wybranego rozmiaru maszyny wirtualnej. Procesory GPU A100 są kosztowne. Należy ich unikać, chyba że obciążenie ma określone wymagania. Analiza kosztów usługi AKS przedstawia dzienny koszt każdej maszyny wirtualnej i dzieli skojarzone koszty każdego obciążenia uruchomionego na maszynie wirtualnej z obsługą procesora GPU. Użyj tych danych, aby ocenić, czy masz odpowiedni rozmiar maszyny wirtualnej, czy też potrzebujesz bardziej ekonomicznej opcji.

Koszt bezczynności

Po utworzeniu puli węzłów z obsługą procesora GPU koszty są naliczane na zasobie platformy Azure, nawet jeśli nie uruchamiasz obciążenia procesora GPU. Koszty bezczynności reprezentują koszt dostępnej pojemności zasobów, których obciążenia nie używają. Ten koszt zwiększa się szybko, jeśli masz kilka nieużywanych węzłów. Aby uniknąć wysokich kosztów bezczynności, należy tworzyć pule węzłów tylko podczas uruchamiania obciążenia i używać metod takich jak funkcja zatrzymywania klastra, gdy nie uruchamiasz obciążenia. Analiza kosztów usługi AKS pokazuje bezczynne koszty dla każdego węzła.

Nadmierna aprowizacja i niedostateczna aprowizacja

Nadmierna aprowizacja polega na przydzieleniu większej ilości zasobów niż jest to konieczne dla zasobnika. Nadmierna aprowizacja prowadzi do marnowania zasobów i niedostatecznego wykorzystania. Nadmiar zasobów pozostaje zarezerwowany dla węzła, nawet jeśli ich nie używasz. Aby zmniejszyć nadmierną aprowizowanie, użyj pionowego narzędzia do automatycznego skalowania zasobników, aby ustawić dokładne żądania i limity na podstawie poprzednich wzorców użycia.

Wykorzystanie może wystąpić, gdy obciążenia nie używają w pełni procesorów GPU. Rozważ zaawansowane techniki udostępniania i partycjonowania procesora GPU. Zamiast używać wielu węzłów, można użyć jednego węzła z partycjonowaniem, aby zmaksymalizować użycie procesora GPU. Te techniki mogą pomóc przydzielić odpowiednią ilość przyspieszania procesora GPU dla każdego obciążenia, co może zwiększyć użycie i obniżyć koszty operacyjne wdrożenia.

Wdrożenia obciążeń procesora GPU systemu Linux w usłudze AKS obsługują procesory GPU z wieloma wystąpieniami. Użyj tej funkcji, aby podzielić procesor GPU NVIDIA A100 na maksymalnie siedem niezależnych wystąpień. Każde wystąpienie ma własną pamięć i multiprocesor strumienia.

Firma NVIDIA obsługuje inne techniki partycjonowania, takie jak fragmentowanie czasowe i implementacja usługi wieloprocesowej. Aby ręcznie zastosować te konfiguracje, użyj operatora procesora GPU FIRMY NVIDIA.

W przypadku zaawansowanych scenariuszy można ulepszyć pakowanie pojemników na zasoby w węzłach. Konfiguracje harmonogramu można ustawić i uruchomić drugi harmonogram. Konfigurowanie i obsługa pomocniczego harmonogramu w celu używania strategii umieszczania obciążeń, które różnią się od domyślnego harmonogramu usługi AKS. Aby uzyskać więcej informacji, zobacz Konfigurowanie wielu harmonogramów na platformie Kubernetes.

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.

Główny autor:

Inni współautorzy:

Aby wyświetlić niepubliczne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.

Następne kroki