BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Booking.com是如何将Kubernetes用于机器学习的

| 作者 Manuel Pais 关注 9 他的粉丝 ,译者 盖磊 关注 2 他的粉丝 发布于 2018年4月4日. 估计阅读时间: 3 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

Sahil DuaBooking.com的一名开发人员。在今年的QCon伦敦大会上,他介绍了Booking.com是如何使用Kubernetes实现机器学习模型的扩展,为客户推荐目的地和住处。他重点展示了Kubernetes是如何通过容器的弹性和避免资源饥饿特性,帮助企业运行计算和数据密集的、难以并行处理的机器学习模型。

Kubernetes所提供的隔离性(进程不必竞争资源)、弹性(基于资源的消费情况而自动向上或向下扩展)、灵活性(具备快速测试软件库或架构的能力)和支持GPU(尽管Kubernetes对NVIDIA GPU的支持依然是Alpha版,但已经实现20到50倍的速度改进)等特性,对于以Booking.com的规模(每日约150万次房间预订,每月约4亿访客)运行大量的机器学习模型是十分关键的。下面的配置通过指定Pod所需的GPU资源,告知Kubernetes为节点调度一个GPU单元

resources:
  limits:
    alpha.kubernetes.io/nvidia-gpu: 1

每个模型以无状态应用运行在一个容器中。但容器镜像中并不包括模型本身,而是在启动时从Hadoop获取。这使得镜像可以维持较小的规模,避免了每推出一个新模型,就要为此创建一个新的镜像,进而加速了模型的部署。模型一旦部署,就可通过REST API访问,Kubernetes将开始轮询容器是否准备好,可以接收预测请求,最终直至流量导向新的容器。

除了Kubernetes的自动扩展和负载均衡之外,Dua还介绍了Booking.com为优化模型延迟而采用的其它一些技术,就是保持模型加载在容器的内存中,并在启动容器后对模型做热身(即通过向Google的机器学习框架TensorFlow发送初始请求。TensorFlow的首轮运行通常比较慢)。但是并非所有请求均来自于运行中的系统,在一些情况下,可以预先计算预测情况并存储,以供其后使用。预先计算重在优化通量(即单位时间完成的工作量)。Dua指出,批处理请求和并行处理异步请求有助于降低网络开销,进而提高通量。

机器学习模型在提供给Booking.com做预测之前,需要使用一些预先挑选的数据进行训练。训练过程也是运行在Kubernetes架构上的。训练运行在容器的基础镜像中,但基础镜像中仅包含了训练所需的框架,例如TensorFlowTorch等,它从Git代码库获取实际训练的代码。Dua强调,这种设计再次使得容器可维持较小的规模,避免了镜像随新版本代码而不断增殖。训练数据也是从Hadoop集群获取。一旦模型训练好(即完成训练工作负载),模型将导出到Hadoop。

查看英文原文: How Booking.com Uses Kubernetes for Machine Learning

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT