安装torch+vllm+flash_attn的prompt

torch、vllm、flashattn各种版本对不齐、abi错误;codex跑了4个小时终于给4090装上了,最后让总结成一个经验prompt

bash 复制代码
# 所有需要联网下载的内容必须先配置国内镜像
# ============================================================
# 步骤 1:创建干净的环境
# ============================================================
conda create -n verl_train python=3.11 -y
conda activate verl_train

# ============================================================
# 步骤 2:安装 PyTorch(控制版本,不让 pip 自动拉)
# 关键:用 --no-deps 防止 pip 拉其他 torch 版本覆盖
# torch版本选择:CUDA版本必须和显卡驱动兼容
#   - RTX 3090/4090/A100/H100 等 → 用 cu124(推荐)
#   - 确认方法:nvidia-smi 显示的 CUDA 版本
# ============================================================
pip install torch==2.5.1 torchvision torchaudio \
    --index-url https://download.pytorch.org/whl/cu124 \
    --no-deps

# 验证
python -c "import torch; print(torch.__version__, torch.version.cuda)"

# ============================================================
# 步骤 3:安装 PyTorch 缺失的纯 Python 依赖
# (因为步骤2用了 --no-deps,所以要手动补全)
# ============================================================
pip install nvidia-cuda-runtime-cu124 nvidia-cuda-nvrtc-cu124 \
    nvidia-cuda-cupti-cu124 nvidia-cudnn-cu124 nvidia-cutensor-cu124 \
    nvidia nccl_cu124 cusolver-lapack-dev-cu124 \
    triton filelock networkx sympy jinja2 fsspec

# ============================================================
# 步骤 4:安装 flash-attn(最关键的一步)
# 关键:torch 版本 + CUDA 版本 + ABI 版本 三个必须完全匹配
# ============================================================

# 4a. 先尝试从 PyPI 找预编译 wheel(最快)
#     访问 https://https://flash-attn.github.io/ 查最新可用 wheel
#     或用下面的命令查可安装版本
pip install flash-attn --no-build-isolation --no-cache-dir 2>&1 | head -5

# 4b. 如果上面失败(ABI 不匹配),从源码编译
FLASH_ATTENTION_FORCE_BUILD=TRUE \
MAX_JOBS=4 \
TORCH_CUDA_ARCH_LIST="8.0;8.6;8.9;9.0" \
pip install flash-attn --no-build-isolation --no-cache-dir

# 4c. 如果编译超时/失败,用精确匹配的预编译 wheel
#     去 https://my HuggingFace 下载(需要注册账号):
#     路径:flash-attn → releases → 找对应版本
#     文件名格式:flash_attn-2.x.x+cu12torch2.5torcha2.18-cp311-cp311-linux_x86_64.whl
pip install /path/to/flash_attn-*.whl

# 验证(两个都成功才算过)
python -c "import flash_attn; print('flash_attn:', flash_attn.__version__)"
python -c "from flash_attn import flash_attn_func; print('flash_attn_func OK')"

# ============================================================
# 步骤 5:从源码编译安装 vLLM(链接到现有 torch)
# 关键:用 use_existing_torch.py + --no-build-isolation
# ============================================================
git clone https://github.com/vllm-project/vllm.git
cd vllm
git checkout v0.7.3   # 选一个稳定版本

# 让 vLLM 使用已有的 torch,而不是重新下载
python use_existing_torch.py

# 安装构建依赖
pip install -r requirements/build.txt

# 编译安装(-e 是可编辑模式,方便调试)
pip install --no-build-isolation -e .

cd ..  # 退出 vllm 目录

# 验证
python -c "import vllm; print('vllm:', vllm.__version__)"

# ============================================================
# 步骤 6:安装 verl 和其他训练依赖
# ============================================================
pip install verl

# 训练需要的其他包
pip install transformers huggingface_hub hf_transfer
pip install ray[default] pyarrow pandas

# ============================================================
# 步骤 7:全局锁定 torch 相关包,防止后续 pip upgrade 覆盖
# ============================================================
pip install torch==2.5.1 --no-deps
pip install flash-attn --no-deps   # 锁定不升级

# ============================================================
# 步骤 8:最终验证(全部导入成功才算完成)
# ============================================================
python << 'EOF'
import torch
import flash_attn
import vllm

print(f"torch:       {torch.__version__} ({torch.version.cuda})")
print(f"flash-attn:  {flash_attn.__version__}")
print(f"vllm:        {vllm.__version__}")
print(f"CUDA avail:  {torch.cuda.is_available()}")

from flash_attn import flash_attn_func
print("flash_attn_func: OK")
print("ALL OK ✓")
EOF

三句话总结成功关键:

  1. 先装 torch,用 --no-deps,再补全 CUDA 依赖:控制 torch 版本是一切的起点
  2. flash-attn 必须 ABI 精确匹配:预编译 wheel 找不到就源码编译,别混用不同 ABI 的版本
  3. vLLM 必须从源码编译: use_existing_torch.py + --no-build-isolation 是让它链接到现有 torch 的官方方法
相关推荐
音视频牛哥3 小时前
从 LLM、VLA、LLA、SLIM 到实时音视频感知底座:具身智能真正需要的不只是大模型
人工智能·llm·机器人视觉·slam·vla·多模态感知·机器人音视频
code2cat3 小时前
【随笔】从聊天到调用工具:理解MCP在AI应用中的位置
java·人工智能
东离与糖宝3 小时前
元数据知识库
人工智能
我是小邵3 小时前
长对话先收口:用“工作记忆 vs 长期记忆“管理 AI 上下文
人工智能·ai·llm·长期记忆·中间迷失·上下文收口
广州宏帝箱包3 小时前
出口背包的包装有没有防潮、防摔的加固处理
大数据·人工智能
jimmyleeee4 小时前
大模型安全之二十八:Agent 权限与策略控制:从最小权限到多层监督
人工智能·安全
wuyk5554 小时前
21.计数排序:不用比较的“空间换时间”排序算法
python·算法·排序算法
智码看视界4 小时前
第4篇:循环神经网络及其变体 LSTM/GRU 实战
python·自然语言处理·gru·lstm·循环神经网络·情感分析·梯度消失
Web3&Basketball4 小时前
Agent外传审计实战:3类失准事故拦截脚本
python·大模型·agent·性能调优·推理优化