Xinference 中运行 CodeGeeX4PyTorch 与 GGUF 双格式的编程大模型实战指南【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inferenceCodeGeeX4 是智谱 AI 开源的最新 CodeGeeX 系列模型之一专为代码补全、代码生成与编程问答场景设计。本文以 Xinference 内置模型注册表中codegeex4的官方文档为基础结合 xinference/model/llm/llm_family.json 中的真实注册数据与 xinference/deploy/cmdline.py 的命令行解析实现系统讲解该模型在 Xinference 中的两种可部署规格PyTorch 全精度版与 GGUF 量化版、支持的推理引擎与量化档位并给出可直接复制运行的启动命令。读完本文你将掌握在 Xinference 中一键拉起 CodeGeeX4、按硬件条件选择合适引擎与量化方式以及理解引擎—格式匹配规则的完整能力。模型概览CodeGeeX4 的官方内置定义在 Xinference 中内置 LLM 的全部元信息上下文长度、语言、能力、规格、量化、模型 ID、对话模板、停止 token 等都集中维护在模型家族注册表 xinference/model/llm/llm_family.json 中codegeex4条目位于该文件第 4305 至 4395 行。官方文档 doc/source/models/builtin/llm/codegeex4.rst 正是由注册表数据自动生成的其模板见 doc/templates/llm.rst.jinja。该模型的顶层元信息如下属性值注册表字段上下文长度Context Length131072context_length模型名称Model Namecodegeex4model_name支持语言Languagesen, zhmodel_lang模型能力Abilitieschatmodel_ability模型描述Description最新 CodeGeeX4 模型系列的开源版本model_description架构 / 模型类型ChatGLMModel / chatglmarchitectures/model_type几个值得注意的细节131072 的上下文长度意味着模型原生支持 128K 级别的长上下文适用于大仓库代码分析、长文件重构等场景能力仅有chat对话不包含generate补全能力——这与 CodeGeeX4-All-9B 定位全能对话模型而非纯补全模型的特性一致后续引擎匹配逻辑也会基于该能力集合做校验注册表字段featured: false表明它属于常规内置模型并非官方置顶展示模型。规格一PyTorch 全精度版9B无量化官方文档中第一个 Model Spec 对应 PyTorch 格式的 9B 全精度模型注册表数据位于 xinference/model/llm/llm_family.json属性值Model FormatpytorchModel Size (in billions)9Quantizationsnone不支持量化EnginesvLLM、TransformersModel IDHugging Facezai-org/codegeex4-all-9brevision8c4ec1d2f2888412640825a7aa23355939a8f4c6Model IDModelScopeZhipuAI/codegeex4-all-9brevisionmaster启动命令如下将${quantization}替换为none将${engine}替换为vllm或transformersxinference launch --model-engine ${engine} --model-name codegeex4 --size-in-billions 9 --model-format pytorch --quantization ${quantization}关于该规格的补充说明由于quantizations仅列出none实际执行时必须写--quantization none注册表为 Hugging Face 与 ModelScope 两个模型仓库分别记录了model_id与model_revisionXinference 会根据你配置的模型源Hugging Face 或 ModelScope自动从对应仓库下载权重无需手工指定路径vLLM 引擎依赖 CUDA 环境与#vllm_dependencies#包集合见下文依赖与虚拟环境而 Transformers 引擎更通用在仅 CPU 或受限 GPU 环境下也能加载但推理吞吐通常低于 vLLM。规格二GGUF v2 量化版9B六档量化第二个 Model Spec 是 GGUF v2 格式的量化版本注册表数据位于 xinference/model/llm/llm_family.json属性值Model Formatggufv2Model Size (in billions)9QuantizationsIQ2_M、IQ3_M、Q4_K_M、Q5_K_M、Q6_K_L、Q8_0EnginesvLLM、llama.cppModel IDHugging Facezai-org/codegeex4-all-9b-GGUFrevision6a04071c54c943949826d4815ee00717ed8cf153Model IDModelScopeZhipuAI/codegeex4-all-9b-GGUF启动命令如下${quantization}从上方六档中选择其一${engine}为vllm或llama.cppxinference launch --model-engine ${engine} --model-name codegeex4 --size-in-billions 9 --model-format ggufv2 --quantization ${quantization}该规格的核心价值在于按显存预算弹性选择精度IQ2_M / IQ3_M极致压缩档显存占用最低适合小显存显卡或纯 CPU 推理精度损失相对明显Q4_K_M / Q5_K_M性价比平衡档K-M 变体对关键张量采用更高精度是社区最常用的组合建议作为默认选择Q6_K_L / Q8_0高精度档Q8_0 接近全精度效果显存占用也最高。量化档位与 GGUF 文件名严格对应注册表中定义了model_file_name_template为codegeex4-all-9b-{quantization}.gguf即下载时会按所选量化自动定位到codegeex4-all-9b-Q4_K_M.gguf这类具体文件因此量化名称必须与上述六档完全一致否则无法匹配到模型文件。引擎与格式的匹配规则为什么 GGUF 只能用这两个引擎在选择引擎时Xinference 会执行格式—引擎兼容性校验核心逻辑位于 xinference/model/llm/init.py 的check_format_with_enginedef check_format_with_engine(model_format, engine): # only llama-cpp-python support and only support ggufv2 if model_format in [ggufv2] and engine not in [llama.cpp, vLLM]: return False if model_format not in [ggufv2] and engine llama.cpp: return False return True这条规则直接解释了官方文档中两个 Spec 的引擎列表差异ggufv2格式只能配llama.cpp或vLLMGGUF 是 llama.cpp 生态的量化格式因此以llama.cpp经xllamacpp绑定加载最为自然vLLM 在较新版本中也支持直接加载 GGUF 文件故同样被允许。若试图对 ggufv2 指定transformers引擎会被该校验直接拒绝llama.cpp引擎只能加载ggufv2格式因此 PyTorch 规格无法使用llama.cpp引擎只能走 vLLM 或 Transformers。此外xinference/model/llm/llama_cpp/core.py 中 llama.cpp 引擎的match_json校验还要求模型必须具有chat或generate能力而codegeex4恰好具备chat能力满足要求。综合来看可用的引擎—格式组合为PyTorch → vLLM / TransformersGGUF v2 → vLLM / llama.cpp。启动命令参数逐项解读官方文档给出的启动命令对应 xinference/deploy/cmdline.py 中xinference launch的 CLI 参数定义各参数含义与命令行选项如下参数短选项说明codegeex4 取值--model-engine-en指定模型使用的推理引擎vllm、transformers或llama.cpp须与格式匹配--model-name—内置模型家族名codegeex4--size-in-billions-s模型参数量十亿9--model-format-f模型格式pytorch或ggufv2--quantization-q量化方式nonepytorch或六档 GGUF 量化之一同时需要注意 xinference/deploy/cmdline.py 中的强制校验对于 LLM 类型模型--model-engine为必填项缺失时会直接抛出ValueError。这一点与文档中记得把${engine}替换为你选择的引擎的提示相互印证——启动 CodeGeeX4 时不要省略该参数。常见启动示例以 4-bit 量化在 llama.cpp 引擎下启动CPU/低显存友好xinference launch --model-engine llama.cpp --model-name codegeex4 \ --size-in-billions 9 --model-format ggufv2 --quantization Q4_K_M以全精度在 vLLM 引擎下启动GPU 吞吐优先需满足约 9B 全精度的显存要求xinference launch --model-engine vllm --model-name codegeex4 \ --size-in-billions 9 --model-format pytorch --quantization none依赖与虚拟环境不同引擎的自动装配从注册表第 4387 至 4394 行可以看到codegeex4为每个引擎声明了独立的条件依赖Xinference 在启动模型时会按所选引擎自动创建/复用虚拟环境并安装对应依赖包#transformers_dependencies# ; #engine# Transformers #llama_cpp_dependencies# ; #engine# llama.cpp #vllm_dependencies# ; #engine# vllm #system_numpy# ; #engine# vllm也就是说选择 Transformers 引擎时会装配 transformers 依赖链选择 llama.cpp 引擎时装配#llama_cpp_dependencies#其底层绑定为xllamacpp见 xinference/model/llm/llama_cpp/core.py 中从xllamacpp导入Server、estimate_gpu_layers等实现选择 vLLM 引擎时除 vLLM 依赖外还会额外携带系统级 numpy。这一机制保证你无需手工管理多套引擎环境换引擎时由 Xinference 自动完成依赖隔离与装配虚拟环境管理细节可参考 xinference/core/virtual_env_manager.py 与文档 doc/source/models/virtualenv.rst。对话模板与停止 Token保证生成质量的隐藏配置除了规格信息注册表还为codegeex4配置了完整的对话协议xinference/model/llm/llm_family.jsonchat_template采用ChatGLM风格的|system|/|user|/|assistant|角色标记当首条消息不是 system 消息时会自动注入 CodeGeeX 的默认系统提示词你是一位智能编程助手你叫CodeGeeX。你会为用户回答关于编程、代码、计算机方面的任何问题并提供格式规范、可以执行、准确安全的代码并在必要时提供详细的解释。stop_token_ids[151329, 151336, 151338]stop[|endoftext|, |user|, |observation|]。这套配置由 Xinference 在请求处理时自动套用因此通过统一的 OpenAI 兼容 API 调用 CodeGeeX4 时多轮对话的角色拼接、结束符处理均已开箱即用无需在客户端侧手写模板。实战选型建议综合上述分析在不同场景下的推荐组合如下有充足 GPU 显存、追求最佳效果与吞吐选 PyTorch 规格 vLLM 引擎--quantization none适合生产级代码问答服务显存受限或 CPU 部署选 GGUF v2 规格 llama.cpp 引擎量化档位从Q4_K_M起步逐步试调兼顾体积与质量对部署灵活性要求高PyTorch 规格 Transformers 引擎可在更宽泛的硬件环境中运行代价是吞吐相对较低长上下文代码分析两个规格均保持 131072 的上下文窗口注意在 vLLM 下合理设置--max-num-seqs等批处理参数以控制 KV Cache 占用。无论选择哪种组合启动后都可以用 xinference/client/restful/restful_client.py 提供的统一客户端或标准的 OpenAI 兼容接口发起对话请求验证模型是否按预期工作。相关运行与验证的通用流程可进一步参考 doc/source/getting_started/using_xinference.rst。【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inference创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考