【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年官方回顾】下一个重要方向是分布式模型服务

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习之格式转换笔记(三):keras(.hdf5)模型转TensorFlow(.pb) 转TensorRT(.uff)格式
将Keras训练好的.hdf5模型转换为TensorFlow的.pb模型,然后再转换为TensorRT支持的.uff格式,并提供了转换代码和测试步骤。
115 3
深度学习之格式转换笔记(三):keras(.hdf5)模型转TensorFlow(.pb) 转TensorRT(.uff)格式
|
3月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
130 3
|
30天前
|
机器学习/深度学习 数据可视化 TensorFlow
使用Python实现深度学习模型的分布式训练
使用Python实现深度学习模型的分布式训练
173 73
|
28天前
|
消息中间件 存储 安全
分布式系统架构3:服务容错
分布式系统因其复杂性,故障几乎是必然的。那么如何让系统在不可避免的故障中依然保持稳定?本文详细介绍了分布式架构中7种核心的服务容错策略,包括故障转移、快速失败、安全失败等,以及它们在实际业务场景中的应用。无论是支付场景的快速失败,还是日志采集的安全失败,每种策略都有自己的适用领域和优缺点。此外,文章还为技术面试提供了解题思路,助你在关键时刻脱颖而出。掌握这些策略,不仅能提升系统健壮性,还能让你的技术栈更上一层楼!快来深入学习,走向架构师之路吧!
61 11
|
2月前
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤
本文介绍了 TensorFlow,一款由谷歌开发的开源深度学习框架,详细讲解了使用 TensorFlow 构建深度学习模型的步骤,包括数据准备、模型定义、损失函数与优化器选择、模型训练与评估、模型保存与部署,并展示了构建全连接神经网络的具体示例。此外,还探讨了 TensorFlow 的高级特性,如自动微分、模型可视化和分布式训练,以及其在未来的发展前景。
173 5
|
2月前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
118 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
124 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
2月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
2月前
|
存储 分布式计算 负载均衡
分布式计算模型和集群计算模型的区别
【10月更文挑战第18天】分布式计算模型和集群计算模型各有特点和优势,在实际应用中需要根据具体的需求和条件选择合适的计算架构模式,以达到最佳的计算效果和性能。
90 2

热门文章

最新文章