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

大模型部署、nvidia-smi、token数

在docker容器里面使用vllm部署兼容openai的服务器

将vllm的openai服务在容器中启动:

Dockerfile:

由于大模型文件异常大,因此将大模型文件进行挂载,而不是直接复制到容器内。

FROM vllm/vllm-openai:latestWORKDIR /appCMD ["--model", "/app/.", \ "--tensor-parallel-size", "2", \"--port", "8888", \"--served-model-name", "glm-v2", \"--max-model-len", "13312", \"--api-key", "glm_lihai"]

docker-compose.yml:

需要设置shm_size,docker默认的shm_size很小。

docker里面使用gpu,需要安装NVIDIAContainerToolkit驱动。

version: '3.8'services:llm-server:build: .container_name: vllm-openai-server# 映射端口ports:- "8888:8888"shm_size: '4gb'# 挂载模型目录volumes:- ./Models/Qwen3/Qwen3-32B/:/app# 配置 GPU 资源deploy:resources:reservations:devices:- driver: nvidiadevice_ids: ['0', '1'] # 指定使用 GPU 0 和 1capabilities: [gpu]restart: unless-stopped

测试:

curl http://localhost:8888/v1/completions \-H "Content-Type: application/json" \-H "Authorization: Bearer glm_lihai" \-d '{"model": "glm_v2","prompt": "你是谁","max_tokens": 500,"temperature": 0}'

nvidia-smi的GPU利用率

在两块L20上部署14b模型,推理总是占满GPU利用率。

经同学大佬的解答终于明白了:

nvidia-smi所显示的GPU利用率本质上是一个时间占用率指标,它仅反映在过去一秒内GPU是否有计算单元处于工作状态,而非衡量所有计算核心是否满负荷运行。因此,即使该指标达到了100%,也并不意味着GPU的计算能力已被完全榨干,而是表明至少一个SM(Streaming Multiprocessor,流多处理器)在执行任务,其余核心可能仍处于闲置或负载状态。这种特性导致在实际应用中,即便仅占用部分SM,利用率仍可能显示100%。

而在vllm等推理框架中,只要显存充足,GPU往往也可以进一步提升吞吐量。

而且,GPU在处理稀疏张量等任务时,部分计算可能属于无效或填充操作,这些操作会被计入利用率,但当任务量增加后,这些无用计算可转化为有效计算,从而在利用率不变的情况下提升实际性能。

使用白嫖的L20进行测试。

python3 -m venv myvenv
source myvenv/bin/activepip install vllm
pip install modelscope

安装Qwen3-0.6b:

from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen3-0.6B',cache_dir="./model")

model目录下:

vllm serve Qwen/Qwen3-0.6B/

跑下面的curl测试,并查看nvidia-smi。

curl http://localhost:8000/v1/completions \-H "Content-Type: application/json" \-d '{"model": "Qwen/Qwen3-0.6B/","prompt": "你是一个计算机专家,请给出什么时候实现AGI,请逐步给出分析和原因","max_tokens": 500,"temperature": 0}'

最终发现,没有加其他设置,显存拉满,gpu在跑上面的推理时的利用率为百分之七十多。

由此可以确认,与总结一样。

今天一大半时间都在想用nvidia-smi查看的GPU利用率是怎么回事,无论是用大模型还是搜索引擎(国内),都没有找到为什么会这样。直到问了同学才恍然大悟,之后就在搜索引擎中可以搜索到,大模型也可以得到正确的方向。大模型虽然能力很强了,但还是不如有社交属性的人。

max_tokens 和max-model-len 区别

max_tokens是调用大模型时给出的参数,表明大模型要回答最多max_tokens个token,是单次请求的动态参数。

max-madel-len这个是模型上下文窗口的最大长度限制,即模型能处理的最大输入和输出token数量,是模型或服务层的静态配置。

max_tokens影响生成内容的完整性,避免回答中断,max-model-len影响模型的整体处理能力,如长文本任务是否可行。

max-model-lenmax_tokens的上限约束。提示词token + max_tokens < max-model-len。

在调用大模型时,存在系统提示词和用户提示词,一般提示词token是两者的相加,系统提示词和用户提示词的开始和结束以特殊分隔符进行分隔。

感谢同学大佬解答。

GLM-4.5

快速入门 - vLLM 文档

🤔NVIDIA-SMI的GPU利用率真相 (baidu.com)

http://www.dtcms.com/a/315320.html

相关文章:

  • Java项目:基于SSM框架实现的商铺租赁管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告+任务书+远程部署】
  • pytorch 学习笔记3-利用框架内网络训练糖尿病数据集
  • Linux 使用 firewalld :开放端口与常用操作指南
  • Endpoint(端点)详解
  • ROS2机器人编程新书推荐-2025-精通ROS 2机器人编程:使用ROS 2进行复杂机器人的设计、构建、仿真与原型开发(第四版)
  • 16_OpenCV_漫水填充(floodFill)
  • 【web应用】若依框架:基础篇18-二次开发-菜品管理
  • VGMP(VRRP Group Management Protocol)VRRP组管理协议
  • 知识蒸馏 - 基于KL散度的知识蒸馏 HelloWorld 示例 KL散度公式变化
  • Demo-LangGraph构建Agent
  • Assistant API——构建基于大语言模型的智能体应用
  • 通义万相国际版wan2.2开源第6天:主题运动
  • 二值图针对内部轮廓腐蚀膨胀
  • 李宏毅深度学习教程 第10-11章 自监督学习self-supervised learning+自编码器
  • FFmpeg02:常用命令实战
  • 【LeetCode 热题 100】215. 数组中的第K个最大元素——(解法一)快速选择
  • CentOS卸载、安装MySQL8(yum操作)
  • 肾上腺疾病AI诊疗一体化系统应用方向探析
  • 智能图书馆管理系统开发实战系列(七):CMake构建系统与持续集成
  • 【Node.js从 0 到 1:入门实战与项目驱动】1.2 Node.js 的核心优势(非阻塞 I/O、事件驱动、单线程模型)
  • 比起登天,孙宇晨更需要安稳着陆
  • 飞算 JavaAI:为软件安全上锁的智能守护者
  • Antlr学习笔记 02、使用antlr4实现简易版计算器
  • 【Z字形变换】
  • 离线Docker项目移植全攻略
  • 明远智睿T113-i核心板:工业设备制造领域成本控制的破局者
  • NX982NX984美光固态闪存NX992NY102
  • UVa1480/LA5034 Jewel
  • webm 读取解析
  • Linux 系统重置用户密码指南