基本信息
模型名称:
模型存放目录:
推理虚拟环境:
推理引擎: 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服务监听
功能测试返回正确结果。
性能测试达到预期指标。
可视化测试界面正常运行。
2393

被折叠的 条评论
为什么被折叠?



