self-llm 如何用 vLLM 部署 Kimi-K2.5 并调用 OpenAI 兼容接口
2026/9/13 20:04:45 网站建设 项目流程

self-llm 如何用 vLLM 部署 Kimi-K2.5 并调用 OpenAI 兼容接口

【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型(LLM)/多模态大模型(MLLM)教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm

在《开源大模型食用指南》(self-llm) 的 Kimi-K2.5 教程中,部署目标是:用 vLLM 把moonshotai/Kimi-K2.5加载为本地推理服务,并在http://localhost:8000上暴露兼容OpenAI API协议的接口(模型列表、completionschat completions),之后就可以用curl或 OpenAI Python SDK 发起请求。教程给出的基础环境为 Ubuntu 22.04、Python 3.12、CUDA 12.8、PyTorch 2.8.0,并默认学习者已配好 PyTorch (CUDA) 环境,未配置需先自行安装。

准备环境

先升级 pip、换源并安装modelscopevllm

python -m pip install --upgrade pip pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install modelscope pip install vllm

注意pip config set这一条会持久修改本机全局 pip 索引配置(改为清华源),用于加速依赖下载,不需要该来源的机器上执行前请知悉。如果本地环境配置遇到困难,文档中提到项目团队在 AutoDL 平台准备了 Kimi-2.5 的环境镜像(datawhalechina/self-llm/KIMI-2.5-vllm),按源文档中的入口直接创建示例即可,此处不再给出外部链接。

下载 Kimi-K2.5 模型

模型通过 ModelScope 的snapshot_download下载。新建model_download.py并写入:

from modelscope import snapshot_download model_dir = snapshot_download('moonshotai/Kimi-K2.5', cache_dir='/root/autodl-tmp', revision='master')

然后在终端执行python model_download.py,等待下载完成。文档明确要求把cache_dir修改为你自己的模型下载路径。

需要说明:源文档中下载脚本的示例路径是/root/autodl-tmp,而后续服务启动命令使用的路径是/root/autodl-fs/moonshotai/Kimi-K2.5,两处并不相同。后文所有命令与代码沿用了文档中的路径,实际使用时请统一替换为你自己的模型目录。

启动 vLLM 的 OpenAI 兼容服务

KiMi-2.5 兼容 OpenAI API 协议,可直接用 vLLM 创建 API 服务器。文档给出的启动命令:

VLLM_USE_MODELSCOPE=true vllm serve /root/autodl-fs/moonshotai/Kimi-K2.5 -tp 8 --max_model_len 8192 --trust-remote-code --tool-call-parser kimi_k2 --reasoning-parser kimi_k2

命令中的要素:

  • 模型参数后面的路径(示例为/root/autodl-fs/moonshotai/Kimi-K2.5):本地模型路径,替换为你实际下载的位置;
  • -tp 8:张量并行规模,与文档离线推理脚本中tensor_parallel_size=8的用法对应;
  • --max_model_len 8192:模型可处理的最大输入输出长度之和,文档将其列为创建服务器时可指定的参数之一(对应--max-model-len);
  • --trust-remote-code:允许加载模型仓库中的自定义代码;
  • --tool-call-parser kimi_k2:启用 Kimi 的工具调用解析,是后文工具调用示例能工作的前提;
  • --reasoning-parser kimi_k2:指定如何解析模型生成的推理内容。文档说明设置推理解析参数时该配置是必需的,开启后响应会包含reasoning_content字段;
  • 环境变量VLLM_USE_MODELSCOPE=true:让 vLLM 走 ModelScope 而非 HuggingFace 拉取资源。

文档同时列出创建服务器时还可指定的参数:--host--port指定地址、--model指定模型名称、--chat-template指定聊天模板、--served-model-name指定服务模型名称、--enable-reasoning开启思考模式。

服务默认在http://localhost:8000启动,一次托管一个模型。模型加载完毕后,终端出现服务成功启动的信息即表示部署完成(下图为文档中的启动截图示例):

验证 OpenAI 兼容接口

查看模型列表

curl http://localhost:8000/v1/models

文档示例返回(节选,permission数组已省略):

{ "object": "list", "data": [ { "id": "/root/autodl-fs/moonshotai/Kimi-K2.5", "object": "model", "created": 1770228068, "owned_by": "vllm", "root": "/root/autodl-fs/moonshotai/Kimi-K2.5", "max_model_len": 8192 } ] }

列表中能看到以模型路径命名的模型条目,max_model_len与启动参数一致,说明服务已按预期加载模型。

测试 completions 接口

curl http://localhost:8000/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "/root/autodl-fs/moonshotai/Kimi-K2.5", "prompt": "我想问你,什么是深度学习算法?\n", "max_tokens": 1024, "temperature": 0 }'

