深度学习项目的生产级架构:测试部署模块

作者: 6c643a7fc0e6 | 来源:发表于2020-01-29 20:46 被阅读0次

在生产中部署深度学习模型工作远远超过了训练性能良好模型的工作,为了部署生产级深度学习系统,需要设计和开发不同的模块,如下所示。

deep_learning_deploying_01.png

下图是生产级深度学习系统中不同模块的高级概述。

deep_learning_deploying_02.png

下面我们将介绍测试部署模块。

1 测试和 CI/CD

与传统软件相比,机器学习产品需要一套更多样化的测试套件:

deep_learning_deploying_03.png

1.1 单元和集成测试

测试类型:

  • 训练测试:测试训练管道

  • 验证测试:在验证集上测试预测系统

  • 功能测试:在几个重要示例上测试预测系统

1.2 持续集成测试

在每个新代码更改推送到存储库后运行测试

1.3 SaaS:持续集成测试

  • Argo:开源Kubernetes本机工作流引擎,用于协调并行作业(包括工作流,事件,CI和CD)。

  • CircleCI:instacart,Lyft和StackShare使用的语言包容性支持,自定义环境,灵活的资源分配。

  • Travis CI

  • Buildkite:快速而稳定的构建,开源代理几乎可以在任何机器和架构上运行,可以自由使用自己的工具和服务

  • Jenkins:老派构建系统

2 Web 部署

2.1 由预测系统和服务系统组成

  • 预测系统:处理输入数据,进行预测

  • 服务系统(Web 服务器):考虑预测时提供预测;使用REST API服务预测HTTP请求;调用预测系统进行响应。

2.2 服务选项:

  • 部署到VM,通过添加实例进行扩展

  • 部署为容器,根据业务流程扩展
    1.Docker
    2.Kubernetes(现在最受欢迎)、MESOS、Marathon

  • 将代码部署为“无服务器功能”

  • 通过模型服务解决方案进行部署

2.3 模型服务:

  • 专业的 ML 模型 Web 部署

  • 批量请求GPU推理

  • 框架:
    1.Tensorflow 服务
    2.MXNet 模型服务
    3.Clipper
    4.SaaS 解决方案:SeldonAlgorithmia

2.4 决策:CPU还是GPU?

  • CPU 预测:如果满足要求,则最好使用CPU预测;通过添加更多服务器或无服务器来进行扩展。

  • GPU 预测:TF服务;自适应批处理很有用。

2.5 Jupyter Notebook 部署:

Kubeflow Fairing 是一个混合部署程序包,可让您部署Jupyter Notebook代码!

3 监控

  • 监控目的:发出停机,错误和分布变化告警;捕获服务和数据回归

  • 采用云服务商的解决方案

  • Kiali:具有服务网格配置功能的可观察控制台。它回答了以下问题:微服务如何连接?他们的表现如何?

deep_learning_deploying_04.png

4 在嵌入式和移动设备上部署

  • 主要挑战:内存占用量和计算约束

  • 解决方案:
    1.量化
    2.缩小模型尺寸:MobileNet
    3.知识蒸馏:DistillBERT(用于NLP)

  • 嵌入式和移动框架:
    1.Tensorflow Lite
    2.PyTorch Mobile
    3.Core ML
    4.ML Kit
    5.FRITZ
    6.OpenVINO

  • 模型转换:开放式神经网络交换(ONNX):深度学习模型的开源格式

5 All-in-one 解决方案

  • Tensorflow Extended (TFX)

  • Michelangelo (Uber)

  • Google Cloud AI Platform

  • Amazon SageMaker

  • Neptune

  • FLOYD

  • Paperspace

  • Determined AI

  • Domino data lab

deep_learning_deploying_05.png

相关文章

  • 深度学习项目的生产级架构:测试部署模块

    在生产中部署深度学习模型工作远远超过了训练性能良好模型的工作,为了部署生产级深度学习系统,需要设计和开发不同的模块...

  • 深度学习项目的生产级架构:数据管理模块

    在生产中部署深度学习模型工作远远超过了训练性能良好模型的工作,为了部署生产级深度学习系统,需要设计和开发不同的模块...

  • 深度学习项目的生产级架构:开发训练评估模块

    在生产中部署深度学习模型工作远远超过了训练性能良好模型的工作,为了部署生产级深度学习系统,需要设计和开发不同的模块...

  • 阶段G 实施治理的关键点有什么?

    指南:遵循组织级架构治理的组织标准,通过架构合同在架构与实施组织之间建立联系,按照架构路标优先级进行部署。 目的 ...

  • 软件测试面试问题

    项目的测试流程 拿到需求文档后,写测试用例 审核测试用例 等待开发包 部署测试环境 冒烟测试(网页架构图) 页面初...

  • fabric架构,从poc到生产

    poc环境的架构,也就是官方示意架构图 生产部署,多组织部署考虑: kafka的部署 orderer的部署 pee...

  • 手把手教你如何部署深度学习模型

    摘要:本文将讲解如何部署深度学习模型,让你不再对如何快速地将机器学习模型部署到生产中感到困扰 我刚刚训练了机器学习...

  • 搭建自己的前端高效部署工具

    公司运维没有给我们前端配置自动部署前端项目的实施,现阶段只有生产环境实现了一键部署,部署频率较高的开发、测试环境上...

  • App的架构之旅

    1. 架构设计的目的对程序进行架构设计的原因,归根到底是为了提高生产力。通过设计使程序模块化,做到模块内部的高聚合...

  • 第七章 生命周期和插件

    一、什么是生命周期 Maven的生命周期包括项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生产等...

网友评论

    本文标题:深度学习项目的生产级架构:测试部署模块

    本文链接:https://www.haomeiwen.com/subject/iarbthtx.html