✨通义万相 2.1(Wan2.1)环境搭建指南:基于 CUDA 12.4 + Python 3.11 + PyTorch 2.5.1 GPU加速实战

🚀【超详细】基于 CUDA 12.4 + Python 3.11 构建 Wan2.1 项目的集成推理环境(含 PyTorch 2.5.1 GPU 安装教程)

本文将一步一步带你搭建一个可用于构建和运行 Wan2.1 的深度学习环境,完全兼容 CUDA 12.4,并基于官方镜像 nvidia/cuda:12.4.0-devel-ubuntu22.04 和 Python 3.11。包括 PyTorch 安装、依赖处理、环境验证和常见问题解决,全程使用国内清华镜像加速。🚀


📦 基础环境说明

环境项
镜像nvidia/cuda:12.4.0-devel-ubuntu22.04
Python3.11(自定义安装)
包管理pip(使用清华镜像)
加速工具包torch, flash-attn, packaging, 等
用途构建并运行 Wan2.1 模型项目(适配 GPU)

🔧 一、安装系统依赖 + Python 3.11

apt update && apt install -y \python3.11 python3.11-venv python3.11-dev python3-pip \build-essential cmake git curl wget# 设置默认 python/pip(可选)
ln -sf /usr/bin/python3.11 /usr/bin/python
ln -sf /usr/bin/pip3 /usr/bin/pip

✅ 这样就完成了 Python 和基本构建工具的配置。


⬆️ 二、升级 pip 和 setuptools

升级安装工具,防止后续编译或安装失败:

pip install --upgrade pip setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple

🔥 三、安装 PyTorch 2.5.1(支持 CUDA 12.4)

✅ 官方推荐安装命令如下:

pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 \--index-url https://download.pytorch.org/whl/cu124 \--extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple

📌 解释

  • --index-url: 从 PyTorch 官方 CUDA 12.4 仓库拉取核心库;
  • --extra-index-url: 其余依赖包走清华镜像,加速飞起🚄

✅ 四、验证 PyTorch 安装是否成功

执行下面命令确认版本 & GPU 支持:

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

预期输出(只要 True 就代表 GPU 可以用了🔥):

2.5.1
True

📁 五、安装项目依赖(requirements.txt)

⚠️ 注意:一定要先装好 PyTorch 再执行这步!

# 先补装一些构建时依赖,防止报错
pip install packaging -i https://pypi.tuna.tsinghua.edu.cn/simple# 然后安装项目依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

⚠️ 六、关于 flash_attn 安装卡住问题详解(极其重要)

你可能遇到的问题是:

在执行 flash_attnsetup.py bdist_wheel 阶段时卡住,构建过程一直没有继续。

这通常是因为 FlashAttention 的源码编译依赖 CUDA 环境、编译器、内存资源 等多个条件,导致它在本地构建 .whl非常耗时甚至卡死


🔍 可能的卡住原因

  1. CUDA 环境不匹配或未安装
    FlashAttention 强依赖 CUDA。若本地未正确配置 CUDA(或版本与 PyTorch 不匹配),编译时会卡住或失败。

  2. 没有 NVIDIA GPU 或未启用 GPU 驱动
    无 GPU 的机器通常会直接卡死或失败。

  3. 内存/资源不足
    编译 FlashAttention 需要大量 RAM 和 CPU 资源,资源不足时会卡住。

  4. 编译器问题(gcc 版本不兼容)
    构建时使用 setuptools 和系统编译器,不兼容时可能无错误提示但构建失败。


✅ 推荐解决方案(优先级顺序)

方案一:手动安装预编译的 .whl 文件(强烈推荐)
  1. 访问预编译包页面:

    https://github.com/Dao-AILab/flash-attention/releases

  2. 找到与你环境匹配的版本,例如:

    flash_attn-2.8.0.post2+cu12torch2.5cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
    

    匹配内容包括:

    • cp311 → Python 3.11
    • cu12 → CUDA 12.x
    • torch2.5 → PyTorch 2.5
    • linux_x86_64 → 64 位 Linux
  3. 下载该 .whl 文件并安装:

    pip install ./flash_attn-xxx.whl
    
方案二:临时切换为官方 PyPI 源安装(避免清华镜像导致源码安装)
pip install flash-attn --index-url https://pypi.org/simple

说明:清华镜像不缓存 GitHub 上的预编译 wheel,导致退回源码编译,容易卡住。

方案三:如果 FlashAttention 不是强依赖,尝试禁用或降级

如果某些包自动依赖 flash_attn,你也可以选择忽略或使用不依赖它的版本。

方案四(专业用户):手动源码编译

确保满足:

  • Python 3.10/3.11
  • CUDA 11.8/12.x
  • PyTorch 2.5 且 torch.cuda.is_available() 返回 True
  • 安装 ninjagccnvcc

