简介:欢迎走进走进阿里云机器学习PAI AICompiler编译器系列。近期,阿里云机器学习PAI团队全新上线一套Dynamic Shape Compiler框架,不仅作为AICompiler技术栈中原有的Static Shape Compiler框架的重要补充,更是增加了Compiler在企业级数据处理应用的无限可能,在提升数据处理效率的同时,大幅提升AI工程化效率。
移动互联网的兴起,不仅产生了海量数据,也对人机交互有了新的定义。企业如何动态处理不同规格图片数据,如何更灵活处理不同长度的对话语料等等,提升企业运营效率,争取更多的商业机会和流量,成为众多企业探索的热门技术应用。
近期,阿里云机器学习PAI团队全新上线一套Dynamic Shape Compiler框架,不仅作为AICompiler技术栈中原有的Static Shape Compiler框架的重要补充,更是增加了Compiler在企业级数据处理应用的无限可能,在提升数据处理效率的同时,大幅提升AI工程化效率。先来看看案例和效果数据。
性能结果
某TensorFlow语音识别业务示例
以某业务方的语音识别模型为例。过往我们为这个业务提供的优化主要基于Static Shape Compiler,但因为shape变化范围较大,只能采用离线预编译的方式来完成部署,部署过程较为繁琐。
下图展示了基于Dynamic Shape Compiler在不同batchsize下的实际性能结果,其中纵轴为latency的提升倍数。整体编译次数从之前的几千次降低到1次。从数字上来看,在只有一次编译的较小编译开销下,性能十分接近Static Shape Compiler的性能优化结果。
某TensorFlow广告推荐业务示例
下面这个例子是某广告推荐业务方的推理模型,在线上系统中,预估时的input shape变化非常频繁,比如:用户画像标签个数可能不同;用户的历史行为序列的长度会不同;召回广告的集合大小会不同;广告所属类目的数量也会不同。这些变量会最终导致请求预估服务的input shape也是时刻变化的。
过往业务方的同学需要通过batching/手工干预圈图等方式才能将编译次数控制到可接受范围内,造成每次模型迭代后部署过程较为繁琐。从性能结果上看,对比基于XLA优化的性能,Dynamic Shape Compiler基本接近甚至超过Static Shape Compiler的性能优化结果。
某TensorFlow语音合成业务示例
我们以某业务方的TTS模型为例,具体看一下实际业务中对优化工具对动态shape支持的需求情况。在这个业务模型里,用户的输入sequence length输出sequence length都可能发生变化。此外,由于TTS类算法本身需要在推理过程中引入随机数的特点,即使输入同一条样本,内部子图的shape也会发生变化。我们测试了如果基于static shape compiler来优化这个模型的话,输入数据数量以及累积编译次数的变化曲线。在这个业务模型中每个shape的编译开销约为20s左右,可以看到在经过几百轮迭代之后,编译cache都还没有收敛趋势,根据理论shape变化范围测算总编译时间至少在10个小时以上,因此这类业务如果使用XLA等静态shape编译器的话,无法透明的实现可商用的部署。AICompiler里面的dynamic shape compiler组件很好的解决了这一问题,在一次编译的前提下帮助用户

阿里云机器学习PAI团队推出DynamicShapeCompiler,作为StaticShapeCompiler的补充,专注于解决企业级数据处理中的动态形状问题。该框架提升了数据处理和AI工程化的效率,尤其适用于处理不同规格图片数据和变长对话语料的业务。通过减少编译次数和优化性能,DynamicShapeCompiler在语音识别、广告推荐、语音合成和公式识别等多个业务场景中展现出优越的性能,实现了接近或超过StaticShapeCompiler的优化效果。此外,DynamicShapeCompiler支持PyTorch和TensorFlow等多框架,且具备编译模式自动切换功能,旨在提供对动态形状类业务的通用透明支持。
最低0.47元/天 解锁文章
4035

被折叠的 条评论
为什么被折叠?



