Zwiększanie pamięci w ustawieniach GCP AI Notebook JupyterLab
Jako regularny użytkownik Jupytera, możesz napotkać błędy braku pamięci (out-of-memory errors). W JupyterLab nie są one łatwe do zauważenia, co może powodować wiele problemów. Ten artykuł pokazuje, jak zauważyć i rozwiązać ten problem.
Jupyter (w formie JupyterLab lub AI Notebook w Google Cloud Platform) i Python (z pakietami takimi jak pandas i scikit-learn) to duet często używany przez Data Scientists, Data Engineers i Analityków. Jego największe zalety to łatwość konfiguracji, odtwarzalność i użycie plug-and-play. W niektórych przypadkach ta konfiguracja może powodować problemy, a konkretnie błędy braku pamięci. Kiedy ten problem się pojawia?
JupyterLab (lub AI Notebook) w GCP domyślnie ma ustawione maksymalnie 3.2GB pamięci. Jeśli ilość danych załadowanych do pamięci (czyli RAM) jest duża, Jupyter Kernel "umrze". Przez "umarcie" rozumiemy zakończenie jego procesu, a w rezultacie utratę wszystkich danych i zmiennych, które zostały obliczone i zapisane w pamięci. To powoduje wiele problemów: wymusza ponowne przeliczenie całego notebooka, co może zająć dużo czasu, zanim spróbujemy innego sposobu obliczeń. Na szczęście mamy na to rozwiązanie. Możesz również odwiedzić naszą stronę Cloud Computing Consulting Services, aby dowiedzieć się, jak możemy pomóc Twojej firmie.
Jak zidentyfikować, że Jupyter ma błąd braku pamięci i kernel umiera?
Domyślnie Jupyter nie loguje wszystkich wykonań. Z mojego doświadczenia wynika, że skonfigurowanie odpowiedniego logowania wymaga początkowej pracy podczas konfiguracji instancji, a większość razy te logi nie są przez nas używane. W tym scenariuszu polegamy na zachowaniu i komunikatach Jupytera.
Używając tradycyjnej instancji Jupytera, tj. Jupyter Notebook (używanego również jako JupyterHub), problem jest łatwiejszy do zidentyfikowania. Zobaczymy wyskakujący komunikat o następującej treści: "Kernel restarting: The kernel appears to have died. It will restart automatically."
W przypadku JupyterLab identyfikacja jest nieco trudniejsza. Zobaczymy, że kernel jest zajęty (wyświetlany jako "pełne kółko" w prawym górnym rogu interfejsu notebooka), a po pewnym czasie, bez odpowiedzi, kernel pojawi się jako bezczynny (puste kółko). Komórka, którą wykonaliśmy, nie będzie miała numeru wyjściowego ani wyjścia, a podczas wykonywania dalszych komórek zobaczymy, że straciliśmy wszystkie zmienne, które utworzyliśmy i obliczyliśmy wcześniej. To wskazuje, że kernel umarł.
Jeśli importujesz duże ilości danych (w naszym przypadku było to ponad 500MB), możesz spodziewać się tego błędu. Oto rozwiązanie tego problemu.
Zwiększanie pamięci w Jupyter, a tym samym rozwiązywanie problemu
Aby zwiększyć dostępną pamięć dla Jupytera, przede wszystkim upewnij się, że masz odpowiednią ilość pamięci w swojej maszynie. W GCP jest to dość łatwe za pośrednictwem strony AI Notebooks, wybierając odpowiedni typ maszyny.
Po upewnieniu się, że masz odpowiednią ilość pamięci, otwórz instancję Jupytera i otwórz okno Terminal.
Wprowadź i zatwierdź następujące polecenie:
bash
sudo nano /opt/deeplearning/metadata/jupyter_service_account.json
To otworzy edytor tekstu ustawień Jupytera jako usługi (Jupyter w GCP AI Notebooks jest zainstalowany jako usługa na maszynie wirtualnej). Linie, które nas interesują, to dwie czerwone pogrubione, czyli MemoryHigh i MemoryMax.
Domyślne wartości pamięci w Jupyter wynoszą około 3.2GB w bajtach. Aby obliczyć ilość GB, którą potrzebujesz w bajtach, musisz pomnożyć żądaną ilość przez 1073741824. Na przykład, jeśli chcesz ustawić ją na 16GB, Twoja wartość do ustawienia to 17179869184.
Zastąp MemoryHigh i MemoryMax obliczoną wartością. Wyjdź z edytora, upewniając się, że zapisałeś zmiany.
Następnie uruchom ponownie usługę Jupytera, wprowadzając następujące polecenie:
bash
sudo systemctl restart jupyter.service
i na koniec uruchom ponownie maszynę (przejdź do AI Notebooks w GCP i wyłącz, a następnie uruchom instancję AI Notebook).
Voila, wszystko gotowe. Ilość dostępnej pamięci dla Jupytera powinna być teraz większa i powinieneś być wolny od problemów z pamięcią.
Microsoft azure a google cloud platform
Hybrid cloud co to jest i jak dziala
Cloud vs tradycyjne it przewaga