WindowsのuvでFlash Attentionをwheelからインストールする

初めに

Windows環境でFlash Attentionがuv経由でインストールできなかったのでそのときの対応方法です

開発環境

問題

はじめに以下でインストールを試みましたが、以下のエラーが出ました

uv pip install https://huggingface.co/kim512/flash_attn-2.7.4.post1/resolve/main/flash_attn-2.7.4.post1-cu128-torch2.8.0-cp310-cp310-win_amd64.whl

エラー内容

error: The wheel filename "flash_attn-2.7.4.post1-cu128-torch2.8.0-cp310-cp310-win_amd64.whl" is invalid: Must have 5 or 6 components, but has more

これはuvはwheelファイル名の厳格な検証を行い、標準形式(5-6コンポーネント)を超えるファイル名を拒否します。

その次に uvの UV_SKIP_WHEEL_FILENAME_CHECK 環境変数を使って対応してみました。

$env:UV_SKIP_WHEEL_FILENAME_CHECK="1"; uv pip install https://huggingface.co/kim512/flash_attn-2.7.4.post1/resolve/main/flash_attn-2.7.4.post1-cu128-torch2.8.0-cp310-cp310-win_amd64.whl

しかし以下のエラーが出ました。

UV_SKIP_WHEEL_FILENAME_CHECK=1 uv pip install https://huggingface.co/kim512/flash_attn-2.7.4.post1/resolve/main/flash_attn-2.7.4.post1-cu128-torch2.8.0-cp310-cp310-win_amd64.whl

しかし、この場合初めのuvの制限に引っかかりました

解決策

最終以下の手順で対応しました

# ステップ1: wheelをダウンロード
curl -L -o flash_attn-2.7.4.post1-cu128-torch2.8.0-cp310-cp310-win_amd64.whl  "https://huggingface.co/kim512/flash_attn-2.7.4.post1/resolve/main/flash_attn-2.7.4.post1-cu128-torch2.8.0-cp310-cp310-win_amd64.whl"

# ステップ2: 標準形式にリネーム(cu128とtorch2.8.0を削除)
cp flash_attn-2.7.4.post1-cu128-torch2.8.0-cp310-cp310-win_amd64.whl flash_attn-2.7.4.post1-cp310-cp310-win_amd64.whl

# ステップ3: UV_SKIP_WHEEL_FILENAME_CHECKを設定してインストール
UV_SKIP_WHEEL_FILENAME_CHECK=1 uv pip install flash_attn-2.7.4.post1-cp310-cp310-win_amd64.whl

# ステップ4: クリーンアップ
rm flash_attn*.whl

備考

Python 3.13の場合は以下のwheelが使えます

https://github.com/petermg/flash_attn_windows/releases/download/4/flash_attn-2.7.4.post1+cu128.torch270-cp313-cp313-win_amd64.whl" -OutFile "flash_attn-2.7.4.post1+cu128.torch270-cp313-cp313-win_amd64.whl