时间:2022-11-07 00:47:01
机心报道
参加:一鸣惊人,杜伟
深度学习模式往往离实际APP应用很远,选择合适的工具进行开发、部署和测试非常重要。 本互联网产品经理和开发人员技术指南将帮助您找到合适的解决方案。
众所周知,深度学习模式只是构建AI产品的重要步骤,但不是全部。 APP等互联网产品想要整合深度学习能力,往往需要完成设计、开发和测试工作。 如何引入深度学习往往成为系统设计中更为重要的问题。
最近GitHub上有这样的项目,介绍了如何将深度学习算法和模型集成到互联网产品中。 项目基本以流程、架构图为主,目前仍在完善中,适合产品经理和开发人员学习。
项目地址: https://github.com/alireza dir/production-level-deep-learning
深度学习产品体系结构概述
训练深度学习模型没有在生产阶段引入算法模型那么困难。 如图所示,模型只是整个系统的一部分。
深度学习模型包括配置、服务基础设施、数据检索和特征提取等步骤,以及数据验证、分析、监控、流程管理和机器资源管理。 生产级的深度学习APP非常复杂。
由于这些流程、APP应用程序、工具和硬件更加复杂和多样化,因此必须按照特定的流程和步骤,选择合适的工具来推进项目。
为了介绍所需的产品构建流程,项目制定者将其分为多个部分,包括数据管理、开发培训评估、测试等步骤。
数据管理
数据管理是产品级深度学习APP要解决的第一个问题。 选择合适的工具可以获得模型稳定、标记准确、均衡的数据。
数据源
怎么获取数据? 这是常见的问题。 通常有以下三种方法。
刚开始使用公开数据——构建产品时可以使用; 图像数据旋转裁剪等数据扩展; 合成数据; 数据标注
正确的数据标记会显著影响模型,从而影响整个APP应用程序的性能。
注释数据的工作可以交给人工处理,也可以利用注释平台进行辅助。
人工标记众包; 数据标注公司: FigureEight,雇佣专门的标注人员对平台进行标注: prodigy:Spacy团队开发的一种标注工具,使用主动学习,文本和图像数据HIVE:AI标注平台,面向图像数据; Supervisely :计算机视觉数据标记平台Labelbox :计算机视觉标记; sale :适用于计算机视觉和NLP领域的AI数据平台。 数据存储
对于数据存储,必须选择适合业务使用的服务器和数据库。
按对象保存:(将数据存储为包含图像、音频文件和压缩文本的二进制数据) Aamzon S3Ceph Object Store数据库) (存储文件路径、标记、用户活动等信息) pospose 数据湖:(用于收集数据库中无法获得的特征,如日志)亚马逊redshift特征存储) )存储机器学习特征) FEAST )基于Google云,目前是开源的michelalan 版本控制
DVC :开源机器学习版本管理工具Pachyderm :数据版本管理; Dolt:SQL数据库版本控制; 处理流程
训练生产级模型时,会提取各种来源的数据,包括通常存储在数据库和对象存储器中的数据、日志和其他分类器的输出结果,如果不同任务之间存在依赖关系,则前一个任务将工作流管理:开发、培训和评估Airflow
在此阶段,项目开发人员需要选择合适的工具来开发深度学习模型、APP应用框架等。
软件工程
编辑器vimemacsvscode ( https://code.visual studio.com/)提供了内置的git和diff工具,用于从ssh远程打开项目。 Jupyter Notebook :适合项目启动阶段,但难以扩展; 流管理:交互式数据科学工具; 对于个人和初创公司:开发四核图灵架构计算机培训和评估使用相同的四核GPU电脑,需要进行大量实验时,对于可以购买云服务的大型企业:在开发上、 每个机器学习工程师可以配备四核图灵体系结构计算机,也可以直接使用服务器(如V100 )的培训和评估可以购买云服务并设置相应的操作环境和崩溃处理机制。 管理资源
资源管理的作用是为系统中的任务提供计算资源,提高效率。资源管理工具: Slurm等集群任务管理系统; Docker Kubernetes; Kubeflow; Polyaxon (收费版本)。 深度学习框架
除非有充分理由,否则Tensorflow/Keras或PyTorch; 以下图表说明了各种框架从“开发”到“生产”的进展程度。 实验管理
开发、培训和评估过程:
从简单的方法开始吧。 训练小模型,使用小批量的数据。 如果该方法可行,先扩展到更大的数据量和模型,然后调整参数; 实验管理工具: Tensorboard; 提供机器学习可视化工具的Losswise :深度学习监控Comet :帮助用户跟踪代码、实验、结果; Weights Biases :记录和可视化研究的所有细节; MLFlow Tracking :用于记录参数、代码版本、度量和输出文件,并将结果可视化。 核对参加者
调则是重要的步骤,可以使模型更有效地发挥作用。
Hyperas:Keras的超参数运算符的简单封装,可以提供开发者可以调整的超参数范围; SIGOPT :可扩展的企业级优化平台Ray-Tune :可选择分布式模型的可伸缩研究平台(主要关注深度学习和深度强化学习) ); Sweeps from Weights Biases :参数不是由开发者明确定义的,而是通过机器学习模型拟合和学习的。 分布式训练
数据并行处理:如果迭代时间过长,请使用数据并行处理。 ( TensorFlow和PyTorch都支持。 )模型并行化:用于模型不适合单一GPU的情况; 其他解决方案:雷; 英雄卷。 测试和部署
产品级深度学习测试和部署需要执行以下步骤:
测试和CI/CD
与传统软件相比,机器学习生产软件需要更加多样化的测试套件:
单元和集成测试类型的培训系统测试:测试培训流水线; 验证:测试验证集上的预测系统; 功能测试:用少数重要例子测试预测系统。 持续集成:每次新的代码更改推送至repo时都运行测试; 软件即服务( SaaS ) CircleCI,Travis,用于连续集成; Jenkins,Buildkite。 网络部署
这里包括预测系统和服务系统。
预测系统:使用考虑用于处理输入数据并执行预测服务系统(网络服务器)预测的规模的REST API来预测HTTP请求; 调用预测系统进行响应。 服务选项:最受欢迎的Kubernetes,MESOS (容器组织),通过部署到VMs并添加实例将扩展作为容器进行部署,并通过组织实现扩展通过模型服务解决方案部署。 模型服务
针对ML模型的专用网络部署批量请求GPU推理框架( TensorFlow服务、MXNet模型服务器、Clipper、SaaS解决方案)决策
如果CPU推理满足需要,则优选选择CPU推理; 添加服务器或选择无服务器进行扩展。 GPU推理TF服务或脚本; 自适应批处理是有用的。 监测
目的:测试防止停机、错误等的服务和捕获数据恶化问题的云供应商解决方案是否有效。 嵌入式和移动部署
主要挑战:内存占用和计算约束解决方案量化缩减模型大小( MobileNets )知识蒸馏( DistillBERT )嵌入式和移动终端框架( tensorflowlitepytes ) o模型变换开放神经网络交换) openneuutorchmorekitfritzopenvino模型变换
tensorflowextended(tfx ) Michelangelo ( Uber ) Googlecloudaiplatformazonsagemakerneptunefloydpaperspacedeterminedaidominodineter