东亚银行、岚图汽车带你解锁 AIGC 时代的数字化人才培养各赛道新模式! 了解详情
写点什么

GitHub 热门项目:生产级深度学习项目如何构建?

  • 2019-12-04
  • 本文字数:2739 字

    阅读完需:约 9 分钟

GitHub热门项目:生产级深度学习项目如何构建?

在生产中部署深度学习模型可能很有挑战性,因为这远远不仅是训练出具有良好性能的模型就足够了。为了部署生产级深度学习系统,还需要正确设计和开发一众组件。本文介绍了 GitHub 上的一个工程指南,用于构建将部署在实际应用程序中的生产级深度学习系统



在这篇文章中,我们将详细介绍生产级深度学习系统的各个模块,并推荐适合每个组件的工具集和框架,以及实践者提供的最佳实践。



1. 数据管理

1.1. 数据源

开源数据 (好的开端,但并非优势)、数据增强以及合成数据

1.2. 标注

标注的劳动力来源:


  • 众包

  • 服务公司:FigureEight

  • 雇佣标注员


标注平台:


  • Prodigy:一种由主动学习(active learning)(由 Spacy 开发人员开发)、文本和图像支持的注释工具。

  • HIVE:用于计算机视觉的人工智能即服务平台。

  • Supervisely:完整的计算机视觉平台。

  • Labelbox:计算机视觉。

  • Scale 人工智能数据平台(计算机视觉和自然语言处理)。

1.3. 存储

数据存储选项:


  • 对象存储:存储二进制数据(图像、声音文件、压缩文本)

  • Aamzon S3

  • Ceph 对象存储

  • 数据库:存储元数据(文件路径、标签、用户活动等)。

  • Postgres 对于大多数应用程序来说都是正确的选择,它提供了同类最佳的 SQL 和对非结构化 JSON 的强大支持。

  • 数据湖:用于聚合无法从数据库获得的特征(例如日志)。

  • Amazon Redshift

  • 特征存储:机器学习特征的存储和访问。

  • FEAST(Google 云,开源)

  • Michelangelo(Uber)

  • 在训练期间:将数据复制到本地或集群文件系统中。

1.4. 版本控制

  • DVC:用于机器学习项目的开源版本控制系统

  • Pachyderm:用于数据的版本控制

  • Dolt:用于 SQL 数据库的版本控制

1.5. 处理

生产模型的训练数据可能来自不同的源,包括数据库和对象存储中的存储数据、日志处理和其他分类器的输出。


任务之间存在依赖关系,每个人物都需要在其依赖关系完成后才能启动。例如,对新的日志数据进行训练,需要在训练之前进行预处理。因此,工作流在这方面变得相当重要。


  • 工作流:

  • Airflow (最常用的)


2. 开发、训练与评估

2.1. 软件工程

编辑器:


  • Vim

  • Emacs

  • VS Code(作者推荐):内置 Git 暂存和显示文件差异、Lint 代码扫描、通过 SSH 远程打开项目。

  • Jupyter Notebooks:作为项目的起点很好,但它难以实现规模化。

  • Streamlit:具有小程序的交互式数据科学工具。


建议:


对于个人或初创企业:


  • 开发:一台 4 核图灵架构的计算机。

  • 训练 / 评估:使用相同的 4 核 GPU 计算机。在运行许多实验时,可以购买共享服务器或使用云实例。


对于大型公司:


  • 开发:为每位机器学习科学家购买一台 4 核图灵架构计算机,或者让他们使用 V100 实例。

  • 训练 / 评估:在正确配置和处理故障的情况下使用云实例。

2.2. 资源管理

为程序分配免费资源:


资源管理选项:


  • 旧式集群作业调度程序(如,Slurm 工作负载管理器)

  • Docker + Kubernetes

  • Kubeflow

  • Polyaxon(付费功能)

2.3. 深度学习框架

除非有充分的理由不这样做,否则请使用 TensorFlow/Keras 或 PyTorch。下图显示了不同框架在开发和 生产方面的比较。


2.4. 实验管理

