发新帖

总结在 TF 安装中遇到的问题和最近经常被问到的问题

[复制链接]
1315 17

快来加入 TensorFlowers 大家庭!

您需要 登录 才可以下载或查看,没有帐号?加入社区

x
文/GDE:Xihan Li


安装的注意事项

其实 TensorFlow 安装起来并不困难,参考TensorFlow 官方的安装文档基本上不会有什么问题,主要的问题是在 Ubuntu 下装 NVIDIA 显卡驱动和配置 CUDA 环境。

注意事项如下:

  • 建议的顺序是:先安装最新版NVIDIA显卡驱动程序,再安装CUDA(安装时不要选择同时安装驱动),最后安装cuDNN。CUDA附带的显卡驱动程序可能过旧;
    在Ubuntu下有一个很简易的驱动安装方法:在系统设置(System Setting)里面选软件与更新(Software & Updates),然后点选Additional Drivers里面的“Using NVIDIA binary driver”选项,并点选右下角的“Apply Changes”即可,系统即会自动安装NVIDIA驱动。否则,NVIDIA显卡驱动程序在Linux系统上的安装往往不会一帆风顺,第一次安装十之八九都会遇到Login Loop。注意禁用系统自带的开源显卡驱动Nouveau(请Google“nomodeset”选项)、禁用主板的Secure Boot功能等。更详细的指导可以参考这篇文章
  • CUDA Toolkit和cuDNN的版本一定要与TensorFlow官方网站安装说明的版本一致,注意官方网站安装说明里要求安装的版本可能并非最新版本;
  • CUDA环境变量设置(Ubuntu为例):新建/etc/profile.d/cuda.sh,输入
    export CUDA_HOME=/usr/local/cuda
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

    后重启即可。

  • cuDNN 的安装方式比较特殊,你需要手动将下载的安装包解压并将内容复制到CUDA的安装目录下(默认是/usr/local/cuda);
  • 最后说一点,其实 TensorFlow 现在已经支持 Windows 了。

模型和调试

  • RNN的写法在 TensorFlow 1.X 里有了很大的变化,变成了基于 Layers 的模型。简单来说,如果你想用一个循环手工实现 rnn,你不再需要像以前一样,在 t=0 的时候设置 reuse=false,t>0 的时候设置 reuse=true 了。
  • TensorFlow的调试很复杂?

    • 写复杂的模型请多用 tf.name_scope() 和 tf.variable_scope(),调试和可视化都比较方便。
    • tf.name_scope() 和 tf.variable_scope() 的区别:前者是针对 operation 的,后者是针对 variable 的。
    • 调试的时候可以在断点状态下 tf.global_variables() 查看所有的变量定义。甚至还可以断点时 sess.run(tf.global_variables()) 查看变量现在的值。断点下 sess.run() 的用法很灵活,可以自己探索。(相比于 tfdbg,我觉得断点 sess.run() 还比较方便一些)

性能

  • 是不是一定要一块 NVIDIA 的高端显卡?

    • 并不是使用 TensorFlow 就一定要去买一块 GTX 1080 以上的显卡。事实上,如果你不是做大规模图像视频任务的话,一块 GTX 1060 6GB 已经很足够了(这其实是我自己最常用的型号,当然我不太做图像视频)。初学入门的话,CPU版本的TensorFlow也不会有问题;
  • 我确实需要进行大规模任务计算,但硬件配置不够?

    • 即使你真的要做大规模任务,其实也可以考虑使用云服务,比如 Google Cloud Platform (GCP) 上就有 GPU 提供,按小时收费其实价格还行;显存爆掉的时候,不缩减模型大小的情况下,除了买块新显卡以外,还可以调小点 batch 的大小(其实一说就懂,但有时候就是会忘)。
    • 当然,购置新硬件是最直接的方法。关于深度学习工作站的配置建议参考这个知乎问题。如果需要配置多卡,需要尤其注意散热问题,显卡可考虑采用具备涡轮风扇的版本。
  • 我的模型训练速度很慢?

    • 尽量减少 operation 的个数,尽量多用矩阵或者张量运算而不是 for 循环,这样可以让后端更有空间对你的模型计算进行并行优化,计算机做矩阵张量运算是有很高效的方法的(这点和 MATLAB 很像);
    • 相对于模型的训练而言,有时候预处理反而是一件更为耗时的工作,搞不好训练只花 1 秒结果准备数据花了 5 秒,这时候你再怎么提高模型性能都没辙,优化预处理的步骤以及调整 pipeline 才是关键。这方面 tf.data 或许可以帮到你的忙,可以参考这篇文章
    • 模型本身的类型也会对性能有影响,一个非常不严谨的大致印象是加速效率 CNN>RNN>RL。CNN 相对比较好 GPU 加速,RNN 其次,RL(增强学习)因为要频繁和环境交互,直接堆 GPU 其实性能提高有限。
    • 总之,模型运行得慢,不见得一定是机器性能不够好的缘故,在购买高性能硬件的时候可以多思考一下自己有没有充分使用现有硬件的性能,或者借/租一台高性能机器(如 GCP)看看性能到底能提升多少。(当然如果只是想找个买新机器的借口的话当我没说)
