大模型的痛点
- 大模型的计算量是非常大的
2. 显存的相应区域是非常大的
3.访存瓶颈
- GPU的大部分时间都花在数据交换上面
- 不断拉高batchsize,不断地提高计算的访存比是不是会有较好的效果呢?这是一个很好的想法,但是显存不够就会很尴尬
- 为了能够更好的利用GPU进行推理,一般输入的tensor一般是要长度相同的,长度如果不相同的话,如果并行推理就会导致短tensor要去等待长tensor,导致的是GPU一段时间内进行摸鱼
大模型常用的大模型部署方法
- 大模型剪枝(减少模型的参数)
- 移除个别参数,不考虑整体的网络结构,
- 可以查阅相关文献
- 知识蒸馏(减少模型的参数)
- 先训练一个大模型,教师模型
- 然后再用这个大模型去训练一个小模型
- 模型量化(可以损失一些模型的精度)
- 把浮点数转化为整数等等,可以减少存储空间
- 推理速度加快
- 先把整数转化为浮点数,计算完成了之后再转化为整数然后再储存起来
- 加快主要是整数的传输更加快,而不是计算整数更快,计算使用的还是浮点数
LMDeploy
- TurboMind是推出的高效的推理引擎
- 实现了LLaMa结构模型的支持 Imdeploy chat -h
- 模型的量化压缩
- 服务化的部署
- 将LLM封装为HTTP 的API,支持Triton扩展
- 同时支持多模态的视觉大模型
- 支持第三方的大模型的部署,我们可以使用ChatGLM2试一试
- 安装部署LMDeploy
- 参见https://github.com/InternLM/Tutorial/blob/camp2/lmdeploy/README.md的教程
- 使用Cuda12.2-conda,低版本的会不兼容
- LMDeploy模型对话(chat)
- HuggingFace和TurboMind
- 但是TurboMind只能用TurboMind格式的模型,如果使用HuggingFace的模型那么需要转化为TurboMind格式的模型
- HuggingFace和TurboMind
- 可以在开发机上下载模型
- 因为InternStudio开发机上集成了常用的权重的文件
- 可以在OpenXLab平台下载模型
实操部分(作业)
- 环境部署
- 使用命令行与之进行对话