CUDA & Triton Learning Project: Flash Attention 实现探索
Python
43
47 commits
updated Aug 14, 2025
本项目致力于深入学习高性能 GPU 算子的设计与实现,以 Flash Attention 为核心案例,通过分析多种实现方式来掌握 CUDA 并行编程和 Triton 算子开发技能。
cuda-triton-learning/
├── 📚 docs/ # 详细学习文档
│ ├── flash_attention_study/ # Flash Attention 算法深度学习
│ │ ├── 01_theory.md # 理论原理详解
│ │ ├── 02_v1_vs_v2.md # 版本对比分析
│ │ ├── 03_implementation.md # 多实现深度分析
│ │ └── 04_optimization.md # 优化指南
│ │
│ ├── flashmla_study/ # FlashMLA 生产级实现
│ │ ├── 01_flashmla_overview.md # DeepSeek FlashMLA 深度解析
│ │ └── README.md # FlashMLA 学习指南
│ │
│ ├── cutlass_study/ # CuTLASS 3.x 高性能编程
│ │ ├── 01_introduction.md # CuTLASS 入门指南
│ │ ├── 02_programming_basics.md # CuTe 编程基础
│ │ └── README.md # CuTLASS 学习指南
│ │
│ └── learning_plan.md # 11周学习计划
│
├── 💻 代码实践/ # 动手实践代码
│ ├── cuda_basics/ # CUDA 编程基础
│ │ ├── 01_hello_cuda.cu # CUDA 入门
│ │ ├── 02_vector_add.cu # 向量加法
│ │ ├── 03_matrix_multiply.cu # 矩阵乘法与共享内存
│ │ ├── 04_parallel_reduction.cu # 并行规约算法
│ │ └── 05_stream_overlap.cu # 流重叠优化
│ │
│ ├── triton_basics/ # Triton 编程基础
│ │ ├── 01_vector_add.py # Triton 向量加法
│ │ └── 02_matrix_multiply.py # Triton 矩阵乘法
│ │
│ ├── cutlass_basics/ # CuTLASS 编程实践
│ │ ├── 01_gemm_basic.cu # CuTLASS 基础 GEMM
│ │ ├── 02_cute_tensor.cu # CuTe 张量操作
│ │ └── Makefile # 编译配置
│ │
│ └── flash_attention/ # Flash Attention 实现
│ ├── naive/ # 朴素实现
│ ├── flash_v1/ # Flash Attention v1
│ └── flash_v2/ # Flash Attention v2 (Triton)
│
├── 🔬 参考项目/ # 高价值参考实现
│ ├── tiny-flash-attention/ # 教育性多语言实现 (submodule)
│ │ ├── flash_attention_py/ # Python + Triton 实现
│ │ ├── flash_attention_cuda/ # CUDA 实现
│ │ └── flash_attention_cutlass/ # CuTLASS 实现
│ │
│ └── FlashMLA/ # DeepSeek 生产级实现 (submodule)
│ ├── csrc/ # CUDA C++ + CuTLASS 核心
│ ├── flash_mla/ # Python 接口
│ └── benchmark/ # 性能测试
│
├── 🧪 实验工具/ # 辅助工具
│ ├── benchmarks/ # 性能测试
│ ├── utils/ # 工具函数
│ └── requirements.txt # Python 依赖
│
└── 📋 配置文件/ # 项目配置
├── setup.md # 环境配置指南
└── README.md # 本文件
适合:CUDA/GPU 编程初学者
Week 1-2: CUDA 基础
├── cuda_basics/ 示例学习
├── docs/learning_plan.md 前4周内容
└── 实践:基础 CUDA 程序
Week 3-4: Flash Attention 理论
├── docs/flash_attention_study/01_theory.md
├── flash_attention/naive/ 实现
└── 实践:朴素 Attention 实现
Week 5-6: Triton 入门
├── triton_basics/ 示例
├── flash_attention/flash_v2/ Triton 实现
└── 实践:Triton Flash Attention
适合:有 CUDA 基础的开发者
Week 1-3: Flash Attention 全景
├── docs/flash_attention_study/ 完整学习
├── tiny-flash-attention/ 多实现对比
└── 实践:性能对比分析
Week 4-6: CuTLASS 深度学习
├── docs/cutlass_study/ 系统学习
├── cutlass_basics/ 实践编程
└── 实践:自定义 GEMM 实现
Week 7-8: FlashMLA 生产实践
├── docs/flashmla_study/ 深度解析
├── FlashMLA/ 源码分析
└── 实践:性能优化实验
适合:GPU 高性能计算专家
并行学习:
├── FlashMLA 源码深度分析
├── CuTLASS 3.x 高级特性
├── Hopper 架构优化技术
└── 自定义算子开发实践
项目目标:
├── 实现生产级 Attention 变体
├── 优化现有算子实现
├── 贡献开源项目
└── 发表技术博客
# 1. 克隆项目
git clone <your-repo-url>
cd cuda-triton-learning
# 2. 初始化子模块
git submodule update --init --recursive
# 3. 配置 Python 环境
conda create -n flash_attention python=3.8
conda activate flash_attention
pip install -r requirements.txt
# 4. 验证 CUDA 环境
nvcc --version # 需要 CUDA 11.0+
nvidia-smi # 检查 GPU
# 测试 CUDA 基础
cd cuda_basics
nvcc 01_hello_cuda.cu -o hello_cuda && ./hello_cuda
# 测试 Triton
cd ../triton_basics
python 01_vector_add.py
# 测试 tiny-flash-attention
cd ../tiny-flash-attention/flash_attention_py
make
# 测试 FlashMLA (需要 Hopper GPU)
cd ../../FlashMLA
python tests/test_flash_mla.py
教育导向的多语言实现
价值:
学习重点:
# 从简单到复杂的学习路径
tiny-flash-attention/
├── flash_attention_py/ # 从这里开始
├── flash_attention_triton/ # 然后学习 Triton
├── flash_attention_cuda/ # 深入 CUDA 优化
└── flash_attention_cutlass/ # 最后掌握 CuTLASS
DeepSeek 的生产级 MLA 实现
价值:
学习重点:
// 生产级代码的工程实践
FlashMLA/
├── csrc/kernels/ # 核心 Kernel 实现
├── csrc/cutlass/ # CuTLASS 3.x 应用
├── flash_mla/ # Python 接口设计
└── benchmark/ # 性能测试体系
| 实现方式 | 学习难度 | 性能水平 | 工程价值 | 推荐指数 |
|---|---|---|---|---|
| Python (Naive) | ⭐ | ⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Triton | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| CUDA | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| CuTLASS | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| FlashMLA | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 技术方向 | 核心价值 | 应用场景 | 职业发展 |
|---|---|---|---|
| Flash Attention 算法 | 理论基础 | 研究开发 | 算法工程师 |
| Triton 编程 | 高效开发 | 快速原型 | AI 系统工程师 |
| CUDA 优化 | 深度控制 | 极致性能 | GPU 编程专家 |
| CuTLASS 工程 | 生产级质量 | 大规模部署 | 高性能计算专家 |
| FlashMLA 实践 | 前沿技术 | 商业应用 | 技术领导者 |
# 项目 1: Flash Attention 性能对比
目标: 理解不同实现的性能特征
任务:
- 实现朴素 Attention
- 使用 Triton 优化
- 对比分析性能差异
- 绘制性能曲线图
// 项目 2: 自定义 CUDA Kernel
目标: 掌握 CUDA 优化技术
任务:
- 实现 Flash Attention CUDA 版本
- 应用共享内存优化
- 使用 Tensor Core 加速
- 性能调优和分析
// 项目 3: CuTLASS 算子开发
目标: 学习生产级开发
任务:
- 基于 CuTLASS 实现自定义算子
- 应用 CuTe 张量抽象
- 集成 TMA 内存加速
- 对标 FlashMLA 性能
// 项目 4: FlashMLA 扩展
目标: 推动技术边界
任务:
- 分析 FlashMLA 源码
- 实现新的 Attention 变体
- 优化特定应用场景
- 贡献开源社区
本项目提供三个专门的学习指南:
# Fork 项目并创建新分支
git checkout -b feature/your-contribution
# 提交更改
git commit -m "Add: your contribution description"
# 创建 Pull Request
# 请详细描述您的贡献内容和价值
🚀 开始您的高性能 GPU 编程学习之旅!
从基础概念到前沿实现,从算法理论到工程实践,本项目将帮助您系统掌握现代 GPU 计算的核心技术,成为高性能计算领域的专家。
选择您的学习路径,探索 GPU 计算的无限可能!
最后更新:2024年12月 - 完整项目结构,包含 FlashMLA 和 CuTLASS 专门模块
47 commits
Python
78.1%
Cuda
18.0%
C++
2.5%
CUDA & Triton Learning Project: Flash Attention 实现探索
Python
43
47 commits
updated Aug 14, 2025
本项目致力于深入学习高性能 GPU 算子的设计与实现,以 Flash Attention 为核心案例,通过分析多种实现方式来掌握 CUDA 并行编程和 Triton 算子开发技能。
cuda-triton-learning/
├── 📚 docs/ # 详细学习文档
│ ├── flash_attention_study/ # Flash Attention 算法深度学习
│ │ ├── 01_theory.md # 理论原理详解
│ │ ├── 02_v1_vs_v2.md # 版本对比分析
│ │ ├── 03_implementation.md # 多实现深度分析
│ │ └── 04_optimization.md # 优化指南
│ │
│ ├── flashmla_study/ # FlashMLA 生产级实现
│ │ ├── 01_flashmla_overview.md # DeepSeek FlashMLA 深度解析
│ │ └── README.md # FlashMLA 学习指南
│ │
│ ├── cutlass_study/ # CuTLASS 3.x 高性能编程
│ │ ├── 01_introduction.md # CuTLASS 入门指南
│ │ ├── 02_programming_basics.md # CuTe 编程基础
│ │ └── README.md # CuTLASS 学习指南
│ │
│ └── learning_plan.md # 11周学习计划
│
├── 💻 代码实践/ # 动手实践代码
│ ├── cuda_basics/ # CUDA 编程基础
│ │ ├── 01_hello_cuda.cu # CUDA 入门
│ │ ├── 02_vector_add.cu # 向量加法
│ │ ├── 03_matrix_multiply.cu # 矩阵乘法与共享内存
│ │ ├── 04_parallel_reduction.cu # 并行规约算法
│ │ └── 05_stream_overlap.cu # 流重叠优化
│ │
│ ├── triton_basics/ # Triton 编程基础
│ │ ├── 01_vector_add.py # Triton 向量加法
│ │ └── 02_matrix_multiply.py # Triton 矩阵乘法
│ │
│ ├── cutlass_basics/ # CuTLASS 编程实践
│ │ ├── 01_gemm_basic.cu # CuTLASS 基础 GEMM
│ │ ├── 02_cute_tensor.cu # CuTe 张量操作
│ │ └── Makefile # 编译配置
│ │
│ └── flash_attention/ # Flash Attention 实现
│ ├── naive/ # 朴素实现
│ ├── flash_v1/ # Flash Attention v1
│ └── flash_v2/ # Flash Attention v2 (Triton)
│
├── 🔬 参考项目/ # 高价值参考实现
│ ├── tiny-flash-attention/ # 教育性多语言实现 (submodule)
│ │ ├── flash_attention_py/ # Python + Triton 实现
│ │ ├── flash_attention_cuda/ # CUDA 实现
│ │ └── flash_attention_cutlass/ # CuTLASS 实现
│ │
│ └── FlashMLA/ # DeepSeek 生产级实现 (submodule)
│ ├── csrc/ # CUDA C++ + CuTLASS 核心
│ ├── flash_mla/ # Python 接口
│ └── benchmark/ # 性能测试
│
├── 🧪 实验工具/ # 辅助工具
│ ├── benchmarks/ # 性能测试
│ ├── utils/ # 工具函数
│ └── requirements.txt # Python 依赖
│
└── 📋 配置文件/ # 项目配置
├── setup.md # 环境配置指南
└── README.md # 本文件
适合:CUDA/GPU 编程初学者
Week 1-2: CUDA 基础
├── cuda_basics/ 示例学习
├── docs/learning_plan.md 前4周内容
└── 实践:基础 CUDA 程序
Week 3-4: Flash Attention 理论
├── docs/flash_attention_study/01_theory.md
├── flash_attention/naive/ 实现
└── 实践:朴素 Attention 实现
Week 5-6: Triton 入门
├── triton_basics/ 示例
├── flash_attention/flash_v2/ Triton 实现
└── 实践:Triton Flash Attention
适合:有 CUDA 基础的开发者
Week 1-3: Flash Attention 全景
├── docs/flash_attention_study/ 完整学习
├── tiny-flash-attention/ 多实现对比
└── 实践:性能对比分析
Week 4-6: CuTLASS 深度学习
├── docs/cutlass_study/ 系统学习
├── cutlass_basics/ 实践编程
└── 实践:自定义 GEMM 实现
Week 7-8: FlashMLA 生产实践
├── docs/flashmla_study/ 深度解析
├── FlashMLA/ 源码分析
└── 实践:性能优化实验
适合:GPU 高性能计算专家
并行学习:
├── FlashMLA 源码深度分析
├── CuTLASS 3.x 高级特性
├── Hopper 架构优化技术
└── 自定义算子开发实践
项目目标:
├── 实现生产级 Attention 变体
├── 优化现有算子实现
├── 贡献开源项目
└── 发表技术博客
# 1. 克隆项目
git clone <your-repo-url>
cd cuda-triton-learning
# 2. 初始化子模块
git submodule update --init --recursive
# 3. 配置 Python 环境
conda create -n flash_attention python=3.8
conda activate flash_attention
pip install -r requirements.txt
# 4. 验证 CUDA 环境
nvcc --version # 需要 CUDA 11.0+
nvidia-smi # 检查 GPU
# 测试 CUDA 基础
cd cuda_basics
nvcc 01_hello_cuda.cu -o hello_cuda && ./hello_cuda
# 测试 Triton
cd ../triton_basics
python 01_vector_add.py
# 测试 tiny-flash-attention
cd ../tiny-flash-attention/flash_attention_py
make
# 测试 FlashMLA (需要 Hopper GPU)
cd ../../FlashMLA
python tests/test_flash_mla.py
教育导向的多语言实现
价值:
学习重点:
# 从简单到复杂的学习路径
tiny-flash-attention/
├── flash_attention_py/ # 从这里开始
├── flash_attention_triton/ # 然后学习 Triton
├── flash_attention_cuda/ # 深入 CUDA 优化
└── flash_attention_cutlass/ # 最后掌握 CuTLASS
DeepSeek 的生产级 MLA 实现
价值:
学习重点:
// 生产级代码的工程实践
FlashMLA/
├── csrc/kernels/ # 核心 Kernel 实现
├── csrc/cutlass/ # CuTLASS 3.x 应用
├── flash_mla/ # Python 接口设计
└── benchmark/ # 性能测试体系
| 实现方式 | 学习难度 | 性能水平 | 工程价值 | 推荐指数 |
|---|---|---|---|---|
| Python (Naive) | ⭐ | ⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Triton | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| CUDA | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| CuTLASS | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| FlashMLA | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 技术方向 | 核心价值 | 应用场景 | 职业发展 |
|---|---|---|---|
| Flash Attention 算法 | 理论基础 | 研究开发 | 算法工程师 |
| Triton 编程 | 高效开发 | 快速原型 | AI 系统工程师 |
| CUDA 优化 | 深度控制 | 极致性能 | GPU 编程专家 |
| CuTLASS 工程 | 生产级质量 | 大规模部署 | 高性能计算专家 |
| FlashMLA 实践 | 前沿技术 | 商业应用 | 技术领导者 |
# 项目 1: Flash Attention 性能对比
目标: 理解不同实现的性能特征
任务:
- 实现朴素 Attention
- 使用 Triton 优化
- 对比分析性能差异
- 绘制性能曲线图
// 项目 2: 自定义 CUDA Kernel
目标: 掌握 CUDA 优化技术
任务:
- 实现 Flash Attention CUDA 版本
- 应用共享内存优化
- 使用 Tensor Core 加速
- 性能调优和分析
// 项目 3: CuTLASS 算子开发
目标: 学习生产级开发
任务:
- 基于 CuTLASS 实现自定义算子
- 应用 CuTe 张量抽象
- 集成 TMA 内存加速
- 对标 FlashMLA 性能
// 项目 4: FlashMLA 扩展
目标: 推动技术边界
任务:
- 分析 FlashMLA 源码
- 实现新的 Attention 变体
- 优化特定应用场景
- 贡献开源社区
本项目提供三个专门的学习指南:
# Fork 项目并创建新分支
git checkout -b feature/your-contribution
# 提交更改
git commit -m "Add: your contribution description"
# 创建 Pull Request
# 请详细描述您的贡献内容和价值
🚀 开始您的高性能 GPU 编程学习之旅!
从基础概念到前沿实现,从算法理论到工程实践,本项目将帮助您系统掌握现代 GPU 计算的核心技术,成为高性能计算领域的专家。
选择您的学习路径,探索 GPU 计算的无限可能!
最后更新:2024年12月 - 完整项目结构,包含 FlashMLA 和 CuTLASS 专门模块
47 commits
Python
78.1%
Cuda
18.0%
C++
2.5%