我知道答案 回答被采纳将会获得10 金币 已有17人回答
本楼点评(1) 收起
  • yinboxu这两天正在给服务器安装驱动。也遇到了循环登录界面的问题,明天去试试楼主的方法。
    2018-4-14 00:33 回复

精彩评论17

dong  TF豆豆  发表于 2018-4-13 17:16:16 | 显示全部楼层
赞!帮助小白少走弯路
本楼点评(0) 收起
tidyjiang  TF荚荚  发表于 2018-4-13 18:26:50 | 显示全部楼层
google cloud, 我添加GPU卡的时候始终加不了,最后不了了之
本楼点评(1) 收起
maverickcc  TF荚荚  发表于 2018-4-13 18:27:52 | 显示全部楼层
厉害了,谢谢分享!
本楼点评(0) 收起
彭剑  TF荚荚  发表于 2018-4-13 18:30:42 来自手机  | 显示全部楼层
2018-04-13 报道
本楼点评(0) 收起
木頭  TF荚荚  发表于 2018-4-13 18:33:53 | 显示全部楼层
本楼点评(0) 收起
舟3332  TF芽芽  发表于 2018-4-13 18:52:56 来自手机  | 显示全部楼层
厉害了。谢谢分享~
本楼点评(0) 收起
生命在于运动  TF荚荚  发表于 2018-4-13 19:50:40 | 显示全部楼层
厉害了,谢谢
本楼点评(0) 收起
D版痞子  TF荚荚  发表于 2018-4-13 21:04:27 | 显示全部楼层
正好小白参考一下
本楼点评(0) 收起
crayfish  TF荚荚  发表于 2018-4-14 04:42:46 | 显示全部楼层
小白还是先从CPU的开始好一些
本楼点评(4) 收起
  • 舟3332是的。安装 GPU 的过程还是挺复杂的
    2018-4-14 14:14 回复
  • TF-boy回复 舟3332 :其实很简单,不要搜索博客,博客很多复杂化了
    2018-4-16 09:11 回复
  • 舟3332回复 TF-boy : 看来你的配置比较标准。哈哈
    2018-4-16 20:07 回复
  • TF-boy回复 舟3332 :需要安装什么就去官网,看教程
    2018-4-18 08:11 回复
Tensorflower_攸岚  TF荚荚  发表于 2018-4-15 20:10:09 来自手机  | 显示全部楼层
巧了1060 6G
本楼点评(0) 收起
$$$  TF荚荚  发表于 2018-4-16 07:57:10 | 显示全部楼层
你好,请问一下:
f.name_scope() 和 tf.variable_scope() 的区别:前者是针对 operation 的,后者是针对 variable 的

是指 operation结果的张量的名字被视作当前操作的名字 吗(主要是对于操作的概念很模糊,虽然知道操作是指加乘之类的东西)?
谢谢
本楼点评(0) 收起
TF-boy  TF豆豆  发表于 2018-4-18 08:19:21 | 显示全部楼层
在Ubuntu下有一个很简易的驱动安装方法:在系统设置(System Setting)里面选软件与更新(Software & Updates),然后点选Additional Drivers里面的“Using NVIDIA binary driver”选项,并点选右下角的“Apply Changes”即可,系统即会自动安装NVIDIA驱动。
这个方法非常好用!
本楼点评(0) 收起
jellycsc  TF荚荚  发表于 2018-4-21 07:35:55 | 显示全部楼层
谢谢分享!
本楼点评(0) 收起
neverchange  TF豆豆  发表于 2018-7-3 18:14:02 | 显示全部楼层
这些基本都遇到过,我觉得总结还是需要归档,不然沉底是必然的,要么就列出来加精
本楼点评(0) 收起
neverchange  TF豆豆  发表于 2018-7-4 11:11:38 | 显示全部楼层
如果有GPU当然使用GPU版本了,有大房子干嘛要蜗居地下室呢
本楼点评(0) 收起
ves  TF荚荚  发表于 2018-7-4 20:16:41 | 显示全部楼层
对新人有帮助
本楼点评(0) 收起
ViolinSolo  TF豆豆  发表于 2018-7-9 18:43:40 | 显示全部楼层
其实我最近用mac的cpu跑的,,,觉得比我们服务器桑德cpu还要看

话说mac没有编译的教程么,为何我没看见hhh
本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

快速回复 返回顶部 返回列表