资讯动态

Docling 在 CUDA 上怎么启用 Flash Attention 2?

发布时间:2026/9/9 21:19:24 来源:尧图企业网站定制
Docling 在 CUDA 上怎么启用 Flash Attention 2【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling在 NVIDIA GPU 上用 Docling 跑模型VLM 流水线、图表抽取、表格结构识别等时Flash Attention 2 是默认关闭的AcceleratorOptions中的cuda_use_flash_attention2字段默认值为False。要启用它需要做两件事安装flash-attn包然后按环境变量或代码两种方式之一打开开关。打开后相关模型在 CUDA 设备上加载时使用的注意力实现会从sdpa切换为flash_attention_2。官方说明该优化可带来显著的提速与显存节省适用于 Ampere 或更新架构的 NVIDIA GPU见 accelerator_options.py 中该字段的描述。前置条件启用 Flash Attention 2 的前提是模型确实跑在 CUDA 设备上否则该开关不生效代码中只有device以cuda开头时才选用flash_attention_2。按 docs/getting_started/rtx.md 的说法需要NVIDIA GPURTX 40/50 系列等以及 Windows 10/11 或 Linux 系统NVIDIA 驱动、CUDA Toolkit、cuDNN 已安装PyTorch 为带 CUDA 支持的版本。验证环境可用nvidia-smi该命令应显示 GPU 信息与驱动版本。再用一段 Python 确认 PyTorch 能识别 CUDAimport torch print(fCUDA available: {torch.cuda.is_available()}) print(fCUDA version: {torch.version.cuda}) print(fGPU device: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else None})如果torch.cuda.is_available()返回False先按 rtx.md 的排查清单处理驱动、CUDA、重装带 CUDA 的 PyTorchFlash Attention 2 无从谈起。第一步安装 flash-attn官方 FAQdocs/faq/index.md 中 How to use flash attention? 一节给出两种安装方式二选一# 从源码构建需要 CUDA 开发环境 pip install flash-attn# 使用预构建 wheel并非所有环境组合都有对应 wheel FLASH_ATTENTION_SKIP_CUDA_BUILDTRUE pip install flash-attn源码构建需要本机有完整的 CUDA 开发环境编译时间较长预构建 wheel 更快但文档明确说明 not available in all possible setups。如果你的 CUDA/torch 组合没有可用 wheel就要走源码构建。第二步打开开关方式一环境变量AcceleratorOptions是基于 pydantic-settings 的配置类字段说明中明确 Can be set viaDOCLING_CUDA_USE_FLASH_ATTENTION2environment variable。因此只需在进程环境中设置export DOCLING_CUDA_USE_FLASH_ATTENTION21这种方式对当前进程中所有AcceleratorOptions实例全局生效包括直接跑doclingCLI 的场景不需要改任何代码。方式二代码中显式设置在构造流水线选项时传入AcceleratorOptions。FAQ 给出的最小示例是from docling.datamodel.accelerator_options import ( AcceleratorOptions, ) pipeline_options VlmPipelineOptions( accelerator_optionsAcceleratorOptions(cuda_use_flash_attention2True) )完整可运行的写法还需要指定 CUDA 设备device的取法来自 docs/usage/gpu.mdfrom docling.datamodel.accelerator_options import ( AcceleratorDevice, AcceleratorOptions, ) from docling.datamodel.pipeline_options import VlmPipelineOptions pipeline_options VlmPipelineOptions( accelerator_optionsAcceleratorOptions( deviceAcceleratorDevice.CUDA, # 或 cuda:N 指定具体 GPU cuda_use_flash_attention2True, ) )另外compare_vlm_models.py 示例中展示了另一种等价的属性赋值方式在已创建的VlmPipelineOptions上修改pipeline_options.accelerator_options.device AcceleratorDevice.CUDA pipeline_options.accelerator_options.cuda_use_flash_attention2 True哪些阶段会用到这个开关该标志不止影响 VLM 流水线。仓库源码中以下位置都在device以cuda开头且cuda_use_flash_attention2为真时把模型加载的_attn_implementation设为flash_attention_2否则回退到sdpaVLM Transformers 推理引擎transformers_engine.py、hf_transformers_model.py图片描述 VLM 阶段picture_description_vlm_model.pyGranite Vision 表格结构识别table_structure_model_granite_vision.py图表抽取Granite Visiongranite_vision.py信息抽取的 Transformers 模型transformers_extraction_model.py、nuextract_transformers_model.py。所以只要你的流水线包含上述任一阶段并运行在 CUDA 上打开这个开关就生效。结果判断与限制官方文档没有提供一条直接打印 Flash Attention 2 已启用 的运行日志能确认的是环境检查项nvidia-smi、torch.cuda.is_available()通过、且流程在无报错的情况下跑完。模型侧的实际行为是加载参数从sdpa变为flash_attention_2可对照上文源码位置确认。如果flash-attn没装好个别模型会直接报错。例如源码中对rednote-hilab/dots.mocr有显式检查缺失时报错信息为rednote-hilab/dots.mocr requires flash-attn with the Transformers engine. Install flash-attn in the transformers-v4 environment before using this model.Dots 类模型dots.ocr / dots.mocr是个例外即使开关打开代码也会强制使用sdpaif is_dots_model: attn_implementation sdpa不要期望它们走 Flash Attention 2。该开关只在 CUDA 设备上生效MPS/XPU/CPU 设备下无意义flash-attn源码构建依赖 CUDA 开发环境预构建 wheel 不覆盖所有环境组合。完成以上步骤后你的 Docling CUDA 推理就运行在 Flash Attention 2 之上如果显存或吞吐仍不理想docs/usage/gpu.md 还给出了批量大小、并发数和推理服务器相关的调优入口。【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价