2021年10月18~20日,由IT168联合旗下ITPUB、ChinaUnix两大技术社区主办的第12届中国数据库技术大会(DTCC2021)在北京国际会议中心召开,大会以“数造未来”为主题,围绕数据架构、人工智能与大数据应用等内容展开分享和探讨。58同城TEG AI Lab高级架构师陈兴振在人工智能与大数据应用专题下分享了《58同城机器学习平台资源使用率优化实践》。本文根据分享实录整理,欢迎大家阅读分享。 01 背 景 WPAI机器学习平台是AI应用的底座,我们基于WPAI打造了灵犀智能语音语义平台、MAI智能营销引擎、智能写稿,具体请参见58同城 AI Lab 产品能力介绍。 02 训练任务资源调度 03 推理服务弹性扩缩容 弹性扩缩策略服务受数据驱动提供多重计算策略,包括实时扩缩计算策略、预测扩缩计算策略、过滤策略、系统策略、兜底策略、告警策略等。实时扩缩计算策略接受推理服务最近5分钟的CPU、GPU资源使用数据,计算出当前资源使用率,对CPU和GPU使用率分别进行判断,当最近2分钟使用率都超过扩容阈值时则按扩容公式进行增大副本数,当最近5分钟使用率都小于缩容阈值时则按缩容公式进行减小副本数。预测扩缩计算策略跟实时扩缩计算策略流程相似,取的是调用模型预测计算得到的未来5分钟的GPU、CPU使用率数据,当未来5分钟中任意2分钟超过扩容阈值时则按扩容公式进行增大副本数。过滤策略则会过滤各种异常状态,如Kafka实时数据消费过慢超过2分钟之前的数据过滤不处理,正在进行扩缩容操作的推理服务不进行重复扩缩处理,已下线及未开启扩缩容功能的推理服务不进行处理,正在进行手动部署的模型不进行处理,判断推理服务最近3分钟的节点数是不是一个稳定状态等。系统策略指系统定义的基本规则,如每个推理服务最少节点数为2个,白天流量高峰时段不进行缩容等。兜底策略指自动扩缩容系统监控接入数据异常的处理策略,比如某个推理服凌晨进行了缩容,白天流量高峰时策略服务获取不到推理服务实时的指标数据不能进行扩容导致线上请求异常,针对这种极端情况系统对已经开启自动扩缩容的推理服务进行实时监控,连续5分钟没有实时指标数据时则将服务节点数恢复至昨天的最大节点数。告警策略对服务扩容失败等异常情况进行及时告警。 推理服务弹性扩缩容除实现节点的水平自动扩缩外,还实现了节点数量1->0&0->1自动扩容、定时扩缩容、垂直扩缩容等功能,未来扩容缩计算指标除了GPU/CPU使用率还将加入推理请求QPS、耗时、异常量、限流量等指标。 04 离在线资源混部 05 模型推理加速 TensorRT是NVIDIA推出的一款基于CUDA和cuDNN的神经网络推理加速引擎,能从以下几个方面来提升模型在GPU上推理性能: 针对部署在GPU上的深度学习模型,我们采用TensorRT+TIS加速方案,TensorFlow构建的SavedModel格式模型、PyTorch构建的pth格式模型、Keras构建的H5格式模型等先统一转换为ONNX格式,然后通过TensorRT的ONNX Parser模块进行加载解析为TensorRT内部的网络图,最后利用TensorRT进行图层融合等方式进行优化,序列化为Optimized Plans文件。而对于含有TensorRT不支持算子的模型,平台建立自定义算子库,利用TensorRT Plugin插件机制进行实现,将不支持的算子替换为用户自定义的计算逻辑以获得TensorRT优化支持。优化后的Optimized Plans文件通过TIS进行加载提供线上推理服务。 平台基于OpenVINO Model Optimizer和Model Server实现CPU上推理加速,封装了模型转换工具集,将TensorFlow训练的SavedMoel格式模型、PyTorch训练的pth格式模型结合Model Optimizer自动优化为IR格式,然后通过Model Server加载对外提供gRPC/HTTP调用。我们在应用OpenVINO工具时也发现一些问题,如OpenVINO虽然支持大多数主流的OP操作,但也有少量OP暂时还没有支持,如果模型中含有这类OP,则这个模型的优化转换流程执行就会失败,另外OpenVINO并不支持动态输入模型,对于一些输入无法确定的OP和模型无法进行优化。平台从自定义OP扩展、相似OP替换、模型重塑三个方面提供解决方案。 06 总 结 |
|