Production-Level-Deep-Learning

GitHub
4.6k 683 较难 1 次阅读 今天开发框架Agent数据工具图像
AI 解读 由 AI 自动生成,仅供参考

Production-Level-Deep-Learning 是一份专注于构建可落地深度学习系统的工程指南。它旨在解决人工智能项目中普遍存在的“高失败率”痛点,帮助团队跨越从模型训练到真实世界部署的巨大鸿沟。许多项目往往因技术范围界定不清、缺乏明确的评估指标或难以进入生产环境而夭折,这份指南正是为了填补这一空白而生。

该资源非常适合希望将算法转化为实际产品的开发者、机器学习工程师以及技术团队管理者。不同于仅关注模型准确率的学术教程,Production-Level-Deep-Learning 提供了全栈视角的解决方案,涵盖了数据管理(如标注策略与合成数据)、项目生命周期规划、优先级评估模型以及基础设施工具链选型等关键环节。其独特亮点在于整合了来自伯克利全栈深度学习训练营及业界专家的最佳实践,通过清晰的生命周期图示和心智模型,指导用户如何平衡“高影响力”与“低成本”,从而系统化地设计并交付稳健的深度学习应用。无论是准备面试的从业者,还是正在规划 AI 落地的团队,都能从中获得极具价值的实操指引。

使用场景

某电商初创团队正试图将实验室中准确率高达 95% 的商品图像识别模型部署到真实的移动端购物应用中,以自动化处理海量用户上传的晒单图片。

没有 Production-Level-Deep-Learning 时

  • 项目夭折率高:团队盲目启动高难度无监督学习项目,因数据稀缺且定义模糊,导致 85% 的 AI 尝试在数月后无果而终。
  • 数据瓶颈难破:缺乏系统的数据增强与合成策略,过度依赖昂贵的人工标注,导致训练数据成本激增且覆盖场景不足。
  • 架构缺失混乱:仅关注模型训练代码,忽视数据管理、监控及流水线设计,导致模型无法从实验环境平滑迁移至生产环境。
  • 评估标准模糊:未建立清晰的业务成功指标,技术团队与产品团队对“模型可用”的认知存在巨大偏差,造成资源浪费。

使用 Production-Level-Deep-Learning 后

  • 精准立项避坑:依据其提供的“高影响力 - 低成本”优先级的思维模型,团队转而聚焦于数据充足的监督学习任务,确保项目快速落地。
  • 高效数据策略:采纳指南中关于数据增强和合成数据的最佳实践,在不增加人工成本的前提下大幅扩充了训练集,提升了模型泛化能力。
  • 全栈工程落地:参照其全栈流水线架构图,构建了包含数据版本控制、自动化测试及在线监控的完整工程体系,实现了模型的稳定上线。
  • 明确成功准则:利用其生命周期管理建议,在项目初期就定义了与技术性能挂钩的业务指标,确保了研发方向与商业价值的高度对齐。

Production-Level-Deep-Learning 将深度学习从单纯的算法实验转化为可落地、可维护的工业级系统工程,显著降低了真实场景下的部署风险。

运行环境要求

操作系统
  • 未说明
GPU
  • 开发推荐 4x Turing 架构显卡或 V100 实例
  • 训练/评估建议使用云实例(支持 GPU/TPU)
  • 具体显存和 CUDA 版本未说明
内存

未说明

依赖
notes本项目主要是一份构建生产级深度学习系统的工程指南和资源列表,而非单一的可执行代码库,因此没有统一的安装依赖。文中建议个人开发者使用 4x Turing 架构 PC 进行开发,大型公司可为每位科学家配备此类设备或使用 V100 云实例。数据管理建议使用对象存储(如 S3)和数据库(如 Postgres)。工作流编排推荐 Airflow 或 Luigi。实验管理推荐 Tensorboard、W&B 或 MLFlow。超参数调优推荐 RayTune 或 Katib。
python3.x (文中指出 Python 为获胜语言,但未指定具体小版本)
TensorFlow
Keras
PyTorch
Airflow
Luigi
DVC
MLFlow
RayTune
Kubeflow
Docker
Production-Level-Deep-Learning hero image

快速开始

:bulb: 生产级深度学习指南 :clapper: :scroll: :ferry:

🇨🇳 中文翻译在 这里

