携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情
说明
本系列博客将记录自己学习的课程:NLP实战高手课,链接为:time.geekbang.org/course/intr… 本篇为13-15节的课程笔记,主要介绍AI项目的部署。
AI项目部署概述
相比于其他的服务部署,AI项目的部署有着许多自己独特的地方,首先AI 项目整体结构复杂,模块繁多。而且AI 很多时候需要大量的算力,需要使用 GPU,TPU 或者 FPGA。同时,深度学习框架依赖十分复杂,配置环境困难。
我们在部署时,有以下几个目标:
- 尽量保证不要崩
- 保证不出大的问题/错误
- 保证合适的效率
- 保证尽可能少的侵入性
部署的基本原则为:
- 尽量采用微服务框架(方便、稳定)。
- 采用合适硬件,注意 CPU 选型和 GPU 选型。
- 以 Profiler 为导向进行优化。分析哪些模块耗时最大,有待提升;
- 推断服务应该用同一个框架和一个线程,TPU 除外。
- 部署应该是在项目初期就考虑的,要制定完善的项目计划,并注意和客户的沟通。
深度学习推断框架
在进行部署时,推荐使用推断框架进行部署,主要有以下几点好处:
- 像TensorFlow、Pytorch这类训练框架并不是为了持续推断而设计,因而在进行推断提供服务时会有一定性能上的损失;
- 推断框架完善了各种服务模块,而是用TensorFlow、Pytorch时各个服务模块需要自己编写;
- 推断服务可以高效的对已经固定好权重的模型进行优化。
深度学习推断框架的任务主要有以下几点:
- 读取模型,提供 REST 接口。
- 调用不同的硬件资源。
- 对推断过程做一定处理,其中最重要的是批处理。
在选取时,主要有以下选取原则:
- 生态圈是否丰富;
- 易用性和文档完整性
- 对不同硬件的支持程度
- 功能是否强大
- 推断速度
TF Serving是一个支持CPU、GPU和TPU的高效推断框架,可以和TensorFlow模型无缝对接,同时也可以很好的兼容Pytorch模型。
微服务
微服务的主要元件有:Kubernetes、Docker、Istio,微服务有着入侵性小、稳定性高和功能强大的特点,是部署模型时的首选方案。
微服务部署 AI 的一些基本原则如下:
- 对于推断,一个节点只部署一个 Docker!(TPU 除外)
- 如果没时间,起码选择 Kubernetes 和 Docker,因为 Docker 很容易崩溃。
- 一些其他的考虑:
- 错误恢复
- 灰度上线
- Kafka
- Actor
- 其他功能
总结
本文介绍了AI项目部署时的一些注意事项,希望对您有帮助。