10 receptur wiersza poleceń dla głębokiego uczenia się w Amazon Web Services

10 receptur wiersza poleceń dla głębokiego uczenia się w Amazon Web Services

Prowadzenie dużych procesów uczenia głębokiego w Amazon Web Services EC2 to tani i skuteczny sposób uczenia się i rozwijania modeli.

Za zaledwie kilka dolarów możesz uzyskać dostęp do dziesiątek gigabajtów pamięci RAM, dziesiątek rdzeni procesora i wielu procesorów graficznych. Gorąco polecam.

Jeśli nie znasz jeszcze EC2 lub wiersza poleceń Linuksa, istnieje zestaw poleceń, które okażą się nieocenione podczas uruchamiania skryptów głębokiego uczenia się w chmurze.

W tym samouczku odkryjesz moją prywatną listę 10 poleceń, których używam za każdym razem, gdy używam EC2 do dopasowania dużych modeli uczenia głębokiego.

Po przeczytaniu tego posta będziesz wiedział:

  • Jak kopiować dane do iz instancji EC2.
  • Jak skonfigurować skrypty tak, aby działały bezpiecznie przez dni, tygodnie lub miesiące.
  • Jak monitorować procesy, system i wydajność GPU.

Rozpocznij swój projekt z moją nową książką Deep Learning With Python, w tym samouczki krok po kroku i Kod źródłowy Pythona pliki dla wszystkich przykładów.

Zacznijmy.

Uwaga: Wszystkie polecenia wykonywane z Twojej stacji roboczej zakładają, że pracujesz w środowisku typu Linux (np. Linux, OS X lub cygwin).

Czy masz jakieś inne wskazówki, triki lub ulubione polecenia dotyczące uruchamiania modeli na EC2?
Daj mi znać w komentarzach poniżej.

10 receptur wiersza poleceń dla głębokiego uczenia się w Amazon Web Services

10 receptur wiersza poleceń dla głębokiego uczenia się w Amazon Web Services
Zdjęcie autorstwa chascar, niektóre prawa zastrzeżone.

Przegląd

Polecenia przedstawione w tym poście zakładają, że Twoja instancja AWS EC2 już działa.

Aby zachować spójność, przyjęto kilka innych założeń:

  • Twój adres IP serwera to 54.218.86.47; zmień to na adres IP Twojej instancji serwera.
  • Twoja nazwa użytkownika to ec2-user; zmień to na swoją nazwę użytkownika w swojej instancji.
  • Twój klucz SSH znajduje się w ~ / .ssh / i ma nazwę pliku aws-keypair.pem; zmień to na lokalizację klucza SSH i nazwę pliku.
  • Pracujesz ze skryptami Pythona.

Jeśli potrzebujesz pomocy w konfiguracji i obsłudze instancji AWS EC2 opartej na GPU do głębokiego uczenia się, zobacz samouczek:

1. Zaloguj się ze swojej stacji roboczej do serwera

Musisz zalogować się do serwera, zanim będziesz mógł zrobić cokolwiek pożytecznego.

Możesz łatwo zalogować się za pomocą bezpiecznej powłoki SSH.

Zalecam przechowywanie klucza SSH w pliku ~ / .ssh / katalog z użyteczną nazwą. Używam tego imienia aws-keypair.pem. Pamiętaj: plik musi mieć uprawnienia 600.

Następujące polecenie spowoduje zalogowanie się do instancji serwera. Pamiętaj, aby zmienić nazwę użytkownika i adres IP na odpowiednią nazwę użytkownika i adres IP instancji serwera.

2. Skopiuj pliki ze stacji roboczej na serwer

Kopiujesz pliki ze stacji roboczej do instancji serwera przy użyciu bezpiecznej kopii (scp).

Poniższy przykład, uruchomiony na Twojej stacji roboczej, skopiuje plik script.py Skrypt w języku Python w katalogu lokalnym na stacji roboczej do instancji serwera.

3. Uruchom skrypt jako proces w tle na serwerze

Możesz uruchomić skrypt Pythona jako proces w tle.

Co więcej, możesz go uruchomić w taki sposób, aby ignorował sygnały z innych procesów, ignorował wszelkie standardowe wejście (stdin) i przekazywał wszystkie dane wyjściowe i błędy do pliku dziennika.

