Ocenianie wsadowe dla modeli uczenia głębokiego przy użyciu potoków usługi Azure Machine Edukacja

Azure Logic Apps
Azure Machine Learning
Azure Role-based access control
Azure Storage

Ta architektura referencyjna pokazuje, jak zastosować transfer w stylu neuronowym do wideo przy użyciu usługi Azure Machine Edukacja. Transfer stylu to technika uczenia głębokiego, która komponuje istniejący obraz w stylu innego obrazu. Tę architekturę można uogólnić dla dowolnego scenariusza korzystającego z oceniania wsadowego za pomocą uczenia głębokiego.

Architektura

Diagram architektury dla modeli uczenia głębokiego korzystających z usługi Azure Machine Edukacja.

Pobierz plik programu Visio z tą architekturą.

Przepływ pracy

Niniejsza architektura zawiera następujące składniki.

Compute

Usługa Azure Machine Edukacja używa potoków do tworzenia powtarzalnych i łatwych w zarządzaniu sekwencjami obliczeń. Oferuje również zarządzany cel obliczeniowy (na którym można uruchamiać obliczenia potoku) o nazwie Azure Machine Edukacja Compute na potrzeby trenowania, wdrażania i oceniania modeli uczenia maszynowego.

Storage

Usługa Azure Blob Storage przechowuje wszystkie obrazy (obrazy wejściowe, obrazy stylów i obrazy wyjściowe). Usługa Azure Machine Edukacja integruje się z usługą Blob Storage, dzięki czemu użytkownicy nie muszą ręcznie przenosić danych między platformami obliczeniowymi i magazynami obiektów blob. Usługa Blob Storage jest również ekonomiczna dla wydajności wymaganej przez to obciążenie.

Wyzwalacz

Usługa Azure Logic Apps wyzwala przepływ pracy. Gdy aplikacja logiki wykryje, że obiekt blob został dodany do kontenera, wyzwala potok usługi Azure Machine Edukacja. Usługa Logic Apps jest dobrym rozwiązaniem dla tej architektury referencyjnej, ponieważ jest to łatwy sposób wykrywania zmian w magazynie obiektów blob z łatwym procesem zmiany wyzwalacza.

Wstępne przetwarzanie i przetwarzanie danych po ich przetworzeniu

Ta architektura referencyjna używa materiału wideo z orangutanu w drzewie.

  1. Użyj klawisza FFmpeg , aby wyodrębnić plik audio z materiału wideo, aby plik audio można było później połączyć z wyjściowym wideo.
  2. Użyj klawisza FFmpeg, aby podzielić wideo na poszczególne klatki. Ramki są przetwarzane niezależnie, równolegle.
  3. W tym momencie można stosować transfer stylu neuronowego do każdej ramki równolegle.
  4. Po przetworzeniu każdej ramki użyj klawisza FFmpeg, aby przywrócić ramki razem.
  5. Na koniec ponownie dołącz plik dźwiękowy do restitched materiału.

Składniki

Szczegóły rozwiązania

Ta architektura referencyjna jest przeznaczona dla obciążeń wyzwalanych przez obecność nowych multimediów w usłudze Azure Storage.

Przetwarzanie obejmuje następujące kroki:

  1. Przekaż plik wideo do usługi Azure Blob Storage.
  2. Plik wideo wyzwala usługę Azure Logic Apps w celu wysłania żądania do opublikowanego punktu końcowego potoku usługi Azure Machine Edukacja.
  3. Potok przetwarza film wideo, stosuje transfer stylów za pomocą interfejsu MPI i przetwarza film wideo.
  4. Dane wyjściowe są zapisywane z powrotem w usłudze Blob Storage po zakończeniu potoku.

Potencjalne przypadki użycia

Organizacja mediów ma film wideo, którego styl chce się zmienić, aby wyglądał jak konkretny obraz. Organizacja chce zastosować ten styl do wszystkich klatek wideo w odpowiednim czasie i w zautomatyzowany sposób. Aby uzyskać więcej informacji na temat algorytmów transferu stylów neuronowych, zobacz Transfer stylu obrazu przy użyciu splotowych sieci neuronowych (PDF).

Kwestie wymagające rozważenia

Te zagadnienia implementują filary struktury Azure Well-Architected Framework, która jest zestawem wytycznych, które mogą służyć do poprawy jakości obciążenia. Aby uzyskać więcej informacji, zobacz Microsoft Azure Well-Architected Framework.

Efektywność wydajności

Efektywność wydajności to możliwość skalowania obciążenia w celu zaspokojenia zapotrzebowania użytkowników w wydajny sposób. Aby uzyskać więcej informacji, zobacz Omówienie filaru wydajności.

Procesor GPU a procesor CPU

W przypadku obciążeń uczenia głębokiego procesory GPU zwykle wykonują procesory poza wydajnością o znaczną ilość, do tego stopnia, że rozmiarowy klaster procesorów CPU jest zwykle potrzebny do uzyskania porównywalnej wydajności. Chociaż w tej architekturze można używać tylko procesorów CPU, procesory GPU zapewniają znacznie lepszy koszt/profil wydajności. Zalecamy używanie najnowszej serii NCv3 maszyn wirtualnych zoptymalizowanych pod kątem procesora GPU.

