Vlastný Jupyter image¶
Vytvor, publikuj a používaj vlastný Docker image pre Kubeflow.
-
Vlastné balíky
Prispôsob prostredie svojim potrebám.
-
Reproducibilita
Rovnaké prostredie pre celý tím.
-
Výučba
Predpripravené images pre predmety.
-
Výskum
Špecifické ML knižnice a nástroje.
Dockerfile¶
Základný image¶
# NOTE: Použite Makefile alebo buildx pre správne build kroky.
ARG BASE_IMG=ghcr.io/kubeflow/kubeflow/notebook-servers/jupyter-pytorch:latest
FROM ${BASE_IMG}
USER root
ENV DEBIAN_FRONTEND=noninteractive
# 1) Systémové nástroje a knižnice
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
sudo git curl wget vim nano htop unzip \
build-essential cmake pkg-config \
libssl-dev libffi-dev libxml2-dev libxslt1-dev zlib1g-dev \
libjpeg-dev libpng-dev libtiff-dev \
libblas-dev liblapack-dev gfortran python3-dev \
libgl1 libglib2.0-0 ffmpeg graphviz \
&& rm -rf /var/lib/apt/lists/*
# 2) Passwordless sudo pre NB_USER
RUN usermod -aG sudo "${NB_USER}" \
&& echo "${NB_USER} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/99-nbuser \
&& chmod 0440 /etc/sudoers.d/99-nbuser
# 3) Základné mamba/conda balíky
RUN mamba install -y -q --freeze-installed \
numpy scipy pandas scikit-learn scikit-image seaborn \
sympy statsmodels networkx \
&& mamba clean -a -f -y
# 4) Pip balíky (ML/DL)
ENV PIP_NO_CACHE_DIR=1
ENV MPLBACKEND=Agg
RUN python -m pip install -U pip setuptools wheel \
&& python -m pip install \
matplotlib ipympl bokeh plotly \
opencv-python-headless \
xgboost lightgbm \
nltk spacy \
transformers datasets \
pytorch-lightning
# 5) Vlastné požiadavky
COPY --chown=${NB_USER}:${NB_GID} requirements.txt /tmp/requirements.txt
RUN python -m pip install -r /tmp/requirements.txt \
&& rm -f /tmp/requirements.txt
# 6) Späť na NB_USER
USER ${NB_USER}
requirements.txt¶
Build a Push¶
Makefile¶
IMAGE ?= repository.cloud.tuke.sk/ml/jupyter-pytorch-plus
TAG ?= v1.0.0
.PHONY: build push
build:
docker build -t $(IMAGE):$(TAG) .
push:
docker push $(IMAGE):$(TAG)
Príkazy¶
# Build
make build IMAGE=repository.cloud.tuke.sk/ml/jupyter-pytorch-plus TAG=v1.0.0
# Prihlásenie do registra
docker login repository.cloud.tuke.sk
# Push
make push IMAGE=repository.cloud.tuke.sk/ml/jupyter-pytorch-plus TAG=v1.0.0
Použitie v Kubeflow¶
Vytvor nový notebook¶
V Kubeflow UI prejdi na Notebooks → New Notebook.
Zadaj Custom Image¶
Do poľa Custom Image vlož:
Nastav zdroje a spusti¶
Nastav CPU, RAM a Workspace Volume, potom klikni Launch.
Čo image obsahuje¶
Systémové knižnice (APT)¶
| Balík | Účel |
|---|---|
| build-essential, cmake | Kompilácia Python balíkov |
| libjpeg, libpng, libtiff | Spracovanie obrazu |
| ffmpeg | Audio/video, OpenCV |
| graphviz | Grafy, DAG vizualizácie |
Conda/Mamba balíky¶
| Balík | Účel |
|---|---|
| numpy, scipy, pandas | Numerické výpočty |
| scikit-learn, scikit-image | Strojové učenie |
| seaborn, sympy, statsmodels | Vizualizácia, štatistika |
| networkx | Grafové algoritmy |
Pip balíky (ML/DL)¶
| Balík | Účel |
|---|---|
| matplotlib, bokeh, plotly | Vizualizácia |
| opencv-python-headless | Počítačové videnie |
| xgboost, lightgbm | Gradient boosting |
| nltk, spacy | NLP |
| transformers, datasets | Hugging Face ekosystém |
| pytorch-lightning | PyTorch wrapper |
Odporúčania z praxe¶
Best practices
- Pinuj verzie – najmä PyTorch, CUDA, HF transformers
- Nesťahuj modely v build fáze – zväčšujú image
- Používaj CHANGELOG a verzie typu
v1.0.0 - Nepoužívaj
:latestv produkcii - Často meniace sa veci dávaj nižšie v Dockerfile
Kontrola po nasadení¶
python -c "import torch, transformers, sklearn, cv2; \
print('Torch:', torch.__version__); \
print('Transformers:', transformers.__version__); \
print('cv2:', cv2.__version__)"
python -c "import kfp; print('KFP:', kfp.__version__)"
jupyter labextension list
Code-server image (VS Code)¶
Pre VS Code v prehliadači vytvor podobný image s code-server:
IMAGE ?= repository.cloud.tuke.sk/dev/codeserver
TAG ?= v1.0.0
build:
docker build -t $(IMAGE):$(TAG) .
push:
docker push $(IMAGE):$(TAG)
Lokálny test¶
docker run --rm -p 8888:8888 \
-e PASSWORD='silne-heslo' \
repository.cloud.tuke.sk/dev/codeserver:v1.0.0 \
code-server --bind-addr 0.0.0.0:8888 --auth password /home/jovyan