前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >另一种开源:OpenAI 介绍深度学习基础设施

另一种开源:OpenAI 介绍深度学习基础设施

作者头像
新智元
发布2018-03-23 14:31:19
9831
发布2018-03-23 14:31:19
举报
文章被收录于专栏:新智元新智元

【新智元导读】OpenAI 昨天在博客发文,结合实例,介绍了 OpenAI 进行深度学习研究时采用的基础设施配置,并且提供了相关开源代码。文章激起了很多反响,其中也有负面评论,比如有用户在 Hacker News 指出,OpenAI 博文只提供了“训练”部分的细节,称不“深度学习基础设施”。不过,相对于软硬件开源,OpenAI 从另一个侧面,对深度学习模型的实际部署提供了帮助。下文是对 OpenAI 官方博文的编译。

深度学习是一门实践科学,而拥有好的基础设施对项目进展有着事半功倍的效果。所幸,如今的开源生态系统,让每个人都能够搭建很好的深度学习基础设施。

在这篇文章里,我们将分享深度学习研究进展,描述我们选择使用的基础设施,并且开源一个 Kubernetes 批处理优化缩放管理器(Scaling Manager),希望对你进行深度学习有用。

实例:Improved Techniques for Training GANs

使用情况

深度学习项目一般从想法开始,先在小问题上测试。这个阶段,你希望快速运行实验,理想情况下,最好在屏幕上跑代码,不出一个小时就能得到结果。

要让模型真的跑起来,必须要在可以预想的每一步都想好,并且针对局限制定预防措施。(这就跟搭建软件系统一样,必须跑很多次代码才能了解软件如何运作。)

你必须从每个角度审视你的模型,从而了解模型实际上学到了什么。例如 Dario Amodei 这个游戏里的强化学习代理(负责控制右边的平板),它取得了高分,但仔细观察发现,它其实只是停在一处而已(详见 https://openai.com/blog/infrastructure-for-deep-learning/?ref=mybridge.co)。

因此,深度学习基础设施必须使用户灵活反思模型,只是得到摘要统计数据是不够的。

一旦模型显示出足够的潜力,你就应该把它放大到更大型的数据库和更多GPU上运行。这个有时候需要花上好几天的时间。你需要仔细进行试验管理,对选择的超参数范围尤其经心才行。

研究早期阶段是没有规律的,时间过得很快;而后期则是一丝不苟,某种程度上说有些艰苦,但这些都是取得理想结果必须付出的。

基础设施

软件

我们研究中的绝大部分代码都是用Python写成,这在我们的开源项目中已经有所体现。我们的GPU计算大部分使用的是TensorFlow,在特定的例子中,会使用Theano。CPU的计算,除了使用以上提到的,我们还使用Numpy。研究者有时候也会使用高水平的框架,比如Keras。

和大多数深度学习社区一样,我们使用Python2.7。我们通常会使用Anaconda,它在打包上较为方便,特别是针对一些难以打包的工具,比如针对科学数据库的OpenCV和Performance Optimizations。

硬件

对于一个理想的批量作业,集群中的节点数量增加1倍,可以把工作时间减半。不巧的是,在深度学习中,人们经常看到,虽然GPU增多,但是增速却没有多大提升。所以,顶尖的性能要求有最顶级的GPU。我们还使用一个大量的CPU,用于模拟器和增强学习环境,或者小型的模型中。

AWS 非常慷慨,同意送给我们大量的计算。我们正在CPU的例子和水平扩展的GPU中使用它们。我们也在运营自己的实体服务器,主要跑TitanX GPU,我们希望能有一个混合的云,可以长期使用:用不同的GPU、互联和其他技术进行试验,这对深度学习的未来是很重要的。

条款

我们对待基础设施就像许多公司对待产品一样:它必须代表一个简单的交互,并且,可用性是一个重要的 功能。我们使用一系列连续的工具来管理我们所有的服务器,尽可能同等地安装它们。

我们使用Terraform来设置自己的AWS云资源(比如,网络路线,DNS记录等等)。我们的云和实体节点运行Ubuntu,和Chef一起安装。为了获得更快的注册速度,我们使用Packer来预先bake集群AMI。我们所有的集群使用的都是非重叠的IP,这些集群在公共互联网上,使用我们研究员笔记本的OpenV**实现互联,在实体节点上使用的则是StrongSwan。

我们会存贮人们的主目录、数据集以及NFS、EFS/S3上的结果。

编配(Orchestration)

可扩展的基础设施通常最后都会让简单的事情变得更困难。我们在小型和大型任务中的基础设施上都付出了相同的努力,我们也在积极地巩固自己的工具包,让分布式的使用案例与局部性的一样可获取。

我们提供了一系列SSH节点(有的包括GPU,有的没有),可用于专用的实验和运行Kubernetes,这是我们针对实体和AWS节点的集群计划。我们的集群跨越了3个AWS区域——我们的工作充满了突发性,所以有时候,我们会在扩展个人区域的能力。

Kubernetes 要求每一个任务狗咬变成一个 Docker容器,使得我们可以获得独立的位置和代码快照。但是,建立一个新的Docker 容器,会在研究者的循环周期中增加额外的时间,所以我们提供了一个工具,来透明地把代码从研究者的笔记本电脑转移到标准图像中。

我们直接向研究者的笔记本公开了Kubernetes的flannel网络,让用户可以通过网络无缝地进入自己正在运行的工作。这对进入监测服务器,比如TensorBoard特别有用。

kubernetes-ec2-autoscaler

代码:https://github.com/openai/kubernetes-ec2-autoscaler

编译来源:Infrastructure for Deep Learning

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档