本地部署API交付说明

基本信息

模型名称:

模型存放目录:

推理虚拟环境:

推理引擎: vLLM 0.7.3

API服务端口: 8000

服务器IP:

推理服务部署详情

推理服务基于vLLM引擎启动,具体启动命令如下:

vllm serve /model/deepseek/DeepSeek-671b-R1 \

--tensor-parallel-size 8 \

--gpu-memory-utilization 0.98 \

--max-model-len 3072 \

--max-num-batched-tokens 4096 \

--max-num-seqs 16 \

--port 8000 \

--swap-space 100 \

--enforce-eager

参数说明

--tensor-parallel-size 8: 使用8个GPU进行张量并行计算。

--gpu-memory-utilization 0.98: GPU内存利用率设置为98%。

--max-model-len 3072: 模型最大输入长度为3072个token。

--max-num-batched-tokens 4096: 批处理最大token数为4096。

--max-num-seqs 16: 最大并发序列数为16。

--port 8000: API服务运行在8000端口。

--swap-space 100: 设置100GB的交换空间。

--enforce-eager: 强制使用eager模式运行。

服务访问

API地址:

健康检查端点:

API使用说明

端点URL: http://ip/v1/completions

方法: POST

描述: 用于生成基于输入提示的文本内容。

请求格式:Content-Type: application/json

请求体示例:

Json

{

\"prompt\": \"你好,世界\",

\"max_tokens\": 50,

\"temperature\": 0.7,

\"top_p\": 0.9

}

请求参数说明


参数名 类型 是否必填 默认值 描述


prompt string 是 无 输入的提示文本

max_tokens int 否 256 生成文本的最大token数,最大3072

temperature float 否 1.0 控制生成文本的随机性,范围0-2

top_p float 否 1.0 核采样概率,范围0-1

响应格式

状态码: 200 (成功), 400 (请求错误), 500 (服务器错误)

响应体示例:

json

{

\"choices\": [

{

\"text\": \"Hello, World! 这是一个测试响应。\",

\"index\": 0,

\"finish_reason\": \"length\"

}

],

\"usage\": {

\"prompt_tokens\": 4,

\"completion_tokens\": 12,

\"total_tokens\": 16

},

\"status\": \"success\"

}

响应参数说明


参数名 类型 描述


choices array 生成的文本选项数组

choices.text string 生成的文本内容

choices.index int 选项索引,通常为0

choices.finish_reason string 结束原因(length或stop)

usage object token使用统计

usage.prompt_tokens int 提示词token数

usage.completion_tokens int 生成文本token数

usage.total_tokens int 总token数

status string 请求状态(success或error)

示例请求

使用curl调用API:

bash

curl -X POST http://ip/v1/completions \

-H \"Content-Type: application/json\" \

-d \'{\"model\": \"DeepSeek-671b-R1\", \"prompt\": \"你好\", \"max_tokens\": 50, \"temperature\": 0.7}\'

示例响应

json

{

\"choices\": [

{

\"text\": \"Hello, World! 这是一个测试响应。\",

\"index\": 0,

\"finish_reason\": \"length\"

}

],

\"usage\": {

\"prompt_tokens\": 4,

\"completion_tokens\": 12,

\"total_tokens\": 16

},

\"status\": \"success\"

}

注意事项

输入的prompt长度加上max_tokens不得超过3072(由--max-model-len限制)。

如果请求超载(超过max-num-seqs 16),可能返回503状态码,需稍后重试。

未提供参数时,使用默认值。

测试环境

测试虚拟环境: /home/demo_env/

已安装测试工具:

wrk: 高性能HTTP基准测试工具

post: 用于发送HTTP POST请求的工具

streamlit: 用于构建交互式Web应用的Python库

测试工具安装验证

在测试虚拟环境(/home/demo_env/)中运行以下命令,验证工具是否正确安装:

bash

source /home/demo_env/bin/activate

wrk --version

post --version # 如果是特定的post工具,替换为相应命令

streamlit --version

测试方法

1. 功能测试

目标: 验证API是否能够正常接收请求并返回推理结果。

测试工具

post 或 curl

测试步骤

激活测试虚拟环境:

bash

source /home/demo_env/bin/activate

发送POST请求到API:

bash

curl -X POST http://ip/v1/completions \

-H \"Content-Type: application/json\" \

-d \'{\"model\": \"/model/deepseek/DeepSeek-671b-R1\", \"prompt\": \"你好\", \"max_tokens\": 50}\'

预期结果

返回状态码:200

返回内容包含生成的文本,例如:

json

{

\"choices\": [{\"text\": \"Hello, World! ...\"}],

\"status\": \"success\"

}

性能测试

目标: 测试API在高并发场景下的性能表现。

测试工具

wrk

测试步骤

激活测试虚拟环境:

bash

source /home/demo_env/bin/activate

运行wrk进行压力测试:

bash

wrk -t10 -c100 -d30s -s script.lua http://ip/v1/completions

示例script.lua内容:

lua

wrk.method = \"POST\"

wrk.body = \'{\"prompt\": \"测试性能\", \"max_tokens\": 50}\'

wrk.headers[\"Content-Type\"] = \"application/json\"

预期结果

输出报告包含请求总数、RPS、平均延迟、错误率(接近0%)。

3. 可视化测试(可选)

目标: 通过Streamlit验证API可用性。

测试步骤

创建app.py:

python

import streamlit as st

import requests

st.title(\"DeepSeek API 测试\")

prompt = st.text_input(\"输入提示词\", \"你好\")

if st.button(\"生成\"):

response = requests.post(

\"http://ip/v1/completions",

json={\"prompt\": prompt, \"max_tokens\": 50}

)

st.write(response.json()[\"choices\"][0][\"text\"])

运行:

bash

streamlit run app.py

访问http://ip:8501。

预期结果

输入提示词后,显示API返回的文本。

注意事项

确保推理服务运行在/home/oem/dsinfer环境中。

测试时使用ip:8000。

根据实际API端点调整URL(如/v1/completions)。

如需认证,添加相应头信息。

交付验收标准

API服务监听

功能测试返回正确结果。

性能测试达到预期指标。

可视化测试界面正常运行。