【TensorFlow开源2年官方回顾】下一个重要方向是分布式模型服务

简介:  TensorFlow Serving 开源的一年半时间里取得了许多进展和性能提升,包括开箱即用的优化服务和可定制性,多模型服务,标准化模型格式,易于使用的推理API等。本文是研究团队撰写的回顾,并提出接下来创新的方向是Granular batching和分布式模型服务。

 TensorFlow Serving 开源的一年半时间里取得了许多进展和性能提升,包括开箱即用的优化服务和可定制性,多模型服务,标准化模型格式,易于使用的推理API等。本文是研究团队撰写的回顾,并提出接下来创新的方向是Granular batching和分布式模型服务。

自从2016年2月 TensorFlow Serving 开源以来,我们做了一些重大改进。现在,让我们再回到这个项目开始的地方,回顾我们的进展过程,并分享我们下一步的方向。

在 TensorFlow Serving 启动之前,谷歌公司内的 TensorFlow 用户也必须从头开始创建自己的服务系统。虽然一开始服务看起来很容易,但一次性服务解决方案很快就会变得更复杂。机器学习(ML)服务系统需要支持模型版本控制(对于具有回滚选项的模型更新)和多个模型(通过A/B测试进行试验),同时确保并发模型在硬件加速器(GPU和TPU)上实现高吞吐量和低延迟。因此,我们开始创建一个独立、通用的 TensorFlow Serving 软件栈。

我们从一开始据决定将其开源,开发工作是从2015年9月开始。几个月后,我们创建了最初的端到端工作系统,并在2016年2月释出第一个开源版本。

在过去一年半的时间里,在我们的用户和公司内外的合作伙伴的帮助下,TensorFlow Serving 得以提供先进的性能、最佳的实践和标准:

  • 开箱即用的优化服务和可定制性:我们现在提供一个预构建的规范服务二进制文件,针对带 AVX 的现代CPU进行了优化,因此开发人员不需要从我们的库中自己组装二进制文件,除非他们有特殊需求。同时,我们添加了一个基于注册表的框架,允许我们的库被用于定制(甚至是非TensorFlow)的服务场景。
  • 多模型服务:从一个模型扩展到多个并行服务的模型,会出现一些性能上的阻碍。我们通过(1)在隔离的线程池中加载多个模型,以避免在其他模型中出现延迟峰值;(2)在服务器启动时,并行加速所有模型的初始加载;(3)多模型批交错以复用硬件加速器(GPU/TPU)。
  • 标准化模型格式:我们将 SavedModel 添加到 TensorFlow 1.0,为社区提供了一种单一标准的模型格式,可以跨训练和服务工作。
  • 易于使用的推理API:我们为常见的推理任务(分类、回归)发布了易于使用的API,这些API适用于广泛的应用程序。为了支持更高级的用例,我们支持一个较低级的基于 tensor 的API(预测)和一个允许多任务建模的新的多重推理API。


我们的所有工作都通过与以下各方的密切合作实现的:(a)谷歌的 ML SRE 团队确保了我们团队的强壮并满足内部SLA; (b)谷歌其他机器学习基础架构团队,包括广告服务和TFX; (c)Google Play等应用程序的团队;(d)我们在加州大学伯克利分校RISE实验室的合作伙伴,他们研究与Clipper服务系统互补的问题; (e)我们的开源用户群和贡献者。

TensorFlow Serving 目前正在为1100多个我们自己的项目,包括谷歌云的ML预测,每秒处理数千万次的推理任务。核心服务代码可以通过开源版本获得:https://github.com/tensorflow/serving/releases

展望未来,我们的工作还远未完成,我们正在探索一些创新的途径。今天,我们很高兴在两个实验领域分享早期进展:

  • Granular batching:我们在专用硬件(GPU和TPU)上实现高吞吐量的关键技术是“批处理”(batching):联合处理多个样本以实现高效。我们正在开发技术和最佳实践来改进批处理:(a)使批处理能够仅针对计算的GPU / TPU部分,以获得最高效率; (b)允许在递归神经网络进行batching,用于处理序列数据,例如文本和事件序列。我们正在尝试使用Batch/Unbatch对任意子图进行batching。
  • 分布式模型服务:我们将模型分片(model sharding)技术作为处理模型的一种方法,这些模型由于太大而无法适应一个服务器节点,或者不能以节省内存的方式共享子模型。我们最近在生产中推出了一个1TB+的模型,并取得了良好的效果,希望很快开源。


