摘要
2024-01-07 周日 杭州 阴
本节内容:
- 如何选择 GPU 和云服务器,追求最高性价比
- 如何部署自己的 fine-tune 的模型,向业务提供高可用服务
- 如何控制内容安全,做好算法备案,确保合规
课程内容
1. 硬件选型
a. Nvidia 几乎是模型训练和推理的 GPU 硬件唯一选择
2. 什么是 GPU?
GPU: Graphical Processing Units (GPUs)
- 图形处理单元(GPU)是一种功能强大的电子芯片,用于沉浸式视频游戏,电影和其他视觉媒体中呈现丰富的 2D/3D 图形和动画;
- GPU 引起超过 CPU 的并行矩阵运算性能,所以也被广泛应用于人工智能相关的各种系统,包括机器视觉,NLP,语音识别,自动驾驶等
3. CUDA 核心和 Tensor 核心
- CUDA 核心:
a. CUDA 是NVIDIA 开发的并行计算平台和编程模型,用于 GPU 上的通用计算,就像万能工人,可以做很多不同的工作
b. 适合游戏和图形渲染,天气预报,电影特效等场景
- Tensor 核心:
a. 中文名: 张量核心
b. 专门设计用于深度学习中的矩阵运算,加速深度学习算法中的关键计算过程
c. 适合语音助手,人脸识别等场景
4. AI 领域常用 GPU
- 价格排序
说明: 美国商务部限制 GPU 对华出口的算力不超过 4800TOPS 和带宽不超过 600GB/s ,导致最强的 H100 和 A100 对华禁售,黄仁勋随后推出针对中国市场的 A800 和 H800 (阉割版)。
- H100 比 A100 快多少?
5. 物理机与云服务器如何选择?
重点前提:
- 如果经常做微调实验,有自己的物理服务器会更加方便
- 提供推理服务,首选云服务器
- 如果有自建机房或者 IDC ,请随意
6. 云服务厂商对比
*a. 国内主流
a.1 阿里云
a.2 腾讯云
a.3 火山引擎
*b. 国外主流
b.1 AWS
b.2 Vultr
b.3 TPU: 谷歌专门用于加速机器学习的硬件,特别适合大规模机器学习任务,架构和性能方面表现出色;
*c. TPU 优势
c.1 高性能和能效
c.2 大规模训练
c.3 实时推理
c.4 云端使用
适用于图像处理,自然语言处理,推荐系统等多个领域,在国外,科研机构,大公司和初创企业普遍使用 TPU。
7. A100 与 T4 对比
- A100: 在云服务中,A100 是顶级的企业 GPU ,适用于高性能计算需求
- T4: 相比之下,T4 更为经济,适合日常模型微调和推理任务
8. 算力平台
主要用于学习和训练,不适合提供服务
- Colab: 谷歌产品,升级服务仅需 9 美金(70人民币);
- Kaggle: 每周30小时 T4 ,A100可用;
- AutoDL: 价格亲民,支持 Jupyter Notebook 及 SSH ,国内首选;
根据场景选择 GPU(基于 4090 的训练场景)
下面是 llm-utils 上的一些选型建议:
重点小结:
a. 对于本地个人研发项目,GeForce RTX 4090 等足以满足中等规模需求;
b. 对于公司的大规模数据和复杂模型,推荐使用 NVIDIA A100 的高性能 GPU;
c. 数据规模较小时,选择预算内的 A10 和 T4;
d. 如果追求性价比,可以选择把 4090 显卡搭建成集群服务器使用,也可以选择第三方服务;
9. 阿里云私有部署开源大模型
*a. 向量数据库的应用场景
a.1 知识库/问答系统:
a.2 图像识别和搜索
a.3 内容推荐系统
*b. 选择向量数据库
*c. 重点小结
c.1 通用数据库最初不是为矢量搜索设计的,因此不如专门矢量数据库性能高
c.2 如果业务知识少量向量(例如TPS<10万),不用考虑太多抉择问题
c.3 当成本和延迟成为问题时,考虑使用专用的矢量数据库
10. TorchServe
- a. 什么是 TorchServer
TorchServer 是一个专为 PyTorch 设计的模型服务工具,它可以帮助开发者轻松的部署,管理,和提供 PyTorch模型服务,它是由 PyTroch 团队和亚马逊 AWS 团队共同开发的,旨在为 PyTorch 团队提供一个简单,灵活且高效的模型部署解决方案;
-
a. TorchServer 优势
a.1 模型管理API:通过优化工作角色与模型的分配,实现多模型管理
a.2 推理 API :支持 REST 和 gRPC 的批量推理
a.3 性能指南:内置支持优化,基准测试和分析 PyTorch 和 TorchServer 的性能;
a.4 富有表现力的处理程序架构: 通过多种开箱即用的支持,轻松支持各种用例的推理
11. 实验思路
*a. 准备阶段
a.1 获取模型文件: chatglm2-6b
a.2 选择合适的服务器
*b. 部署阶段
b.1 准备好基础镜像: nvida-smi 验证 nvidia 是否安装
b.2 加载模型: 下载好模型
*c. 开发阶段
c.1 使用 FastAPI 创建一个简单的 WebAPI 接口
*d. 测试阶段: 通过 Postman/Curl 发送请求,进行测试调试
本地实践,自行完成