====== 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: [[https://www.ray.io/|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 obliczeniowych * ''ray-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 {{ :ed:ray.zip |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 [[https://arrow.apache.org/|arrow]] i rozszerzeniu [[https://docs.ray.io/en/latest/ray-core/objects/serialization.html#plasma-store|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'' ===== 3. Wykonaj zadania w notatniku =====