Preskočiť na obsah

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

# Kubeflow Pipelines SDK
kfp==2.11.0

# JupyterLab rozšírenia
jupyterlab-git==0.50.2

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ž:

repository.cloud.tuke.sk/ml/jupyter-pytorch-plus:v1.0.0

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 :latest v 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

Ďalšie kroky

  • Vytvorenie notebooku


    Spusti notebook s vlastným image.

    Návod

  • FAQ


    Časté otázky o ML TUKE.

    FAQ