From 54dcb2f353476fdd2f7b6b8dbc7f26e77ab63608 Mon Sep 17 00:00:00 2001 From: Johan Herland Date: Fri, 25 Jul 2025 12:51:24 +0000 Subject: [PATCH] python3Packages.flash-attn: init at 2.8.2 --- .../python-modules/flash-attn/default.nix | 75 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 77 insertions(+) create mode 100644 pkgs/development/python-modules/flash-attn/default.nix diff --git a/pkgs/development/python-modules/flash-attn/default.nix b/pkgs/development/python-modules/flash-attn/default.nix new file mode 100644 index 000000000000..bfedc4364f03 --- /dev/null +++ b/pkgs/development/python-modules/flash-attn/default.nix @@ -0,0 +1,75 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + einops, + ninja, + setuptools, + symlinkJoin, + torch, +}: + +let + inherit (torch) cudaCapabilities cudaPackages cudaSupport; + inherit (cudaPackages) backendStdenv; +in +buildPythonPackage rec { + pname = "flash-attention"; + version = "2.8.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "Dao-AILab"; + repo = "flash-attention"; + tag = "v${version}"; + hash = "sha256-iHxfDh+rGanhymP5F7g8rQcQUlP0oXliVF+y+ur/iJ0="; + fetchSubmodules = true; + }; + + preConfigure = '' + export MAX_JOBS="$NIX_BUILD_CORES" + export NVCC_THREADS="$NIX_BUILD_CORES" + ''; + + env = lib.optionalAttrs cudaSupport { + FLASH_ATTENTION_SKIP_CUDA_BUILD = "FALSE"; + CC = "${backendStdenv.cc}/bin/cc"; + CXX = "${backendStdenv.cc}/bin/c++"; + TORCH_CUDA_ARCH_LIST = "${lib.concatStringsSep ";" cudaCapabilities}"; + }; + + build-system = [ + ninja + setuptools + cudaPackages.cuda_nvcc + ]; + + buildInputs = [ + cudaPackages.cuda_cccl # + cudaPackages.libcublas # cublas_v2.h + cudaPackages.libcurand # curand.h + cudaPackages.libcusolver # cusolverDn.h + cudaPackages.libcusparse # cusparse.h + cudaPackages.cuda_cudart # cuda_runtime.h cuda_runtime_api.h + ]; + + dependencies = [ + einops + torch + ]; + + # Requires NVIDIA driver. + doCheck = false; + + pythonImportsCheck = [ "flash_attn" ]; + + meta = { + # Upstream requires either CUDA or ROCm. Couldn't get it to work with ROCm for now. + broken = !cudaSupport; + description = "Official implementation of FlashAttention and FlashAttention-2"; + homepage = "https://github.com/Dao-AILab/flash-attention/"; + changelog = "https://github.com/Dao-AILab/flash-attention/releases/tag/${src.tag}"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ jherland ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index f22805eed7cc..1ee69e40b6ff 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5321,6 +5321,8 @@ self: super: with self; { flasgger = callPackage ../development/python-modules/flasgger { }; + flash-attn = callPackage ../development/python-modules/flash-attn { }; + flashinfer = callPackage ../development/python-modules/flashinfer { }; flashtext = callPackage ../development/python-modules/flashtext { };