谁说 Python 搞不定 AI 模型微服务?!Towhee 来了!( 三 )
文章图片
代码中方括号的部分指定了schema的相关信息 。 这个例子中3个Operator够成了一个收尾相连的链 , 当然 , 还可以通过DataCollection定义一些比operator-chain更复杂的DAG:
文章图片
这个例子中 , 我们先通过YOLOv5检测图片中出现的objects , 然后在原图中将这些objects裁切出来 , 并使用CLIP分别对这些objects的图片进行embeddingfeature的提取 。 这个DAG画出来是这个样子:
文章图片
CLIP示例对应的DAG高性能推理服务Towhee项目的目标不是打造一款全新的推理引擎 , 而是聚焦于让现有的高性能推理引擎更加落地 。 目前 , Towhee的推理服务适配了NvidiaTriton推理框架 , 主要特性包括:推理流水线DAG 。 相比常见的推理引擎只支持“单纯的神经网络模型推理” , 或“前处理-模型推理-后处理三阶段流水线” , DAG型的流水线可以覆盖更丰富的数据处理组合逻辑 。 异构的推理后端 。 DAG中的每一个算子节点可以在不同的后端引擎上执行 , 既包括神经网络推理引擎 , 如Pytorch(TorchScript) , ONNXRuntime,TensorRT;也包括通用的数据处理过程 , 如Python函数 , DALI , 或自定义Python/C++后端;还包括数据库/索引连接器 , 如Milvus , FAISS 。 极致的推理性能 。 推理服务可在NVIDIAGPU , x86/ARMCPU上高效运行 , 支持多GPU , 支持多模型实例 , 支持实时、流式、批处理、动态批处理请求 , 支持流水线自动并行 。 Docker与Kubernetes部署 。 推理流水线都以Docker镜像的方式进行封装 , 对外提供grpc与http接口 , 隐藏大量内部复杂性 。 可通过Kubernetes轻松部署推理微服务 。 在支持上述特性的同时 , Towhee为用户完成了大量自动化工作 , 包括逻辑图到物理图的映射 , 物理图到异构执行后端的映射 , 以及运行期调度 。
文章图片
DAG的映射与自动优化上图给出了CLIP这个例子从流水线定义到生成推理流水线服务的过程 。 从上到下 , 整个自动化构建与执行过程共分三个阶段 , 分别是逻辑图(编译期) , 物理图(编译期) , 以及执行后端(运行期) 。 逻辑图是通过对DataCollection进行Trace所获得的关于图定义的完整元信息 。 物理图会对逻辑图中各个算子节点进行物理实现的绑定 , 如image_decode节点在物理层会以Pythonmodel的方式执行OpenCV程序 , CLIP对应的图片前处理过程在物理层会绑定DALI实现 , CLIP模型在物理层会绑定TensorRT实现 。 同时 , 这些算子节点会在物理层完成ensemble的相关配置、实例个数配置、以及物理资源的分配 。 在运行期 , 会根据物理图上各个节点的物理绑定 , 适配执行后端 , 以及物理内存与计算资源 , 并根据图上各个算子节点的依赖关系 , 驱动流水线的自动化执行 。 RoadmapTowhee项目的Roadmap可以在官网(https://towhee.io/)查看 。 目前 , Towhee项目还在快速迭代与重度研发的阶段 。 项目Roadmap上的关键内容有:前沿算法模型模型方面 , 近期会聚焦CVPR2022新出炉的前沿成果 , 如CV大神何恺明的MAE , 香港大学、UCBerkeley、腾讯合作的MCQ等 。 同时 , 会集成AutoEncoder , 提供向量降维能力 。 对于中文跨模态搜索、多模态召回、代码等数据上的任务类型也会有模型更新 。 进展详情请关注项目的ModelChangeLog 。 计算机视觉:MAE:MaskedAutoencodersAreScalableVisionLearnersCVPR2022(backbone)SVT:Self-supervisedVideoTransformer(actionrecognition)TransRAC:EncodingMulti-scaleTemporalCorrelationwithTransformersforRepetitiveActionCounting(repetitiveactioncounting)CoFormer:CollaborativeTransformersforGroundedSituationRecognition(actionrecognition/groundedactioncounting)MCQ:BridgingVideo-textRetrievalwithMultipleChoiceQuestion(textvideoretrieval)STRM:Spatio-temporalRelationModelingforFew-shotActionRecognition(actionrecognition)多模态:CoOp:ConditionalPromptLearningforVision-LanguageModels(visuallanguagetask)CVNet:CorrelationVerificationforImageRetrieval(imageretrieval)代码文件:CodeBERT:APre-TrainedModelforProgrammingandNaturalLanguagesCodeGen:AConversationalParadigmforProgramSynthesisEmbedding向量降维:Autoencoder编程接口与工具更加统一的DataCollection批处理接口与流处理接口 。 支持自定义的算子 。 Towhee目前给出了比较丰富的标准算子模块 , 但在常见的业务流程中 , 通常会引入业务逻辑 , 自定义算子可以很好的满足这部分需求 。 Towhee的自定义算子将会包含两种形态 , 一种是通过python的lambda表达式生成 , 另一种是通过继承Operator基类生成 。 算子的打包与安装工具升级 。 支持基于pip的打包与安装 , 并提供基于AWSS3的模型参数下载服务 , 优化本地模型参数缓存 。 推理服务优化支持视频与音频的推理流水线 。 长视频或长音频的处理往往会耗费大量物理资源 , 针对这类场景 , Towhee将不再一次性展开帧数据 , 而是提供流式的帧数据处理 , 以降低内存/显存需求 。 在推理服务构建中完整支持Schema 。 基于numba的python算子自动优化(实验阶段) 。 Towhee通过自定义算子支持业务相关的逻辑 , 我们鼓励用户使用python来快速构建这些逻辑 , 同时 , Towhee会在底层对这些python代码进行尽可能的优化:基于numba , 使用LLVM编译技术解释字节码 , 优化IR并翻译到目标代码进行执行 。 本地执行优化支持基于ApacheArrow的列存数据 , 提高本地内存利用率 , 支持连续内存上的向量化执行 。 Transformer模型结构的执行性能优化(实验阶段) 。 Towhee项目的相关链接Github:https://github.com/towhee-io/towhee项目主页:https://towhee.io/tasks/operatorSlack:https://slack.towhee.io/
- 苹果|iPhone 14涨价千元还嫌贵?爱买不买 供应链称苹果搞不定全球通胀 备货近亿台
- 6g|俄罗斯跳过5G直接搞6G,华为已经完成6G测试,多款6G原型机亮相
- 2019年搞笑朋友圈,看完真的会笑断头哈哈哈哈哈
- Java|Java:Java与Python——顶级编程语言比较
- 华为鸿蒙系统|外媒:看来美国是要把把事情搞大了
- 俄罗斯跳过5G直接搞6G,华为已经完成6G测试,多款6G原型机亮相
- Python|“新骗局”之下,支付宝荣登热搜,大量储户开始转移资产?发生了什么
- Python|拿走不谢!清华教授28小时讲完的python!完整版400集
- TIOBE 8 月编程语言排行榜:没有一门语言能比得上 Python!
- 空调|格力搞降价了!新一级能效空调跌至3000多:搭载松下压缩机