WildCat's Blog

钝鸟先飞,大器晚成

Designer + Programmer


简明深度学习工作站常用技巧和软件配置

使用自己的 PC 作为深度学习工作站已经有一段时间了。由于硬件配置是根据自己预算量力而行(当然是越贵越好 🤷‍♂️),所以这里只讨论软件配置。

由于笔者经验较少,能力有限,本文目的在于抛砖引玉而非最佳实践,帮助大家构建易用的深度学习工作站。

深度学习工具相关

  • Python 包管理工具:这里推荐还是 Anaconda,如果很想保守一点,可以在 pyenv 里安装 miniconda。当然这个问题是见仁见智,Google 开发者的一期视频大概也是这么讲的:https://www.bilibili.com/video/av24863161/
  • CUDA 和 cudnn:这个当然是根据目前你使用的深度学习框架来配置,目前主流的是 CUDA 9.x。似乎 Anaconda 也可以无痛让多个版本的 CUDA/cudnn 共存。比如,在通过 conda 安装 PyTorch 的时候,默认情况下会自动安装所需的 CUDA。
  • 编辑器:老生常谈,当然是 Jupyter Notebook 了,配合 nbextensionsnbextensions_configurator,可以实现自动代码格式化(学术界太多 shit 一样的代码了 )。如果你的 conda 有多个环境但是懒得为每个环境都单独开一个 notebook,可以直接为每个环境创建一个 kernel,这样随便在任意环境下跑 Jupyter Notebook 都可以使用不同的工具链了,比如我个人就有 TensorFlow、PyTorch 和 Python 2 专用 kernels。Help 菜单下就有快捷键介绍,经常看看很有帮助。
  • Jupyter Notebook 快捷键:很值得一学的,比如 Shift + Tab 有个简单的函数文档,有时候特别好用。
  • 可视化:常用的还是 TensorBoard,因为社区强大,功能也挺多的(虽然我只用 scalar 😂)。即使目前主要用 PyTorch 了,也可以通过 tensorboardX 支持这些功能。

通用工作站/服务器相关

  • 端口映射:由于自己用学校宿舍的垃圾网络(吐槽下英国 ASK4 这个毒瘤公司,早点倒闭吧。我写这篇博客的时候都断网了)做了内网封锁,只能用一台公网 VPS 做跳板机,把 SSH、jupyter、TensorBoard 的端口暴露出来。在这个领域,ngrok 是个传统工具,个人看来并不好用。笔者选择了 frp 作为端口映射工具,原因如下:
    • 简单明了的配置文件
    • 提供 Web UI 界面
    • 支持 kcp 协议转发
    • 与 systemd 配合比较完美,随客户端系统自动启动、连接
    • 不过目前链接断开后似乎不会重连,所以使用 TeamViewer 作为备选方案,用于重启 frp 服务。
  • SSH 多任务:由于自己服务器用了 yubikey 做二次验证,开多个 terminals 连接服务器做二次验证还是挺烦的。所以用了 iTerm 2 配合 tmux -CC 命令(参见 iTerm 2 documentation)多做任务窗口。其实 Jupyter Notebook 也可以开 Terminal,这两种方式都挺好用的。
  • 任务终端重连:screen 是个很好用的工具,使用 screen -S [name] 创建虚拟 screen,跑耗时任务,即使 SSH 链接断开也没关系。更多使用技巧参见 GNU screen quick reference

其他

  • Dash 仍旧是一个 macOS 上不错的文档查询工具,也是大幅提升开发效率的软件,强烈推荐入手。
  • Visual Studio Code 和 PyCharm 仍旧不错,不过由于大部分实验代码都直接跑在工作站上,这两者的使用频率并不高。

总结

今天趁着网络不好大概总结这么多,以后再慢慢补充完善。工具这种事情肯定是见仁见智,本文的目的也不是为了提供一个完美的解决方案,只是一个参考而已。如果你有其他不错方案,欢迎在评论里提出。感谢。

最近的文章

微信支付开发踩坑与吐槽

微信支付作为国内非常便捷的支付系统,自然有着很大的吸引力。然而,与之规模不相称的是,微信支付的开发是一个非常痛苦的过程。自己就面临着资料少且不全、文档不专业不具体的种种问题,甚至还有一些不为人知的隐秘 bug。本文将从最常用的微信支付渠道之一——微信公众号支付的开发讲起,抛砖引玉,总(tu)结(cao)开发中遇到的坑,以节约大家宝贵时间,避免重复踩坑。特别鸣谢:@yelo。让人迷惑的 key,key,key微信支付大概需要 4 种密钥(参考来源): APPID:对于公众号,就是公众号的“...…

继续阅读
更早的文章

Google ML Kit 初探:一个来自机器学习初学者的不专业测评

欢迎转载,请注明原文链接。在 Google I/O 2018 上,Google 发布了 ML Kit 1。通过 ML Kit,即使没有机器学习背景的开发者也可以快速开发出一些基于机器学习的项目2。调用 ML Kit 的 API 就像调用其他移动原生 SDK 一样简单。这对于多次入门机器学习,却仍旧还在入门的我来说,的确是一个激动人心的消息 😅。不过,Google 的这个 ML Kit 能否在自己的 apps 广泛使用?有哪些优点缺点?尤其是对于中国特殊的网络环境,又究竟会如何呢?本文将...…

继续阅读