start - ¿Cómo comienzo tensorflow docker jupyter notebook
nvidia docker install cudnn (9)
Mi flujo de trabajo simple pero eficiente:
TL; DR versión:
- Open Docker Quickstart Terminal . Si ya está abierto, ejecute
$ cd
- Ejecute esto una vez :
$ docker run -it -p 8888:8888 -p 6006:6006 -v /$(pwd)/tensorflow:/notebooks --name tf b.gcr.io/tensorflow/tensorflow
- Para comenzar todo el tiempo:
$ docker start -i tf
Si no está en Windows, probablemente debería cambiar
/$(pwd)
a$(pwd)
Obtendrá una carpeta vacía llamada tensorflow
en su directorio de inicio para usarla como un almacenamiento persistente de archivos de proyecto, como Ipython Notebooks y datasets.
Explicación:
-
cd
para asegurarse de que está en su directorio de inicio. - params:
-
-it
significa interactivo, por lo que puede interactuar con el contenedor en el entorno de la terminal. -
-v host_folder:container_folder
permite compartir una carpeta entre el host y el contenedor. La carpeta de host debe estar dentro de su directorio de inicio./$(pwd)
traduce a//c/Users/YOUR_USER_DIR
en Windows 10. Esta carpeta se ve como el directorio denotebooks
en el contenedor que utiliza Ipython / Jupyter Notebook. -
--name tf
asigna el nombretf
al contenedor. -
-p 8888:8888 -p 6006:6006
asignación de puertos de contenedor a host, primer par de Jupyter notebook, el segundo para Tensorboard
-
-
-i
significa interactivo
Ejecutar TensorFlow en la nube
Instalé el contenedor tensorflow docker en una máquina ubuntu. Las instrucciones de configuración del docker tensorflow especifican:
docker run -it b.gcr.io/tensorflow/tensorflow
Esto me pone en la terminal de contenedores de Docker, y puedo ejecutar Python y ejecutar el ejemplo Hello World. También puedo ejecutar. / Run_jupyter.sh manualmente para iniciar el cuaderno jupyter. Sin embargo, no puedo acceder al portátil desde el host.
¿Cómo inicio el portátil jupyter de modo que pueda usar el portátil desde el equipo host? Idealmente, me gustaría utilizar la ventana acoplable para abrir el contenedor e iniciar jupyter en un solo comando.
Después de seguir leyendo la documentación de Docker , tengo una solución que funciona para mí:
docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ./run_jupyter.sh
El -p 8888: 8888 y -p 6006: 6006 exponen los puertos del contenedor al host en el mismo número de puerto. Si solo usa -p 8888, se asignará un puerto aleatorio en el host.
El ./run_jupyter.sh le dice a Docker qué ejecutar dentro del contenedor.
Con este comando, puedo usar un navegador en el equipo host para conectarme a http://localhost:8888/ y acceder al portátil jupyter.
ACTUALIZACIÓN: Después de luchar con Docker en Windows, cambié a una máquina Ubuntu con Docker. Mi bloc de notas se borraba entre las sesiones de docker, lo que tiene sentido después de leer más documentación de docker. Aquí hay un comando actualizado que también monta un directorio de host dentro del contenedor e inicia jupyter apuntando a ese directorio montado. Ahora mi computadora portátil está guardada en el host y estará disponible la próxima vez que inicie tensorflow.
docker run -p 8888:8888 -p 6006:6006 -v /home/rob/notebook:/notebook b.gcr.io/tensorflow/tensorflow sh -c "jupyter notebook /notebook"
Estos pasos me funcionaron si es un novato de docker total que usa una máquina de Windows.
Versiones: Windows 8.1, docker 1.10.3, tensorflow r0.7
- Run Docker Quickstart Terminal
- Después de cargarlo, tenga en cuenta la dirección IP. Si no puede encontrarlo, use esta
docker-machine ip
y haga una nota. Vamos a llamarlo ''dirección IP''. Se verá algo así: 192.168.99.104 (inventé esta dirección IP) Pegue este comando en la terminal del acoplador:
docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow
.Si está ejecutando esto por primera vez, descargará e instalará la imagen en este peso ligero vm. Entonces debería decir ''El cuaderno Jupyter se está ejecutando en ....'' -> ¡Esto es una buena señal!
- Abra su navegador en:
<your ip address (see above)>:8888
. P.ej. 192.168.99.104:8888/ - Esperemos que pueda ver sus archivos ipython.
Jupyter ahora tiene una imagen Docker lista para ejecutarse para TensorFlow:
docker run -d -v $(pwd):/home/jovyan/work -p 8888:8888 jupyter/tensorflow-notebook
Le da el prompt de la terminal:
FOR /f "tokens=*" %i IN (''docker-machine env --shell cmd vdocker'') DO %i
docker run -it tensorflow/tensorflow:r0.9-devel
o
FOR /f "tokens=*" %i IN (''docker-machine env --shell cmd vdocker'') DO %i
docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel
Deberías tener ''vdocker'' o cambiar vdocker a ''default''.
Para arreglar un poco las cosas, quiero dar algunas explicaciones adicionales porque también sufrí mucho al configurar Docker con tensorflow. Para esto me refiero a this video que lamentablemente no es del todo claro en todos los casos. Supongo que ya has instalado Docker. La parte general realmente interesante del video comienza en el minuto 0:44 donde finalmente comenzó la ventana acoplable. Hasta allí, solo descarga el repositorio tensorflow en la carpeta, que luego monta en el contenedor. Por supuesto, puede poner cualquier otra cosa en el contenedor y acceder a él más tarde en la máquina virtual de la ventana acoplable.
Primero ejecuta el comando de la
docker run –dit -v /c/Users/Jay/:/media/disk –p 8000 –p 8888 –p 6006 b.gcr.io/tensorflow/tensorflow
acoplable larga,docker run –dit -v /c/Users/Jay/:/media/disk –p 8000 –p 8888 –p 6006 b.gcr.io/tensorflow/tensorflow
. El comando "ejecutar" inicia contenedores. En este caso, inicia el contenedor "b.gcr.io/tensorflow/tensorflow", cuya dirección se proporciona dentro del tutorial de instalación de la caja de acoplamiento tensorflow . El contenedor se descargará por la ventana acoplable si aún no está disponible localmente. Luego da dos tipos adicionales de argumentos: Monta una carpeta del sistema de hosts en la ruta de acceso al contenedor. NO olvide dar la partición al principio (por ejemplo, "/ c /"). Además, declara que los puertos estarán disponibles más tarde desde la máquina host con el parámetro -p. ¡De todo este comando, recuperas el [CONTAINER_ID] de la ejecución de este contenedor! Siempre puede ver los contenedores que se están ejecutando actualmente ejecutando "docker ps" en la consola del acoplador. Su contenedor creado arriba debería aparecer en esta lista con la misma identificación.Siguiente paso: con su contenedor en ejecución, ahora quiere ejecutar algo en él. En nuestro caso, jupyter notebook o tensorflow o lo que sea: para hacer esto, hace que Docker ejecute el bash en el contenedor recién creado:
docker exec –ti [CONTAINER_ID] bash
. Este comando ahora inicia un shell bash en su contenedor. Usted ve esto porque el "$" ahora cambió a la raíz @ [CONTAINER_ID] :. Desde aquí no hay vuelta atrás. Si desea regresar a la terminal del acoplador, debe iniciar otra consola acoplable nueva como lo está haciendo en el minuto 1:10. Ahora con un shell bash corriendo en el contenedor puedes hacer lo que quieras y ejecutar Jupiter o tensorflow o lo que sea. La carpeta del sistema host, que entregó en el comando de ejecución, debería estar disponible ahora en "/ media / disk".Último paso accediendo a la salida de VM. Todavía no quería trabajar conmigo y no podía acceder a mi computadora portátil. Aún tiene que encontrar la IP y el puerto correctos para acceder al cuaderno lanzado, a la sesión del tensor o a lo que sea. Primero descubra la IP principal mediante el uso de
docker-machine –ls
. En esta lista obtienes la URL. (Si es su único contenedor, se llama valor predeterminado). Puede dejar el puerto aquí. Luego, desdedocker ps
, obtienes la lista de puertos reenviados. Cuando se escribe 0.0.0.32776-> 6006 / tcp en la lista, puede acceder a él desde la máquina host utilizando el puerto dado en primer lugar (Awkyard). Entonces, en mi caso, el tensorboard ejecutado en el contenedor decía "lanzado en el puerto 6006". Luego, desde mi máquina de host, tuve que ingresar a http://192.168.99.100:32776/ para acceder a ella.
-> ¡Y eso es todo! ¡Corrió para mí así!
Para que esto se ejecute bajo hyper-v. Realice los siguientes pasos:
1) Cree una máquina virtual Docker utilizando https://blogs.msdn.microsoft.com/scicoria/2014/10/09/getting-docker-running-on-hyper-v-8-1-2012-r2/ esto hará conseguirte un contenedor de docker funcionando. Puede conectarse a él a través de la consola o vía ssh. Pondría al menos 8 gb de memoria, ya que estoy seguro de que usará mucha memoria.
2) ejecute "ifconfig" para determinar la dirección IP de la VM Docker
3) En el indicador del shell docker escriba:
Docker run -p 8888: 8888 -p 6006: 6006 -it b.gcr.io/tensorflow/tensorflow
4) Conéctese a Jupyter Workbench usando http: / [ifconfig address]: 8888 /
Para un host de Linux, la respuesta de Robert Graves funcionará, pero para Mac OS X o Windows queda mucho por hacer porque Docker se ejecuta en una máquina virtual.
Entonces, para comenzar, inicie el shell docker (o cualquier shell si está usando Linux) y ejecute el siguiente comando para iniciar un nuevo contenedor TensorFlow:
docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ./run_jupyter.sh
Luego, para Mac OS X y Windows, debe hacer lo siguiente solo una vez:
- Abrir VirtualBox
- Haga clic en la ventana acoplable (la mía se denominó automáticamente "predeterminada")
- Abra la configuración haciendo clic en configuración
- En la configuración de red, abra el diálogo de reenvío de puertos
- Haga clic en el símbolo + para agregar otro puerto y conectar un puerto de su mac a la máquina virtual completando el diálogo como se muestra a continuación. En este ejemplo elegí el puerto 8810 porque ejecuto otros portátiles usando el puerto 8888.
- luego abra un navegador y conéctese a http: // localhost: 8810 (o el puerto que configure en la sección del puerto de host)
- ¡Haz tu aplicación de aprendizaje de máquina de pantalones elegantes!
Por alguna razón, me encontré con un problema adicional que necesitaba superar más allá de los ejemplos proporcionados, usando el indicador --ip
:
nvidia-docker run --rm /
-p 8888:8888 -p 6006:6006 /
-v `pwd`:/root /
-it tensorflow/tensorflow:latest-devel-gpu-py3 sh -c "jupyter notebook --ip 0.0.0.0 ."
Y luego puedo acceder a través de http://localhost:8888/ desde mi máquina. De alguna manera esto tiene sentido; dentro del contenedor se vincula a 0.0.0.0
que representa todas las direcciones disponibles. Pero si tengo que hacer esto parece variar (por ejemplo, he comenzado a usar portátiles con jupyter/scipy-notebook
sin tener que hacer esto).
En cualquier caso, el comando anterior funciona para mí, podría ser útil para otros.