Procesory GPU nie są domyślnie włączone we wszystkich regionach. Upewnij się, że wybrano region z włączonymi procesorami GPU. Ponadto subskrypcje mają domyślny limit przydziału zero rdzeni dla maszyn wirtualnych zoptymalizowanych pod kątem procesora GPU. Ten limit przydziału można podnieść, otwierając wniosek o pomoc techniczną. Upewnij się, że twoja subskrypcja ma wystarczający limit przydziału, aby uruchomić obciążenie.

Równoległe między maszynami wirtualnymi a rdzeniami

Po uruchomieniu procesu transferu stylu jako zadania wsadowego zadania, zadania uruchamiane głównie na procesorach GPU muszą być zrównane między maszynami wirtualnymi. Możliwe są dwa podejścia: można utworzyć większy klaster przy użyciu maszyn wirtualnych z pojedynczym procesorem GPU lub utworzyć mniejszy klaster przy użyciu maszyn wirtualnych z wieloma procesorami GPU.

W przypadku tego obciążenia te dwie opcje mają porównywalną wydajność. Użycie mniejszej liczby maszyn wirtualnych z większą liczbą procesorów GPU na maszynę wirtualną może pomóc zmniejszyć przenoszenie danych. Jednak ilość danych na zadanie dla tego obciążenia nie jest duża, więc nie będziesz obserwować znacznej ograniczania przepustowości przez usługę Blob Storage.

Krok MPI

Podczas tworzenia potoku usługi Azure Machine Edukacja jednym z kroków używanych do wykonywania obliczeń równoległych jest krok MPI (interfejs przetwarzania komunikatów). Krok MPI pomaga równomiernie podzielić dane między dostępne węzły. Krok MPI nie jest wykonywany, dopóki wszystkie żądane węzły nie będą gotowe. Jeśli jeden węzeł zakończy się niepowodzeniem lub zostanie wywłaszczone (jeśli jest to maszyna wirtualna o niskim priorytcie), należy ponownie uruchomić krok MPI.

Zabezpieczenia

Zabezpieczenia zapewniają ochronę przed celowymi atakami i nadużyciami cennych danych i systemów. Aby uzyskać więcej informacji, zobacz Omówienie filaru zabezpieczeń. Ta sekcja zawiera zagadnienia dotyczące tworzenia bezpiecznych rozwiązań.

Ograniczanie dostępu do usługi Azure Blob Storage

W tej architekturze referencyjnej usługa Azure Blob Storage jest głównym składnikiem magazynu, który musi być chroniony. Wdrożenie punktu odniesienia pokazane w repozytorium GitHub używa kluczy konta magazynu do uzyskiwania dostępu do magazynu obiektów blob. Aby uzyskać dalszą kontrolę i ochronę, rozważ użycie sygnatury dostępu współdzielonego (SAS). Zapewnia to ograniczony dostęp do obiektów w magazynie bez konieczności kodowania kluczy konta lub zapisywania ich w postaci zwykłego tekstu. Takie podejście jest szczególnie przydatne, ponieważ klucze kont są widoczne w postaci zwykłego tekstu w interfejsie projektanta aplikacji logiki. Użycie sygnatury dostępu współdzielonego pomaga również zagwarantować, że konto magazynu ma odpowiedni nadzór i że dostęp jest udzielany tylko osobom, które mają je mieć.

W przypadku scenariuszy z bardziej poufnymi danymi upewnij się, że wszystkie klucze magazynu są chronione, ponieważ te klucze zapewniają pełny dostęp do wszystkich danych wejściowych i wyjściowych z obciążenia.

Szyfrowanie danych i przenoszenie danych

Ta architektura referencyjna używa transferu stylów jako przykładowego procesu oceniania wsadowego. W przypadku bardziej poufnych scenariuszy dane w magazynie powinny być szyfrowane w spoczynku. Za każdym razem, gdy dane są przenoszone z jednej lokalizacji do następnej, użyj protokołu Transport Layer Security (TSL), aby zabezpieczyć transfer danych. Aby uzyskać więcej informacji, zobacz Przewodnik po zabezpieczeniach usługi Azure Storage.

Zabezpieczanie obliczeń w sieci wirtualnej

Podczas wdrażania klastra obliczeniowego usługi Machine Edukacja można skonfigurować klaster do aprowizacji w podsieci sieci wirtualnej. Ta podsieć umożliwia węzłom obliczeniowym w klastrze bezpieczną komunikację z innymi maszynami wirtualnymi.

Ochrona przed złośliwym działaniem