原文发布时间为:2017-11-3

本文作者:马文

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

原文链接:【TensorFlow开源2年官方回顾】下一个重要方向是分布式模型服务

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
5月前
|
传感器 算法 安全
基于分布式模型预测控制DMPC的单向拓扑结构下异构车辆车队研究(Matlab代码实现)
基于分布式模型预测控制DMPC的单向拓扑结构下异构车辆车队研究(Matlab代码实现)
192 4
|
5月前
|
算法 调度
【孤岛划分】分布式能源接入弹性配电网模型研究【IEEE33节点】(Matlab代码实现)
【孤岛划分】分布式能源接入弹性配电网模型研究【IEEE33节点】(Matlab代码实现)
573 10
|
6月前
|
边缘计算 运维 算法
含分布式电源的配电网日前两阶段优化调度模型(Matlab代码实现)
含分布式电源的配电网日前两阶段优化调度模型(Matlab代码实现)
143 1
|
5月前
|
算法 安全 新能源
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
438 0
|
8月前
|
存储 机器学习/深度学习 自然语言处理
避坑指南:PAI-DLC分布式训练BERT模型的3大性能优化策略
本文基于电商搜索场景下的BERT-Large模型训练优化实践,针对数据供给、通信效率与计算资源利用率三大瓶颈,提出异步IO流水线、梯度压缩+拓扑感知、算子融合+混合精度等策略。实测在128卡V100集群上训练速度提升3.2倍,GPU利用率提升至89.3%,训练成本降低70%。适用于大规模分布式深度学习任务的性能调优。
406 3
|
11月前
|
消息中间件 人工智能 监控
文生图架构设计原来如此简单之分布式服务
想象一下,当成千上万的用户同时要求AI画图,如何公平高效地处理这些请求?文生图/图生图大模型的架构设计看似复杂,实则遵循简单而有效的原则:合理排队、分工明确、防患未然。
438 14
文生图架构设计原来如此简单之分布式服务
|
机器学习/深度学习 数据可视化 TensorFlow
使用Python实现深度学习模型的分布式训练
使用Python实现深度学习模型的分布式训练
522 73
|
11月前
|
存储 人工智能 固态存储
DeepSeek开源周第五弹之一!3FS:支撑V3/R1模型数据访问的高性能分布式文件系统
3FS是DeepSeek开源的高性能分布式文件系统,专为AI训练和推理任务设计,提供高达6.6 TiB/s的读取吞吐量,支持强一致性保障和通用文件接口,优化AI工作负载。
1629 2
DeepSeek开源周第五弹之一!3FS:支撑V3/R1模型数据访问的高性能分布式文件系统
|
SQL 分布式计算 DataWorks
MaxCompute MaxFrame评测 | 分布式Python计算服务MaxFrame(完整操作版)
在当今数字化迅猛发展的时代,数据信息的保存与分析对企业决策至关重要。MaxCompute MaxFrame是阿里云自研的分布式计算框架,支持Python编程接口、兼容Pandas接口并自动进行分布式计算。通过MaxCompute的海量计算资源,企业可以进行大规模数据处理、可视化数据分析及科学计算等任务。本文将详细介绍如何开通MaxCompute和DataWorks服务,并使用MaxFrame进行数据操作。包括创建项目、绑定数据源、编写PyODPS 3节点代码以及执行SQL查询等内容。最后,针对使用过程中遇到的问题提出反馈建议,帮助用户更好地理解和使用MaxFrame。
|
SQL 分布式计算 数据处理
云产品评测|分布式Python计算服务MaxFrame | 在本地环境中使用MaxFrame + 基于MaxFrame实现大语言模型数据处理
本文基于官方文档,介绍了由浅入深的两个部分实操测试,包括在本地环境中使用MaxFrame & 基于MaxFrame实现大语言模型数据处理,对步骤有详细说明。体验下来对MaxCompute的感受是很不错的,值得尝试并使用!
324 1