机器之心整理 参与:李泽南、李亚洲
问卷结果 该调查问卷文章发布之后共有超过 10800 名读者阅读,收到大量有效答卷,另有 16 名读者是以留言的方式在文章下介绍了自己的开发系统。大部分被调查者来自中国大陆,此外还有多名来自北美大学和研究机构的调查者参与其中。以下的数据统计图表中,并不包含微信文章留言的数据。 根据表单后台的数据统计,参与调查的读者中大部分为学生,然后是开发工程师、研究员、产品经理等。 而在被调查者的研究方向上,计算机视觉领域占比接近一半(48.2%),自然语言处理次之(26.8%),这部分反映了目前深度学习的主要研究方向。此外还包括金融风控、数据分析、现场安全识别、通信、时空大数据、医学图像、催化以及材料模拟等领域。 下面就开始详细为大家介绍调查者们最常用的编程语言、深度学习框架,以及在开发过程中面临的难题。 一、Python 成为深度学习主流语言 机器之心一直关注机器学习研究员、工程师在开发过程中所注重实用的工具、语言。在不久之前发布的文章《业界 | 超越 R,Python 成为最受欢迎的机器学习语言》中,KDnuggets 与 O'Reilly 的调查结果都表明,越来越多的人开始使用 Python 进行机器学习。 2016 年 KDNuggets 调查结果 在机器之心问卷中,对于问题「您认为哪种语言会成为深度学习的主流语言?」,所有被调查者的态度完全一致:Python!看来,Python 已是绝大多数从业人员必须学习的语言,同时也是众望所归的未来主流深度学习语言。 O'Reilly 2016 年度数据科学薪资调查曾显示:Python 和 Spark 是最对薪资有贡献的工具。Python 具有开发速度快的特点,Caffe、TensorFlow 等主流深度学习框架都对其支持。腾讯最近推出的机器学习高性能计算平台 Angel 在支持 Java、Scala 之外,也将在未来对 Python 提供支持。 在机器之心的问卷中,调查者反馈,虽然他们会使用其他编程语言,比如 R、C ,但实际运行程序的编写还是主要使用 Python,简单、开发速度快是很大的优势。 其他语言的使用情况简介如下:Matlab 用于快速完整、可视化研究;R 方便框架模型的验证分析,也便于处理数据和画图。因此,多数人在不同的开发流程中使用不同的语言。 二、TensorFlow 占据半壁江山 而在框架方面,谷歌支持的 TensorFlow 就没有这样的垄断地位了,不过它也已占据了接近一半(48%)的水平。完善的功能和大量的支持文档(众多 TensorFlow 支持者提到的)是目前 TensorFlow 的强项,存在于 GitHub 中的大量实现更是不容忽视,可视化工具 TensorBoard 则为开发者提供了直观的引导。但由于网络问题,TensorFlow 系统在大陆的搭建是个难题。部分被调查者也指出,TensorFlow 的 Windows 支持也为他们带来了便利。 Facebook 新近推出的框架 PyTorch 人气急剧攀升,在仅仅推出 5 个月的情况下达到了第二的位置(16%),因支持动态计算图,易用性和强大的性能而出名。在业界还需要产品迁移的情况下,学界已经出现拥抱 PyTorch 的趋势了。 同属于 Facebook 的 Caffe/Caffe2 则占据第三(14.7%),大部分被调查者在对于 Caffe 系列的评价中都提到了快速的特点。 此外,亚马逊支持的 MXNet 占据了 10.7% 的用户数量,排名第四。被调查者认为,MXNet 拥有很好的社区支持,因而易于使用。 三、硬件 硬件方面,超过一半的被调查者明确表示自己的深度学习硬件是英特尔 Core i7 英伟达 Geforce GTX 1080(Ti)的组合。与 TitanX 相比,英伟达 Tesla 系列的应用显得更少,看来英伟达推动的商用机器学习计算卡仍然需要进一步的推广。由于资源限制,GPU 阵列的使用并不流行,而云服务也没有被大部分开发者采用(也是经费原因)。 目前,虽然人们对于多 GPU/分布式机器学习训练/处理的呼声很高,但相关的教程和可以借鉴的方法仍显欠缺,这或许是经费之外人们面临的最大难题。 四、系统 Linux 显然是深度学习的必备系统,虽然 TensorFlow 已有 Windows 支持,但大多数受访者表示自己的深度学习机器使用基于 Linux 的 Ubuntu 系统。 五、面临的难题 在搭建深度学习环境的过程中,各组件的兼容性问题一直是困扰开发者们的难题,部分开发者表示依赖关系处理比较头疼,而使用 Docker 可以部分解决这些问题。英伟达的 cuda/GPU 驱动程序安装困难也是很多调查者提到的问题。
本次深度学习开发环境调查已经结束,由于样本数量限制,这次我们得出的结论可能不甚准确。深度学习的开发环境会随着技术的发展不断进化,未来究竟是百家争鸣,还是一家独大?欢迎大家前来讨论。感谢大家对机器之心此次调查问卷的支持,获得奖品同学的礼物已经寄出。 Jupyter Tensorflow Nvidia GPU Docker Google Compute Engine 这一部分,我们编译了一篇新的深度学习开发环境配置:Jupyter Tensorflow Nvidia GPU Docker Google Compute Engine。 动机:商业上喜欢快捷、且由数据驱动的洞见,因此他们聘请了数据科学家来处理这些任务。实践性的数据科学是探索性、迭代性的过程,这个过程要求大量的计算资源和时间。数据科学家经常使用 Jupyter notebook 以更好地支持这种探索性的迭代,同时更倾向于使用 GPU 以加速 Tensorflow 项目的计算。然而,GPU 成本比较高,而计算资源也需要小心地管理以满足商业上对高效运算的需求。 近来云计算倾向于使用 Kubernetes 和 Docker 提高资源利用率。那数据科学的工具(如 Jupyter 和 GPU 等)嵌入 Docker 和 Kubernets 会更有效吗?也许这样更节约时间和内存,我前面已经用过了其他版本,但现在的环境配置是比较优秀的。 创建一个 GCE 实例 首先,创建防火墙规则,将 Jupyter(8888)和 Tensorboard(6006)添加到白名单中。 然后创建一个 GCE 实例,对于该案例:
安装和确认 CUDA 能访问 GPU 使用英伟达的 CUDA 库取得访问 GPU 的权限。 下一步需要将 SSH 添加到你创建的计算节点中,然后使用脚本安装 CUDA(https://cloud.google.com/compute/docs/gpus/add-gpus):
然后你能使用 wget 命令 pull 来源 gist 并输入到 bash 中:
如果 CUDA 安装成功了,运行 nvidia-smi 命令将返回表格显示可用的 Tesla K80 GPU:
安装 Docker(-Engine) 和 Nvidia-Docker 对于 docker,我们需要从 Docker 获取 docker-ce 版本,而不是 Ubuntu 自带的 docker.io 包。可以使用以下脚本完成(https://docs./engine/installation/linux/ubuntu/)(https://docs./engine/installation/linux/ubuntu/%EF%BC%89):
或使用我的:
从 deb 文件安装 nvidia-docker(https://github.com/NVIDIA/nvidia-docker/releases/):
从 Docker 容器确认 GPU 是可用的 起始化 nvidia-docker-plugin 需要在跟权限下运行:
现在确保 docker 容器可以看到 GPU:
如上图所示,现在得到的表格和前面使用 nvidia-smi 命令,且没有在 Docker 容器里运行得到的表格是一样的。 创建一个 Snapshot 卷 如果你跟着上面运行下来了,你可能注意到它需要花费一点时间。而当我们运行 GPU 实例时,那成本就比较大了。所以我们需要避免重复以上过程浪费时间和内存,我们可以将以上过程做一个整合,当我们需要启动 GPU 时就可以直接使用。 登陆 Jupyter 和 TensorBoard
上面命令可以展示为一个链接:
最后寻找一个 GCE 实例的外部 IP 地址,并将它连接到端口 8888,即 http://EXTERNAL_IP:8888/,从你的控制台键入类似的符号,现在你就拥有了一个可以在 GPU 上运行 TensorFlow 的 Jupyter notebook。 原文链接:https:///google-cloud/jupyter-tensorflow-nvidia-gpu-docker-google-compute-engine-4a146f085f17 |
|
来自: 昵称42427018 > 《算法与培训》