:label: 新增:机器学习面试题

:label: 注意:欢迎所有反馈和贡献 :blush:

将深度学习模型部署到生产环境中可能充满挑战,因为这远远超出了训练出性能良好的模型这一阶段。为了部署一个生产级别的深度学习系统,需要设计和开发多个不同的组件(如下所示):

本仓库旨在为构建将在实际应用中部署的生产级深度学习系统提供工程指导。

此处提供的内容借鉴自以下资源:全栈深度学习训练营(由加州大学伯克利分校的 Pieter Abbeel、OpenAI 的 Josh Tobin 和 Turnitin 的 Sergey Karayev 共同创办)、Robert Crowe 主持的 TFX 工作坊,以及 Pipeline.ai高级 KubeFlow 聚会(由 Chris Fregly 组织)。

机器学习项目

有趣的是:85% 的 AI 项目都会失败1 可能的原因包括:

  • 技术上不可行或范围界定不清
  • 始终未能进入生产阶段
  • 成功标准(指标)不明确
  • 团队管理不善

1. 机器学习项目生命周期

  • 理解所在领域的最新进展的重要性:
    • 有助于了解哪些是可行的
    • 有助于知道下一步该尝试什么

2. 机器学习项目的思维模型

在定义和优先排序机器学习项目时,需要考虑两个重要因素:

  • 高影响力:
    • 您流水线中的复杂部分
    • 在“低成本预测”具有价值的地方
    • 自动化复杂手动流程具有价值的地方
  • 低投入:
    • 投入成本主要受以下因素驱动:
      • 数据的可获得性
      • 性能要求:成本通常会随着准确率要求的提高而呈超线性增长
      • 问题的难度:
        • 一些较为困难的问题包括:无监督学习、强化学习以及某些类型的监督学习

全栈式流水线

下图展示了生产级深度学习系统中各个组件的高层次概览:

接下来,我们将逐一介绍每个模块,并推荐适合各组件的工具集、框架以及从业者的最佳实践。

1. 数据管理

1.1 数据来源

  • 监督式深度学习需要大量标注数据
  • 自行标注数据成本高昂!
  • 以下是一些数据资源:
    • 开源数据(适合作为起点,但并非优势)
    • 数据增强(计算机视觉领域必不可少,自然语言处理领域则可选)
    • 合成数据(几乎总是值得首先尝试,尤其是在自然语言处理领域)

1.2 数据标注

  • 需要独立的软件栈(标注平台)、临时劳动力和质量控制
  • 标注劳动力来源:
    • 众包(Mechanical Turk):廉价且可扩展,但可靠性较低,需进行质量控制
    • 自聘标注员:所需质量控制较少,成本较高,扩展速度较慢
    • 数据标注服务公司:
  • 标注平台:
    • Diffgram:用于计算机视觉的训练数据软件
    • Prodigy:基于主动学习的标注工具(由 Spacy 的开发者打造),适用于文本和图像
    • HIVE:面向计算机视觉的 AI 即服务平台
    • Supervisely:完整的计算机视觉平台
    • Labelbox:专注于计算机视觉
    • Scale:AI 数据平台(涵盖计算机视觉和自然语言处理)

1.3 数据存储

  • 数据存储选项:
    • 对象存储:用于存储二进制数据(图像、音频文件、压缩文本等)
    • 数据库:用于存储元数据(文件路径、标签、用户活动等)。
      • 对于大多数应用来说,Postgres 是理想选择,它拥有业界一流的 SQL 功能,并且对非结构化 JSON 数据提供了很好的支持。
    • 数据湖:用于聚合无法从数据库中获取的特征(例如日志)。
    • 特征存储:用于存储、访问和共享机器学习特征 (特征提取可能非常耗时且难以扩展,因此不同模型和团队之间共享特征是高性能机器学习团队的关键)。
  • 建议:在训练时,将数据复制到本地或网络文件系统(NFS)中。1

1.4 数据版本控制

  • 对已部署的机器学习模型而言,这是“必须”的: 已部署的机器学习模型既是代码的一部分,也是数据的一部分1 如果没有数据版本控制,也就没有模型版本控制。
  • 数据版本控制平台:
    • DVC:面向机器学习项目的开源版本控制系统
    • Pachyderm:用于数据的版本控制
    • Dolt:一种带有类似 Git 版本控制功能的 SQL 数据库,可用于数据和模式的版本管理