W scenariuszach, w których istnieje wielu użytkowników, upewnij się, że poufne dane są chronione przed złośliwym działaniem. Jeśli inni użytkownicy mają dostęp do tego wdrożenia w celu dostosowania danych wejściowych, należy pamiętać o następujących środkach ostrożności i zagadnieniach:

  • Użyj kontroli dostępu opartej na rolach (RBAC) platformy Azure, aby ograniczyć dostęp użytkowników tylko do potrzebnych zasobów.
  • Aprowizuj dwa oddzielne konta magazynu. Przechowywanie danych wejściowych i wyjściowych na pierwszym koncie. Użytkownicy zewnętrzni mogą mieć dostęp do tego konta. Przechowuj skrypty wykonywalne i pliki dziennika wyjściowego na innym koncie. Użytkownicy zewnętrzni nie powinni mieć dostępu do tego konta. Ta separacja gwarantuje, że użytkownicy zewnętrzni nie mogą modyfikować żadnych plików wykonywalnych (w celu wstrzyknięcia złośliwego kodu) i nie mają dostępu do plików dziennika, które mogą przechowywać poufne informacje.
  • Złośliwi użytkownicy mogą wykonać atak DDoS na kolejkę zadań lub wstrzyknąć nieprawidłowo sformułowane komunikaty trucizny w kolejce zadań, powodując zablokowanie systemu lub usunięcie błędów w kolejce.

Optymalizacja kosztów

Optymalizacja kosztów dotyczy sposobów zmniejszenia niepotrzebnych wydatków i poprawy wydajności operacyjnej. Aby uzyskać więcej informacji, zobacz Omówienie filaru optymalizacji kosztów.

W porównaniu ze składnikami magazynu i planowania zasoby obliczeniowe używane w tej architekturze referencyjnej zdecydowanie dominują pod względem kosztów. Jednym z głównych wyzwań jest efektywne zrównoleglizowanie pracy w klastrze maszyn z obsługą procesora GPU.

Rozmiar klastra obliczeniowego usługi Azure Machine Edukacja może być automatycznie skalowany w górę i w dół w zależności od zadań w kolejce. Skalowanie automatyczne można włączyć programowo, ustawiając minimalną i maksymalną liczbę węzłów.

W przypadku pracy, która nie wymaga natychmiastowego przetwarzania, skonfiguruj skalowanie automatyczne, aby domyślny stan (minimum) był klastrem z zerowymi węzłami. W przypadku tej konfiguracji klaster zaczyna się od zera węzłów i skaluje w górę tylko wtedy, gdy wykryje zadania w kolejce. Jeśli proces oceniania wsadowego odbywa się tylko kilka razy dziennie lub mniej, to ustawienie powoduje znaczne oszczędności kosztów.

Skalowanie automatyczne może nie być odpowiednie w przypadku zadań wsadowych, które zdarzają się zbyt blisko siebie. Czas potrzebny na uruchomienie klastra i wyłączenie powoduje również poniesienie kosztów, więc jeśli obciążenie wsadowe rozpocznie się zaledwie kilka minut po zakończeniu poprzedniego zadania, może to być bardziej opłacalne, aby klaster działał między zadaniami.

Usługa Azure Machine Edukacja Compute obsługuje również maszyny wirtualne o niskim priorytcie, co umożliwia uruchamianie obliczeń na dyskontowanych maszynach wirtualnych z zastrzeżeniem, że mogą one zostać w dowolnym momencie wywłaszczone. Maszyny wirtualne o niskim priorytcie są idealne dla obciążeń oceniania wsadowego niekrytycznego.

Monitorowanie zadań wsadowych

Podczas uruchamiania zadania ważne jest, aby monitorować postęp i upewnić się, że zadanie działa zgodnie z oczekiwaniami. Jednak może to stanowić wyzwanie, aby monitorować w klastrze aktywnych węzłów.

Aby sprawdzić ogólny stan klastra, przejdź do usługi Machine Edukacja w witrynie Azure Portal, aby sprawdzić stan węzłów w klastrze. Jeśli węzeł jest nieaktywny lub zadanie nie powiodło się, dzienniki błędów są zapisywane w usłudze Blob Storage i są również dostępne w witrynie Azure Portal.

Monitorowanie można dodatkowo wzbogacić, łącząc dzienniki z usługą Application Szczegółowe informacje lub uruchamiając oddzielne procesy w celu sondowania stanu klastra i jego zadań.

Logowanie przy użyciu usługi Azure Machine Edukacja

Usługa Azure Machine Edukacja automatycznie rejestruje wszystkie stdout/stderr na skojarzonym koncie usługi Blob Storage. Jeśli nie określono inaczej, obszar roboczy usługi Azure Machine Edukacja automatycznie aprowizować konto magazynu i zrzucić do niego dzienniki. Możesz również użyć narzędzia nawigacji magazynu, takiego jak Eksplorator usługi Azure Storage, co jest łatwiejszym sposobem nawigowania po plikach dziennika.

Wdrażanie tego scenariusza

Aby wdrożyć tę architekturę referencyjną, wykonaj kroki opisane w repozytorium GitHub.

Możesz również wdrożyć architekturę oceniania wsadowego dla modeli uczenia głębokiego przy użyciu usługi Azure Kubernetes Service. Wykonaj kroki opisane w tym repozytorium GitHub.

Współautorzy

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

Główny autor:

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

Następne kroki