执行:

git clone https://github.com/Dao-AILab/flash-attention.git
cd flash-attention
pip install packaging
python setup.py install

🐳 七、使用 Docker 启动 Wan2.1 环境(镜像标签:wan2.1:1.0)

说明:wan2.1:1.0 镜像是基于上文步骤搭建好的环境,通过 Docker 容器提交生成的新镜像。
也就是说,你先在基础镜像中完成所有环境配置后,执行 docker commit 创建了这个镜像,后续可以直接用它启动容器,避免重复配置。

下面命令基于该镜像启动容器:

docker run -it --name wan2.1 --runtime=nvidia --gpus all --network=host \-v /data02/YangXian/code/Wan2.1-main:/Wan2.1-main \-v /data01/YangXian/models/Wan-AI:/Wan-AI \-w /Wan2.1-main wan2.1:1.0 bash

或者增加共享内存的启动命令(避免显存分配问题):

docker run -it --name wan2.1.1 --runtime=nvidia --gpus all --network=host --shm-size=50g \-v /data02/YangXian/code/Wan2.1-main:/Wan2.1-main \-v /data01/YangXian/models/Wan-AI:/Wan-AI \-w /Wan2.1-main wan2.1:1.0 bash

🛠 八、容器内环境初始化及依赖安装示例

apt update
apt install python3-pip libgl1-mesa-glx -y
ln -s /usr/bin/pip3 /usr/bin/pippip install --upgrade pip setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install packaging modelscope "xfuser>=0.4.1" -i https://pypi.tuna.tsinghua.edu.cn/simple# PyTorch 安装(示例)
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124# 安装项目依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

⚙️ 九、检测 GPU 设备(判断是否为 GPU 机器)

lspci | grep -i nvidia

🚀 十、示例命令:运行 Wan2.1 生成任务

CUDA_VISIBLE_DEVICES=4,5,6,7 python3 generate.py --task flf2v-14B --size 1280*720 --ckpt_dir /Wan-AI/Wan2___1-FLF2V-14B-720P --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage."
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 torchrun --nproc_per_node=8 generate.py --offload_model True --task flf2v-14B --size 1280*720 --ckpt_dir /Wan-AI/Wan2___1-FLF2V-14B-720P --first_frame examples/flf2v_input_first_frame.png --last_frame examples/flf2v_input_last_frame.png --dit_fsdp --t5_fsdp --ulysses_size 8 --ring_size 1 --prompt "CG animation style, a smallchest. The background shows a blue sky with white clouds under bright sunshine. The camera follows the bird upward, capturing its flight and the vastness of the sky from a close-up, low-angle perspective."

✅ 最终总结

🚀 完成以上所有步骤,你的 Wan2.1 项目环境就搭建完成了,可以放心训练和测试了!

遇到 flash_attn 卡住问题,务必优先选择预编译 .whl 安装,避免源码编译坑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/88528.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PROFIBUS DP转ETHERNET/IP在热电项目中的创新应用

在热电项目中,多种设备的高效协同是保障能源稳定供应的关键。PROFIBUS DP与ETHERNET/IP两种工业通信协议因特性不同而应用场景各异。通过协议转换技术实现JH-PB-EIP疆鸿智能PROFIBUS DP转ETHERNET/IP,可整合西门子PLC与电力仪表、变频器等设备&#xff0…

精准把脉 MySQL 性能!xk6-sql 并发测试深度指南

在数据库性能测试领域,xk6-sql凭借其强大的功能和灵活性,成为众多开发者和测试人员的得力工具。它能够模拟高并发场景,精准测试数据库在不同负载下的性能表现。然而,在一些网络受限的环境中,实现xk6-sql的离线安装以及…

【文件】Linux 内核优化实战 - fs.inotify.max_user_instances

目录 一、参数作用与原理1. 核心功能2. 应用场景 二、默认值与影响因素1. 默认配置2. 影响因素 三、调整方法与示例1. 查看当前值2. 临时修改(生效至系统重启)3. 永久修改(修改配置文件)4. 合理值建议 四、常见报错与解决方案1. 报…

c++系列之特殊类的设计

💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 仅在堆上创建对象的类 将类的构造函数,拷贝构造私有,防止在栈上生…

SpringBoot的国际化

国际化(internationalization)是设计容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言元素。换言之,应用程序的功能和代码设计考虑了在不同地区运行的需要。开发这样的程序的过程,就称为国际化。 那么当我…

prometheus+grafana+Linux监控

prometheusgrafanaLinux监控 环境说明 操作前提: 先去搭建Docker部署prometheusgrafana...这篇文章的系统 Docker部署prometheusgrafana...的参考文章: Docker部署prometheusgrafana…-CSDN博客 Linux部署docker参考文章: 02-Docker安装_doc…

