我永远也不知道该用哪个版本的 Bazel 编译 TensorFlow;以及……牙膏厂能不能好好写文档。
本文均在 Python3 环境下进行编译,0202 年了为什么还有人在用 Python2。
继续阅读
我永远也不知道该用哪个版本的 Bazel 编译 TensorFlow;以及……牙膏厂能不能好好写文档。
本文均在 Python3 环境下进行编译,0202 年了为什么还有人在用 Python2。
继续阅读
假设有这么一台服务器,你没有 root 权限,然后预配置的 tensorflow 环境很神奇地调用不了 GPU,只有 pip2 没有 pip3,python2 python3 都试过了都没法用 GPU,pip list 也显示安装了 tensorflow-gpu,且给你用户的人信誓旦旦地告诉你我这配置没问题,但是你就是用不了 GPU,那么怎么办呢?
解决方法还是比较简单的,首先在用户态安装一个 pip(本文要装 pip3)
wget https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py --user
这时候 pip3 会被安装到 ~/.local/bin 下面,如果你的 PATH 里面有这个路径的话,直接 pip3 就可以运行。
然后就很简单了,该干嘛干嘛,比如安装 virtualenv 等等,只不过这时候你安装任何 python 包的时候,要加上 –user 参数,才能安装到 $HOME 下面,例如 pip3 install virtualenv –user。
我之前提到的那台服务器呢,在装了 pip3 以后,list 一下发现根本就没有 tensorflow-gpu,只有 tensorflow;pip2 里面有,但是调用不了显卡,搞不懂 IT 究竟是怎么配置的。最后我也懒得烦了,直接 virtualenv,装一个 tensorflow-gpu,问题就解决了。
apt download <package> dpkg-deb -x package_x.y.z_x86_64.deb my-private-root #dpkg-deb -e package_x.y.z_x86_64.deb my-private-control
然后就装在了你自己的 $HOME 下面。
如果你装的是 screen,且你对 /var/run/screen/ 也没权限的话,这么干:
mkdir ~/.screen && chmod 700 ~/.screen export SCREENDIR=$HOME/.screen
然后把对应的内容添加到 .bashrc 里面去让你每次都可用,比如说:
PATH=~/usr/bin:$PATH export SCREENDIR=$HOME/.screen
AWS p2 实例虽然方便,不用本地买显卡,但是碰到比较大的网络,p2 开一天就得 50 块钱,还是有点肉疼的。那么,既然付了钱,就把实例的性能发挥到极致吧。
Tesla K80 显卡通常工作在 AutoBoost 模式,这个模式会动态调整显卡的频率,在很多情况下都比最大频率要低,并且显卡驱动默认的功率限制并没有被开到最大,因此这两点都会影响我们最终获得的性能。
设置显卡工作频率比较简单:
sudo nvidia-persistenced sudo nvidia-smi --auto-boost-default=0 sudo nvidia-smi -ac 2505,875 #(2505,875) for p2; (877,1530) for p3; (2505,1177) for g3
关于功率的调整,首先我们要查看显卡的最大功率限制 nvidia-smi -q | grep 'Power Limit'
,如果是 p2 实例,发现这个值是 175W,而驱动默认的限制是 149W,我们需要提高这个限制,使用 nvidia-smi -pl 175
即可,如果权限不足,用 sudo 运行。
参考资料:
https://www.ibm.com/support/knowledgecenter/en/SSFHY8_5.5.0/com.ibm.cluster.essl.v5r5.essl100.doc/am5gr_nvidcap.htm
https://devblogs.nvidia.com/increase-performance-gpu-boost-k80-autoboost/
https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/optimize_gpu.html
Reference:
因为一些需求,需要在 AWS 上进行一些 GPU 的计算,按道理 AWS 已经提供了深度学习的 AMI 映像供我们使用,但是我实在是搞不清他到底做了些什么,因此也不怎么会用。加上自带各种用不到的库实在太大,为了放下我所有的数据需要开 80G 的 EBS 存储卷,感觉有些小贵,无奈之下只能从最干净的 Ubuntu 16.04 开始配置一台符合我需求的 EC2 实例。
具体步骤我打算按照 Keras 官方文档上的方案,由于我也不确定能不能搞定,这里就做一个实时的记录:
之后的操作就相当顺利了,所有的操作都和本地类似,还是熟悉的东西好用啊。
由于我不需要现在就继续进行计算,因此在停止了实例之后,为其配置的环境创建一个 AMI,供下次继续计算时开启竞价型实例使用。