当前位置: 首页 > news >正文

tensorrt-llm0.20.0离线部署DeepSeek-R1-Distill-Qwen-32B

一、运行环境:

4张英伟达A6000

操作系统:Ubuntu 22.04.5 LTS

二、安装

2.1下载docker容器

docker pull nvcr.io/nvidia/tensorrt-llm/release

2.2运行容器

docker run   --gpus all -dit --name trtllm -p 9500:8000  -v /mnt/data/models:/workspace/models --shm-size=64G --ulimit stack=-1:-1 --ulimit memlock=-1:-1 --privileged --cap-add=ALL  --security-opt seccomp=unconfined  nvcr.io/nvidia/tensorrt-llm/release

2.3测试TensorRT-LLM

python -c "import tensorrt_llm; print(tensorrt_llm.__version__)"

显示如下内容表示正常:

2025-08-11 09:30:59,334 - INFO - flashinfer.jit: Prebuilt kernels not found, using JIT backend

[TensorRT-LLM] TensorRT-LLM version: 0.20.0

0.20.0

2.4测试cuda是否可用

python -c "import torch; print(torch.cuda.is_available())"

三、格式转换及生成TensorRT LLM引擎

3.1将HF权重转换为TensorRT LLM检查点(4张卡)

#cd /app/tensorrt_llm/examples/models/core/qwen

python convert_checkpoint.py --model_dir /workspace/models/DeepSeek-R1-Distill-Qwen-32B \

                              --output_dir /workspace/models/tllm_checkpoint_4gpu_fp16_32B \

                              --dtype float16 \

                              --tp_size 4

生成的内容如下:

DeepSeek-R1-Distill-Qwen-32B:从DeepSeek-R1-Distill-Qwen-32B下载

3.2构建TensorRT LLM引擎

从TensorRT LLM检查点构建TensorRT LLM引擎。引擎文件的数量也与用于运行推理的GPU数量相同。

trtllm-build --checkpoint_dir /workspace/models/tllm_checkpoint_4gpu_fp16_32B \

            --output_dir /workspace/models/trt_engines/fp16/32B-4-gpu/ \

            --gemm_plugin float16 \

--max_input_len 16000

大概26分钟就生成完成。

gemm_plugin包含:{auto,float16,float32,bfloat16,int32,fp8,nvfp4,disable}

max_input_len:默认为1024,长文本序列,增加到16000(文本转sql、数据分析报告的文本长度比较多)

生成的内容如下图:

四、发布成推理服务

4.1推理服务

#!/usr/bin/env bash

# =============== 配置区 ===============
model_dir="/workspace/models/trt_engines/fp16/32B-4-gpu/"

tokenizer_dir="/workspace/models/DeepSeek-R1-Distill-Qwen-32B"

LOG_FILE="/workspace/models/logs/trtllm_server.log"
PID_FILE="/workspace/models/logs/trtllm_server.pid"

# 创建日志目录
mkdir -p "$(dirname "$LOG_FILE")"

# =============== 检查依赖 ===============
if [ ! -d "$model_dir" ]; then
    echo "错误: 模型目录不存在: $model_dir" >&2
    exit 1
fi

# 检查是否已运行
if [ -f "$PID_FILE" ]; then
    if kill -0 $(cat "$PID_FILE") 2>/dev/null; then
        echo "服务已在运行,PID: $(cat $PID_FILE)"
        exit 1
    else
        echo "发现旧的PID文件,但进程未运行,已清理。"
        rm -f "$PID_FILE"
    fi
fi

# =============== 构建命令 ===============
cmd=(
    trtllm-serve serve
    "$model_dir"
    --tokenizer "$tokenizer_dir"
    --host 0.0.0.0
    --port 8000
    --tp_size 4
    --kv_cache_free_gpu_memory_fraction 0.5
    --max_seq_len 16384
    --max_num_tokens 8192
    --trust_remote_code
    --chat_template "/workspace/models/llama70_nonthinking.jinja"
)

