NLP实战高手课学习笔记(7):AI 项目部署

340 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情

说明

本系列博客将记录自己学习的课程:NLP实战高手课,链接为:time.geekbang.org/course/intr… 本篇为13-15节的课程笔记,主要介绍AI项目的部署。

AI项目部署概述

相比于其他的服务部署,AI项目的部署有着许多自己独特的地方,首先AI 项目整体结构复杂,模块繁多。而且AI 很多时候需要大量的算力,需要使用 GPU,TPU 或者 FPGA。同时,深度学习框架依赖十分复杂,配置环境困难。

我们在部署时,有以下几个目标:

  • 尽量保证不要崩
  • 保证不出大的问题/错误
  • 保证合适的效率
  • 保证尽可能少的侵入性

部署的基本原则为:

  • 尽量采用微服务框架(方便、稳定)。
  • 采用合适硬件,注意 CPU 选型和 GPU 选型。
  • 以 Profiler 为导向进行优化。分析哪些模块耗时最大,有待提升;
  • 推断服务应该用同一个框架和一个线程,TPU 除外。
  • 部署应该是在项目初期就考虑的,要制定完善的项目计划,并注意和客户的沟通。

深度学习推断框架

在进行部署时,推荐使用推断框架进行部署,主要有以下几点好处:

  1. 像TensorFlow、Pytorch这类训练框架并不是为了持续推断而设计,因而在进行推断提供服务时会有一定性能上的损失;
  2. 推断框架完善了各种服务模块,而是用TensorFlow、Pytorch时各个服务模块需要自己编写;
  3. 推断服务可以高效的对已经固定好权重的模型进行优化。

深度学习推断框架的任务主要有以下几点:

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

在选取时,主要有以下选取原则:

  • 生态圈是否丰富;
  • 易用性和文档完整性
  • 对不同硬件的支持程度
  • 功能是否强大
  • 推断速度

TF Serving是一个支持CPU、GPU和TPU的高效推断框架,可以和TensorFlow模型无缝对接,同时也可以很好的兼容Pytorch模型。

微服务

微服务的主要元件有:Kubernetes、Docker、Istio,微服务有着入侵性小、稳定性高和功能强大的特点,是部署模型时的首选方案。

image.png

微服务部署 AI 的一些基本原则如下:

  • 对于推断,一个节点只部署一个 Docker!(TPU 除外)
  • 如果没时间,起码选择 Kubernetes 和 Docker,因为 Docker 很容易崩溃。
  • 一些其他的考虑:
    • 错误恢复
    • 灰度上线
    • Kafka
    • Actor
    • 其他功能

总结

本文介绍了AI项目部署时的一些注意事项,希望对您有帮助。