大模型部署、nvidia-smi、token数
而且,GPU在处理稀疏张量等任务时,部分计算可能属于无效或填充操作,这些操作会被计入利用率,但当任务量增加后,这些无用计算可转化为有效计算,从而在利用率不变的情况下提升实际性能。在调用大模型时,存在系统提示词和用户提示词,一般提示词token是两者的相加,系统提示词和用户提示词的开始和结束以特殊分隔符进行分隔。这个是模型上下文窗口的最大长度限制,即模型能处理的最大输入和输出token数量,是模型或
在docker容器里面使用vllm部署兼容openai的服务器
将vllm的openai服务在容器中启动:
Dockerfile:
由于大模型文件异常大,因此将大模型文件进行挂载,而不是直接复制到容器内。
FROM vllm/vllm-openai:latest
WORKDIR /app
CMD ["--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: nvidia
device_ids: ['0', '1'] # 指定使用 GPU 0 和 1
capabilities: [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/active
pip 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-len是max_tokens的上限约束。提示词token + max_tokens < max-model-len。
在调用大模型时,存在系统提示词和用户提示词,一般提示词token是两者的相加,系统提示词和用户提示词的开始和结束以特殊分隔符进行分隔。
感谢同学大佬解答。
GLM-4.5
更多推荐



所有评论(0)