Table of Contents
Laboratorium 10 + 11: platforma Ray
Ray to zaimplementowana w języku Python platforma do tworzenia i zarządzania rozproszonymi i skalowalnymi aplikacjami.
Platforma Ray wspiera programowanie równoległe i asynchroniczne, dzięki czemu może być wykorzystywana do budowania zaawansowanych aplikacji związanych z uczeniem maszynowym, przetwarzaniem danych oraz symulacjami.
Więcej informacji: Ray
Podobnie jak Spark, Ray umożliwia rozproszenie zadań pomiędzy węzły obliczeniowe. Na laboratorium będziemy używać Ray w trybie podobnym do Spark Standalone.
1. Budowa obrazów Dockera
Zbudujemy dwa obrazy:
ray-data-mining
- instalacja Ray oraz podstawowych bibliotek uczenia maszynowego dla węzłów obliczeniowychray-jupyter
- obraz dla drivera zawierający jupyter-lab i klika użytecznych bibliotek
Jeżeli nie chcesz uruchamiać w Dockerze, możesz poprostu zainstalować ray[air] oraz jupyter-lab
Pobierz archiwum ray.zip
Pliki są rozmieszczone w katalogach, jak na poniższym diagramie
|-ray-data-mining-+ | | Dockerfile | |-ray-jupyter-----+ | | Dockerfile | | ray-lab.ipynb | | twitter_training.csv | | twitter_validation.csv |
1.1 Obraz ray-data-mining
1. Przejdź do katalogu ray-data-mining
zawierającego poniższy plik Dockerfile
.
# image: ray-data-mining FROM ubuntu:22.04 USER root RUN set -ex; RUN apt-get update RUN apt-get install -y sudo python3 python3-pip RUN pip3 cache purge RUN pip3 install numpy RUN pip3 install scikit-learn RUN pip3 install scipy RUN pip3 install pandas RUN pip3 install matplotlib RUN pip3 install ray[air] RUN pip3 install py_spy RUN rm -rf /var/lib/apt/lists/*
2. Wydaj komendę:
docker build -f Dockerfile --tag ray-data-mining .
1.2 Obraz ray-jupyter
1. Przejdź do katalogu ray-jupyter
zawierającego poniższy plik Dockerfile
.
# image: ray-jupyter FROM ray-data-mining USER root RUN pip3 install matplotlib RUN pip3 install seaborn RUN pip3 install jupyterlab RUN pip3 install ipywidgets tqdm RUN useradd -m -g users ray && \ echo "ray ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ray && \ chmod 0440 /etc/sudoers.d/ray USER ray WORKDIR /home/ray/notebooks
2. Wydaj komendę:
docker build -f Dockerfile --tag ray-jupyter .
2. Uruchomienie jupyter-lab
1. Przejdź do katalogu ray-jupyter
i wydaj polecenie
docker run -it --rm -v ".:/home/ray/notebooks" -p 9888:8888 -p 8265:8265 -p 8000:8000 --shm-size=4gb ray-jupyter /bin/bash
Porty:
- 9888 jest zarezerwowany dla jupyter-lab
- 8265 dla Ray Dashboard
- 8000 dla mikroserwisów
Ray intensywnie korzysta z dzielonej pamięci przechowując w niej obiekty w środowisku rozproszonym. Rozwiązanie oparte jest na bibliotekach arrow i rozszerzeniu Plasma. Stąd opcja dla dzielonej pamięci –shm-size=4gb
. W razie potrzeby można ten rozmiar zmniejszyć, np. do 2gb.
2. W terminalu bash kontenera wydaj polecenie uruchamiające jupyter-lab
sudo --preserve-env jupyter-lab --ip=0.0.0.0 --allow-root --IdentityProvider.token='ray'
3. Otwórz link http://localhost:9888/?token=ray w oknie przeglądarki i załaduj notatnik ray_lab.ipynb