开发、训练和评估策略:永远从简单开始。在小批量上训练一个小型模型,只有在它能起作用的情况下,才扩展到更大的数据和模型,并进行超参数调优。


实验管理工具:


  • Tensorboard:提供了机器学习实验所需的可视化和工具。

  • Losswise(用于机器学习的监控)

  • Comet:让你可以跟踪机器学习项目上的代码、实验和结果。

  • Weights & Biases:通过简单的协作,记录并可视化研究的每个细节。

  • MLFlow Tracking:用于记录参数、代码版本、指标和输出文件,以及结果的可视化。

2.5. 超参数调优

Hyperas:用于 Keras 的 hyperopt 的简单包装器,使用简单的模板符号定义要调优的超参数范围。SIGOPT:可扩展的企业级优化平台。Ray-Tune:可扩展的分布式模型选择研究平台(专注于深度学习和深度强化学习)。Sweeps from Weights & Biases:参数并非由开发人员显式指定,而是由机器学习模型来近似和学习的。

2.6. 分布式训练

数据并行性:当迭代时间过长就使用它(TensorFlow PyTorch 均支持)。


模型并行性:当模型不适合单 GPU 的情况下就是用它。


其他解决方案:


  • Ray

  • Horovod

3. 故障排除『有待完善』

4. 测试与部署

4.1. 测试

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



单元测试和集成测试


  • 测试类型:

  • 训练系统测试:测试训练管道。

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

  • 功能测试。

  • 持续集成:在将每个新代码更改推送到仓库后运行测试。


用于持续集成的 SaaS:


  • CircleCI、Travis

  • Jenkins、Buildkite

4.2. 网络部署

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


  • 在考虑规模的情况下为预测服务。

  • 使用 REST API 为预测 HTTP 请求提供服务。

  • 调用预测系统进行响应

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


服务系统(Web 服务器):


服务选项:


  • Docker

  • Kubernetes (现在最流行)

  • MESOS

  • Marathon

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

  • 将代码部署为“无服务器函数”。


模型服务:


  • Tensorflow 服务

  • MXNet Model 服务器

  • Clipper (Berkeley)

  • SaaS 解决方案 (Seldon,算法)

  • 专门针对机器学习模型的网络部署。

  • 用于 GPU 推理的批处理请求。

  • 框架:Tensorflow 服务、MXNet Model 服务器、Clipper、SaaS 解决方案 (Seldon,算法)


决策:


  • TensorFlow 服务或 Clipper

  • 自适应批处理很有用。

  • 如果 CPU 推理满足要求,则更可取。

  • 通过添加更多的服务器或无服务器进行扩展。

  • CPU 推理:

  • GPU 推理:

4.3 Service Mesh 和 Traffic Routing

从单片应用程序过渡到分布式微服务体系结构可能具有挑战性。


服务网格(由微服务网络组成)降低了此类部署的复杂性,并减轻了开发团队的压力。


Istio:一种服务网格技术,简化已部署服务网络的创建,而服务中的代码更改很少或没有。

4.4. 监控

目的:


  • 针对停机时间、错误和分发变化的警报。

  • 抓取服务和数据回归。


此外,云提供商的解决方案也是相当不错。


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

主要挑战:内存占用和计算限制


解决方案:


  • DistillBERT (用于自然语言处理)

  • MobileNets

  • 量化

  • 缩小模型尺寸

  • 知识蒸馏


嵌入式和移动框架:


  • Tensorflow Lite

  • PyTorch Mobile

  • Core ML

  • ML Kit

  • FRITZ

  • OpenVINO


模型转换:


开放神经网络交换(Open Neural Network Exchange,ONNX):用于深度学习模型的开源格式。

4.6. 一体化解决方案

  • Tensorflow Extended (TFX)

  • Michelangelo (Uber)

  • Google Cloud AI Platform

  • Amazon SageMaker

  • Neptune

  • FLOYD

  • Paperspace

  • Determined AI

  • Domino data lab


Tensorflow Extended (TFX)

Airflow and KubeFlow ML Pipelines