文档示例的返回是一个 JSON 对象:choices[0].text为模型生成的正文(示例中是关于深度学习算法的 Markdown 回答),finish_reasonstopusage字段给出prompt_tokenscompletion_tokenstotal_tokens统计(文档示例值为 9 / 343 / 352,仅示例)。

用 OpenAI SDK 调用 Chat Completions

新建 Python 脚本(文档中运行文件名为vllm_openai_chat_completions.py):

from openai import OpenAI openai_api_key = "sk-xxx" # 随便填写,只是为了通过接口参数校验 openai_api_base = "http://localhost:8000/v1" client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) chat_outputs = client.chat.completions.create( model="/root/autodl-fs/moonshotai/Kimi-K2.5", messages=[ {"role": "user", "content": "什么是大模型?"}, ] ) print(chat_outputs)
python vllm_openai_chat_completions.py

文档示例返回ChatCompletion对象,其中message.content是最终答案,reasoningreasoning_content)字段是思考模式下的推理内容,usage给出 token 统计。注意model参数要与/v1/models返回的id一致,即你的实际模型路径。

以上所有请求处理过程中,API 后端都会打印对应的日志和统计信息(下图为文档示例):

使用工具调用(可选)

由于服务启动时带--tool-call-parser kimi_k2,接口支持 tools 参数。源文档提供了完整示例脚本,思路是:在客户端定义addmulcomparecount_letter_in_string四个 Python 函数及对应的tools定义,第一次chat.completions.create让模型返回tool_calls,本地执行函数并把结果以role: "tool"追加回messages,第二次请求拿到最终答案。文档示例的两次测试问题为“strawberry 中有多少个 r”和“9.11 和 9.9 哪个小”,示例输出为:

在字符串"strawberry"中,字母'r'出现了3次。 9.11比9.9小。

完整代码见 02-Kimi-2.5-vLLM 部署调用,示例脚本中eval执行模型返回的参数,仅建议在自己可控的本地环境用于演示。

