Tenga en cuenta que la guerra del marco de aprendizaje profundo ha terminado, este proyecto ya no se mantiene.
Deepo es un marco abierto para ensamblar imágenes de Docker especializadas para la investigación de aprendizaje profundo sin dolor. Proporciona un "conjunto LEGO" de docenas de componentes estándar para preparar herramientas de aprendizaje profundo y un marco para ensamblarlas en imágenes de Docker personalizadas.
En el núcleo de Deepo hay un generador de Dockerfile que
También preparamos una serie de imágenes de Docker preconstruidas que
docker pull ufoym/deepo Para los usuarios de China que pueden sufrir velocidades lentas al extraer la imagen del registro Public Docker, puede extraer imágenes deepo del espejo del registro de China especificando la ruta completa, incluido el registro, en su comando Docker Pull, por ejemplo:
docker pull registry.docker-cn.com/ufoym/deepoAhora puedes probar este comando:
docker run --gpus all --rm ufoym/deepo nvidia-smiEsto debería funcionar y permite a Deepo usar la GPU desde el interior de un contenedor Docker. Si esto no funciona, busque la sección de problemas en el nvidia-docker github: muchas soluciones ya están documentadas. Para obtener una carcasa interactiva a un contenedor que no se eliminará automáticamente después de salir.
docker run --gpus all -it ufoym/deepo bashSi desea compartir sus datos y configuraciones entre el host (su máquina o VM) y el contenedor en el que está utilizando Deepo, use la opción -v, por ejemplo
docker run --gpus all -it -v /host/data:/data -v /host/config:/config ufoym/deepo bash Esto hará /host/data del host Visible AS /data en el contenedor, y /host/config as /config . Tal aislamiento reduce las posibilidades de que sus experimentos contenedores sobrescriban o usen datos incorrectos.
Tenga en cuenta que algunos marcos (por ejemplo, pytorch) usan la memoria compartida para compartir datos entre los procesos, por lo que si se usa el multiprocesamiento, el tamaño de segmento de memoria compartida predeterminado con el que se ejecuta el contenedor no es suficiente, y debe aumentar el tamaño de la memoria compartida con --ipc=host o --shm-size Line Line Oppers to docker run .
docker run --gpus all -it --ipc=host ufoym/deepo bashdocker pull ufoym/deepo:cpuAhora puedes probar este comando:
docker run -it ufoym/deepo:cpu bashSi desea compartir sus datos y configuraciones entre el host (su máquina o VM) y el contenedor en el que está utilizando Deepo, use la opción -v, por ejemplo
docker run -it -v /host/data:/data -v /host/config:/config ufoym/deepo:cpu bash Esto hará /host/data del host Visible AS /data en el contenedor, y /host/config as /config . Tal aislamiento reduce las posibilidades de que sus experimentos contenedores sobrescriban o usen datos incorrectos.
Tenga en cuenta que algunos marcos (por ejemplo, pytorch) usan la memoria compartida para compartir datos entre los procesos, por lo que si se usa el multiprocesamiento, el tamaño de segmento de memoria compartida predeterminado con el que se ejecuta el contenedor no es suficiente, y debe aumentar el tamaño de la memoria compartida con --ipc=host o --shm-size Line Line Oppers to docker run .
docker run -it --ipc=host ufoym/deepo:cpu bashAhora estás listo para comenzar tu viaje.
$ 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>
Tenga en cuenta que docker pull ufoym/deepo mencionado en el inicio rápido le dará una imagen estándar que contiene todos los marcos de aprendizaje profundo disponibles. También puede personalizar su propio entorno.
Si prefiere un marco específico en lugar de una imagen todo en uno, simplemente agregue una etiqueta con el nombre del marco. Tome TensorFlow por ejemplo:
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 Por ejemplo, si te gusta pytorch y lasagne , entonces
python generate.py Dockerfile pytorch lasagneo con Cuda 11.1 y Cudnn 8
python generate.py Dockerfile pytorch lasagne --cuda-ver 11.1 --cudnn-ver 8 Esto debería generar un Dockerfile que contiene todo para construir pytorch y lasagne . Tenga en cuenta que el generador puede manejar el procesamiento de dependencia automática y ordenar topológicamente las listas. Por lo tanto, no debe preocuparse por las dependencias faltantes y el orden de la lista.
También puede especificar la versión de Python:
python generate.py Dockerfile pytorch lasagne python==3.6docker build -t my/deepo .Esto puede tomar varios minutos, ya que compila algunas bibliotecas desde cero.
| . | aprendizaje moderno | docker dl | Jupyter-DePearning | Profundo |
|---|---|---|---|---|
| ubuntu | 16.04 | 14.04 | 14.04 | 18.04 |
| cuda | incógnita | 8.0 | 6.5-8.0 | 8.0-10.2/ninguno |
| cudnn | incógnita | v5 | V2-5 | v7 |
| ONNX | incógnita | incógnita | incógnita | O |
| Eano | incógnita | O | O | O |
| flujo tensor | O | O | O | O |
| soneto | incógnita | incógnita | incógnita | O |
| pytorch | incógnita | incógnita | incógnita | O |
| keras | O | O | O | O |
| lasaña | incógnita | O | O | O |
| mxnet | incógnita | incógnita | incógnita | O |
| cittk | incógnita | incógnita | incógnita | O |
| encadenador | incógnita | incógnita | incógnita | O |
| cafetería | O | O | O | O |
| caffe2 | incógnita | incógnita | incógnita | O |
| antorcha | incógnita | O | O | O |
| red oscura | incógnita | incógnita | incógnita | O |
| palo de pala | incógnita | incógnita | incógnita | O |
| . | CUDA 11.3 / Python 3.8 | Solo CPU / Python 3.8 |
|---|---|---|
| todo en uno | latest all all-py38 py38-cu113 all-py38-cu113 | all-py38-cpu all-cpu py38-cpu cpu |
| Flujo tensor | tensorflow-py38-cu113 tensorflow-py38 tensorflow | tensorflow-py38-cpu tensorflow-cpu |
| Pytorch | pytorch-py38-cu113 pytorch-py38 pytorch | pytorch-py38-cpu pytorch-cpu |
| Keras | keras-py38-cu113 keras-py38 keras | keras-py38-cpu keras-cpu |
| Mxnet | mxnet-py38-cu113 mxnet-py38 mxnet | mxnet-py38-cpu mxnet-cpu |
| Encadenador | chainer-py38-cu113 chainer-py38 chainer | chainer-py38-cpu chainer-cpu |
| Red oscura | darknet-cu113 darknet | darknet-cpu |
| palo de pala | 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 | Solo CPU / Python 3.6 | Solo CPU / Python 2.7 |
|---|---|---|---|---|---|---|---|---|
| todo en uno | 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 | |
| todo en uno con Jupyter | all-jupyter-py36-cu90 | all-py27-jupyter py27-jupyter | all-py27-jupyter-cpu py27-jupyter-cpu | |||||
| Eano | theano-py36-cu113 | theano-py36-cu111 | theano-py36-cu101 | theano-py36-cu100 | theano-py36-cu90 | theano-py27-cu90 theano-py27 | theano-py27-cpu | |
| Flujo tensor | tensorflow-py36-cu113 | tensorflow-py36-cu111 | tensorflow-py36-cu101 | tensorflow-py36-cu100 | tensorflow-py36-cu90 | tensorflow-py27-cu90 tensorflow-py27 | tensorflow-py27-cpu | |
| Soneto | 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 | |
| Keras | keras-py36-cu113 | keras-py36-cu111 | keras-py36-cu101 | keras-py36-cu100 | keras-py36-cu90 | keras-py27-cu90 keras-py27 | keras-py27-cpu | |
| Lasaña | 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 | |
| Cittk | cntk-py36-cu113 | cntk-py36-cu111 | cntk-py36-cu101 | cntk-py36-cu100 | cntk-py36-cu90 | cntk-py27-cu90 cntk-py27 | cntk-py27-cpu | |
| Encadenador | chainer-py36-cu113 | chainer-py36-cu111 | chainer-py36-cu101 | chainer-py36-cu100 | chainer-py36-cu90 | chainer-py27-cu90 chainer-py27 | chainer-py27-cpu | |
| Cafetería | 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 | ||||
| Antorcha | torch-cu113 | torch-cu111 | torch-cu101 | torch-cu100 | torch-cu90 | torch-cu90 torch | torch-cpu | |
| Red oscura | 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}}
}
Apreciamos todas las contribuciones. Si planea contribuir con las fiajas de errores, hágalo sin más discusión. Si planea contribuir con nuevas funciones, funciones de utilidad o extensiones, primero abra un problema y discuta la función con nosotros.
Deepo tiene licencia MIT.