# =============== 启动后台服务 ===============
echo "启动 TensorRT-LLM 服务..."
echo "日志路径:tail -f  $LOG_FILE"

# 使用 nohup 后台运行,输出重定向到日志文件
nohup "${cmd[@]}" >"$LOG_FILE" 2>&1 &

# 保存进程 PID
echo $! > "$PID_FILE"

echo "服务已启动,PID: $!"
echo "日志已重定向到: $LOG_FILE"
 

4.2请求

curl -X 'POST' \'http://172.26.142.154:9500/v1/chat/completions' \-H 'accept: application/json' \-H 'Content-Type: application/json' \-d '{"messages": [{"content": "角色:交通管理局公文大纲标题专家\n技能:精通政策法规解读、公文逻辑架构及标题凝练,能根据会议主题和发言人身份设计专业标题\n\n核心约束:\n1. 仅生成从“一、”开始的标题,最多5项,按发言流程排序\n2. 标题禁止使用逗号、引号、句号、开场/结束语等无效字段\n3. 禁止虚构内容、禁止重复表述、禁止输出相同或语义相近的标题\n4. 输出内容仅为纯标题列表,每项换行分隔,不附加任何说明、注释或重复段落\n5. 总字数不超过100字,确保简洁凝练\n6. 一旦生成,不得重复输出相同内容块\n\n输入参数:\n- 发言人:交通事故张处长\n- 主题:2025年国庆交通安全保障电话会议","role": "user"}],"model": "32B-4-gpu","max_tokens": 100,"stream": false,
"temperature": 0.3,
"top_p": 0.9,
"stop": ["\n\n", "发言人身份", "角色:"]
}'

返回结果

http://www.lryc.cn/news/619218.html

相关文章:

  • Apache POI中通过WorkBook写入图片后出现导出PDF文件时在不同页重复写入该图片问题,如何在通过sheet获取绘图对象清除该图片
  • 2787. 将一个数字表示成幂的和的方案数
  • 万物平台模型导入样例大全(实时更新中~)
  • 力扣面试150题--爬楼梯 打家劫舍 零钱兑换 最长递增子序列
  • 10. React组件间的通信
  • 某跨国金融机构法律法规自动文本摘要(ATS/文本大意提取)功能规划
  • Ansible 基础到实操笔记
  • scikit-learn/sklearn学习|岭回归python代码解读
  • 鸿蒙开发资源导航与学习建议
  • 计算机网络2-2:物理层下面的传输媒体
  • 第23章,景深:技术综述
  • 【Python办公】Mermaid代码转图片工具 - Tkinter GUI版本
  • Apache虚拟主机三种配置实战
  • 运维学习Day22——Anisible自动化与基本使用
  • JavaEE 初阶第十八期:叩开网络世界的大门
  • 随身WIFI每个月需要交钱吗?流量卡还是随身WIFI哪个更好用?正规随身WIFI品牌有哪些?谁才是真性价比之王?
  • 当“超级高速“遇见“智能大脑“:5G-A×AI如何重塑万物智联时代
  • Linux文件系统:从虚拟接口到物理实现的架构解析
  • 存储过程作为系统逻辑核心的架构思考 —— 以 SaaS 系统为例
  • 【ROS2】ROS2 基础学习教程 以lerobot-so100为例
  • 【前端:Html】--3.进阶:图形
  • 基于RAII的智能指针原理和模拟实现智能指针
  • Python函数篇:从零到精通
  • 能刷java题的网站
  • C语言—数组和指针练习题合集(二)
  • [激光原理与应用-256]:理论 - 几何光学 - CMOS与CCD传感器成像原理比较
  • 安卓主题定制实践:17.45MB轻量级主题引擎技术解析
  • python --- 基础语法(1)
  • 为什么我换了项目管理软件?
  • 简单的双向循环链表实现与使用指南