安装flash-Attention报错的解决 编译flash-attn,python setup.py install
sudo docker run --gpus all -it --rm nvcr.io/nvidia/pytorch:24.06-py3
sudo docker run --gpus all -it --rm nvcr.io/nvidia/pytorch:24.06-py3
sudo docker run --gpus all -it --rm nvcr.io/nvidia/pytorch:24.06-py3
Unable to find image 'nvcr.io/nvidia/pytorch:24.06-py3' locally
24.06-py3: Pulling from nvidia/pytorch
a8b1c5f80c2d: Pulling fs layer
9c2a63d09670: Pulling fs layer
4f4fb700ef54: Pulling fs layer
c78c58a0000d: Waiting
ea63eb298c69: Waiting
aec371ddf6d1: Waiting
1925a16db8f6: Waiting
5767e2819d1e: Waiting
93fab9cd076a: Waiting
6bc5fc3bcef3: Waiting
a113fe9770cd: Waiting
aec371ddf6d1: Downloading [======>
编译flash-attn
[17/49] /usr/local/cuda/bin/nvcc --generate-dependencies-with-compile --dependency-output /data/zengzijian/Projects/InternVL-v2.0.0/flash-attention/build/temp.linux-x86_64-cpython-312/csrc/flash_attn/src/flash_fwd_split_hdim32_bf16_sm80.o.d -I/data/zengzijian/Projects/InternVL-v2.0.0/flash-attention/csrc/flash_attn -I/data/zengzijian/Projects/InternVL-v2.0.0/flash-attention/csrc/flash_attn/src -I/data/zengzijian/Projects/InternVL-v2.0.0/flash-attention/csrc/cutlass/include -I/home/apus/mambaforge/envs/Qwen_back/lib/python3.12/site-packages/torch/include -I/home/apus/mambaforge/envs/Qwen_back/lib/python3.12/site-packages/torch/include/torch/csrc/api/include -I/home/apus/mambaforge/envs/Qwen_back/lib/python3.12/site-packages/torch/include/TH -I/home/apus/mambaforge/envs/Qwen_back/lib/python3.12/site-packages/torch/include/THC -I/usr/local/cuda/include -I/home/apus/mambaforge/envs/Qwen_back/include/python3.12 -c -c /data/zengzijian/Projects/InternVL-v2.0.0/flash-attention/csrc/flash_attn/src/flash_fwd_split_hdim32_bf16_sm80.cu -o /data/zengzijian/Projects/InternVL-v2.0.0/flash-attention/build/temp.linux-x86_64-cpython-312/csrc/flash_attn/src/flash_fwd_split_hdim32_bf16_sm80.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -O3 -std=c++17 -U__CUDA_NO_HALF_OPERATORS__ -U__CUDA_NO_HALF_CONVERSIONS__ -U__CUDA_NO_HALF2_OPERATORS__ -U__CUDA_NO_BFLOAT16_CONVERSIONS__ --expt-relaxed-constexpr --expt-extended-lambda --use_fast_math -gencode arch=compute_80,code=sm_80 -gencode arch=compute_90,code=sm_90 --threads 4 -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=flash_attn_2_cuda -D_GLIBCXX_USE_CXX11_ABI=0
[18/49] /usr/local/cuda/bin/nvcc --generate-dependencies-with-compile --dependency-output /data/zengzijian/Projects/InternVL-v2.0.0/flash-attention/build/temp.linux-x86_64-cpython-312/csrc/flash_attn/src/flash_fwd_split_hdim192_bf16_sm80.o.d -I/data/zengzijian/Projects/InternVL-v2.0.0/flash-attention/csrc/flash_attn -I/data/zengzijian/Projects/InternVL-v2.0.0/flash-attention/csrc/flash_attn/src -I/data/zengzijian/Projects/InternVL-v2.0.0/flash-attention/csrc/cutlass/include -I/home/apus/mambaforge/envs/Qwen_back/lib/python3.12/site-packages/torch/include -I/home/apus/mambaforge/envs/Qwen_back/lib/python3.12/site-packages/torch/include/torch/csrc/api/include -I/home/apus/mambaforge/envs/Qwen_back/lib/python3.12/site-packages/torch/include/TH -I/home/apus/mambaforge/envs/Qwen_back/lib/python3.12/site-packages/torch/include/THC -I/usr/local/cuda/include -I/home/apus/mambaforge/envs/Qwen_back/include/python3.12 -c -c /data/zengzijian/Projects/InternVL-v2.0.0/flash-attention/csrc/flash_attn/src/flash_fwd_split_hdim192_bf16_sm80.cu -o /data/zengzijian/Projects/InternVL-v2.0.0/flash-attention/build/temp.linux-x86_64-cpython-312/csrc/flash_attn/src/flash_fwd_split_hdim192_bf16_sm80.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -O3 -std=c++17 -U__CUDA_NO_HALF_OPERATORS__ -U__CUDA_NO_HALF_CONVERSIONS__ -U__CUDA_NO_HALF2_OPERATORS__ -U__CUDA_NO_BFLOAT16_CONVERSIONS__ --expt-relaxed-constexpr --expt-extended-lambda --use_fast_math -gencode arch=compute_80,code=sm_80 -gencode arch=compute_90,code=sm_90 --threads 4 -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=flash_attn_2_cuda -D_GLIBCXX_USE_CXX11_ABI=0
3.5-Sonnet
Poe
这些命令是在编译 Flash Attention 库的 CUDA 代码。让我为你解释一下这个过程的主要部分:
使用的编译器:/usr/local/cuda/bin/nvcc
- 这是 NVIDIA 的 CUDA 编译器。
输入文件:
flash_fwd_split_hdim32_bf16_sm80.cu
flash_fwd_split_hdim192_bf16_sm80.cu
这些是 Flash Attention 的 CUDA 源文件。
输出文件:
编译后的目标文件(.o 文件)被放置在 build/temp.linux-x86_64-cpython-312/
目录下。
包含路径 (-I 选项):
包括了 Flash Attention 的源代码路径、PyTorch 的头文件路径、CUDA 包含路径等。
编译选项:
-O3
: 最高级别的优化-std=c++17
: 使用 C++17 标准--expt-relaxed-constexpr
: 允许在设备代码中使用更多的 constexpr 功能--use_fast_math
: 使用快速数学库,可能会轻微影响精度-gencode arch=compute_80,code=sm_80 -gencode arch=compute_90,code=sm_90
: 为特定的 GPU 架构(SM80 和 SM90)生成代码
定义的宏:
包括 TORCH_EXTENSION_NAME=flash_attn_2_cuda
,这定义了 PyTorch 扩展的名称。
ABI 设置:-D_GLIBCXX_USE_CXX11_ABI=0
指定使用旧的 C++ ABI,这通常是为了与预编译的 PyTorch 二进制文件兼容。
多线程编译:--threads 4
指定使用 4 个线程进行编译,加快编译速度。
这个编译过程是为了将 Flash Attention 的 CUDA 代码编译成可以与 PyTorch 一起使用的扩展。它针对特定的 GPU 架构(SM80 和 SM90)优化,并使用了一些高级的 CUDA 编译选项来提高性能。
编译完成后,这些目标文件将被链接成一个 Python 可以导入的动态库,使得 Flash Attention 可以在 PyTorch 中高效运行。