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

Logic Apps
Usługa Machine Learning
Kontrola dostępu na podstawie ról na platformie Azure
Storage

Ta architektura referencyjna pokazuje, jak zastosować transfer w stylu neuronowym do wideo przy użyciu usługi Azure Machine Learning. Transfer stylu to technika uczenia głębokiego, która tworzy 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 przy użyciu usługi Azure Machine Learning.

Pobierz plik programu Visio z tą architekturą.

Przepływ pracy

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

Compute

Usługa Azure Machine Learning 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 Learning Compute na potrzeby trenowania, wdrażania i oceniania modeli uczenia maszynowego.

Storage

Azure Blob Storage przechowuje wszystkie obrazy (obrazy wejściowe, obrazy stylów i obrazy wyjściowe). Usługa Azure Machine Learning integruje się z usługą Blob Storage, aby użytkownicy nie musieli ręcznie przenosić danych między platformami obliczeniowymi i magazynami obiektów blob. Usługa Blob Storage jest również opłacalna 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 Learning. 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, co ułatwia zmianę wyzwalacza.

Wstępne przetwarzanie i przetwarzanie danych po ich przetworzeniu

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

  1. Użyj narzędzia 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 narzędzia FFmpeg, aby podzielić film wideo na poszczególne ramki. 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 dołącz ponownie plik dźwiękowy do reitched materiału.

Składniki

Szczegóły rozwiązania

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

Przetwarzanie obejmuje następujące kroki:

  1. Przekaż plik wideo do 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 Learning.
  3. Potok przetwarza wideo, stosuje transfer stylów za pomocą interfejsu MPI i przetwarza wideo po przetworzeniu.
  4. Dane wyjściowe są zapisywane z powrotem w usłudze Blob Storage po zakończeniu potoku.

Potencjalne przypadki użycia

Organizacja medialna ma film wideo, którego styl chce zmienić, aby wyglądał jak konkretny obraz. Organizacja chce zastosować ten styl do wszystkich ramek 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).

Zagadnienia do rozważenia

Te zagadnienia implementują filary platformy 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 wydajności.

Procesor GPU a procesor CPU

W przypadku obciążeń uczenia głębokiego procesory GPU zwykle są wykonywane poza wydajnością przez 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 stylów jako zadania wsadowego zadania, zadania uruchamiane głównie na procesorach GPU muszą być równoległe między maszynami wirtualnymi. Możliwe są dwa podejścia: można utworzyć większy klaster przy użyciu maszyn wirtualnych z jednym 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 w zmniejszeniu przenoszenia danych. Jednak ilość danych na zadanie dla tego obciążenia nie jest duża, więc nie będziesz obserwować znacznego ograniczania przepustowości przez usługę Blob Storage.

Krok MPI

Podczas tworzenia potoku usługi Azure Machine Learning 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 Azure Blob Storage

W tej architekturze referencyjnej 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). Daje 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. Korzystanie z sygnatury dostępu współdzielonego pomaga również upewnić się, że konto magazynu ma prawidłowy 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 wrażliwych na dane scenariuszy dane w magazynie powinny być szyfrowane podczas magazynowania. 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 Learning 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 im 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ą przeprowadzić atak DDoS na kolejkę zadań lub wstrzyknąć źle sformułowane komunikaty trucizny w kolejce zadań, powodując zablokowanie systemu lub spowodowanie 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 do składników 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 równoległe wykonywanie pracy w klastrze maszyn z obsługą procesora GPU.

Rozmiar klastra obliczeniowego usługi Azure Machine Learning może automatycznie skalować w górę i w dół w zależności od zadań w kolejce. Skalowanie automatyczne można włączyć programowo, ustawiając minimalne i maksymalne węzły.

W przypadku pracy, która nie wymaga natychmiastowego przetwarzania, skonfiguruj skalowanie automatyczne, aby domyślny stan (minimum) był klastrem zerowych węzłów. Dzięki tej konfiguracji klaster rozpoczyna się od zera węzłów i skaluje się tylko w górę, gdy wykryje zadania w kolejce. Jeśli proces oceniania wsadowego występuje 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 uruchomienie go również spowoduje poniesienie kosztów, więc jeśli obciążenie wsadowe rozpocznie się zaledwie kilka minut po zakończeniu poprzedniego zadania, może być bardziej opłacalne, aby klaster działał między zadaniami.

Usługa Azure Machine Learning 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 niekrytycznych.

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 być wyzwanie, aby monitorować w klastrze aktywnych węzłów.

Aby sprawdzić ogólny stan klastra, przejdź do usługi Machine Learning w 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 Azure Portal.

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

Rejestrowanie za pomocą usługi Azure Machine Learning

Usługa Azure Machine Learning automatycznie rejestruje wszystkie stdout/stderr na skojarzonym koncie usługi Blob Storage. Jeśli nie określono inaczej, obszar roboczy usługi Azure Machine Learning 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 nawigowanie po plikach dziennika.

Wdrażanie tego scenariusza

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

Architekturę oceniania wsadowego dla modeli uczenia głębokiego można również wdrożyć przy użyciu Azure Kubernetes Service. Wykonaj kroki opisane w tym repozytorium GitHub.

Współautorzy

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

Główny autor:

Aby wyświetlić niepubliowe profile usługi LinkedIn, zaloguj się do serwisu LinkedIn.

Następne kroki