机器学习tensorflow和sonnet环境的搭建windows/linux/OS X 基于docker

背景:

google 的子公司deepmind(他家的AlphaGo) 开源了他们的项目:https://github.com/deepmind,是我们学习人工智能再好不过的素材。但是搭建环境挺不容易,这里本人分享自己的环境搭建经验。

本人技术渣渣,如果哪里不恰当或者您有高见,欢迎留言,不胜感激!

重要说明:

  • 首先tensorflow是基础环境,sonnet是基于tensorflow快速构建神经网络的工具,tensorflow的安装比较简单,按照官方的指导基本都能一次成功,但是按照sonnet的安装指南,本人在OS X上可以安装成功,但是不能ubuntu 16 LTS上编译安装成功,多次踩坑无果(已解决,请看另一文章http://blog.csdn.net/sinat_34820292/article/details/72636288)。
  • 只好询问大神才知道可以用docker来部署sonnet,实践发现部署挺容易,windows,linux,Mac OS X都可以安装,缺点基于docker容器做开发时使用IDE会变的很不容易(本人python语法都没记住,vi只是能苟活的水平),是一种虚拟化,性能会有所降低。
  • 找到sonnet镜像很关键,这里使用davemssavage/sonnet:latest镜像,如果你有docker使用经验,后面就不用看了。
  • 使用docker镜像方法搭建sonnet环境不需要单独配置tensorflow,bazel这些,因为sonnet镜像内部已经安装好了。

安装步骤:

  1. ( 对于OS X系统按照sonnet官方的指导安装就行,只要科学上网没问题,就能安装成功)。对于windows系统,安装ubuntu和windows双系统,参考这个链接,我就不多此一举了,当然不装也行,因为可以在windows上安装docker,根据个人喜好吧

  2. 在你的系统上先安装docker软件,参考官方文档最好docker,注意检查系统联网是否正常
    具体来说:

    • 对于windows系统,参考这个链接安装CE稳定版到你的电脑上(就是下载下来安装文件,双击运行安装即可)。
    • 对于linux参考这个链接进行安装(以ubuntu为列)。
  3. 安装davemssavage/sonnet:latest,安装需要保持网络畅通,连接中断需要重来,大约会自动下载500M的东西。

    • 对于ubuntu系统下安装的docker,在terminal 执行如下命令:
    sudo  docker  run   -it  --name sonnet davemssavage/sonnet:latest /bin/bash
    • 对于windows下安装的docker,在cmd或者powershell命令行运行(如果不行,可能需要管理员权限,试试 win + x + A 打开cmd):
    docker   run    -it  --name sonnet davemssavage/sonnet:latest /bin/bash
  4. 至此,sonnet环境就安装好了,是不是很容易呢。但是,这样的安装在使用上需要你对docker有所了解,下面介绍如何使用。

使用指南

  1. 亲测docker容器不能支持图形化界面,也就是想在sonnet容器里运行一个eclipse或者pycharm是办不到的,对于python初学者很不方便。可以把docker理解为虚拟机,那么虚拟机和宿主系统之间的文件共享是一个常见的问题,先说思路:

    • docker 可以用docker cp 容器名:容器内路径 /宿主计算机路径在容器河宿主计算机之间复制文件,如docker cp davemssavage/sonnet:/home /home/tim5wang/Documents/dncdocker cp /home/tim5wang/Documents/dnc davemssavage/sonnet:/home
    • 在宿主计算机上敲好代码再复制进容器运行,总是复制很不方便。所以有另一个思路,就是在启动容器时,可以把宿主计算机的某个目录挂载到容器内,这样就能共享目录,在容器外用IDE编写查看代码,在容器内运行代码,岂不美滋滋。命令如下:
      docker run -it -v /home/tim5wang:/home/tim5wang davemssavage/sonnet /bin/bash
      这里 冒号前的是宿主计算机路径,冒号后是容器内路径,容器名(容器tag),在容器里运行的命令(这里是开启bash终端)
      更多代码参考这个
  2. 上面是主要内容,需要注意的细节,因为用户级别的不同,docker命令可能需要在前面添加 sudo才行,如果是windows宿主计算机,需要在docker虚拟机上共享主机目录(图形化操作),因为windows的路径河linux路径的斜杠是反着的,windows路径不分大小写,linux的区分大小写,所以windows里的路径按windows的写法,容器里的路径按照linux的写法,如:docker run -it -v c:\users\administrator\documents:/home/tim5wang davemssavage/sonnet /bin/bash

  3. 上述的方法仍有许多不足,可以参考这个http://www.open-open.com/lib/view/open1435306601685.html让你的ide连接docker容器,本人没有实际操作,欢迎操作过的童鞋分享经验。

  4. 其他常用命令:

## 注意 在执行docker run 之前需要先执行 docker start命令,以保证容器被启用
## 这是很自然的,因为要先启动容器才能运行容器里的东西。
sudo service start docker #ubuntu 下开启docker服务,stop,restart关闭\重启服务
sudo docker info #查看docker信息
sudo docker ps -a #列举所有容器,包括未启动的容器,容器名,容器ID等
sudo start docker 容器ID #启动一个容器,stop/restart/rm 停止/重启/删除容器
sudo docker exec -it 容器ID bash #运行容器里的bash终端
sudo docker attach -it 容器ID # attach到一个已经运行的容器的stdin,与上句作用差不多,区别可以自己网上爬文
docker run -it -v 宿主计算机路径:容器内路径  容器名 容器内执行的命令  #挂载宿主路径到容器并启动容器打开终端,这个比较实用

根据反馈信息的补充说明:(如何使用docker)

sudo docker images #查看已有镜像
sudo docker ps -a #查看有多少容器,一个镜像可以创建多个容器,run一次就创建一个容器,因此没必要多次运行
sudo docker run/rm ....#是对容器的创建/删除操作,在容器内的操作会保留在容器内,对镜像是不会有影响的,镜像是只读的。
sudo docker  start/stop ....# 用于启动容器/关闭容器(容器就是镜像的一个实例)
sudo docker attach ...# 以标准sthio运行镜像

也就是说,容器创建时只需要一次挂载宿主计算机目录就行
以后的使用主要通过start命令启动容器,用attach进入容器即可

更多docker使用细节请看:runnob docker教程

推荐文章 :关于ubuntu 的使用

pycharm IDE 有开源免费版本,推荐使用http://www.jetbrains.com/pycharm/

你可能感兴趣的:(技术,机器学习,人工智能,经验,谷歌)