资讯详情

在 Intel 设备上加速部署 ChatGLM3-6B:IPEX-LLM 与 OpenVINO 双路径实战指南

📅 2026/10/4 2:38:09 | 华诺云谱 👁 阅读
在 Intel 设备上加速部署 ChatGLM3-6B:IPEX-LLM 与 OpenVINO 双路径实战指南
大模型人工智能微调本地部署AI AgentRAG【免费下载链接】ChatGLM3ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型项目地址https://gitcode.com/gh_mirrors/ch/ChatGLM3点击查看免费下载ChatGLM3-6B 是一个开源的双语对话大语言模型在个人 CPU、服务器/工作站 CPU 以及 Intel Arc 独立显卡等 Intel 设备上部署时往往需要专门的推理加速手段才能获得可用的性能与内存占用。本指南以仓库中 Intel_device_demo 目录为脉络系统讲解基于 IPEX-LLM低精度量化加速与 OpenVINO模型编译优化加速两条路径在 Intel 设备上部署 ChatGLM3-6B 的完整流程读完本文你将掌握硬件选型与支持范围、INT4 量化加载模型、OpenVINO IR 模型转换与量化、命令行/Web/OpenAI 兼容 API 三种推理形态以及源码级的生成参数与常见问题排查方法。1. 面向的硬件与支持范围Intel_device_demo文件夹的主要目标是辅助开发者在Intel 设备上加速部署 ChatGLM3-6B 模型。其官方支持列表包括Intel CPU 系列涵盖个人 CPU 与服务器 / 工作站 CPUIntel Arc 独立显卡系列包括 Arc A770 等显卡Intel CPU 核显系列其他理论支持 OpenVINO 加速的 Intel 工具套件。从 openvino_demo 的 README 中的常见问题可知官方仅在 Intel 设备上做过验证并推荐使用 x86 架构的 Intel 设备包括个人电脑 CPU、服务器 CPU 以及 ARC A770 等独立显卡但这并不意味着必须使用 Intel 硬件只是非 Intel 设备不在官方验证范围内。2. 三条技术路径概览Intel_device_demo目录下规划/提供了三条部署路径对应不同的加速框架路径对应目录技术方案状态IPEX-LLMipex_llm_cpu_demo低精度轻量级大语言模型库面向 Intel XPUXeon/Core/Flex/Arc/PVC已提供完整示例OpenVINOopenvino_demoIntel 深度学习推理加速框架编译优化 低精度量化已提供示例与详细 READMEPytorch ExtensionPytorch_demo暂未推出在 PyTorch 环境上开发适用于 Intel Arc 系列 GPU规划中其中IPEX-LLM是面向 Intel XPUXeon/Core/Flex/Arc/PVC打造的低精度轻量级大语言模型库在 Intel 平台上具有广泛的模型支持、最低的延迟和最小的内存占用OpenVINO是 Intel 为深度学习推理设计的开源工具包可帮助开发者优化模型、提高推理性能并减少内存占用。两条路径覆盖了CPU/XPU 量化加速与模型编译优化 量化两种主流思路。3. IPEX-LLM CPU 路径INT4 量化推理全家桶ipex_llm_cpu_demo 目录下提供了从最小推理、命令行生成到 Web 与 OpenAI 兼容 API 的完整示例核心思路都是通过ipex_llm.transformers.AutoModel以INT4 低精度加载 ChatGLM3-6B从而显著降低显存/内存占用并提升推理速度。3.1 最小推理示例chatglm3_infer.pychatglm3_infer.py 展示了最直接的 INT4 推理方式import time from ipex_llm.transformers import AutoModel from transformers import AutoTokenizer CHATGLM_V3_PROMPT_FORMAT \n{prompt}\n model_path D:\AI\ChatGLM3\model/chatglm3-6b/ # 指定 chatglm3-6b 本地路径 # 以 INT4 量化加载 ChatGLM3-6B 模型 model AutoModel.from_pretrained(model_path, load_in_4bitTrue, trust_remote_codeTrue) tokenizer AutoTokenizer.from_pretrained(model_path, trust_remote_codeTrue) prompt CHATGLM_V3_PROMPT_FORMAT.format(promptWho are you?) input_ids tokenizer.encode(prompt, return_tensorspt) st time.time() output model.generate(input_ids, max_new_tokens32) end time.time() output_str tokenizer.decode(output[0], skip_special_tokensTrue) print(fInference time: {end-st} s) print(-*20, Prompt, -*20) print(prompt) print(-*20, Output, -*20) print(output_str)关键点load_in_4bitTrue将模型相关层转换为 INT4 格式这是 IPEX-LLM 在 CPU 上提速、省内存的核心trust_remote_codeTrueChatGLM3-6B 依赖仓库内自定义代码分词器、模型实现必须开启max_new_tokens控制新生成的 token 数量上限示例为 32注意它对应的是新生成而非总长度。3.2 命令行生成generate.pygenerate.py 将上述流程封装为可调参的命令行工具并补充了 ModelScope 模型下载支持python3 generate.py \ --repo-id-or-model-path ZhipuAI/chatglm3-6b \ --prompt AI是什么 \ --n-predict 32可用参数来自源码argparse定义--repo-id-or-model-pathModelScope 仓库 ID 或本地 checkpoint 目录默认ZhipuAI/chatglm3-6b--prompt待推理的提示词默认AI是什么--n-predict最大预测 token 数默认 32。源码中的两个实现细节值得注意模型来源切换通过model_hubmodelscope指定从 ModelScope 下载否则默认走 HuggingFace 渠道提示词模板采用 ChatGLM3 官方格式|user|\n{prompt}\n|assistant|与仓库 PROMPT.md 中定义的角色标记规范一致torch.inference_mode()推理阶段关闭梯度计算减少内存开销。源码注释还特别提示如果所选模型的 config 中use_cache: false在generate函数中显式设置use_cacheTrue才能充分利用 IPEX-LLM INT4 优化的键值缓存KV Cache加速解码。3.3 OpenAI 兼容 API 服务api_server.pyapi_server.py 基于 FastAPI uvicorn 将 ChatGLM3-6B 封装成与 OpenAI API 格式兼容的服务默认监听0.0.0.0:8000workers1。启动前可通过环境变量指定模型路径export MODEL_PATHTHUDM/chatglm3-6b # 默认值 export TOKENIZER_PATHTHUDM/chatglm3-6b # 默认与 MODEL_PATH 相同 python3 api_server.py服务提供的端点包括端点功能GET /health健康检查返回 200GET /v1/models列出可用模型id 为chatglm3-6bPOST /v1/chat/completions对话补全支持流式SSE与非流式以及工具调用function callPOST /v1/embeddings对文本列表返回 embedding源码中通过SentenceTransformer实现默认模型BAAI/bge-large-zh-v1.5默认处于注释状态请求参数源码中ChatCompletionRequest的 Pydantic 定义包括model、messages、temperature默认 0.8、top_p默认 0.8、max_tokens默认取 1024、stream默认 False、tools、repetition_penalty默认 1.1。源码注释特别提醒OpenAI API 中的max_tokens等价于 HuggingFace 的max_new_tokens而非max_length例如对 6B 模型设置max_tokens8192会因为扣除历史与提示 token 后超出模型输出能力而报错。流式输出与工具调用的底层实现都在 utils.py 中generate_stream_chatglm3核心流式生成器使用tokenizer.build_chat_input构造带角色历史的输入eos_token_id同时包含tokenizer.eos_token_id与|user|命令 token采样参数包括temperature、top_p、repetition_penalty并挂载InvalidScoreLogitsProcessor当 logits 出现 NaN/Inf 时清零并将第 5 位置为 5e4避免生成崩溃process_response解析|assistant|分隔的回复支持use_toolTrue时把输出解析为{name: ..., arguments: ...}形式的工具调用process_chatglm_messages将 OpenAI 风格的messages含system/user/assistant/function角色转换为 ChatGLM3 的对话格式其中 function 角色被映射为observationapply_stopping_strings按|observation|截断输出并返回finish_reason。3.4 流式对话 Web Demochatglm3_web_demo.pychatglm3_web_demo.py 基于 Streamlit 构建交互式聊天界面同样通过环境变量MODEL_PATH默认THUDM/chatglm3-6b指定模型侧边栏可调节三个采样参数max_length滑动范围 0–32768默认 8192top_p范围 0.0–1.0默认 0.8temperature范围 0.0–1.0默认 0.6。运行方式streamlit run chatglm3_web_demo.py界面通过st.session_state维护history与past_key_values调用model.stream_chat(..., return_past_key_valuesTrue)流式渲染回复并支持一键清空会话历史。源码用st.cache_resource缓存模型加载结果避免重复加载代码注释提示 Gradio 版本需 4.13.0 及以上3.x 已不受支持。3.5 客户端调用示例openai_api_request.pyopenai_api_request.py 演示了如何用openai官方 Python SDK 对接上述 API 服务from openai import OpenAI client OpenAI(api_keyEMPTY, base_urlhttp://127.0.0.1:8000/v1/)脚本包含两类典型用法函数调用tools构造get_current_weather工具描述含location必填参数与unit枚举以tool_choiceauto发起client.chat.completions.create打印模型返回的 function call 内容普通/流式对话携带 system 提示词You are ChatGLM3, a large language model trained by Zhipu.AI...支持streamTrue/False两种模式并可设置max_tokens256、temperature0.8、presence_penalty1.1、top_p0.8流式模式下逐 chunk 打印delta.content。4. OpenVINO 路径从 IR 转换到命令行推理openvino_demo 下的 README 提供了完整的 OpenVINO 部署步骤而 openvino_cli_demo.py 则是一个可直接运行的多轮对话 CLI 实现。4.1 环境配置OpenVINO 部署整体分为外部转换仓库完成模型转换 → 使用本仓库代码推理两步。首先克隆对应的 OpenVINO 部署仓库chatglm3.openvino并进入目录然后建议新建虚拟环境安装依赖python3 -m venv openvino_env source openvino_env/bin/activate python3 -m pip install --upgrade pip pip install wheel setuptools pip install -r requirements.txt4.2 转换模型HuggingFace 权重 → OpenVINO IR由于需要将 HuggingFace 模型转换为 OpenVINO IR 格式需先下载模型再执行转换python3 convert.py --model_id THUDM/chatglm3-6b --output {your_path}/chatglm3-6b参数说明来自文档--model_id模型所在目录的路径绝对路径--output转换后模型保存的地址。4.3 量化模型非必须如需进一步压缩体积、提升推理速度可对 IR 模型做 INT8 或 INT4 量化python3 quantize.py --model_path {your_path}/chatglm3-6b --precision int4 --output {your_path}/chatglm3-6b-int4参数说明--model_pathOpenVINO IR 模型所在目录的路径--precision量化精度取int8或int4--output保存模型的路径。4.4 运行 ChatGLM3 模型python3 chat.py --model_path {your_path}/chatglm3-6b --max_sequence_length 4096 --device CPU参数说明--model_pathOpenVINO IR 模型所在目录的路径--max_sequence_length输出 token 的最大长度--device运行推理的设备如 CPU也可指定支持 OpenVINO 的其他设备。4.5 仓库内 CLI 示例openvino_cli_demo.py 的源码细节仓库自带的 openvino_cli_demo.py 与文档中的chat.py功能互补展示了基于optimum.intel.openvino.OVModelForCausalLM的多轮对话实现python3 openvino_cli_demo.py -m {your_path}/chatglm3-6b -l 256 -d CPU命令行参数argparse定义-m/--model_path必填OpenVINO IR 模型路径-l/--max_sequence_length输出最大长度默认 256-d/--device推理设备默认CPU。源码中的几个工程化细节OpenVINO 运行时配置ov_config设置为{PERFORMANCE_HINT: LATENCY, NUM_STREAMS: 1, CACHE_DIR: }即优先低延迟、单流推理并显式置空缓存目录避免每次加载旧缓存模型加载OVModelForCausalLM.from_pretrained(model_dir, device..., ov_config..., configAutoConfig.from_pretrained(...), trust_remote_codeTrue)通过AutoConfig读取 ChatGLM3 的自定义配置流式输出使用TextIteratorStreamerskip_promptTrue, skip_special_tokensTrue超时 60 秒配合后台线程调用ov_model.generate实现逐字打印停止条件自定义StopOnTokens停止准则监听 token id[0, 2]对应 EOS 相关 token并在StoppingCriteriaList中生效采样参数temperature0.1、do_sampleTrue、top_p1.0、top_k50、repetition_penalty1.1多轮对话convert_history_to_token将(用户消息, 模型回复)的历史列表通过tokenizer.apply_chat_template(..., add_generation_promptTrue)构造模型输入对话中支持stop退出、clear清空历史parse_text负责把 Markdown 代码块转换为 HTML 渲染避免终端流式输出错乱。5. 运行效果示例Intel_device_demo/openvino_demo/README.md给出了转换并启动模型后的实际对话效果节选用户: 你好 ChatGLM3-6B-OpenVINO: 你好有什么我可以帮助你的吗 用户: 你是谁 ChatGLM3-6B-OpenVINO: 我是一个名为ChatGLM3-6B的人工智能助手是由清华大学KEG实验室和智谱AI 公司于2023 年共同训练的语言模型开发而成。我的任务是针对用户的问题和要求提供适当的答复和支持。 用户: 请给我讲一个有趣的故事 ChatGLM3-6B-OpenVINO: 从前有一个名叫小明的小男孩…… 用户: 请给这个故事起一个标题 ChatGLM3-6B-OpenVINO: 《友谊的力量小明与小鸟的森林冒险》该示例印证了多轮对话上下文在 OpenVINO 部署下可正常工作。6. 常见问题与排查结合 openvino_demo README 与仓库源码整理常见问题如下为什么加载本地模型还会报 HuggingFace 链接错误将transformers库降级到4.37.2版本即可解决模型依赖的远程代码加载与旧版 transformers 兼容性相关。需要安装 OpenVINO C 推理引擎吗不需要。Python 环境下的optimum-intel/ OpenVINO Python 包已足够完成转换与推理。一定要使用 Intel 的硬件吗官方仅在 Intel 设备上验证过推荐使用 x86 架构的 Intel 设备包括但不限于Intel 个人电脑 CPU、服务器 CPU以及 ARC A770 等独立显卡。IPEX-LLM 路径的模型从哪里来可通过--repo-id-or-model-path ZhipuAI/chatglm3-6b配合model_hubmodelscope从 ModelScope 自动下载或指定本地 checkpoint 目录从源码看分词器与模型加载都必须开启trust_remote_codeTrue。7. 总结与选型建议在 Intel 设备上部署 ChatGLM3-6B仓库给出了两条经过验证的加速路径IPEX-LLM 路径适合希望在 CPU/XPU 上以最低内存占用和最低延迟跑通完整业务链路的场景——仓库提供了 INT4 推理chatglm3_infer.py、命令行生成generate.py、OpenAI 兼容 APIapi_server.py openai_api_request.py与 Streamlit 网页对话chatglm3_web_demo.py四种开箱即用的形态OpenVINO 路径适合需要模型编译优化与统一跨设备推理的场景——先通过转换工具产出 IR 模型可选 INT8/INT4 量化再用 openvino_cli_demo.py 或文档描述的chat.py启动多轮对话。若进一步了解 ChatGLM3 的角色标记、提示词规范与工具调用格式可继续阅读仓库根目录的 PROMPT.md 与 tools_using_demo 文档将上述部署能力与模型的对话/工具能力打通。赞分享大模型人工智能微调本地部署AI AgentRAG【免费下载链接】ChatGLM3ChatGLM3 series: Open Bilingual Chat LLMs | 开源双语对话语言模型项目地址https://gitcode.com/gh_mirrors/ch/ChatGLM3点击查看免费下载相关推荐终极指南如何快速实现ChatGLM3的OpenVINO部署与Intel CPU/GPU推理加速终极指南如何快速实现ChatGLM3的OpenVINO部署与Intel CPU/GPU推理加速 ChatGLM3是一款开源双语对话语言模型通过OpenVIN大模型人工智能微调本地部署AI AgentRAGYOLOX OpenVINO部署教程Python与C双版本Intel平台加速YOLOX OpenVINO部署教程Python与C双版本Intel平台加速 YOLOX 是由旷视发布的 无锚框anchor free高性能目标检测模人工智能计算机视觉深度学习网盘直链下载助手LinkSwift免装客户端九大网盘网页直取真实下载链接网盘直链下载助手LinkSwift免装客户端九大网盘网页直取真实下载链接 周五下午剪辑小刘在工位上接了个急活把同事丢到共享阿里云盘里的 40 多个工前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