本文提供的材料大部分来自于 Full Stack Deep Learning Bootcamp(全栈深度学习训练营)(作者:Pieter Abbeel、Josh Tobin、Sergey Karayev)、TFX 工作室(作者:Robert Crowe)、Pipeline.ai 举办的 Advanced KubeFlow Meetup(作者:Chris Fregly)。


该项目的 GitHub 地址(该项目还在完善中):


https://github.com/alirezadir/Production-Level-Deep-Learning


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2019-12-04 14:057680
用户头像
赵钰莹 InfoQ 主编

发布了 874 篇内容, 共 603.9 次阅读, 收获喜欢 2671 次。

关注

评论

发布
暂无评论
发现更多内容

多线程永动任务设计与实现

小小怪下士

Java 多线程

Python中图像平滑方法的两种非线性滤波:中值滤波、双边滤波

华为云开发者联盟

Python 人工智能 华为云 12 月 PK 榜

2022 年度“用 TDengine,写 TDengine”征文!

爱倒腾的程序员

数据库 tdengine 时序数据库

Kubernetes 跨集群流量调度实战

Flomesh

服务治理 Kubernetes 集群 流量管理

如何用 30s 讲清楚什么是跳表

飞天小牛肉

redis 面试 社招 校招 秋招

看透react源码之感受react的进化

flyzz177

React

从recat源码角度看setState流程

flyzz177

React

前端leetcde算法面试套路之二叉树

js2030code

超大规模大数据集群管理平台的架构优化及实践

移动云大数据

浅析静态应用安全测试

华为云开发者联盟

测试 开发 华为云 12 月 PK 榜

当云原生成为一种显学,对象存储和数据湖如何顺势而为

云布道师

对象存储 云存储

轻量级的架构决策记录机制

京东科技开发者

团队管理 架构 软件架构 架构设计 架构决策

Go语言性能剖析利器--pprof实战

京东科技开发者

Go pprof 优化技巧 Go 语言 #go

预训练时代的自然语言处理 魔搭社区NLP模型全解析

阿里技术

自然语言处理 NLP 大模型

火山引擎DataTester:无需研发人力,即刻开启企业A/B实验

字节跳动数据平台

A/B测试

广告倒排服务极致优化

百度Geek说

架构 数据结构 后端 12 月 PK 榜

React-Hooks源码深度解读

flyzz177

React

前端leetcde算法面试套路之双指针

js2030code

JavaScript LeetCode

保护客户代码和应用安全,CodeArts有7招

华为云开发者联盟

云计算 后端 华为云 12 月 PK 榜 华为CodeArts

喜讯+1!袋鼠云数栈技术团队获“2022年度优秀开源技术团队”

袋鼠云数栈

开源

瓴羊Quick BI数据填报组件,实现智能化管理和高效挖掘利用

夏日星河

Flutter for Web 首次首屏优化——JS 分片优化

阿里巴巴终端技术

flutter 前端 Web 客户端

IoT 设备定位服务——设备管理类

阿里云AIoT

物联网 API 定位技术

前端常见内存泄漏及解决方法

达摩

Web 内存泄露

演讲实录|姚延栋:终止“试点炼狱”,智能汽车时代数字化转型与实践

YMatrix 超融合数据库

车联网 海量数据 超融合数据库 智能网联 YMatrix

转转用户画像平台实践

转转技术团队

大数据 用户画像 用户画像分析

基于云原生的集群自愈系统 Flink Cluster Inspector

阿里云大数据AI技术

机器学习 flink 运维 云原生 12 月 PK 榜

“零容忍”监管,金融机构如何应对数据泄露风险?

极盾科技

数据安全

从源码角度看React-Hydrate原理

flyzz177

React

从react源码看hooks的原理

flyzz177

React

鸿蒙开发实例 | 鸿蒙原子化服务卡片开发完美体验

TiAmo

华为 鸿蒙 12月月更

GitHub热门项目:生产级深度学习项目如何构建?_AI&大模型_Alireza Dirafzoon_InfoQ精选文章