ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ChatGLM3-6B 低成本部署完全指南:量化、CPU、Mac 与多卡推理实战

ChatGLM3-6B 低成本部署完全指南:量化、CPU、Mac 与多卡推理实战 大模型人工智能微调本地部署AI AgentRAG【免费下载链接】ChatGLM3ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型项目地址https://gitcode.com/gh_mirrors/ch/ChatGLM3点击查看免费下载本文围绕 ChatGLM3 开源仓库中的 DEPLOYMENT.md 展开系统梳理 ChatGLM3-6B 在显存受限、无 GPU、Apple Silicon 笔记本以及多卡环境下的四种部署方案4-bit 量化、CPU 推理、MPS 后端推理与多卡切分加载。文中所有代码均来自官方文档与仓库源码如 basic_demo/cli_demo.py、openai_api_demo/api_server.py读者读完即可按自身硬件条件选型并落地运行。ChatGLM3-6B 是智谱 AI 开源的双语对话大模型默认以 FP16半精度权重加载单卡推理约需13GB 显存。对于消费级显卡、纯 CPU 机器或内存有限的 Mac 用户直接按默认方式加载往往会遇到 OOM 或推理缓慢的问题。本指南按文档给出的四类场景逐一给出可直接运行的代码与参数说明并补充仓库源码中的实际用法作为印证。一、部署前的基础认知显存与内存需求在动手之前先明确各方案的硬件账本便于按自己的设备对号入座部署方式精度显存 / 内存需求适用场景默认 FP16 加载GPUFP16约 13GB 显存显存充足的单卡服务器 / 工作站4-bit 量化GPUINT4显著低于 13GB消费级显卡、显存有限的机器CPU 推理FP32/FP16约 32GB 内存无 GPU 的服务器或工作站Mac MPS 推理FP16约 13GB 内存Apple Silicon / AMD GPU 的 Mac多卡切分FP16每卡显存之和 ≥ 13GB多张中低显存 GPU 的机器所有方案均通过 Hugging Facetransformers的AutoModel.from_pretrained加载模型因此首先需要确保环境已安装transformers与torch仓库根目录的 requirements.txt 中列出了完整依赖并设置trust_remote_codeTrue以信任并使用模型自带的远程代码实现。二、GPU 量化部署以 4-bit 精度换显存文档明确指出默认 FP16 加载需要约13GB 显存如果你的 GPU 显存有限可以改用量化方式加载模型。ChatGLM3 通过transformers的量化接口一行代码即可把权重压缩到 4-bitmodel AutoModel.from_pretrained(THUDM/chatglm3-6b, trust_remote_codeTrue).quantize(4).cuda()关键点解读.quantize(4)将模型权重量化为 4-bit 精度可大幅降低显存占用.cuda()量化后的模型必须显式放到 CUDA 设备上精度取舍文档同时提醒模型量化会带来一定的性能损失但经过测试ChatGLM3-6B 在 4-bit 量化下仍然能够进行自然流畅的生成对话质量损失在可接受范围内。这一用法在仓库源码中得到了多处印证。例如 basic_demo/cli_demo.py 中官方命令行 demo 的默认写法是model AutoModel.from_pretrained(MODEL_PATH, trust_remote_codeTrue, device_mapauto).eval() # add .quantize(bits4, devicecuda).cuda() before .eval() to use int4 model # must use cuda to load int4 model注释明确指出要使用 int4 模型需要在.eval()之前插入.quantize(bits4, devicecuda).cuda()并且必须使用 cuda 加载 int4 模型。这里与 DEPLOYMENT.md 的写法形成互补——如果你不需要自动分配设备可以直接用device_mapauto一旦决定量化就必须显式指定 cuda 设备。在 composite_demo/client.py综合 Demo 的客户端中也有完全相同的注释提示说明量化加载是仓库内统一的推荐做法。需要注意的是量化与device_mapauto不能同时使用两者互斥这正是源码注释中remove device_mapauto的原因。如果你使用的是 OpenAI API 兼容的部署服务可以参考 openai_api_demo/api_server.py其默认同样采用device_mapauto加载需要量化时按同样的规则在from_pretrained之后、.eval()之前插入量化调用。三、CPU 部署无 GPU 环境的推理方案如果你没有 GPU 硬件也可以在 CPU 上进行推理代价是推理速度明显更慢且内存需求较高。文档给出的用法如下model AutoModel.from_pretrained(THUDM/chatglm3-6b, trust_remote_codeTrue).float()需要说明的是内存需求约 32GB这是文档明确给出的前提条件请在部署前先确认机器物理内存充足.float()将模型显式转为 32 位浮点精度加载避免半精度在纯 CPU 环境下产生精度问题或算子不兼容速度预期CPU 推理远慢于 GPU适合离线批量推理或验证场景不适合高并发的在线服务。从仓库结构看CPU 部署并非孤例——官方还提供了面向 Intel 设备的专门加速目录 Intel_device_demo其中包含基于IPEX-LLM针对 Intel XPU 的低精度轻量级大语言模型库和OpenVINO推理框架的加速部署示例适用于 Intel CPU、Arc 独立显卡及核显等设备。如果使用的是 Intel 平台可以在完成基础 CPU 部署后参考该目录下的 ipex_llm_cpu_demo/chatglm3_infer.py 与 openvino_demo 进一步压缩内存占用、提升吞吐。四、Mac 部署借助 MPS 后端跑在 GPU 上对于搭载Apple SiliconM 系列芯片或AMD GPU的 Mac可以使用 PyTorch 的 MPSMetal Performance Shaders后端让模型运行在 Mac 的 GPU 上。4.1 前置安装要求文档特别强调需要参考 Apple 官方说明安装PyTorch-Nightly版本且正确的版本号应为2.x.x.dev2023xxxx形式而不是2.x.x稳定版——只有 nightly 构建才包含完善的 MPS 后端支持这是很多人踩坑的地方。4.2 从本地加载模型当前 MacOS 的唯一方式文档明确指出目前在 MacOS 上只支持从本地加载模型即在加载前需要先把模型权重下载到本地。下载方式可参考 README.md#从本地加载模型 的说明通过 Git LFS 克隆 Hugging Face 仓库git clone https://huggingface.co/THUDM/chatglm3-6b或从 ModelScope 下载Hugging Face 下载慢时的备选渠道。完成本地下载后将代码中的模型加载改为指向本地路径并切换到 MPS 后端model AutoModel.from_pretrained(your local path, trust_remote_codeTrue).to(mps)4.3 内存容量评估加载半精度的 ChatGLM3-6B 模型需要大概13GB 内存。文档特别提醒内存较小的机器比如 16GB 内存的 MacBook Pro在空余内存不足的情况下会使用硬盘上的虚拟内存swap导致推理速度严重变慢。因此建议优先选择 32GB 内存及以上的 Mac16GB 内存的机器务必关闭其他高内存占用应用后再推理否则将因频繁换页而近乎不可用。五、多卡部署将模型切分到多张 GPU如果你有多张 GPU但每张 GPU 的显存都不足以单独容纳完整模型可以把模型切分到多张 GPU 上协同推理。文档给出的步骤如下第一步安装加速库 acceleratepip install accelerate第二步通过工具函数加载模型from utils import load_model_on_gpus model load_model_on_gpus(THUDM/chatglm3-6b, num_gpus2)参数说明来自文档原文num_gpus希望使用的 GPU 数量可按需修改例如num_gpus4即为四卡切分默认切分策略模型权重默认在各 GPU 上均匀切分device_map可传入该参数自行指定每一层 / 每一参数块的设备映射满足不均匀分配或指定特定 GPU 的需求。该函数的使用前提是安装accelerate说明其底层依赖 Hugging Face 的accelerate库实现自动设备分配与跨卡张量搬运。从仓库中多个 demo 的代码如 basic_demo/cli_batch_request_demo.py、basic_demo/web_demo_streamlit.py、langchain_demo/ChatGLM3.py可以看到device_mapauto也是全仓库统一推荐的单机自动分配方式多卡场景下可结合load_model_on_gpus或device_map按需选用。六、方案选型与实战建议综合文档与仓库源码给出以下选型建议显存 ≥ 13GB 的单卡直接 FP16 加载参考 basic_demo/cli_demo.py 的默认写法兼顾质量与速度显存不足但想跑 GPU用quantize(4)量化加载记住.quantize(...)必须在.eval()之前、且必须配合.cuda()这一仓库源码反复强调的约束无 GPU 的 x86 服务器float()方式 CPU 推理约 32GB 内存Intel 平台可进一步参考 Intel_device_demo 的 IPEX-LLM / OpenVINO 加速方案Apple Silicon Mac安装 PyTorch-Nightly 后本地加载模型并.to(mps)确认内存 ≥ 13GB 且预留足够余量多张中低显存 GPUpip install accelerate后使用load_model_on_gpus均匀切分或自定义device_map。以上五种路径共同覆盖了从消费级硬件到多卡服务器的全部主流部署场景所有代码均可在当前仓库内找到对应实现可按需直接复制使用。赞分享大模型人工智能微调本地部署AI AgentRAG【免费下载链接】ChatGLM3ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型项目地址https://gitcode.com/gh_mirrors/ch/ChatGLM3点击查看免费下载相关推荐CodeGeeX2多卡切分推理与Mac/CPU部署低显存环境下的完整实战指南CodeGeeX2多卡切分推理与Mac/CPU部署低显存环境下的完整实战指南 CodeGeeX2 是智谱 AI 开源的多语言代码生成模型基于 ChatGLM大模型代码模型基础模型CodeGeeX2 推理教程CPU/多卡/Mac 多平台部署与量化加速实战CodeGeeX2 推理教程CPU/多卡/Mac 多平台部署与量化加速实战 CodeGeeX2 是多语言代码生成模型 CodeGeeXKDD23的第二代人工智能大模型代码模型本地部署模型评测探索ke-t5-base的220M参数魔力文本生成性能深度测评探索ke t5 base的220M参数魔力文本生成性能深度测评 在当今人工智能飞速发展的时代自然语言处理NLP模型正以前所未有的速度改变着我们与技术交互创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表