Z mojego doświadczenia wynika, że ​​wszystko to jest wymagane w przypadku długotrwałych skryptów dopasowujących duże modele uczenia głębokiego.

Zakłada się, że korzystasz z script.py Skrypt Pythona znajdujący się w / home / ec2-user / katalogu i chcesz, aby dane wyjściowe tego skryptu były przekazywane do pliku script.py.log znajduje się w tym samym katalogu.

Dostosuj się do swoich potrzeb.

Jeśli to Twoje pierwsze doświadczenie z nohupem, możesz dowiedzieć się więcej tutaj:

Jeśli jest to Twoje pierwsze doświadczenie z przekierowywaniem standardowego wejścia (stdin), standardowego wyjścia (stout) i standardowego błędu (sterr), możesz dowiedzieć się więcej tutaj:

4. Uruchom skrypt na określonym GPU na serwerze

Zalecam uruchamianie wielu skryptów w tym samym czasie, jeśli Twoja instancja AWS EC2 może sobie z tym poradzić.

Na przykład wybrana instancja EC2 może mieć 4 procesory graficzne i możesz wybrać uruchomienie jednego skryptu na każdym.

Dzięki CUDA możesz określić, które urządzenie GPU ma być używane ze zmienną środowiskową CUDA_VISIBLE_DEVICES.

Możemy użyć tego samego polecenia powyżej, aby uruchomić skrypt i określić konkretne urządzenie GPU do użycia w następujący sposób:

Jeśli masz 4 urządzenia GPU w swojej instancji, możesz określić CUDA_VISIBLE_DEVICES = 0 do CUDA_VISIBLE_DEVICES = 3.

Spodziewam się, że to zadziała w przypadku zaplecza Theano, ale przetestowałem to tylko z zapleczem TensorFlow dla Keras.

Możesz dowiedzieć się więcej o CUDA_VISIBLE_DEVICES w poście:

5. Monitoruj dane wyjściowe skryptu na serwerze

Możesz monitorować wyjście skryptu, gdy jest uruchomiony.

Może to być przydatne, jeśli wyprowadzasz wynik w każdej epoce lub po każdym przebiegu algorytmu.

Ten przykład wyświetli listę ostatnich kilku wierszy pliku dziennika skryptu i zaktualizuje dane wyjściowe w miarę dodawania nowych wierszy do skryptu.

Amazon może agresywnie zamknąć twój terminal, jeśli przez jakiś czas na ekranie nie pojawi się nowy wynik.

Alternatywą jest użycie polecenia watch. Odkryłem, że Amazon pozostawi ten terminal otwarty:

Zauważyłem, że standardowe (stout) ze skryptów Pythona nie wydają się być często aktualizowane.

Nie wiem, czy to jest rzecz EC2, czy Python. Oznacza to, że dane wyjściowe w dzienniku mogą nie być często aktualizowane. Wydaje się, że jest buforowany i wyprowadzany, gdy bufor osiąga stałe rozmiary lub pod koniec przebiegu.

Czy wiesz więcej na ten temat?
Daj mi znać w komentarzach poniżej.

6. Monitorować wydajność systemu i procesów na serwerze

Warto monitorować wydajność systemu EC2. Zwłaszcza ilość pamięci RAM, której używasz i którą zostawiłeś.

Możesz to zrobić za pomocą górnego polecenia, które będzie aktualizowane co kilka sekund.

Możesz także monitorować system i sam proces, jeśli znasz jego identyfikator procesu (PID).

7. Monitoruj wydajność GPU na serwerze

Warto mieć oko na wydajność GPU.

Ponownie, miej oko na wykorzystanie GPU, na którym działają GPU, jeśli planujesz uruchamiać wiele skryptów równolegle i przy użyciu pamięci RAM GPU.

Możesz użyć nvidia-smi polecenie, aby mieć oko na użycie GPU. Lubię używać zegarek polecenie, które utrzymuje terminal otwarty i czyści ekran po każdym nowym wyniku.

8. Sprawdź, które skrypty nadal działają na serwerze

Ważne jest również, aby mieć oko na to, które skrypty są nadal uruchomione.

