0x00 整体介绍
基于 triton 部署 qwen ,使用triton镜像中的 vllm 执行推理请求。
假设本地工作目录 /home/ubuntu/models, 用于最终映射到 triton 实例内部的 /models目录
假设最终可请求的url 示例: http://10.1.1.10:8000/v2/models/qwen-7b/infer
上述url 中的 qwen-7b, 就对应 models路径下的 qwen-7b目录
但真正的大模型数据是保存在 qwen-7b/1/ 这个目录下
- /home/ubuntu/models/qwen-7b/1
另外需要手动配置两个文件:
- /home/ubuntu/models/qwen-7b/config.pbtxt
主要负责定义对外的交互参数定义以及GPU设置 - /home/ubuntu/models/qwen-7b/1/model.py
定义大模型调用
0x01 下载模型和镜像
1.第一准备模型文件
下载来源: https://modelscope.cn/models/Qwen/Qwen-7B-Chat
官方提供了几种方案,实测采用 pip modelscope 指令下载还是比较快的
# 安装ModelScope
pip3 install modelscope
# 下载整个库到默认位置 ~/.cache/modelscope
modelscope download --model Qwen/Qwen-7B-Chat
# 下载整个库到指定
modelscope download --model Qwen/Qwen-7B-Chat --local_dir ./qwen-7b
# 下载单文件到指定目录
modelscope download --model Qwen/Qwen-7B-Chat README.md --local_dir ./dir
真正执行代码如下:
mkdir -p /home/ubuntu/models/qwen-7b
cd /home/ubuntu/models/qwen-7b
modelscope download --model Qwen/Qwen-7B-Chat --local_dir ./1
2. triton镜像下载
参考: https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tritonserver/tags
计划在 triton 中使用vllm ,所以选择下面的版本:
docker pull nvcr.io/nvidia/tritonserver:25.07-vllm-python-py3
0x02 配置文件
第一准备文件:
cd /home/ubuntu/models/qwen-7b
touch config.pbtxt
mkdir 1
cd 1
touch model.py
编辑文件 config.pbtxt
name: "qwen-7b"
backend: "python"
max_batch_size: 1
input [
{
name: "prompt"
data_type: TYPE_STRING
dims: [1]
}
]
output [
{
name: "output_text"
data_type: TYPE_STRING
dims: [1]
}
]
instance_group [
{
kind: KIND_GPU
count: 1
}
]
编辑文件 1/model.py
import numpy as np
import triton_python_backend_utils as pb_utils
from vllm import LLM, SamplingParams
class TritonPythonModel:
def initialize(self, args):
model_dir = "/models/qwen-7b/1"
self.llm = LLM(
model=model_dir,
tensor_parallel_size=1,
trust_remote_code=True
)
self.sampling_params = SamplingParams(
temperature=0.7,
top_p=0.9,
max_tokens=512
)
def execute(self, requests):
responses = []
for request in requests:
# 1. 获取输入
prompt_tensor = pb_utils.get_input_tensor_by_name(request, "prompt")
prompt = prompt_tensor.as_numpy()[0].item().decode("utf-8")
# 2. 调用 vLLM 生成
outputs = self.llm.generate([prompt], self.sampling_params)
text_out = outputs[0].outputs[0].text
# 3. 封装输出为 numpy array
out_array = np.array([text_out.encode("utf-8")], dtype=object)
out_tensor = pb_utils.Tensor("output_text", out_array)
responses.append(pb_utils.InferenceResponse(output_tensors=[out_tensor]))
return responses
0x03 启动Docker实例
docker run --gpus all -itd -p 8000-8002:8000-8002
--name ai_triton
-v /home/ubuntu/models:/models
nvcr.io/nvidia/tritonserver:25.07-vllm-python-py3
tritonserver --model-repository=/models --log-verbose=1
0x04 请求验证
curl --request POST
--url http://10.1.1.10:8000/v2/models/qwen-7b/infer
--header Content-Type: application/json
--header User-Agent: insomnia/11.4.0
--data {
"inputs": [
{
"name": "prompt",
"shape": [1,1],
"datatype": "BYTES",
"data": ["你好,请介绍一下你自己"]
}
]
}
结果如图:

© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...