限制与说明

  • 文档示例的启动命令使用-tp 8,即按多卡张量并行配置,单卡或不同卡数的机器需要自行调整该参数(文档未给出其他卡数配置)。
  • 服务默认监听http://localhost:8000,文档未给出对外网开放端口的操作;如需远程调用,先自行处理网络访问。
  • 离线推理(不经过 API 服务)的验证方式,文档中用LLM类 +apply_chat_template的脚本演示过,模型响应由 `\think... </输出文章>

<输出文章>

self-llm 如何用 vLLM 部署 Kimi-K2.5 并调用 OpenAI 兼容接口

在《开源大模型食用指南》(self-llm) 的 Kimi-K2.5 教程中,要完成的任务是:用 vLLM 把moonshotai/Kimi-K2.5加载为本地推理服务,暴露兼容OpenAI API协议的接口(模型列表、completionschat completions),然后用curl或 OpenAI Python SDK 发起请求。教程给出的基础环境为 Ubuntu 22.04、Python 3.12、CUDA 12.8、PyTorch 2.8.0,并默认学习者已配好 PyTorch (CUDA) 环境,未配置需先自行安装。

准备环境

先升级 pip、换源并安装modelscopevllm

python -m pip install --upgrade pip pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install modelscope pip install vllm

其中pip config set会持久修改本机全局 pip 索引配置(指向清华源)以加速依赖下载,执行前知悉这一副作用即可。如果本地环境配置遇到问题,文档提到项目在 AutoDL 平台准备了 Kimi-2.5 的环境镜像(datawhalechina/self-llm/KIMI-2.5-vllm),可按源文档中的入口直接创建示例使用。

下载 Kimi-K2.5 模型

模型通过 ModelScope 的snapshot_download下载,第一个参数为模型名称,cache_dir为下载路径。新建model_download.py

from modelscope import snapshot_download model_dir = snapshot_download('moonshotai/Kimi-K2.5', cache_dir='/root/autodl-tmp', revision='master')

在终端执行python model_download.py,耐心等待下载完成。文档明确要求把cache_dir修改为你自己的模型下载路径。

需要说明:源文档中下载脚本示例用的路径是/root/autodl-tmp,而服务启动命令使用的路径是/root/autodl-fs/moonshotai/Kimi-K2.5,两处并不相同。后文所有命令与代码沿用文档原值,实际使用时请统一替换为你实际下载后的模型目录。

启动 vLLM 的 OpenAI 兼容服务

Kimi-2.5 兼容 OpenAI API 协议,可直接用 vLLM 创建 OpenAI API 服务器。文档给出的启动命令:

VLLM_USE_MODELSCOPE=true vllm serve /root/autodl-fs/moonshotai/Kimi-K2.5 -tp 8 --max_model_len 8192 --trust-remote-code --tool-call-parser kimi_k2 --reasoning-parser kimi_k2

命令要素说明:

  • 紧跟vllm serve的路径(示例/root/autodl-fs/moonshotai/Kimi-K2.5):本地模型路径,替换为你实际下载的位置;
  • -tp 8:张量并行规模,与文档离线推理脚本中tensor_parallel_size=8的用法对应;
  • --max_model_len 8192:模型可处理的最大输入输出长度之和;
  • --trust-remote-code:允许加载模型仓库中的自定义代码;
  • --tool-call-parser kimi_k2:启用 Kimi 的工具调用解析,是后文工具调用示例能工作的前提;
  • --reasoning-parser kimi_k2:指定如何解析模型生成的推理内容。文档说明开启思考模式(--enable-reasoning)时该参数是必需的,推理模型会在输出中包含reasoning_content字段;
  • 环境变量VLLM_USE_MODELSCOPE=true:让 vLLM 走 ModelScope 而非 HuggingFace 拉取资源。

文档同时列出创建服务器时还可指定的参数:--host--port指定地址、--model指定模型名称、--chat-template指定聊天模板、--served-model-name指定服务模型名称、--enable-reasoning开启思考模式。

服务默认在http://localhost:8000启动,一次托管一个模型。模型加载完毕后,终端出现服务成功启动的信息即表示部署完成(下图为文档中的启动成功截图):

验证 OpenAI 兼容接口

查看模型列表

curl http://localhost:8000/v1/models

文档示例返回(节选,permission数组已省略):

{ "object": "list", "data": [ { "id": "/root/autodl-fs/moonshotai/Kimi-K2.5", "object": "model", "created": 1770228068, "owned_by": "vllm", "root": "/root/autodl-fs/moonshotai/Kimi-K2.5", "max_model_len": 8192 } ] }

列表中能看到以模型路径命名的模型条目,max_model_len与启动参数一致,说明服务已按预期加载模型。

测试 completions 接口

curl http://localhost:8000/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "/root/autodl-fs/moonshotai/Kimi-K2.5", "prompt": "我想问你,什么是深度学习算法?\n", "max_tokens": 1024, "temperature": 0 }'

文档示例的返回是 JSON 对象:choices[0].text为模型生成的正文(示例中是关于深度学习算法的 Markdown 回答),finish_reasonstopusage字段给出prompt_tokenscompletion_tokenstotal_tokens统计(文档示例值为 9 / 343 / 352,仅为示例输出)。

用 OpenAI SDK 调用 Chat Completions

新建 Python 脚本(文档中运行文件名为vllm_openai_chat_completions.py):

from openai import OpenAI openai_api_key = "sk-xxx" # 随便填写,只是为了通过接口参数校验 openai_api_base = "http://localhost:8000/v1" client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) chat_outputs = client.chat.completions.create( model="/root/autodl-fs/moonshotai/Kimi-K2.5", messages=[ {"role": "user", "content": "什么是大模型?"}, ] ) print(chat_outputs)
python vllm_openai_chat_completions.py

文档示例返回ChatCompletion对象,其中message.content是最终答案,reasoningreasoning_content)字段是思考模式下的推理内容,usage给出 token 统计。注意model参数要与/v1/models返回的id一致,即你的实际模型路径。

以上所有请求处理过程中,API 后端都会打印对应的日志和统计信息(下图为文档示例):

使用工具调用(可选)

由于服务启动时带--tool-call-parser kimi_k2,接口支持tools参数。源文档提供了完整示例脚本:在客户端定义addmulcomparecount_letter_in_string四个函数及对应的tools定义,第一次chat.completions.create让模型返回tool_calls,本地执行函数并把结果以role: "tool"追加回messages,第二次请求拿到最终答案。文档示例的两个测试问题为“strawberry 中有多少个 r”和“9.11 和 9.9 哪个小”,示例输出为:

在字符串"strawberry"中,字母'r'出现了3次。 9.11比9.9小。

完整代码见 02-Kimi-2.5-vLLM 部署调用。该示例中用eval执行模型返回的函数参数,只建议在自己可控的本地环境用于演示。

限制与说明

  • 文档示例的启动命令使用-tp 8,按多卡张量并行配置;不同卡数的机器需要调整该参数(文档未给出其他卡数的配置)。
  • 服务默认监听http://localhost:8000,文档未涉及对外网开放端口的操作,远程调用需自行处理网络访问。
  • 若不走 API 服务而做离线推理,源文档用LLM类 +apply_chat_template的脚本演示过,响应由\think\endthink包裹的思考过程和最终答案两部分组成,思考模式官方建议参数为temperature=0.6TopP=0.95TopK=20MinP=0,可按需查阅源文档。

【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型(LLM)/多模态大模型(MLLM)教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询