【问题标题】:How to setup learning environment for Udacity Deep Learning class with TensorFlow (Windows)如何使用 TensorFlow (Windows) 为 Udacity 深度学习课程设置学习环境
【发布时间】:2017-01-28 20:06:46
【问题描述】:

我相信很多对学习深度学习感兴趣的人都听说过这门课程:

https://www.udacity.com/course/deep-learning--ud730

我现在正在学习这门课程,并想分享有关如何从头开始在 Windows 上设置学习环境的分步说明。

  • 名为设置环境的第一个答案是关于设置学习环境。你只运行一次。

  • 名为 AFTER LOCAL MACHINE REBOOT 的第二个答案是关于如何在重新启动计算机后重新启动环境。

  • 查看名为 HOW IT ALL WORKS 的第三个答案,了解所有这些东西的工作原理(或者您可以盲目地遵循第一个答案,稍后再查看)。

【问题讨论】:

    标签: docker tensorflow deep-learning


    【解决方案1】:

    设置环境(只运行一次!)

    注意要在计算机重新启动后启动准备好的环境,请在第二个答案中使用 AFTER LOCAL MACHINE REBOOT 指令。


    步骤:

    1. 下载并设置 Docker 工具箱:

    https://www.docker.com/products/docker-toolbox

    Docker 是一种在您的机器上部署预配置的虚拟学习环境的工具。它将在虚拟机中运行,无论如何都不会弄乱您的计算机。

    1. (可选步骤) Docker 会将其文件放在系统磁盘 (C:) 上,如果使用 SSD,您可能需要更改它。你可以这样做:

    mklink /J "C:\Users\USER\.docker" "D:\Docker"

    • 用您的用户名替换 USER
    • "D:\Docker" 替换为您要存储 Docker 文件的其他驱动器上的路径

    更多信息:Change .docker directory on Windows

    1. 打开 Windows CMD。转到安装 Docker 的文件夹。创建一个新的 docker 机器:

    docker-machine 创建 vdocker -d virtualbox

    1. (神奇的步骤) 运行它!

    FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd vdocker') DO %i

    更多信息:How do I start tensorflow docker jupyter notebook

    1. 下载并安装预配置的docker镜像

    docker run -it -p 8888:8888 -p 6006:6006 --name tensorflow-udacity -it b.gcr.io/tensorflow-udacity/assignments:0.5.0

    1. (重要步骤!) 配置端口转发:
      • 运行Oracle VM VirtualBox链接(应该在安装Docker时创建):

    • 转到 vdocker 机器的设置...:

    • 添加端口转发(它将虚拟环境中的8888端口转发到本地机器上的8810端口):

    P.S.使用 :8810 端口,以防你已经在本地机器上安装了 IPython notebook。

    1. 在设置...菜单中(来自上一步)允许虚拟机更多内存:

    注意必须先关闭 VirtualBox,然后才能对系统设置进行任何更改。 (通过 jlarsch)

    使用以下命令停止虚拟机:

    docker-machine 停止 vdocker

    (可选)您还可以允许它使用更多内核以更快地运行:

    1. 利润!

    【讨论】:

    • 酷!奇迹般有效。我有点盲目跟风。第二个端口是干什么用的?:-p 6006:6006
    • @jlarsch 这对我来说有点神秘。它只是有效,我相信它是安全的。
    • 似乎默认情况下,分配给 docker 的内存是不够的。你知道如何让 docker 拥有更多内存吗?
    • @jlarsch 感谢您提请我注意内存问题。将其添加到指令中(步骤 #7)。
    • 酷。值得指出的是,必须先关闭 virtualBox,然后才能对系统设置进行任何更改。
    【解决方案2】:

    本地机器重启后

    电脑重启后开始学习环境,创建.bat文件(我称之为udacity-tf-start.bat),内容如下:

    call docker-machine start vdocker
    
    FOR /f "tokens=*" %%i IN ('docker-machine env --shell cmd vdocker') DO %%i
    
    call docker start -ai tensorflow-udacity
    

    重要! %% 是一种转义,您只需要在 BAT 文件 中使用它。如果您通过命令行运行相同的命令集,您应该使用:

    FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd vdocker') DO %i
    

    【讨论】:

    • 是否对会话之间保存的文件进行了更改?即从作业 1 到作业 2 的测试数据?
    • @jlarsch 绝对!这就是为什么两个单独的指令。如果您安装从 Internet 下载的图像(或缓存在您的计算机上),它会删除您的所有数据并将其替换为源文件。如果您遵循重启后步骤,您的数据在会话之间是持久的。
    【解决方案3】:

    如何运作

    免责声明:它可能有点类似于克里斯托弗·诺兰的盗梦空间电影的情节。

    整体情况

    详情

    由于 Windows 操作系统的一些限制,Docker 无法在本地运行(目前)。这就是我们首先创建一个虚拟盒子的原因:

    docker-machine create vdocker -d virtualbox

    下一步(表示为魔术步骤)为docker命令设置一些环境变量,以便能够连接到正在运行的docker daemon strong>在虚拟盒子里:

    FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd vdocker') DO %i

    >SET DOCKER_TLS_VERIFY=1
    
    >SET DOCKER_HOST=tcp://192.168.99.100:2376
    
    >SET DOCKER_CERT_PATH=C:\Users\USER\.docker\machine\machines\vdocker
    
    >SET DOCKER_MACHINE_NAME=vdocker
    

    然后我们运行:

    docker run -it -p 8888:8888 -p 6006:6006 --name tensorflow-udacity -it b.gcr.io/tensorflow-udacity/assignments:0.5.0

    从它从指定 URL 下载的图像创建一个名为 tensorflow-udacitydocker 容器重要!该容器在虚拟盒子中运行。

    注意-p标志:

    -p 8888:8888 -p 6006:6006

    它告诉 docker daemon 将容器的 8888 端口转发(发布)到主机(虚拟机)端口 8888。它在 Windows 机器上还不可用!

    现在我们在virtual box设置中再添加一个端口转发规则:

    【讨论】:

      【解决方案4】:

      补充这里的其他答案是我用于创建/运行/启动 docker 机器的启动脚本。安装程序现在归结为从https://docs.docker.com/toolbox/toolbox_install_windows/ 安装最新版本的 docker 工具箱(这应该自动安装 vbox)并运行脚本:

      @echo off
      set DOCKERMACHINENAME=tensorflow-udacity
      set REPOSITORY=gcr.io/tensorflow/udacity-assignments:0.6.0
      set "LOCALDIR0=/%SystemDrive:~0,1%/"
      call :LoCase LOCALDIR0
      SET "LOCALDIR=%LOCALDIR0%Users/%USERNAME%"
      docker-machine.exe env %DOCKERMACHINENAME% > nul 2> nul
      if "%errorlevel%"=="0" goto m_exists
      ::Machine has to be created
      docker-machine create -d virtualbox --virtualbox-memory 8196 %DOCKERMACHINENAME%
      
      :m_exists
      
      ::Check if machine needs to be restarted
      docker-machine ip %DOCKERMACHINENAME% > nul 2>nul
      if not "%errorlevel%"=="0" (docker-machine.exe restart %DOCKERMACHINENAME%)
      
      FOR /F "tokens=*" %%i IN ('docker-machine env --shell cmd %DOCKERMACHINENAME%') DO %%i
      FOR /F "tokens=*" %%F IN ('docker-machine ip %DOCKERMACHINENAME%') DO (SET DOCKERMACHINEIP=%%F)
      echo Access to iPython: %DOCKERMACHINEIP%:8888
      
      docker inspect %DOCKERMACHINENAME% > nul 2> nul
      if "%errorlevel%"=="0" goto m_started
      :: Machine has to be started
      docker run -p 8888:8888 --name %DOCKERMACHINENAME% -v %LOCALDIR%:/mnt/hosttmp:rw -it %REPOSITORY%
      goto finished
      
      :m_started
      docker start -ai %DOCKERMACHINENAME%
      goto finished
      
      :LoCase
      FOR %%i IN ("A=a" "B=b" "C=c" "D=d" "E=e" "F=f" "G=g" "H=h" "I=i" "J=j" "K=k" "L=l" "M=m" "N=n" "O=o" "P=p" "Q=q" "R=r" "S=s" "T=t" "U=u" "V=v" "W=w" "X=x" "Y=y" "Z=z") DO CALL SET "%1=%%%1:%%~i%%"
      
      :finished
      ::hint: to remove container use: docker rm %DOCKERMACHINENAME%
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2021-08-18
      • 2017-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      相关资源
      最近更新 更多