人工智能大模型模型推理服务推理引擎本地部署模型量化【免费下载链接】lmdeployLMDeploy is a toolkit for compressing, deploying, and serving LLMs.项目地址https://gitcode.com/gh_mirrors/lm/lmdeploy点击查看免费下载导读本文是 LMDeploy 官方 CodeLlama 部署指南对应仓库文档 docs/en/llm/codellama.md的完整解读与源码级扩充。CodeLlama 是 Meta 发布的一族面向代码场景的 LLaMA2 变体模型具备代码补全、代码填空infilling、指令对话与 Python 专项四种能力LMDeploy 通过内置codellama聊天模板与capability参数让同一个模型仓库可以在 Pipeline 推理和 OpenAI 兼容 API Server 两种模式下灵活切换这四种能力。读完本文你将掌握如何为 CodeLlama 配置正确的ChatTemplateConfig如何用lmdeploy serve api_server启动代码补全服务并通过 OpenAI SDK 调用以及这些配置在 lmdeploy/model.py 中的底层实现原理。CodeLlama 模型族与能力矩阵CodeLlama 在 LLaMA2 基座上进一步用代码语料训练能够从代码与自然语言提示中生成代码、解释代码并支持代码补全与调试。官方发布的模型覆盖 Python、C、Java、PHP、TypeScriptJavaScript、C#、Bash 等主流语言。官方共发布三个规模7b、13b、34b与三个风味Base 基座模型、Python 微调版、Instruct 指令微调版共 9 个 HF 权重仓库Base 基座模型Python 微调版Instruct 指令版codellama/CodeLlama-7b-hfcodellama/CodeLlama-7b-Python-hfcodellama/CodeLlama-7b-Instruct-hfcodellama/CodeLlama-13b-hfcodellama/CodeLlama-13b-Python-hfcodellama/CodeLlama-13b-Instruct-hfcodellama/CodeLlama-34b-hfcodellama/CodeLlama-34b-Python-hfcodellama/CodeLlama-34b-Instruct-hf模型与能力之间的对应关系如下模型代码补全completion代码填空infilling指令/对话chatPython 专项Base Model支持支持仅 7B、13B34B 不支持不支持不支持Python支持不支持不支持支持Instruct支持支持仅 7B、13B34B 不支持支持不支持从 LMDeploy 的视角看这四种能力并非不同的模型文件而是同一份权重配合不同的提示词模板与停止词呈现出的不同行为。这一点在源码中体现得非常清晰CodeLlama类在 lmdeploy/model.py 中注册为codellama其构造函数会断言capability必须是[completion, infilling, chat, python]之一并通过get_prompt分发到不同的提示词构造逻辑。能力一代码补全Completion代码补全的目标是根据已有代码前缀续写出符合语义的后续代码。LMDeploy 的 Pipeline 推理代码如下from lmdeploy import pipeline, GenerationConfig, ChatTemplateConfig pipe pipeline(meta-llama/CodeLlama-7b-hf, chat_template_configChatTemplateConfig( model_namecodellama, capabilitycompletion )) response pipe( import socket\n\ndef ping_exponential_backoff(host: str):, gen_configGenerationConfig( top_k10, temperature0.1, top_p0.95 ) ) print(response.text)要点说明model_namecodellama让 LMDeploy 从注册表中加载 CodeLlama 专用聊天模板即MODELS.register_module(namecodellama)对应的CodeLlama类。capabilitycompletion时模板的get_prompt会直接原样返回输入提示词、不附加任何对话包裹标记——从源码看BaseChatTemplate 对completion能力的处理就是return prompt见 lmdeploy/model.py。解码参数top_k10、temperature0.1、top_p0.95组合出偏保守、低随机性的生成策略适合代码这类对确定性要求高的场景。ChatTemplateConfig是定义在 lmdeploy/model.py 中的 dataclass其capability字段类型为Literal[completion, infilling, chat, python] | None同时还支持system、meta_instruction、user、assistant、stop_words、separator等模板字段的定制。能力二代码填空InfillingInfilling 是 CodeLlama 基座模型特有的能力给定一段代码的前缀与后缀模型在中间FILL占位符处补全被挖空的代码块from lmdeploy import pipeline, GenerationConfig, ChatTemplateConfig pipe pipeline(meta-llama/CodeLlama-7b-hf, chat_template_configChatTemplateConfig( model_namecodellama, capabilityinfilling )) prompt def remove_non_ascii(s: str) - str: \\\ FILL \\\ return result response pipe( prompt, gen_configGenerationConfig( top_k10, temperature0.1, top_p0.95, max_new_tokens500 ) ) print(response.text)从源码看infilling 的底层实现位于 lmdeploy/model.py 的_infill_prompt它以FILL为界把输入切分成prefix与suffix再重排为 CodeLlama 官方规定的填空格式默认suffix_firstFalse格式为PRE {prefix} SUF{suffix} MID即前缀在前、后缀在后若设置suffix_firstTrue则格式变为PRE SUF{suffix} MID {prefix}。同时CodeLlama构造函数对 infilling 能力会注入默认停止词当用户未显式指定stop_words时自动设置stop_words[EOT]见 lmdeploy/model.py模型生成到EOT即停止避免把占位符之后的后缀也“续写”出来。这就是 infilling 场景必须明确指定capabilityinfilling的原因——模板决定了FILL的解析与PRE/SUF/MID的重组方式。能力三指令对话ChatInstruct 版模型支持自然语言指令与多轮对话。LMDeploy 直接复用 LLaMA2 的对话模板因为CodeLlama类继承自Llama2见 lmdeploy/model.pyfrom lmdeploy import pipeline, GenerationConfig, ChatTemplateConfig pipe pipeline(meta-llama/CodeLlama-7b-Instruct-hf, chat_template_configChatTemplateConfig( model_namecodellama, capabilitychat )) response pipe( implement quick sort in C, gen_configGenerationConfig( top_k10, temperature0.1, top_p0.95 ) ) print(response.text)capabilitychat时get_prompt走super().get_prompt(prompt)分支lmdeploy/model.py即调用 LLaMA2 模板以[INST] SYS ... /SYS包裹系统指令以[/INST]分隔用户输入与模型回复并以/s作为回复结束符。因此 Instruct 模型在对话场景下会获得与 LLaMA2 一致的指令遵循行为。能力四Python 专项Python SpecialistPython 微调版是专注 Python 代码生成的专项模型。官方明确其不支持infilling因此只能以 completion 方式使用from lmdeploy import pipeline, GenerationConfig, ChatTemplateConfig pipe pipeline(meta-llama/CodeLlama-7b-Python-hf, chat_template_configChatTemplateConfig( model_namecodellama, capabilitypython )) response pipe( implement quick sort, gen_configGenerationConfig( top_k10, temperature0.1, top_p0.95 ) ) print(response.text)在源码中capability为python以及completion时提示词同样不经过任何模板包裹直接透传给模型lmdeploy/model.py 的else分支。因此Python 专项模型与 completion 模式的区别主要体现在权重本身Python 语料微调而不是提示词层面。模型匹配与引擎支持使用pipeline(meta-llama/CodeLlama-7b-hf, ...)时LMDeploy 会根据模型路径自动识别模板CodeLlama.match检查路径中是否包含codellama子串lmdeploy/model.py命中即返回codellama。因此即使不显式传入ChatTemplateConfig(model_namecodellama, ...)仅凭capability参数也能完成模板匹配——显式传参的好处是语义清晰、避免路径命名歧义。从推理引擎层面看CodeLlama 的模型架构为LlamaForCausalLM对应 Turbomind 引擎的SUPPORTED_ARCHS映射LlamaForCausalLMllama见 lmdeploy/turbomind/supported_models.py即 CodeLlama 可直接被 Turbomind 后端加载推理。仓库自带的自动化测试配置也印证了这一点autotest/configs/codellama/CodeLlama-7b-hf.yml 与 autotest/configs/codellama/CodeLlama-7b-Instruct-hf.yml 分别以model_type: base和model_type: chat记录了 7B 两个风味的引擎配置tp: 1、Turbomind 后端、NCCL 通信并覆盖了 AWQ 量化测试。服务化部署OpenAI 兼容 API Server除了 Pipeline 直连推理CodeLlama 还支持通过 LMDeploy 的api_server提供 OpenAI 兼容的 RESTful 服务。准备聊天模板 JSON首先准备一个聊天模板文件codellama.json{ model_name: codellama, capability: completion }该 JSON 与ChatTemplateConfigdataclass 字段一一对应lmdeploy/model.py 提供了to_json/from_json序列化支持。需要切换能力时只需修改capability字段例如改成infilling、chat或python。启动服务lmdeploy serve api_server meta-llama/CodeLlama-7b-Instruct-hf --chat-template codellama.json--chat-template参数由lmdeploy/cli/serve.py解析并构造成ChatTemplateConfig传给后端lmdeploy/cli/serve.py。api_server的完整参数可通过lmdeploy serve api_server -h查看常用参数包括--server-name与--server-port服务监听地址与端口默认 23333--tp张量并行度--session-len上下文窗口最大长度--cache-max-entry-countKV cache 占用的 GPU 显存比例。关于 API Server 的完整使用说明可参考 docs/en/llm/api_server.md多模型负载均衡场景可参考 docs/en/llm/proxy_server.md。使用 OpenAI SDK 调用服务启动成功后即可用openai包以 OpenAI 兼容方式访问from openai import OpenAI client OpenAI( api_keyYOUR_API_KEY, base_urlhttp://0.0.0.0:23333/v1 ) model_name client.models.list().data[0].id response client.chat.completions.create( modelmodel_name, messages[ {role: user, content: import socket\n\ndef ping_exponential_backoff(host: str):}, ], temperature0.1, top_p0.95, max_tokens500 ) print(response)要点base_url指向http://0.0.0.0:23333/v1端口与启动参数--server-port保持一致api_key为任意非空占位字符串即可model字段可从client.models.list()动态获取避免硬编码请求中的messages内容即补全提示词——由于服务端模板capability为completion该内容会被原样透传给模型不追加任何对话标记。量化原文档的 Quantization 一节标注为 TBD待补充。结合仓库现状可以确认CodeLlama 已纳入 LMDeploy 的量化测试范围——上述 autotest 配置中quantization.turbomind列出了awq即 7B 两个风味均已覆盖 AWQ 权重量化的功能验证见 autotest/configs/codellama/CodeLlama-7b-hf.yml 与 autotest/configs/codellama/CodeLlama-7b-Instruct-hf.yml。W4A16 AWQ 量化的具体操作流程可参考 docs/en/quantization/w4a16.md量化后的模型同样可通过lmdeploy serve api_server部署。小结能力适用模型capability 值提示词处理默认停止词CompletionBase / Instructcompletion原样透传无特殊处理InfillingBase / Instruct7B、13BinfillingFILL拆分为PRE/SUF/MIDEOTChatInstructchatLLaMA2 对话模板[INST]/[/INST]/sPythonPython 微调版python原样透传无特殊处理在 LMDeploy 中CodeLlama 的四种能力本质上是同一套权重配合不同聊天模板的表现capability参数控制get_prompt的提示词构造分支lmdeploy/model.pystop_words控制生成终止条件。无论是 Pipeline 还是 API Server核心都是正确指定model_namecodellama与capability其余解码参数top_k、temperature、top_p、max_new_tokens则根据补全场景的确定性要求灵活调节。赞分享人工智能大模型模型推理服务推理引擎本地部署模型量化【免费下载链接】lmdeployLMDeploy is a toolkit for compressing, deploying, and serving LLMs.项目地址https://gitcode.com/gh_mirrors/lm/lmdeploy点击查看免费下载相关推荐使用 LMDeploy 推理与部署 CodeLlama代码续写、代码填空、对话与 Python 专项实战指南使用 LMDeploy 推理与部署 CodeLlama代码续写、代码填空、对话与 Python 专项实战指南 导读 CodeLlama 是面向代码场景的 Ll人工智能大模型模型推理服务推理引擎本地部署模型量化动态代码插桩技术llvm-tutor DynamicCallCounter深度解析动态代码插桩技术llvm tutor DynamicCallCounter深度解析 llvm tutor是一个面向教学和学习的LLVM插件集合其中DynamDolphinScheduler部署指南四种部署方式详解DolphinScheduler部署指南四种部署方式详解 本文详细介绍了Apache DolphinScheduler的四种部署方式Standalone模式任务调度大数据后端前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
