-
vllm 0.7.3:这是 vllm 库的一个特定版本号。就像软件会有不同的版本一样,每个版本可能会有一些新的功能或者对之前版本的改进。这里说的是之前测试用的 vllm 库版本是 0.7.3。
-
eager mode:在深度学习框架里,eager mode(即时模式)是一种执行计算的方式。在这种模式下,代码会按照你编写的顺序立即执行计算,就像你写一行代码,它马上就执行一步,比较直观,方便调试。但这种方式可能在处理大规模计算时效率不是特别高。
-
compile mode(编译模式):和 eager mode 不同,编译模式会先将你的代码进行编译优化,然后再执行计算。这样做的好处是在处理大规模计算时效率更高,因为编译器可以对代码进行一些优化,减少不必要的计算步骤,就像提前规划好路线一样,让计算过程更加高效。但编译模式可能没有即时模式那么直观,调试起来可能会稍微复杂一些。
- “使用环境变量 VLLM_USE_V1”
环境变量是在操作系统中设置的一些变量,程序可以通过读取这些变量来获取一些配置信息。VLLM_USE_V1 就是一个专门为 vllm 库设置的环境变量。当你设置这个环境变量时,就相当于告诉 vllm 库你要使用 v1 compile mode 进行测试。不同的环境变量值可以让程序以不同的模式运行,就像开关一样,通过设置不同的值来控制程序的行为。
操作建议
如果你想进行 v1 compile mode 的测试,你需要先设置环境变量 VLLM_USE_V1。在不同的操作系统中,设置环境变量的方法不一样:
在 Linux 或 macOS 系统中
你可以在终端中使用以下命令设置环境变量并运行测试脚本(假设你的测试脚本是 test.py):
export VLLM_USE_V1=1
python test.py
在 Windows 系统中
在命令提示符中可以使用以下命令:
set VLLM_USE_V1=1
python test.py
或者在 PowerShell 中使用:
$env:VLLM_USE_V1 = "1"
python test.py
不过在进行这些操作之前,建议你先查看 vllm 库的官方文档
https://docs.vllm.ai/en/latest/serving/engine_args.html
- 在启动容器时,–shm-size=1g 是一个 Docker 或类似容器运行时的参数,用于设置 共享内存(Shared Memory, shm) 的大小。
1. 什么是共享内存(Shared Memory, shm)?
共享内存是 Linux 系统中一种进程间通信(IPC)机制,允许多个进程共享同一块内存区域,以提高数据交换效率。
在容器环境中,共享内存主要用于:
GPU 计算(如 PyTorch、TensorFlow 等深度学习框架)
高性能数据库(如 Redis、MongoDB)
多进程通信(如 Python 的 multiprocessing)
如果共享内存不足,可能会导致:
CUDA 错误(如 CUDA error: out of memory)
数据库崩溃(如 Redis 报 OOM command not allowed)
程序异常退出(如 Python 报 Bus error 或 Segmentation fault)
2. --shm-size=1g 的作用
–shm-size=1g 表示将容器的共享内存限制为 1GB。
如果你的应用(如大模型推理、深度学习训练)需要更多共享内存,可以调大这个值,比如 --shm-size=2g 或 --shm-size=4g。
如果设置过大,可能会占用过多宿主机内存,导致系统不稳定。
3. 如何正确设置 --shm-size?
(1)默认值
Docker 的默认共享内存大小通常是 64MB(太小,不适合深度学习任务)。
某些容器(如 nvcr.io/nvidia/pytorch:xxx)可能会自动调整 shm-size,但仍建议手动设置。
(2)推荐值
场景 推荐 --shm-size
小型模型推理 --shm-size=1g
中大型模型推理 --shm-size=2g 或 4g
深度学习训练 --shm-size=8g(视 GPU 显存而定)
(3)示例
# 启动容器,并设置共享内存为 2GB
docker run --shm-size=2g -it your_image_name
4. 常见问题
Q1: 如果 shm-size 太小会怎样?
可能出现 CUDA OOM(Out of Memory) 错误。
深度学习框架(如 PyTorch)可能会报错
Q2: 如何查看当前容器的 shm-size?
进入容器后运行:
df -h /dev/shm
输出示例:
Filesystem Size Used Avail Use% Mounted on
tmpfs 1G 0 1G 0% /dev/shm
这里 1G 就是当前共享内存大小。
Q3: 能否动态调整 shm-size?
不行,shm-size 必须在容器启动时设置。如果运行后发现不够,只能 停止并重新启动容器,调整 --shm-size。
5. 结合 vLLM 使用
如果你在使用 vLLM 进行大模型推理,建议:
docker run --shm-size=4g -it your_vllm_image
因为 vLLM 在编译模式(compile mode)下可能会占用较多共享内存。
总结
shm-size=1g 是设置共享内存为 1GB,适用于大多数情况,但深度学习任务可能需要更大值(如 2g 或 4g)。
如果遇到 CUDA OOM 或数据库崩溃,优先检查 shm-size 是否足够。
启动容器时设置,运行后无法修改。