Możesz to zrobić za pomocą ps Komenda.

Ponownie lubię używać polecenia watch, aby terminal był otwarty.

9. Edytuj plik na serwerze

Nie radzę edytować plików na serwerze, chyba że naprawdę musisz.

Niemniej jednak możesz edytować plik na miejscu za pomocą rozszerzenia vi redaktor.

Poniższy przykład otworzy twój skrypt w vi.

Oczywiście możesz użyć swojego ulubionego edytora wiersza poleceń, takiego jak emacs; ta uwaga jest naprawdę dla Ciebie, jeśli nie znasz wiersza poleceń systemu Unix.

Jeśli jest to Twoja pierwsza ekspozycja na vi, możesz dowiedzieć się więcej tutaj:

10. Ze stacji roboczej Pobierz pliki z serwera

Zalecam jawne zapisanie modelu i wszelkich wyników oraz wykresów w nowych i oddzielnych plikach jako część skryptu.

Możesz pobrać te pliki z instancji serwera na swoją stację roboczą przy użyciu bezpiecznej kopii (scp).

Poniższy przykład jest uruchamiany z Twojej stacji roboczej i skopiuje wszystkie pliki PNG z Twojego katalogu domowego na Twoją stację roboczą.

Dodatkowe porady i wskazówki

Ta sekcja zawiera dodatkowe wskazówki dotyczące intensywnej pracy z AWS EC2.

  • Uruchamiaj wiele skryptów jednocześnie. Zalecam wybranie sprzętu, który ma wiele procesorów graficznych i uruchamia wiele skryptów naraz, aby w pełni wykorzystać platformę.
  • Pisz i edytuj skrypty tylko na swojej stacji roboczej. Traktuj EC2 jako środowisko pseudo-produkcyjne i kopiuj tam tylko skrypty i dane, aby je uruchomić. Wykonuj cały program na swojej stacji roboczej i pisz małe testy swojego kodu, aby upewnić się, że będzie działał zgodnie z oczekiwaniami.
  • Zapisz wyniki skryptu jawnie do pliku. Zapisz wyniki, wykresy i modele w plikach, które można później pobrać na stację roboczą w celu analizy i zastosowania.
  • Użyj polecenia watch. Amazon agresywnie zabija sesje terminala, które nie są aktywne. Możesz mieć oko na rzeczy za pomocą polecenia watch, które wysyła dane wystarczająco często, aby terminal był otwarty.
  • Uruchamiaj polecenia ze swojej stacji roboczej. Każde z poleceń wymienionych powyżej, które ma być uruchomione na serwerze, można również uruchomić ze stacji roboczej, poprzedzając polecenie przedrostkiem „ssh -ja ~ / .ssh /aws-keypair.pem [email protected]”I cytując polecenie, które chcesz uruchomić. Może to być przydatne do sprawdzania procesów w ciągu dnia.

Podsumowanie

W tym samouczku odkryłeś 10 poleceń, których używam za każdym razem, gdy trenuję duże modele głębokiego uczenia na wystąpieniach AWS EC2 z procesorami graficznymi.

W szczególności nauczyłeś się:

  • Jak kopiować dane do iz instancji EC2.
  • Jak skonfigurować skrypty tak, aby działały bezpiecznie przez dni, tygodnie lub miesiące.
  • Jak monitorować procesy, system i wydajność GPU.

Czy masz jakieś pytania?
Zadaj pytania w komentarzach poniżej, a ja postaram się odpowiedzieć.

Twórz projekty uczenia głębokiego w Pythonie!

Głębokie uczenie z Pythonem

Co by było, gdybyś mógł stworzyć sieć w kilka minut

... za pomocą zaledwie kilku linijek języka Python

Dowiedz się, jak w moim nowym ebooku:
Głębokie uczenie się w Pythonie

Obejmuje kompleksowe projekty na tematy takie jak:
Perceptrony wielowarstwowe, Sieci splotowe i Powtarzające się sieci neuronowe, i więcej...

Wreszcie przynieś głębokie uczenie się
Twoje własne projekty

Pomiń akademików. Tylko wyniki.

Zobacz, co jest w środku

Możesz być również zainteresowany