美文网首页
AI项目部署

AI项目部署

作者: AntiGravity | 来源:发表于2020-05-08 15:46 被阅读0次
  • 基本
    • 难点
    • 目标
    • 基本原则
  • 推断框架
    • 框架任务
    • 选择框架
    • TF Serving简介
  • 微服务
    • 介绍
    • 为何选择微服务
    • 微服务部署AI的基本原则

基本

难点

  • 结构复杂,模块繁多(需要清楚每个模块的影响)
  • 大量算力,涉及GPU/TPU/FPGA(需要了解不同硬件的特点)
  • DL框架依赖十分复杂,配置环境困难(cuda会重新编译整个内核)

目标

  • 不要崩
  • 不出大的问题
  • 保证合适的效率(框架重写、增加算力)
  • 尽可能少的入侵

基本原则

  • 采用微服务框架(方便:Docker避免入侵;稳定:Kubernetes)
  • 采用合适的硬件(CPU和GPU混合)
  • 以Profiler为导向进行优化(往往是基础模块而非计算量大的地方)
  • 推断服务应该用同一个框架和线程,TPU除外(避免cache miss和显存污染。TPU不存在这个问题)
  • 部署是项目初期就要考虑,制定完善的计划,并注重和客户的沟通(预算。避免改变部署方案)

推断框架

TensorFlow或PyTorch并非为持续推断而设计的框架,性能有所损失,所以需要其他推断框架。

框架任务

  • 读取模型、提供REST接口
  • 调用不同的硬件资源
  • 对推断过程做一定处理,最重要的是批处理

评价点

  • 生态圈
  • 易用性(是否能接受其他框架的输入、模型)和文档完整性
  • 对不同硬件的支持程度(最好:只通过配置选择)
  • 功能是否强大(模型之间的切换、异常捕获、恢复、调整策略)
  • 推断速度

TF Serving

  • TF Serving支持GPU/CPU/TPU,TensorRT只支持NVIDIA
  • 生态圈比TensorFlow好很多,能和PyTorch交互
  • 一个Serving提供多个推断

微服务

介绍

主要元件:

  • Docker - 非常轻量的虚拟机
  • Kubernetes - Container Orchestration,容器管理。
    • 自动重启
    • singeleton
    • 负载均衡
    • 路由
  • Istio - Sidecar,网络层面的优化。例如:灰度上线时网络的逐步流入

原因

  • 入侵性小
  • 稳定性高
  • 功能强大

基本原则

  • 一个节点(计算元件)只部署一个docker(TPU除外)
  • Kubernetes必备,因为docker很容易崩溃
  • 其他:
    • 错误恢复
    • 灰度上线
    • Kafka(负责计算推断的后端需要batch处理(推断、查库))
    • Actor(轻量级的线程工具,可以应对前端上百万个窗口,类似如Spring Cloud)
    • 其他功能(logging,probe,monitor)

相关文章

网友评论

      本文标题:AI项目部署

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