1.5. 数据处理

  • 生产模型的训练数据可能来自不同来源,包括 数据库和对象存储中的存储数据日志处理 以及 其他分类器的输出
  • 任务之间存在依赖关系,每个任务都需要在其依赖项完成后才能启动。例如,在新日志数据上进行训练之前,必须先完成预处理步骤。
  • Makefile 不具备可扩展性。因此,“工作流管理器”在此变得非常重要。
  • 工作流编排:
    • Spotify 的 Luigi
    • Airbnb 的 Airflow:动态、可扩展、优雅且广泛使用
      • DAG 工作流
      • 强大的条件执行功能:失败时可重试
      • Pusher 支持带有 TensorFlow Serving 的 Docker 镜像
      • 整个工作流可以放在一个 .py 文件中

2. 开发、训练与评估

2.1. 软件工程

  • 主流语言:Python
  • 编辑器:
    • Vim
    • Emacs
    • VS Code(作者推荐):内置 Git 暂存和差异查看功能,支持代码检查,并可通过 SSH 远程打开项目
    • 笔记本:作为项目的起点非常棒,但难以扩展(有趣的是,Netflix 的笔记本驱动架构是一个例外,它完全基于 nteract 套件)。
      • nteract:基于 React 的下一代 Jupyter 笔记本用户界面
      • Papermill:一个用于 参数化执行分析 Jupyter 笔记本的 nteract 库。
      • Commuter:另一个 nteract 项目,提供只读的笔记本显示功能(例如从 S3 存储桶中加载)。
    • Streamlit:具有应用程序的小型交互式数据科学工具
  • 计算资源建议 1
    • 对于 个人初创公司
      • 开发:配备 4 块 Turing 架构 GPU 的电脑
      • 训练/评估:使用同一台配备 4 块 GPU 的电脑。如果需要运行大量实验,可以购买共享服务器或使用云实例。
    • 对于 大型公司
      • 开发:为每位机器学习科学家配备一台配备 4 块 Turing 架构 GPU 的电脑,或者允许他们使用 V100 实例
      • 训练/评估:使用云实例,并做好适当的资源配置和故障处理
  • 云服务提供商:
    • GCP:可以选择将 GPU 连接到任何实例,并且还提供 TPU
    • AWS:

2.2. 资源管理

  • 将空闲资源分配给程序
  • 资源管理选项:
    • 传统集群作业调度器(例如 Slurm 工作负载管理器)
    • Docker + Kubernetes
    • Kubeflow
    • Polyaxon(付费功能)

2.3. 深度学习框架

  • 除非有充分理由不使用,否则应选择 Tensorflow/Keras 或 PyTorch。1
  • 下图展示了不同框架在“开发”和“生产”方面的比较。

2.4. 实验管理

  • 开发、训练和评估策略:
    • 始终从 简单 开始
      • 先用小批量数据训练一个小模型。只有当它有效时,再逐步扩大到更大的数据集和模型,并进行超参数调优!
    • 实验管理工具:
    • Tensorboard
      • 提供 ML 实验所需的可视化和工具支持
    • Losswise(ML 监控)
    • Comet:允许您跟踪代码、实验和 ML 项目的成果
    • Weights & Biases:轻松协作记录并可视化研究的每一个细节
    • MLFlow Tracking:用于记录参数、代码版本、指标和输出文件,并对结果进行可视化。
      • 只需一行 Python 代码即可自动跟踪实验
      • 并排比较多个实验
      • 超参数调优
      • 支持基于 Kubernetes 的作业

2.5. 超参数调优

  • 方法:

    • 网格搜索
    • 随机搜索
    • 贝叶斯优化
    • HyperBand 和异步连续减半算法 (ASHA)
    • 基于种群的训练
  • 平台:

2.6. 分布式训练

  • 数据并行:当迭代时间过长时使用(Tensorflow 和 PyTorch 都支持)
  • 模型并行:当模型无法放入单个 GPU 时使用
  • 其他解决方案:
    • Horovod

3. 故障排除 [待定]

4. 测试与部署

4.1. 测试与 CI/CD

