V tomto článku vytvoříme kontejner Docker pro vývojové prostředí Machine Learning (ML). Tento obrázek je docela užitečný, pokud vyvíjíte modely ML nebo potřebujete předkonfigurovaný notebook Jupyter s některými z nejužitečnějších knihoven.
Nedávno jsme publikovali článek Rychlý a jednoduchý úvod do Kubernetes Helm Charts za 10 minut, kde najdete pokyny, jak pomocí Helm nasadit tento kontejner do vašeho clusteru Kubernetes.
Aktualizace pro rok 2020
- Upgradováno na Python 3.6.
- Opraveno mnoho problémů se sestavením.
Naposledy jsme vytvořili kontejner Docker s Jupiter, Keras, Tensorflow, Pandas, Sklearn a Matplotlib. Najednou jsem pochopil, že mi chybí OpenCV pro manipulaci s obrázky a videem v Dockeru. No, strávil jsem celý den přípravou nového image buildu. A v tomto článku vám ukážu, jak to udělat mnohem rychleji pomocí oficiálního Docker Image Anaconda.
Existují dva způsoby, jak to udělat.
Jednoduchý způsob
Tento proces trvá přibližně 7 minut, než se vytvoří kontejner o velikosti 3,11 Gb.
Anaconda way
Když jsem v roce 2018 začal hrát s ML, byla Anaconda super rychlý a nejjednodušší způsob, jak vytvořit kontejner Docker pro experimenty s ML. Kompilace OpenCV 3 pro Ubuntu 16.04 byla mnohem rychlejší. Dnes je to naopak.
Používám stejné zdroje, ale měním Dockerfile
.
Tady to vypadá:
FROM continuumio/anaconda3
MAINTAINER "Andrei Maksimov"
RUN apt-get update && apt-get install -y libgtk2.0-dev && \
rm -rf /var/lib/apt/lists/*
RUN /opt/conda/bin/conda update -n base -c defaults conda && \
/opt/conda/bin/conda install python=3.6 && \
/opt/conda/bin/conda install anaconda-client && \
/opt/conda/bin/conda install jupyter -y && \
/opt/conda/bin/conda install --channel https://conda.anaconda.org/menpo opencv3 -y && \
/opt/conda/bin/conda install numpy pandas scikit-learn matplotlib seaborn pyyaml h5py keras -y && \
/opt/conda/bin/conda upgrade dask && \
pip install tensorflow imutils
RUN ["mkdir", "notebooks"]
COPY conf/.jupyter /root/.jupyter
COPY run_jupyter.sh /
# Jupyter and Tensorboard ports
EXPOSE 8888 6006
# Store notebooks in this mounted directory
VOLUME /notebooks
CMD ["/run_jupyter.sh"]
Jak můžete vidět, instalujeme pouze libgtk2.0 pro podporu OpenCV a všechny ostatní komponenty jako Terraform, Pandas, Scikit-learn, Matplotlib, Keras a další pomocí správce balíčků conda.
Spuštěný kontejner
Nyní máte funkční nádobu a je čas ji spustit. Vytvořte složku ve složce vašeho projektu, kam budeme ukládat všechny naše Jupyter Noteboo se zdrojovým kódem našich projektů:
mkdir notebooks
A spusťte kontejner pomocí následujícího příkazu:
docker run -it -p 8888:8888 -p 6006:6006 \
-d -v $(pwd)/notebooks:/notebooks \
python_data_science_container:anaconda
Spustí kontejner a zobrazí Jupyter na portu 8888
a Tensorflow Dashboard na portu 6006
na vašem místním počítači nebo serveru v závislosti na tom, kde jste tento příkaz spustili.
Pokud nechcete vytvářet a udržovat svůj vlastní kontejner, neváhejte použít můj osobní kontejner:
docker run -it -p 8888:8888 -p 6006:6006 -d -v \
$(pwd)/notebooks:/notebooks amaksimov/python_data_science:anaconda
Instalace dalších balíčků
Jakmile spustíte Jupyter, některé balíčky vám mohou chybět a je to v pořádku. Neváhejte a spusťte následující příkaz v buňce svého notebooku Jupyter:
!pip install requests
Nebo pro conda:
!conda install scipy
Doufám, že tento článek byl pro vás užitečný. Pokud ano, dejte like nebo repost. Uvidíme se brzy!
Přehled
Použití Anacondy jako základního obrazu ztěžuje váš obraz Dockeru. Myslím OPRAVDU těžký.
Například:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
amaksimov/python_data_science anaconda 7021f28dfba1 29 minutes ago 6.36GB
amaksimov/python_data_science latest 3330c8eaec1c 2 hours ago 3.11GB
Instalace všech komponent uvnitř bitové kopie kontejneru Ubuntu 20.04 LTS včetně OpenCV 3 trvá přibližně 7 minut a finální obrázek přibližně 3,11 Gb.
Zároveň proces vytváření kontejneru Anaconda3 trvá x2krát déle a poskytuje vám x2krát větší obraz (~6,36 Gb). Proces budování je mnohem složitější, než tomu bylo v roce 2018 a chvíli mi trvalo, než jsem konfiguraci aktualizoval do funkčního stavu.
Doufáme, že vám tento článek pomohl. Pokud ano, pomozte nám to rozšířit do světa!