Veuillez noter que la guerre du cadre d'apprentissage en deep est terminée, ce projet n'est plus entretenu.
Deepo est un cadre ouvert pour assembler des images Docker spécialisées pour la recherche sur l'apprentissage en profondeur sans douleur. Il fournit un «ensemble LEGO» de dizaines de composants standard pour préparer des outils d'apprentissage en profondeur et un cadre pour les assembler en images Docker personnalisées.
Au cœur de Deepo se trouve un générateur Dockerfile qui
Nous préparons également une série d'images docker prédéfinies
docker pull ufoym/deepo Pour les utilisateurs en Chine qui peuvent souffrir de vitesses lentes lors du tir de l'image du registre public Docker, vous pouvez tirer des images deepo du Mirror du Registre de Chine en spécifiant le chemin complet, y compris le registre, dans votre commande Docker Pull, par exemple:
docker pull registry.docker-cn.com/ufoym/deepoVous pouvez maintenant essayer cette commande:
docker run --gpus all --rm ufoym/deepo nvidia-smiCela devrait fonctionner et permet à Deepo d'utiliser le GPU à l'intérieur d'un conteneur Docker. Si cela ne fonctionne pas, recherchez la section des problèmes sur le github nvidia-docker - de nombreuses solutions sont déjà documentées. Pour obtenir un shell interactif dans un conteneur qui ne sera pas automatiquement supprimé après avoir quitté
docker run --gpus all -it ufoym/deepo bashSi vous souhaitez partager vos données et configurations entre l'hôte (votre machine ou machine virtuelle) et le conteneur dans lequel vous utilisez Deepo, utilisez l'option -v, par exemple
docker run --gpus all -it -v /host/data:/data -v /host/config:/config ufoym/deepo bash Cela fera /host/data de l'hôte visible en AS /data dans le conteneur, et /host/config as /config . Une telle isolation réduit les chances que vos expériences conteneurisées écrasent ou utilisent de mauvaises données.
Veuillez noter que certains frameworks (par exemple pytorch) utilisent la mémoire partagée pour partager les données entre les processus, donc si le multiprocessement est utilisé, la taille de segment de mémoire partagée par défaut avec laquelle le conteneur s'exécute n'est pas suffisant, et vous devez augmenter la taille de la mémoire partagée avec --ipc=host ou --shm-size lignes de ligne de commande pour docker run .
docker run --gpus all -it --ipc=host ufoym/deepo bashdocker pull ufoym/deepo:cpuVous pouvez maintenant essayer cette commande:
docker run -it ufoym/deepo:cpu bashSi vous souhaitez partager vos données et configurations entre l'hôte (votre machine ou machine virtuelle) et le conteneur dans lequel vous utilisez Deepo, utilisez l'option -v, par exemple
docker run -it -v /host/data:/data -v /host/config:/config ufoym/deepo:cpu bash Cela fera /host/data de l'hôte visible en AS /data dans le conteneur, et /host/config as /config . Une telle isolation réduit les chances que vos expériences conteneurisées écrasent ou utilisent de mauvaises données.
Veuillez noter que certains frameworks (par exemple pytorch) utilisent la mémoire partagée pour partager les données entre les processus, donc si le multiprocessement est utilisé, la taille de segment de mémoire partagée par défaut avec laquelle le conteneur s'exécute n'est pas suffisant, et vous devez augmenter la taille de la mémoire partagée avec --ipc=host ou --shm-size lignes de ligne de commande pour docker run .
docker run -it --ipc=host ufoym/deepo:cpu bashVous êtes maintenant prêt à commencer votre voyage.
$ python
> >> import tensorflow
> >> import sonnet
> >> import torch
> >> import keras
> >> import mxnet
> >> import cntk
> >> import chainer
> >> import theano
> >> import lasagne
> >> import caffe
> >> import paddle $ caffe --version
caffe version 1.0.0
$ darknet
usage: darknet <function>
Notez que docker pull ufoym/deepo mentionné dans Quick Start vous donnera une image standard contenant tous les frameworks d'apprentissage en profondeur disponibles. Vous pouvez également personnaliser votre propre environnement.
Si vous préférez un framework spécifique plutôt qu'une image tout-en-un, ajoutez simplement une balise avec le nom du framework. Prenez TensorFlow par exemple:
docker pull ufoym/deepo:tensorflowdocker pull ufoym/deepodocker run --gpus all -it -p 8888:8888 -v /home/u:/root --ipc=host ufoym/deepo jupyter lab --no-browser --ip=0.0.0.0 --allow-root --LabApp.allow_origin= ' * ' --LabApp.root_dir= ' /root ' git clone https://github.com/ufoym/deepo.git
cd deepo/generator Par exemple, si vous aimez pytorch et lasagne , alors
python generate.py Dockerfile pytorch lasagneou avec Cuda 11.1 et Cudnn 8
python generate.py Dockerfile pytorch lasagne --cuda-ver 11.1 --cudnn-ver 8 Cela devrait générer un dockerfile qui contient tout pour la construction pytorch et lasagne . Notez que le générateur peut gérer le traitement automatique des dépendances et trier topologiquement les listes. Vous n'avez donc pas à vous soucier des dépendances manquantes et de l'ordre de liste.
Vous pouvez également spécifier la version de Python:
python generate.py Dockerfile pytorch lasagne python==3.6docker build -t my/deepo .Cela peut prendre plusieurs minutes car il compile quelques bibliothèques à partir de zéro.
| . | d'apprentissage en profondeur moderne | DL-Docker | jupyter-profondeur | Deepo |
|---|---|---|---|---|
| ubuntu | 16.04 | 14.04 | 14.04 | 18.04 |
| cuda | X | 8.0 | 6.5-8.0 | 8.0-10.2 / Aucun |
| bouton | X | v5 | V2-5 | v7 |
| onnx | X | X | X | O |
| Theano | X | O | O | O |
| tensorflow | O | O | O | O |
| sonnet | X | X | X | O |
| pytorch | X | X | X | O |
| kéras | O | O | O | O |
| lasagnes | X | O | O | O |
| mxnet | X | X | X | O |
| cntk | X | X | X | O |
| chaîne-chaîne | X | X | X | O |
| caffe | O | O | O | O |
| Caffe2 | X | X | X | O |
| torche | X | O | O | O |
| darknet | X | X | X | O |
| palette | X | X | X | O |
| . | Cuda 11.3 / Python 3.8 | CPU uniquement / Python 3.8 |
|---|---|---|
| tout-en-un | latest all all-py38 py38-cu113 all-py38-cu113 | all-py38-cpu all-cpu py38-cpu cpu |
| Tensorflow | tensorflow-py38-cu113 tensorflow-py38 tensorflow | tensorflow-py38-cpu tensorflow-cpu |
| Pytorch | pytorch-py38-cu113 pytorch-py38 pytorch | pytorch-py38-cpu pytorch-cpu |
| Kéras | keras-py38-cu113 keras-py38 keras | keras-py38-cpu keras-cpu |
| Mxnet | mxnet-py38-cu113 mxnet-py38 mxnet | mxnet-py38-cpu mxnet-cpu |
| Chaîne-chaîne | chainer-py38-cu113 chainer-py38 chainer | chainer-py38-cpu chainer-cpu |
| Darknet | darknet-cu113 darknet | darknet-cpu |
| palette | paddle paddle-cu113 | paddle-cpu |
| . | CUDA 11.3 / Python 3.6 | CUDA 11.1 / Python 3.6 | CUDA 10.1 / Python 3.6 | CUDA 10.0 / Python 3.6 | CUDA 9.0 / Python 3.6 | CUDA 9.0 / Python 2.7 | CPU uniquement / Python 3.6 | CPU uniquement / Python 2.7 |
|---|---|---|---|---|---|---|---|---|
| tout-en-un | py36-cu113 all-py36-cu113 | py36-cu111 all-py36-cu111 | py36-cu101 all-py36-cu101 | py36-cu100 all-py36-cu100 | py36-cu90 all-py36-cu90 | all-py27-cu90 all-py27 py27-cu90 | all-py27-cpu py27-cpu | |
| tout-en-un avec Jupyter | all-jupyter-py36-cu90 | all-py27-jupyter py27-jupyter | all-py27-jupyter-cpu py27-jupyter-cpu | |||||
| Theano | theano-py36-cu113 | theano-py36-cu111 | theano-py36-cu101 | theano-py36-cu100 | theano-py36-cu90 | theano-py27-cu90 theano-py27 | theano-py27-cpu | |
| Tensorflow | tensorflow-py36-cu113 | tensorflow-py36-cu111 | tensorflow-py36-cu101 | tensorflow-py36-cu100 | tensorflow-py36-cu90 | tensorflow-py27-cu90 tensorflow-py27 | tensorflow-py27-cpu | |
| Sonnet | sonnet-py36-cu113 | sonnet-py36-cu111 | sonnet-py36-cu101 | sonnet-py36-cu100 | sonnet-py36-cu90 | sonnet-py27-cu90 sonnet-py27 | sonnet-py27-cpu | |
| Pytorch | pytorch-py36-cu113 | pytorch-py36-cu111 | pytorch-py36-cu101 | pytorch-py36-cu100 | pytorch-py36-cu90 | pytorch-py27-cu90 pytorch-py27 | pytorch-py27-cpu | |
| Kéras | keras-py36-cu113 | keras-py36-cu111 | keras-py36-cu101 | keras-py36-cu100 | keras-py36-cu90 | keras-py27-cu90 keras-py27 | keras-py27-cpu | |
| Lasagnes | lasagne-py36-cu113 | lasagne-py36-cu111 | lasagne-py36-cu101 | lasagne-py36-cu100 | lasagne-py36-cu90 | lasagne-py27-cu90 lasagne-py27 | lasagne-py27-cpu | |
| Mxnet | mxnet-py36-cu113 | mxnet-py36-cu111 | mxnet-py36-cu101 | mxnet-py36-cu100 | mxnet-py36-cu90 | mxnet-py27-cu90 mxnet-py27 | mxnet-py27-cpu | |
| Cntk | cntk-py36-cu113 | cntk-py36-cu111 | cntk-py36-cu101 | cntk-py36-cu100 | cntk-py36-cu90 | cntk-py27-cu90 cntk-py27 | cntk-py27-cpu | |
| Chaîne-chaîne | chainer-py36-cu113 | chainer-py36-cu111 | chainer-py36-cu101 | chainer-py36-cu100 | chainer-py36-cu90 | chainer-py27-cu90 chainer-py27 | chainer-py27-cpu | |
| Caffe | caffe-py36-cu113 | caffe-py36-cu111 | caffe-py36-cu101 | caffe-py36-cu100 | caffe-py36-cu90 | caffe-py27-cu90 caffe-py27 | caffe-py27-cpu | |
| Caffe2 | caffe2-py36-cu90 caffe2-py36 caffe2 | caffe2-py27-cu90 caffe2-py27 | caffe2-py36-cpu caffe2-cpu | caffe2-py27-cpu | ||||
| Torche | torch-cu113 | torch-cu111 | torch-cu101 | torch-cu100 | torch-cu90 | torch-cu90 torch | torch-cpu | |
| Darknet | darknet-cu113 | darknet-cu111 | darknet-cu101 | darknet-cu100 | darknet-cu90 | darknet-cu90 darknet | darknet-cpu |
@misc{ming2017deepo,
author = {Ming Yang},
title = {Deepo: set up deep learning environment in a single command line.},
year = {2017},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/ufoym/deepo}}
}
Nous apprécions toutes les contributions. Si vous prévoyez de contribuer aux fixations de bogues, veuillez le faire sans aucune discussion. Si vous prévoyez de contribuer de nouvelles fonctionnalités, fonctions utilitaires ou extensions, veuillez d'abord ouvrir un problème et discuter de la fonctionnalité avec nous.
Deepo est sous licence MIT.