机器学习生产级软件比传统软件需要更丰富的测试套件:

  • 单元测试与集成测试:
    • 测试类型:
      • 训练系统测试:测试训练流水线
      • 验证测试:在验证集上测试预测系统
      • 功能测试:在少数重要示例上测试预测系统
  • 持续集成:每次向代码库推送新代码变更后运行测试
  • 持续集成的 SaaS 工具:
    • Argo:开源的 Kubernetes 原生工作流引擎,用于编排并行任务(包括工作流、事件、CI 和 CD)。
    • CircleCI:支持多种语言、自定义环境、灵活的资源分配,被 Instacart、Lyft 和 StackShare 等公司使用。
    • Travis CI
    • Buildkite:构建快速且稳定,开源代理几乎可在任何机器和架构上运行,允许自由使用自有工具和服务。
    • Jenkins:老牌构建系统

4.2. Web 部署

  • 包括 预测系统服务系统
    • 预测系统:处理输入数据,生成预测结果
    • 服务系统(Web 服务器):
      • 以可扩展性为目标提供预测服务
      • 使用 REST API 处理预测 HTTP 请求
      • 调用预测系统进行响应
  • 服务选项:
      1. 部署到虚拟机,通过增加实例来扩展规模
      1. 以容器形式部署,通过编排技术实现扩展
      • 容器
        • Docker
      • 容器编排:
        • Kubernetes(目前最流行)
        • MESOS
        • Marathon
      1. 将代码部署为“无服务器函数”
      1. 通过 模型服务 解决方案进行部署
  • 模型服务:
    • 面向机器学习模型的专业化 Web 部署
    • 批量处理请求以进行 GPU 推理
    • 框架:
      • Tensorflow Serving
      • MXNet Model Server
      • Clipper(伯克利团队)
      • SaaS 解决方案
        • Seldon:可在 Kubernetes 上部署并扩展任何框架构建的模型
        • Algorithmia
  • 决策:CPU 还是 GPU?
    • CPU 推理:
      • 如果能满足需求,优先选择 CPU 推理。
      • 可通过增加服务器数量或采用无服务器架构来扩展规模。
    • GPU 推理:
      • TF Serving 或 Clipper
      • 自适应批处理非常有用
  • (附加)部署 Jupyter Notebook:
    • Kubeflow Fairing 是一个混合部署工具包,可以让你部署你的 Jupyter Notebook 代码!

4.5 服务网格与流量路由

  • 从单体应用向分布式微服务架构过渡可能充满挑战。
  • 服务网格(由一组微服务组成的网络)能够降低此类部署的复杂性,并减轻开发团队的压力。
    • Istio:一种服务网格,可在不修改或仅少量修改服务代码的情况下,轻松创建具有负载均衡、服务间身份验证和监控功能的服务网络。

4.4. 监控:

  • 监控的目的:
    • 对宕机、错误和分布漂移发出警报
    • 捕捉服务和数据回归问题
  • 云服务商提供的解决方案相当不错
  • Kiali:Istio 的可观测性控制台,具备服务网格配置能力。它可以回答以下问题:微服务之间是如何连接的?它们的性能如何?

我们完成了吗?

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

  • 主要挑战:内存占用和计算资源限制
  • 解决方案:
    • 量化
    • 减小模型尺寸
      • MobileNets
    • 知识蒸馏
      • DistillBERT(用于 NLP)
  • 嵌入式和移动框架:
    • Tensorflow Lite
    • PyTorch Mobile
    • Core ML
    • ML Kit
    • FRITZ
    • OpenVINO
  • 模型转换:
    • 开放神经网络交换格式(ONNX):深度学习模型的开源格式

4.6. 一体化解决方案

  • Tensorflow Extended (TFX)
  • Michelangelo(Uber)
  • Google Cloud AI Platform
  • Amazon SageMaker
  • Neptune
  • FLOYD
  • Paperspace
  • Determined AI
  • Domino 数据实验室

Tensorflow Extended (TFX)

[TBD]

Airflow 和 KubeFlow ML 流水线

[TBD]

其他有用链接:

贡献指南

参考文献:

[1]: 全栈深度学习训练营,2019 年 11 月。

[2]: 高级 KubeFlow 研讨会Pipeline.ai 组织,2019 年。

[3]: TFX:生产环境中的真实世界机器学习

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

155.4k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|4天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|5天前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架