大模型量化部署常用方案
模型量化
- 目标是减少模型的存储空间和计算需求,确保在有限硬件资源上实现高效运行。
- 包括训练后量化,可以在模型训练完成后进行,降低模型精度损失的同时压缩模型。
- 动态量化则是在运行时根据数据动态调整量化的级别,以达到最佳的运行效率。
硬件需求
- 需要考虑不同硬件平台的支持,如CPU、GPU、NPU和TPU。
大模型量化点
- 模型的参数量大,达到7B级别或更多,通常需要14+G内存。
- 量化模型需要处理大量的token,并且优化Attention机制中的k/v,以减少计算负担。
动态shape
- 模型在运行时的输入输出形状是可变的。
- Token的数量和维度可能会变化。
模型和编程库
- 使用Transformers库,通常采用decoder-only架构。
大模型量化部署挑战
设计
- 需要处理大量的token,对内存和计算能力提出挑战。
- 模型形状的动态性,要求部署时能够适应各种输入尺寸。
- 必须确保量化后的模型保持或仅略微降低准确性。
部署
- 如何在不同的硬件上保证模型的性能?
- 需要支持大规模并行处理,提高吞吐量和减少延迟。
技术点
- 调优技术,例如Page Attention和Continuous Batch,有助于提高效率。
- 使用了各种工具和库,如huggingface transformers、Imdeploy、vllm等,这些都是优化和部署模型的关键组件。
本地启动huggingface模型
lmdeploy chat turbomind /share/temp/model_repos/internlm-chat-7b/ --model-name internlm-chat-7b
生成300字的故事(作业)
离线转换模型
转换模型。
lmdeploy convert internlm-chat-7b /path/to/internlm-chat-7b
执行
lmdeploy convert internlm-chat-7b /root/share/temp/model_repos/internlm-chat-7b/