文档处理控件Aspose.Words教程:在.NET中将多页文档转换为单个图像

在Aspose.Words for .NET 25.6版本中,我们引入了一项新功能,允许您将多页文档导出为单个光栅图像。当您需要将文档作为单个可视文件共享或显示时,此功能非常有用。 Aspose.Words for .NET 25.6 的新功能 在 25.6 版之前,将多页文…

vuex4.0用法

VUEX 状态管理,多个组件有共享数据的时候,就叫状态管理 什么情况下会用到vuex , 如果你不知道vuex的情况也能完成你的需求,就说你的项目中不需要用到状态管理。 组件层级比较复杂的时候,还是用组件传值的方式来传值,…

2025.6.24总结

今天发生了两件事,这每件事情都足以影响我的工作状态。 1.团队中有人要转岗 这算是最让我有些小震惊的事件了。我不明白,那个同事干得好好的,为啥会转岗,为啥会被调到其他团队。虽然团队有正编,有od,但我自始自终觉得…

状态模式详解

概述 结构设计类似责任链模式,但是在各个状态进行遍历的过程中,更注重的是条件的判断,只有符合条件的状态才能正常匹配进行处理。条件不成功的会立即切换到下一个状态。 有限状态机 状态机一般指的是有限状态机(FSM&#xff1a…

Lua 调试(Debug)

Lua 调试(Debug) 引言 Lua 是一种轻量级的编程语言,广泛应用于游戏开发、嵌入式系统、脚本编写等领域。在 Lua 开发过程中,调试是确保程序正确运行的重要环节。本文将详细介绍 Lua 调试的基本方法、常用工具以及调试技巧,帮助开发者提高编程…

Windows安装Emscripten‌/emsdk(成功)

安装git安装python 不要自行下载版本,先卸载其他版本的python。 使用管理员打开cmd,输入python3,直接跳转到应用商店,安装即可。 为什么一定要这么安装?好像是跟路径有关。 下载emsdk git clone https://github.c…

AI网页部署在本地_windows

用bolt.new写了一个网页,下载ZIP至本地 以下是在 Windows 上本地运行你用 Node.js 搭建的网页服务,并在浏览器中访问的常见流程: 1、安装 Node.js 访问官网 Node.js — Run JavaScript Everywhere ,下载适合 Windows 的 LTS 版本…

Linux sudo命令

sudo是一个常用的Linux命令,用于以超级用户的权限执行命令。下面是对sudo命令的介绍: sudo命令的作用: sudo允许普通用户以超级用户(root)的身份执行特定命令或访问特定文件。它提供了一种安全且可控制的方式&#xf…

邮件合并----批量从excel表中导出数据到word中

文章目录 前言一、操作流程1. 打开word,开始邮件合并->邮件合并分布向导2. 开始邮件合并,一共6步3. 选择全部,点击确认,即可生成Excel表中244条记录,也就是244页。 总结 前言 涉及到将学生的姓名、学号、档案编号、…

活动安排贪心算法

输入说明 n      —— 活动数量 s[1…n]  — 第 i 个活动的开始时间 (start) f[1…n]  — 第 i 个活动的结束时间 (finish) 前置要求:数组已按 f 从小到大排好序 (若没排,先调用 sortByFinishTime(),复杂度 O(n log …

Mysql8启用日志审计插件

概述 等保要求,数据库启用日志审计。Mysql8上面使用开源插件audit-plugin-for-mysql(MariaDB的审计插件不用折腾了,无论直接使用还是编译使用,在Mysql8上都不行) 插件下载 日志审计插件下载地址: https:…

机器学习-线性模型

目录 线性模型 1、线性回归: 2、对数几率回归: 3、线性判别分析: 4、多分类学习: 5、类别不平衡问题: 基本数理知识补充: 损失函数: 凹凸函数 梯度下降 线性模型 线性模型形式简单、易…

Git上传代码如何解决Merge冲突

示例 解决方案 1、第一步切到本地的主分支 git checkout master2、拉取线上最新的代码 git pull3、切到本地自己的分支 gco feat-xx4、将代码从master变基&#xff08;移动/合并&#xff09;过来 git rebase master5、手动解决冲突 <<<<<<< HEAD 本…

fluentd + elasticsearch + grafana 不能显示问题

fluentd中配置log 源文件后&#xff0c;再配置elasticsearch后&#xff0c; elasticsearch pod中查询日志记录正常。 修改log 文件 后&#xff0c; elasticsearch pod中查询日志记录更新也正常。 但是在grafana中添加elasticsearch data source后&#xff0c; 连接正常&#…