kernels-bot commited on
Commit
ba9edb3
·
verified ·
1 Parent(s): 2f94218

Uploaded using `kernel-builder`.

Browse files
Files changed (25) hide show
  1. build/torch-stable-abi210-cu126-aarch64-linux/{_flash_attn2_cuda_460047c.abi3.so → _flash_attn2_cuda_18153cd.abi3.so} +1 -1
  2. build/torch-stable-abi210-cu126-aarch64-linux/_ops.py +3 -3
  3. build/torch-stable-abi210-cu126-aarch64-linux/metadata.json +6 -6
  4. build/torch-stable-abi210-cu126-aarch64-linux/metadata.json.sigstore +1 -1
  5. build/torch-stable-abi210-cu126-aarch64-linux/symbols.json +13 -13
  6. build/torch-stable-abi210-cu128-aarch64-linux/{_flash_attn2_cuda_460047c.abi3.so → _flash_attn2_cuda_18153cd.abi3.so} +1 -1
  7. build/torch-stable-abi210-cu128-aarch64-linux/_ops.py +3 -3
  8. build/torch-stable-abi210-cu128-aarch64-linux/metadata.json +6 -6
  9. build/torch-stable-abi210-cu128-aarch64-linux/metadata.json.sigstore +1 -1
  10. build/torch-stable-abi210-cu128-aarch64-linux/symbols.json +13 -13
  11. build/torch-stable-abi210-cu130-aarch64-linux/{_flash_attn2_cuda_460047c.abi3.so → _flash_attn2_cuda_18153cd.abi3.so} +1 -1
  12. build/torch-stable-abi210-cu130-aarch64-linux/_ops.py +3 -3
  13. build/torch-stable-abi210-cu130-aarch64-linux/metadata.json +6 -6
  14. build/torch-stable-abi210-cu130-aarch64-linux/metadata.json.sigstore +1 -1
  15. build/torch-stable-abi210-cu130-aarch64-linux/symbols.json +13 -13
  16. build/torch-stable-abi210-cu132-aarch64-linux/{_flash_attn2_cuda_460047c.abi3.so → _flash_attn2_cuda_18153cd.abi3.so} +2 -2
  17. build/torch-stable-abi210-cu132-aarch64-linux/_ops.py +3 -3
  18. build/torch-stable-abi210-cu132-aarch64-linux/metadata.json +6 -6
  19. build/torch-stable-abi210-cu132-aarch64-linux/metadata.json.sigstore +1 -1
  20. build/torch-stable-abi210-cu132-aarch64-linux/symbols.json +13 -13
  21. build/torch-stable-abi210-cu134-aarch64-linux/{_flash_attn2_cuda_460047c.abi3.so → _flash_attn2_cuda_18153cd.abi3.so} +1 -1
  22. build/torch-stable-abi210-cu134-aarch64-linux/_ops.py +3 -3
  23. build/torch-stable-abi210-cu134-aarch64-linux/metadata.json +6 -6
  24. build/torch-stable-abi210-cu134-aarch64-linux/metadata.json.sigstore +1 -1
  25. build/torch-stable-abi210-cu134-aarch64-linux/symbols.json +13 -13
build/torch-stable-abi210-cu126-aarch64-linux/{_flash_attn2_cuda_460047c.abi3.so → _flash_attn2_cuda_18153cd.abi3.so} RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:de41e0887afd71fca22cc0b2f75a0fa132461ee98943529fb073f6767a33056b
3
  size 446708200
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:52e2acfdd19a1d66706ba49ba66a007cd4052ad9f3d16b2b36145a540be46e31
3
  size 446708200
build/torch-stable-abi210-cu126-aarch64-linux/_ops.py CHANGED
@@ -1,9 +1,9 @@
1
  import torch
2
- from . import _flash_attn2_cuda_460047c
3
- ops = torch.ops._flash_attn2_cuda_460047c
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
- return f"_flash_attn2_cuda_460047c::{op_name}"
 
1
  import torch
2
+ from . import _flash_attn2_cuda_18153cd
3
+ ops = torch.ops._flash_attn2_cuda_18153cd
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
+ return f"_flash_attn2_cuda_18153cd::{op_name}"
build/torch-stable-abi210-cu126-aarch64-linux/metadata.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "flash-attn2",
3
- "id": "_flash_attn2_cuda_460047c",
4
  "version": 4,
5
  "kernels-minver": "0.14.0",
6
  "license": "BSD-3-Clause",
@@ -17,20 +17,20 @@
17
  "algorithm": "sha256",
18
  "files": {
19
  "__init__.py": "Nz8hqrusjoUHQqszpxfF2USMwUXn1VfpvcmtAAvutSM=",
20
- "_flash_attn2_cuda_460047c.abi3.so": "3kHgiHr9cfyiLMCy91oPoTJGHumJQ1KfsHP2dnozBWs=",
21
- "_ops.py": "DV4Eo4+s3aaNmDsfXoZiYKNLnRUJqlsdDGlMsdKFgk4=",
22
  "flash_attn_interface.py": "6UYUhfUax4+yOUygyS7K8dVjrIjU5GQr1AJ2gSp8rPo=",
23
- "symbols.json": "uvC+87tHUhtHv7L/Nl53T/Ms7ceX317/jwQBoqHY14A="
24
  }
25
  },
26
  "provenance": {
27
  "kernel-builder": {
28
  "version": "0.18.0-dev0",
29
- "commit": "d054906a13710b811b96697b4635f03020842733",
30
  "dirty": false
31
  },
32
  "kernel": {
33
- "commit": "460047c291fc7f0b3dbd4239b46bd5e1281b1806",
34
  "dirty": false
35
  }
36
  }
 
1
  {
2
  "name": "flash-attn2",
3
+ "id": "_flash_attn2_cuda_18153cd",
4
  "version": 4,
5
  "kernels-minver": "0.14.0",
6
  "license": "BSD-3-Clause",
 
17
  "algorithm": "sha256",
18
  "files": {
19
  "__init__.py": "Nz8hqrusjoUHQqszpxfF2USMwUXn1VfpvcmtAAvutSM=",
20
+ "_flash_attn2_cuda_18153cd.abi3.so": "UuKs/dGaHWZwa6SbpmoAfNQFKtnz0WsrNhRaVAvkbjE=",
21
+ "_ops.py": "OEGGtKiMxeERjOPhIchyq6H4g1NZegDCw0U6hBZPQcw=",
22
  "flash_attn_interface.py": "6UYUhfUax4+yOUygyS7K8dVjrIjU5GQr1AJ2gSp8rPo=",
23
+ "symbols.json": "OIur391E1YRjuOLt3sp+L6crAatjoIshDxNq6/odmYA="
24
  }
25
  },
26
  "provenance": {
27
  "kernel-builder": {
28
  "version": "0.18.0-dev0",
29
+ "commit": "d0ed138c0e5132e810e6fbbbc2a5c6981a9c7649",
30
  "dirty": false
31
  },
32
  "kernel": {
33
+ "commit": "18153cd077b6541e9c4cb98ad9678db4e1253d1f",
34
  "dirty": false
35
  }
36
  }
build/torch-stable-abi210-cu126-aarch64-linux/metadata.json.sigstore CHANGED
@@ -1 +1 @@
1
- {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"3430230245","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792800466","inclusionPromise":{"signedEntryTimestamp":"MEQCICEYIjYMuYPLk7awtJYUASuf8XztXLMTPs4X+7Lpm3SDAiBQ2efj7gnDF/2NSMrJ86bJTfQ7rYpmYzchaNwDe1o2Jg=="},"inclusionProof":{"logIndex":"3308325983","rootHash":"9RhrJeVdTN1XWyq96fL3jjoOsc1nFsM/HES3FIUszPY=","treeSize":"3308326223","hashes":["ZZUqFo+YHPeC5R2p2SNck7J01R9ENmB4BWVMlc/slXA=","w1p4nI+R9aogwUiO35DVWRpok9RtvnHgMp91m1i7zoQ=","+kPgoLboWgPIQiwgl1SZtK3PTOu2+ACMpj/nlyywJEQ=","Asr5xdoDBoe5g4/E1xBri09H+TR7Hg8RYo8YPR50xUo=","s/j4WllkZVu4yLXws1v72aG8K1grAGGvb8ScmOZRxos=","JJNA2oVUYuX1sAXI7HnJAGnj/FjXacYPyZRxdAttFwg=","TjxCovIPh2dORfx6kgB6177znXUUsc7rfrk5J/CY1Ig=","UJUvB1WAmOcG2neywwATlbUwjcr87A3PcVOC1+jgJC4=","pUGUimNXW8f8DrPF31Qf+xxBakJshScZqbbDtWrHgkA=","PuwdRME/93l6s2BMRjCojmjsVC29KnBqdtPSPE1l6cQ=","tWdxtMrYqmZ0zKHnOCAERPP7SvuDvubtw3jwj7rH4uA=","8x0N/oAmvpY+6DQUGTU+i6a1Cuqphro2WbV5WZ/RHL8=","DMchGrSAeKV9qHo75XJV3UFZ/CHF8zofPRu+NgVRwA4=","V6dXjeDcwYxBG/9gVSBM8rYdPrAqGpZsf1e7v6l67GA=","iDfImp65w8dirRfYGNgFA34JTUYDWbcJwNBBU/Ok+X4=","YYCr61A8azar3dfO8Ct+pri7LqDxkUlUkfs7fiqYErU=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3308326223\n9RhrJeVdTN1XWyq96fL3jjoOsc1nFsM/HES3FIUszPY=\n\n— rekor.sigstore.dev wNI9ajBFAiEAwzn/01eNUZJXH1n17uP842XQLlrV1cE3GdpyvYbwm7wCICUaMVfm6QDW2KxHRr4EYs2/flTQ5yF/PekdNUp89Ots\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI0YWZmMjRjYWUwMzRiNWVlNWNkZGI2ZDg5MTI5ODQ5ZWEwZmI1ZWYyOWI5ZjZkMjMzN2FlZTJjZTc5NzRmNzY3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQmo4dXJpMERPaEdVM3pGVGJOeGRJU09HTVhDR3lCTXdBbkJtZGhzY0hrWUFpQVpXbWVnbFVSSGtXMm82WlRYUFVSajkvRWcrZ25pV0lDUmdEWTVsV0VGREE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1SRU5EUW5KSFowRjNTVUpCWjBsVlFtOHhhM000WkRNd2MycFhTVEk1ZFZjMGRIWnpNRFpWYm1rd2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFU1RCTlJFRjNUbnBSTWxkb1kwNU5hbGw0VFVSSk1FMUVRWGhPZWxFeVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZGZWtFNU9WWlFjSE5aUkVJeWJXdFBVamhFT0U1NU5XMTRkMlJTZVhwc2NGRldLMUFLSzJKRk9FTnZlR1JEY0Zka01EbEpTREF4TTAxSFlXVlFjakV6V2xkeFZGazNSRVZST0NzellrcHZUWFJZV1c1NU1XRlBRMEprUVhkbloxaE5UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmN3VG1wQmR3cE9SR1JxVFdwcmVGcHRUVE5hYWtKcFRUSlNhVnBFVVhsTmVteHBUa1JhYVZwRVZteE5WRWswVFZkSmVFOUVRVEpOUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEWnpCT2FrRjNUa1JrYWsxcWEzaGFiVTB6Q2xwcVFtbE5NbEpwV2tSUmVVMTZiR2xPUkZwcFdrUldiRTFVU1RSTlYwbDRUMFJCTWsxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEWnpCT2FrRjNDazVFWkdwTmFtdDRXbTFOTTFwcVFtbE5NbEpwV2tSUmVVMTZiR2xPUkZwcFdrUldiRTFVU1RSTlYwbDRUMFJCTWsxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlPUkZsM1RVUlJNMWw2U1RWTlYxcHFUakpaZDFscVRtdFpiVkV3VFdwTk5WbHFVVEpaYlZFeFdsUkZlVTlFUm1rS1RWUm5kMDVxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUnJORTFxV1RCTlJGVjRUbE01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkS0NrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NITkZaVkZDTTBGSVZVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvWVhwM2JHTlJRVUZDUVUxQlVtcENSVUZwUVZWYVVVSTJRbWhMVW5aSWMzTXZWamRGZVRGQ1VVOHlhM0JZWTNvNWFrZzRiUW9yV2tGUU1WWTFURVpCU1dkVWMxVTFTMjF5U1RST1F6SndjRlZIVFdSc1dWcHdhalJ4Y1hWTlVqSlRlVXBxUjBoT1R6UjRjMk5OZDBObldVbExiMXBKQ25wcU1FVkJkMDFFWVZGQmQxcG5TWGhCU21NNVlVbFZaVTUwTDJkbU9ISlhNamRUTmtSQ1JVWjBlalpQVTFBeGJsSlFRbmxUVDFkdEwzUnlObEE1V0hFS2NVcGliekZUUWpJMFRrZ3dTM1J5ZUN0blNYaEJUVkJsVG5OME4xVldaRlJ1VFc1d01XRk9XRVZ2VTJzclVFZFJaa2RyVFRaSmQwazNXV2RIUjJ4b1VBcFpMMUJMYWxaR1VFVm5SbVphZG5CR1FsQTBVRGxSUFQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg4XFkww1s5reoRTvhYd+uS/V0ItJYWN0bJLqR8Yxc4awCFQDBdz2E5aFNDadtTqGVkrBUsXTEKxgPMjAyNjEwMjQwMDA3NDZaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAyNDAwMDc0NlowLwYJKoZIhvcNAQkEMSIEIE5cpwDezUJr7nCJtvtbmyvIluFy294vwygMYx+wZhO6MIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMB2jAvel7SgzAqKiewQFzpqBT+qoq78RFvWuJcDJyDg+G/XV9PI/W/T3+ZcfW0oUMAIxAPA+84KPzGjn//rq7+fWSuSF8WPE7JIj6PN4Ki5BnCwuCZiqK/6w8oszWjxiz+8tDA=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"Sv8kyuA0te5c3bbYkSmEnqD7XvKbn20jN67iznl092c="},"signature":"MEQCIBj8uri0DOhGU3zFTbNxdISOGMXCGyBMwAnBmdhscHkYAiAZWmeglURHkW2o6ZTXPURj9/Eg+gniWICRgDY5lWEFDA=="}}
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"3495370596","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793044518","inclusionPromise":{"signedEntryTimestamp":"MEUCIDkfr5ftWdDDgqu9al/LcMV9MqK7V2zfy2uikvJuPAgzAiEAxrNXBpDcaS749F0iCQ1/V2Itl9My8yWM5vHEjt+t/UM="},"inclusionProof":{"logIndex":"3373466334","rootHash":"xzXSdKICBAaoJKEWAVZFkz53tX3FHsyhVlR/5R6EOBI=","treeSize":"3373466374","hashes":["IP0IcwWWA6mnah2Qe+IBBPSYfMSWCv4grQSOvnEGPMY=","cTiiRPnXpMveAXTU3tlOWTjOB2cpe0JrypiJSBmUzKM=","kuv+8vDYkP8bsb6yxbVNGS9hjhxLuCSrNjxLdPE8i6I=","zT95Fiv7fJ/qcc9fklplRa1SVEObpexcXHLcLa3Dn+s=","r4ye61/W1qfl46MoKFkkl47eUCOyRrqdOnti4rESQgY=","0S3cz1Gs53584ZouszKS+0Lq/Jqxw4BMWqudu4MiUAo=","jrJ1R7HY6huiKoa5ovgxmQ3sY7qHpJsnXbo5hypqONs=","c1GP1lDyg3zm3yfYcX4EXnTneAQ3LaBxnnq2KzIY4x0=","uvWuBnEWxmJmT0tXMOxfOG+6S/+xEzg3R+dohA74sxM=","clWBq113e/VSBaHAtk7GiXZA4ekhdUDvGKGTPvs+Xv0=","AP1Gu3/J0eieIZMophuFtg5MjGG05ZDkCKVjbZ6u1Jc=","FM5ondRZhDi27kmSltSStj4O/ATXPz672VgA5aDgsr4=","LoMfGTs8fXIyNHYdO69USeIy3IiKviNIc6UY+e4Yvcg=","6isO7d5SZuUjk8FoC2N/4lrs2iljQ9nlCzDM90al4Mw=","zGfeoWKmrZlXMOvyi3R2GDbGpmI1skJW/wLTXCCgF0o=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3373466374\nxzXSdKICBAaoJKEWAVZFkz53tX3FHsyhVlR/5R6EOBI=\n\n— rekor.sigstore.dev wNI9ajBFAiEA4guiHo3okmIbFXXQ3Z1Bd53ox14qmu/216g2NbdmkUQCIClbY6txD8+E1r+1TiSZntXwsJsDGnzFRWKUd+ItWTke\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJlOTRkMDM4MzhiMmRkYzNjNTE3ZTJlOTg2OWU4ZGNhZmYxMDg0ZmFiYmU2NzYxOGFjZTAyNDFhZjYyZmM4Y2EwIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUM5SEZZbjFoaFZxbURiWmhpVldHVXhES290b1dodmdXb0xYZHdVc3FIK1FBSWhBSlRWTEx5b3FYZ0IxQTQ1c0FIV05COWN6NVZuRmVSQVg3V2ozbDRDcVVrLyIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KSFowRjNTVUpCWjBsVlZuRjRSRkZNUld4YVNrNVRZVEEwTjFGb1dVMXpXR3R1ZGxGSmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFU1RKTlZHc3hUbFJGTkZkb1kwNU5hbGw0VFVSSk1rMXFRWGRPVkVVMFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZhY0hSdlFWSTJiWGRDUzFoNU1tdFRUalpWTVZwWVdHRkZTSGxMUmxneEwydEpSRVlLYlRrcllsbFZTblZOUzFaT1JVaENjMnBFTDBwVlFrcDJka1JoYW5GTGNHSlpNRGRsYURsQ2NGSjVOR1l2VEZsQ2NEWlBRMEprUVhkbloxaE5UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmQ0VDBSRk1RcE5NazVyVFVSak0xbHFXVEZPUkVac1QxZE5NRmt5U1RWUFIwWnJUMVJaTTA5SFVtbE9SMVY0VFdwVmVscEVSbTFOUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEWjNoUFJFVXhUVEpPYTAxRVl6TlphbGt4Q2s1RVJteFBWMDB3V1RKSk5VOUhSbXRQVkZrelQwZFNhVTVIVlhoTmFsVjZXa1JHYlUxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEWjNoUFJFVXhDazB5VG10TlJHTXpXV3BaTVU1RVJteFBWMDB3V1RKSk5VOUhSbXRQVkZrelQwZFNhVTVIVlhoTmFsVjZXa1JHYlUxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlOVkdkNFRsUk9hbHBFUVROT01ra3lUbFJSZUZwVWJHcE9SMDVwVDFSb2FGcEVhekpPZW1ocldXcFNiRTFVU1RFS1RUSlJlRnBxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRnd1RVUk5lRTlVWXpOT1JHZDRUV2s1YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkS0NrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NITkZaVkZDTTBGSVZVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvWldOblYyeEJRVUZDUVUxQlVtcENSVUZwUW1sSllXTnNSRlI0VnpaUlJrczRjVzQ0UWtsRGNqQllOSEIyU1dwTk1XOXNRUXBCWTFoeVJrRkZibVpuU1dkS0syaFJlVmh6UlVWTmRtRk9jMlpoUVdKMFNsbHJUSGxOYTJaU1pHSk1ZVTl2UVRGdFQycE5la28wZDBObldVbExiMXBKQ25wcU1FVkJkMDFFWVVGQmQxcFJTWGhCVEhWU01ubEZZVmRoUm1oWWVUUnlLM0ZxYkZBeFEwRXhNVXd5V0RaMVRIRkdMMVU1YTJ4WlNsbHRhVEJXWjFVS00zbElXbWhhYUVOd1duQTVhMXBKY2xGblNYZFpjM0ppY1VSQ1dUSkdWbFE1WlVFMFoxSk9aa2xQTVdSNkwzTmhXall3UkU4d2JXczBZak4xVVZKcVF3cEpRbVZITlRWS2NsRnRXamRuVTJoalltNVNOQW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg+zDNb0F9eT31onYEuQ+7o1UN+pL6so1/s1aC6xz7jI0CFAGQe8SQOPQb7fvU+zAYHYNA1f/8GA8yMDI2MTAyNjE5NTUxOFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDI2MTk1NTE4WjAvBgkqhkiG9w0BCQQxIgQg51Juf1pFFNWGKK9mtJriiWDkYFjrafysah9SAHmiEVMwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwOc90o5gtMJhFtvMTHH0zcSnJs2n/XP5Mu0sH+DNiW/1lsruu4x6pLnpNYCrES/5FAjEA0jQ2eshc2SG9tncmI9h549TLLH3z3nZx+r90DvHdYyRArdb2JyQ9iFhZQ6mnNkvO"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"6U0Dg4st3DxRfi6Yaejcr/EIT6u+Z2GKzgJBr2L8jKA="},"signature":"MEYCIQC9HFYn1hhVqmDbZhiVWGUxDKotoWhvgWoLXdwUsqH+QAIhAJTVLLyoqXgB1A45sAHWNB9cz5VnFeRAX7Wj3l4CqUk/"}}
build/torch-stable-abi210-cu126-aarch64-linux/symbols.json CHANGED
@@ -1,11 +1,11 @@
1
  {
2
  "schema_version": 1,
3
- "module": "_flash_attn2_cuda_460047c",
4
  "functions": [
5
  {
6
  "name": "flash_attn_func",
7
  "qualname": "flash_attn_func",
8
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
9
  "kind": "function",
10
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k: (batch_size, seqlen, nheads_k, headdim)\n v: (batch_size, seqlen, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
11
  "signature": {
@@ -83,7 +83,7 @@
83
  {
84
  "name": "flash_attn_kvpacked_func",
85
  "qualname": "flash_attn_kvpacked_func",
86
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
87
  "kind": "function",
88
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n kv: (batch_size, seqlen, 2, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
89
  "signature": {
@@ -155,7 +155,7 @@
155
  {
156
  "name": "flash_attn_qkvpacked_func",
157
  "qualname": "flash_attn_qkvpacked_func",
158
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
159
  "kind": "function",
160
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_kvpacked_func and flash_attn_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (batch_size, seqlen, 3, nheads, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|) is added to\n the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
161
  "signature": {
@@ -221,7 +221,7 @@
221
  {
222
  "name": "flash_attn_varlen_func",
223
  "qualname": "flash_attn_varlen_func",
224
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
225
  "kind": "function",
226
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in K, V with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n k: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n v: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
227
  "signature": {
@@ -329,7 +329,7 @@
329
  {
330
  "name": "flash_attn_varlen_kvpacked_func",
331
  "qualname": "flash_attn_varlen_kvpacked_func",
332
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
333
  "kind": "function",
334
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n kv: (total_k, 2, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
335
  "signature": {
@@ -425,7 +425,7 @@
425
  {
426
  "name": "flash_attn_varlen_qkvpacked_func",
427
  "qualname": "flash_attn_varlen_qkvpacked_func",
428
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
429
  "kind": "function",
430
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_varlen_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_varlen_kvpacked_func and flash_attn_varlen_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (total, 3, nheads, headdim), where total = total number of tokens in the batch.\n cu_seqlens: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into qkv.\n max_seqlen: int. Maximum sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
431
  "signature": {
@@ -503,7 +503,7 @@
503
  {
504
  "name": "flash_attn_with_kvcache",
505
  "qualname": "flash_attn_with_kvcache",
506
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
507
  "kind": "function",
508
  "doc": "If k and v are not None, k_cache and v_cache will be updated *inplace* with the new values from\nk and v. This is useful for incremental decoding: you can pass in the cached keys/values from\nthe previous step, and update them with the new keys/values from the current step, and do\nattention with the updated cache, all in 1 kernel.\n\nIf you pass in k / v, you must make sure that the cache is large enough to hold the new values.\nFor example, the KV cache could be pre-allocated with the max sequence length, and you can use\ncache_seqlens to keep track of the current sequence lengths of each sequence in the batch.\n\nAlso apply rotary embedding if rotary_cos and rotary_sin are passed in. The key @k will be\nrotated by rotary_cos and rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf causal or local (i.e., window_size != (-1, -1)), the query @q will be rotated by rotary_cos\nand rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf not causal and not local, the query @q will be rotated by rotary_cos and rotary_sin at\nindices cache_seqlens only (i.e. we consider all tokens in @q to be at position cache_seqlens).\n\nSee tests/test_flash_attn.py::test_flash_attn_kvcache for examples of how to use this function.\n\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nNote: Does not support backward pass.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n page_block_size must be a multiple of 256.\n v_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n k [optional]: (batch_size, seqlen_new, nheads_k, headdim). If not None, we concatenate\n k with k_cache, starting at the indices specified by cache_seqlens.\n v [optional]: (batch_size, seqlen_new, nheads_k, headdim). Similar to k.\n rotary_cos [optional]: (seqlen_ro, rotary_dim / 2). If not None, we apply rotary embedding\n to k and q. Only applicable if k and v are passed in. rotary_dim must be divisible by 16.\n rotary_sin [optional]: (seqlen_ro, rotary_dim / 2). Similar to rotary_cos.\n cache_seqlens: int, or (batch_size,), dtype torch.int32. The sequence lengths of the\n KV cache.\n cache_batch_idx: (batch_size,), dtype torch.int32. The indices used to index into the KV cache.\n If None, we assume that the batch indices are [0, 1, 2, ..., batch_size - 1].\n If the indices are not distinct, and k and v are provided, the values updated in the cache\n might come from any of the duplicate indices.\n cache_leftpad: (batch_size,), dtype torch.int32. The index that the KV cache starts. If None, assume 0.\n block_table [optional]: (batch_size, max_num_blocks_per_seq), dtype torch.int32.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n rotary_interleaved: bool. Only applicable if rotary_cos and rotary_sin are passed in.\n If True, rotary embedding will combine dimensions 0 & 1, 2 & 3, etc. If False,\n rotary embedding will combine dimensions 0 & rotary_dim / 2, 1 & rotary_dim / 2 + 1\n (i.e. GPT-NeoX style).\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n num_splits: int. If > 1, split the key/value into this many chunks along the sequence.\n If num_splits == 1, we don't split the key/value. If num_splits == 0, we use a heuristic\n to automatically determine the number of splits.\n Don't change this unless you know what you are doing.\n return_softmax_lse: bool. Whether to return the logsumexp of the attention scores.\n\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_softmax_lse=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).",
509
  "signature": {
@@ -629,7 +629,7 @@
629
  {
630
  "name": "fwd",
631
  "qualname": "fwd",
632
- "module": "_flash_attn2_cuda_460047c",
633
  "kind": "function",
634
  "doc": "Forward pass for multi-head attention.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Optional output tensor, same shape as q\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
635
  "signature": {
@@ -719,7 +719,7 @@
719
  {
720
  "name": "varlen_fwd",
721
  "qualname": "varlen_fwd",
722
- "module": "_flash_attn2_cuda_460047c",
723
  "kind": "function",
724
  "doc": "Forward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n q: Query tensor of shape [total_q, num_heads, head_size]\n k: Key tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n v: Value tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n out: Optional output tensor of shape [total_q, num_heads, head_size]\n seqused_k: Optional tensor specifying how many keys to use per batch element [batch_size]\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
725
  "signature": {
@@ -857,7 +857,7 @@
857
  {
858
  "name": "bwd",
859
  "qualname": "bwd",
860
- "module": "_flash_attn2_cuda_460047c",
861
  "kind": "function",
862
  "doc": "Backward pass for multi-head attention.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
863
  "signature": {
@@ -983,7 +983,7 @@
983
  {
984
  "name": "varlen_bwd",
985
  "qualname": "varlen_bwd",
986
- "module": "_flash_attn2_cuda_460047c",
987
  "kind": "function",
988
  "doc": "Backward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
989
  "signature": {
@@ -1139,7 +1139,7 @@
1139
  {
1140
  "name": "fwd_kvcache",
1141
  "qualname": "fwd_kvcache",
1142
- "module": "_flash_attn2_cuda_460047c",
1143
  "kind": "function",
1144
  "doc": "Forward pass for multi-head attention with KV cache.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n kcache: Key cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n vcache: Value cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n k: Optional new keys tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n v: Optional new values tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n seqlens_k: Optional sequence lengths for keys of shape [batch_size]\n rotary_cos: Optional rotary cosine tensor of shape [seqlen_ro, rotary_dim/2]\n rotary_sin: Optional rotary sine tensor of shape [seqlen_ro, rotary_dim/2]\n cache_batch_idx: Optional indices to index into the KV cache\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n out: Optional output tensor, same shape as q\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n is_rotary_interleaved: Whether rotary embeddings are interleaved\n num_splits: Number of splits for computation\n\nReturns:\n List of tensors: [output, softmax_lse]",
1145
  "signature": {
 
1
  {
2
  "schema_version": 1,
3
+ "module": "_flash_attn2_cuda_18153cd",
4
  "functions": [
5
  {
6
  "name": "flash_attn_func",
7
  "qualname": "flash_attn_func",
8
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
9
  "kind": "function",
10
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k: (batch_size, seqlen, nheads_k, headdim)\n v: (batch_size, seqlen, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
11
  "signature": {
 
83
  {
84
  "name": "flash_attn_kvpacked_func",
85
  "qualname": "flash_attn_kvpacked_func",
86
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
87
  "kind": "function",
88
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n kv: (batch_size, seqlen, 2, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
89
  "signature": {
 
155
  {
156
  "name": "flash_attn_qkvpacked_func",
157
  "qualname": "flash_attn_qkvpacked_func",
158
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
159
  "kind": "function",
160
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_kvpacked_func and flash_attn_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (batch_size, seqlen, 3, nheads, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|) is added to\n the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
161
  "signature": {
 
221
  {
222
  "name": "flash_attn_varlen_func",
223
  "qualname": "flash_attn_varlen_func",
224
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
225
  "kind": "function",
226
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in K, V with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n k: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n v: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
227
  "signature": {
 
329
  {
330
  "name": "flash_attn_varlen_kvpacked_func",
331
  "qualname": "flash_attn_varlen_kvpacked_func",
332
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
333
  "kind": "function",
334
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n kv: (total_k, 2, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
335
  "signature": {
 
425
  {
426
  "name": "flash_attn_varlen_qkvpacked_func",
427
  "qualname": "flash_attn_varlen_qkvpacked_func",
428
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
429
  "kind": "function",
430
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_varlen_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_varlen_kvpacked_func and flash_attn_varlen_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (total, 3, nheads, headdim), where total = total number of tokens in the batch.\n cu_seqlens: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into qkv.\n max_seqlen: int. Maximum sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
431
  "signature": {
 
503
  {
504
  "name": "flash_attn_with_kvcache",
505
  "qualname": "flash_attn_with_kvcache",
506
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
507
  "kind": "function",
508
  "doc": "If k and v are not None, k_cache and v_cache will be updated *inplace* with the new values from\nk and v. This is useful for incremental decoding: you can pass in the cached keys/values from\nthe previous step, and update them with the new keys/values from the current step, and do\nattention with the updated cache, all in 1 kernel.\n\nIf you pass in k / v, you must make sure that the cache is large enough to hold the new values.\nFor example, the KV cache could be pre-allocated with the max sequence length, and you can use\ncache_seqlens to keep track of the current sequence lengths of each sequence in the batch.\n\nAlso apply rotary embedding if rotary_cos and rotary_sin are passed in. The key @k will be\nrotated by rotary_cos and rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf causal or local (i.e., window_size != (-1, -1)), the query @q will be rotated by rotary_cos\nand rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf not causal and not local, the query @q will be rotated by rotary_cos and rotary_sin at\nindices cache_seqlens only (i.e. we consider all tokens in @q to be at position cache_seqlens).\n\nSee tests/test_flash_attn.py::test_flash_attn_kvcache for examples of how to use this function.\n\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nNote: Does not support backward pass.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n page_block_size must be a multiple of 256.\n v_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n k [optional]: (batch_size, seqlen_new, nheads_k, headdim). If not None, we concatenate\n k with k_cache, starting at the indices specified by cache_seqlens.\n v [optional]: (batch_size, seqlen_new, nheads_k, headdim). Similar to k.\n rotary_cos [optional]: (seqlen_ro, rotary_dim / 2). If not None, we apply rotary embedding\n to k and q. Only applicable if k and v are passed in. rotary_dim must be divisible by 16.\n rotary_sin [optional]: (seqlen_ro, rotary_dim / 2). Similar to rotary_cos.\n cache_seqlens: int, or (batch_size,), dtype torch.int32. The sequence lengths of the\n KV cache.\n cache_batch_idx: (batch_size,), dtype torch.int32. The indices used to index into the KV cache.\n If None, we assume that the batch indices are [0, 1, 2, ..., batch_size - 1].\n If the indices are not distinct, and k and v are provided, the values updated in the cache\n might come from any of the duplicate indices.\n cache_leftpad: (batch_size,), dtype torch.int32. The index that the KV cache starts. If None, assume 0.\n block_table [optional]: (batch_size, max_num_blocks_per_seq), dtype torch.int32.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n rotary_interleaved: bool. Only applicable if rotary_cos and rotary_sin are passed in.\n If True, rotary embedding will combine dimensions 0 & 1, 2 & 3, etc. If False,\n rotary embedding will combine dimensions 0 & rotary_dim / 2, 1 & rotary_dim / 2 + 1\n (i.e. GPT-NeoX style).\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n num_splits: int. If > 1, split the key/value into this many chunks along the sequence.\n If num_splits == 1, we don't split the key/value. If num_splits == 0, we use a heuristic\n to automatically determine the number of splits.\n Don't change this unless you know what you are doing.\n return_softmax_lse: bool. Whether to return the logsumexp of the attention scores.\n\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_softmax_lse=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).",
509
  "signature": {
 
629
  {
630
  "name": "fwd",
631
  "qualname": "fwd",
632
+ "module": "_flash_attn2_cuda_18153cd",
633
  "kind": "function",
634
  "doc": "Forward pass for multi-head attention.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Optional output tensor, same shape as q\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
635
  "signature": {
 
719
  {
720
  "name": "varlen_fwd",
721
  "qualname": "varlen_fwd",
722
+ "module": "_flash_attn2_cuda_18153cd",
723
  "kind": "function",
724
  "doc": "Forward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n q: Query tensor of shape [total_q, num_heads, head_size]\n k: Key tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n v: Value tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n out: Optional output tensor of shape [total_q, num_heads, head_size]\n seqused_k: Optional tensor specifying how many keys to use per batch element [batch_size]\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
725
  "signature": {
 
857
  {
858
  "name": "bwd",
859
  "qualname": "bwd",
860
+ "module": "_flash_attn2_cuda_18153cd",
861
  "kind": "function",
862
  "doc": "Backward pass for multi-head attention.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
863
  "signature": {
 
983
  {
984
  "name": "varlen_bwd",
985
  "qualname": "varlen_bwd",
986
+ "module": "_flash_attn2_cuda_18153cd",
987
  "kind": "function",
988
  "doc": "Backward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
989
  "signature": {
 
1139
  {
1140
  "name": "fwd_kvcache",
1141
  "qualname": "fwd_kvcache",
1142
+ "module": "_flash_attn2_cuda_18153cd",
1143
  "kind": "function",
1144
  "doc": "Forward pass for multi-head attention with KV cache.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n kcache: Key cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n vcache: Value cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n k: Optional new keys tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n v: Optional new values tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n seqlens_k: Optional sequence lengths for keys of shape [batch_size]\n rotary_cos: Optional rotary cosine tensor of shape [seqlen_ro, rotary_dim/2]\n rotary_sin: Optional rotary sine tensor of shape [seqlen_ro, rotary_dim/2]\n cache_batch_idx: Optional indices to index into the KV cache\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n out: Optional output tensor, same shape as q\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n is_rotary_interleaved: Whether rotary embeddings are interleaved\n num_splits: Number of splits for computation\n\nReturns:\n List of tensors: [output, softmax_lse]",
1145
  "signature": {
build/torch-stable-abi210-cu128-aarch64-linux/{_flash_attn2_cuda_460047c.abi3.so → _flash_attn2_cuda_18153cd.abi3.so} RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:cb60d33341a0f1262fa11d919c0776398651e327cdfeb7d21fad3c2aeaf8513b
3
  size 1036209976
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:82840cb79584e5c874fe788a9e62ccdb6c7164b5dfa882395e325238cd1ed4ad
3
  size 1036209976
build/torch-stable-abi210-cu128-aarch64-linux/_ops.py CHANGED
@@ -1,9 +1,9 @@
1
  import torch
2
- from . import _flash_attn2_cuda_460047c
3
- ops = torch.ops._flash_attn2_cuda_460047c
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
- return f"_flash_attn2_cuda_460047c::{op_name}"
 
1
  import torch
2
+ from . import _flash_attn2_cuda_18153cd
3
+ ops = torch.ops._flash_attn2_cuda_18153cd
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
+ return f"_flash_attn2_cuda_18153cd::{op_name}"
build/torch-stable-abi210-cu128-aarch64-linux/metadata.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "flash-attn2",
3
- "id": "_flash_attn2_cuda_460047c",
4
  "version": 4,
5
  "kernels-minver": "0.14.0",
6
  "license": "BSD-3-Clause",
@@ -19,20 +19,20 @@
19
  "algorithm": "sha256",
20
  "files": {
21
  "__init__.py": "Nz8hqrusjoUHQqszpxfF2USMwUXn1VfpvcmtAAvutSM=",
22
- "_flash_attn2_cuda_460047c.abi3.so": "y2DTM0Gg8SYvoR2RnAd2OYZR4yfN/rfSH608Kur4UTs=",
23
- "_ops.py": "DV4Eo4+s3aaNmDsfXoZiYKNLnRUJqlsdDGlMsdKFgk4=",
24
  "flash_attn_interface.py": "6UYUhfUax4+yOUygyS7K8dVjrIjU5GQr1AJ2gSp8rPo=",
25
- "symbols.json": "uvC+87tHUhtHv7L/Nl53T/Ms7ceX317/jwQBoqHY14A="
26
  }
27
  },
28
  "provenance": {
29
  "kernel-builder": {
30
  "version": "0.18.0-dev0",
31
- "commit": "d054906a13710b811b96697b4635f03020842733",
32
  "dirty": false
33
  },
34
  "kernel": {
35
- "commit": "460047c291fc7f0b3dbd4239b46bd5e1281b1806",
36
  "dirty": false
37
  }
38
  }
 
1
  {
2
  "name": "flash-attn2",
3
+ "id": "_flash_attn2_cuda_18153cd",
4
  "version": 4,
5
  "kernels-minver": "0.14.0",
6
  "license": "BSD-3-Clause",
 
19
  "algorithm": "sha256",
20
  "files": {
21
  "__init__.py": "Nz8hqrusjoUHQqszpxfF2USMwUXn1VfpvcmtAAvutSM=",
22
+ "_flash_attn2_cuda_18153cd.abi3.so": "goQMt5WE5ch0/niKnmLM22xxZLXfqII5XjJSOM0e1K0=",
23
+ "_ops.py": "OEGGtKiMxeERjOPhIchyq6H4g1NZegDCw0U6hBZPQcw=",
24
  "flash_attn_interface.py": "6UYUhfUax4+yOUygyS7K8dVjrIjU5GQr1AJ2gSp8rPo=",
25
+ "symbols.json": "OIur391E1YRjuOLt3sp+L6crAatjoIshDxNq6/odmYA="
26
  }
27
  },
28
  "provenance": {
29
  "kernel-builder": {
30
  "version": "0.18.0-dev0",
31
+ "commit": "d0ed138c0e5132e810e6fbbbc2a5c6981a9c7649",
32
  "dirty": false
33
  },
34
  "kernel": {
35
+ "commit": "18153cd077b6541e9c4cb98ad9678db4e1253d1f",
36
  "dirty": false
37
  }
38
  }
build/torch-stable-abi210-cu128-aarch64-linux/metadata.json.sigstore CHANGED
@@ -1 +1 @@
1
- {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"3430231150","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792800468","inclusionPromise":{"signedEntryTimestamp":"MEQCIGZLwd3J3l3V5DJXhWg+9EGadjCvaCWzPMsUG93F6kNJAiAP+kvJFeyEBb1JoFaYPSRaVko7A3De8lLTG9MmgfItug=="},"inclusionProof":{"logIndex":"3308326888","rootHash":"0dxDHKHJJNB18GUn1mFkbYi+mmMHAiKBJZiSnPoSq0M=","treeSize":"3308327082","hashes":["tEmdr9KY4X4wGUqr7YjGpLBDSzBdktM+iTNHlN/KVnI=","28a1JPd0NfARI9ataGIjKR2HImyILikAgZQlo9g3gR0=","HPdmEIkQK6TAzqM3AhOjMT2pV8lJmiBdHB4ecJvoH3c=","1oNpBskEERK7M/2IelxCy6dVBEIOAlrvMrekGwOEIhQ=","4ihQi/htRBQaP0gx9I9zFdpjlhs98HBFIi6y7MxxGEs=","fhi0wkcZ9wIt9C3ZoYSTiwPoztVF0FoG/M0C7cRQIjs=","/NfyecAkSIGEAZki6MTEL1vFqGHHJqwpejFj36u/6W8=","rIuKGGpr2xHVfYpBBBRmjjC1BSLVSY7CUZBWo+YwVe4=","D4KiQ6dLka04xW5SItSpf6u70l4OLIJY9TGL3Vgb7J4=","JHbO9SM0uiPdIUJoCFWlrHv/QNK/f6UMlwBq/6914+w=","PuwdRME/93l6s2BMRjCojmjsVC29KnBqdtPSPE1l6cQ=","tWdxtMrYqmZ0zKHnOCAERPP7SvuDvubtw3jwj7rH4uA=","kM+kX6uNUuDAQM/IB5IDAgZEYbCs+QGUBYxh34/qyC4=","8x0N/oAmvpY+6DQUGTU+i6a1Cuqphro2WbV5WZ/RHL8=","DMchGrSAeKV9qHo75XJV3UFZ/CHF8zofPRu+NgVRwA4=","V6dXjeDcwYxBG/9gVSBM8rYdPrAqGpZsf1e7v6l67GA=","iDfImp65w8dirRfYGNgFA34JTUYDWbcJwNBBU/Ok+X4=","YYCr61A8azar3dfO8Ct+pri7LqDxkUlUkfs7fiqYErU=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3308327082\n0dxDHKHJJNB18GUn1mFkbYi+mmMHAiKBJZiSnPoSq0M=\n\n— rekor.sigstore.dev wNI9ajBFAiBW2C60YRvrM9xE+1c/VFt32boXOn4+Am6CokqDb2PTJAIhALsoOhB00Myr6SMsAdAtJZkX1K3OPOb9DU6y/28bhshI\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJjNjRiNmQxNWQ4NWNkZTQ5YzJmMjQ1NTJiMmNiN2MyY2QyNWE3MTE5ZDlkOTRjOTg5OTQzMWNkOTQxNWRlNzFjIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUQ4aGFKZnFUSXkrSVVuRWxaK3NiM0tNWFRkUUF0OVF3K3grNENTOXI0MklBSWdFbXZlalF2dXBEVjd1UzFsYjNhUWxkcE9HNG5VeElmMmFIc0F6MlZOd0NVPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KSFowRjNTVUpCWjBsVlIySnJNVzV0ZVRoYWRFRjRWRmwwYTBZNU4zWjBNVk56UmpWM2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFU1RCTlJFRjNUbnBSTkZkb1kwNU5hbGw0VFVSSk1FMUVRWGhPZWxFMFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVUwVjFZMmEwaHVSRXhWU2xsNGFtaDRZVk51U25keU5rNUhNbXh5ZVdaV01uTk5Va3dLTWt0Wk9ITlNaVzlUVW10T2VGaGlVMFEyVVhKMlYwUmhTVmt2Y2pod1QyMHdaM0oyVW5kU1FqZFJXblpoWmtSR2IzRlBRMEprUVhkbloxaE5UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmN3VG1wQmR3cE9SR1JxVFdwcmVGcHRUVE5hYWtKcFRUSlNhVnBFVVhsTmVteHBUa1JhYVZwRVZteE5WRWswVFZkSmVFOUVRVEpOUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEWnpCT2FrRjNUa1JrYWsxcWEzaGFiVTB6Q2xwcVFtbE5NbEpwV2tSUmVVMTZiR2xPUkZwcFdrUldiRTFVU1RSTlYwbDRUMFJCTWsxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEWnpCT2FrRjNDazVFWkdwTmFtdDRXbTFOTTFwcVFtbE5NbEpwV2tSUmVVMTZiR2xPUkZwcFdrUldiRTFVU1RSTlYwbDRUMFJCTWsxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlPUkZsM1RVUlJNMWw2U1RWTlYxcHFUakpaZDFscVRtdFpiVkV3VFdwTk5WbHFVVEpaYlZFeFdsUkZlVTlFUm1rS1RWUm5kMDVxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUnJORTFxV1RCTlJGVjRUbE01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkS0NrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NITkZaVkZDTTBGSVZVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvWVhwM2MzQkJRVUZDUVUxQlVtcENSVUZwUVdOR1RrdHNZbnBoWW1JNU0xWlJLemRpZVhsaUwwWjVWMEkxVkhKdlZITklkd3BxY1hadWVsUkxPRzVCU1dkWE5WcGxkbmhzWW01Q2JXWTBlWHA2ZFZoSU1FOXFZVFp3YTI1R2Iyb3hXa3RTVlVaT2NHNTJPR1ZGZDBObldVbExiMXBKQ25wcU1FVkJkMDFFWVVGQmQxcFJTWGhCVDJFMU0yb3hkekJaV2s5VFVISlZlbEpEVlU5WVVXSjJhM3B5ZERWTGFXdFdhMkpYZVZkVVVHZGhOSGhhVDBFS2RYWlRSMnB4YVdveGExZGxURVYxYjNwUlNYZFBjRGxRVDNReWRqWk9TMG8zZWs5a2Ewa3dabFpJVUZoRmR6RTVlbXR6U1dWbE9FVjJibWMzY2tsbWVRbzRTRFE0VTFCUlltOUpiekJvY0cxUGJrVm9SQW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgJQV5D23yDAIgDTv4Yv16z9aMxggzPuqToqoPm4v8O38CFEC/mLVnKnZKvq7p+4Od4Odmb5WGGA8yMDI2MTAyNDAwMDc0OFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDI0MDAwNzQ4WjAvBgkqhkiG9w0BCQQxIgQgenxrO7f3Yd1WfiHFvp5639SGocPIHs05Wki1wZGRHSQwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIxAImlABvKBRPfu11mLxuiccH4LMnQ1qpM29/zxDdkh2Pnz0Kprgm0GSFMmudHlfC1fwIwHfUuF271l/bKNDbCMzTU4D82yvTYXe3RZTPvSXZN54VDTyO8WXA9uj5Pmd4Yuf3B"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"xkttFdhc3knC8kVSsst8LNJacRnZ2UyYmUMc2UFd5xw="},"signature":"MEUCIQD8haJfqTIy+IUnElZ+sb3KMXTdQAt9Qw+x+4CS9r42IAIgEmvejQvupDV7uS1lb3aQldpOG4nUxIf2aHsAz2VNwCU="}}
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"3495370778","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793044519","inclusionPromise":{"signedEntryTimestamp":"MEUCIEAykRLxTujfRq1WgvzS/4R4uvuIvjyATgAKsFLKScCxAiEAiysE5chvzNfyQIfWq1tXBSS0aO2LMfssZJrbG9PqvsE="},"inclusionProof":{"logIndex":"3373466516","rootHash":"rFBrBxu6Xgqo2FtM+aEAQTObIPIJVoC7XDswLKldQJ4=","treeSize":"3373466532","hashes":["2YJajN+so8mEJrSob0Irwwt4sC6hwgUR2zId8b6b1Qs=","jBBGQH7NqemA0rdB/MxIxt0RoCzXZbaG8UUjzz5ZK64=","HQGhSzxB0ghtcF3TBxac3GTHah2DVVNgUMloRzp+PK0=","BvVvaiecRQP0q3lL3EK1Ybx2zisaI4dCy9Y0KC4+rm8=","3lK0tu3KrZoYs0o6Is8dqMVRfEsIBfzQHbCgZ14gggg=","0wIq8Omxee6wHGsjdvNflKd9d7u6pMc0mIoGOIOhEMc=","JdUlmCJa+b2H/2gMiqt84GRygM8g0+YiRXeJpE05YWs=","kRLNN77vvOyyBa9CDKspTVkuMs6QcHvng38cR4NiXM8=","clWBq113e/VSBaHAtk7GiXZA4ekhdUDvGKGTPvs+Xv0=","AP1Gu3/J0eieIZMophuFtg5MjGG05ZDkCKVjbZ6u1Jc=","FM5ondRZhDi27kmSltSStj4O/ATXPz672VgA5aDgsr4=","LoMfGTs8fXIyNHYdO69USeIy3IiKviNIc6UY+e4Yvcg=","6isO7d5SZuUjk8FoC2N/4lrs2iljQ9nlCzDM90al4Mw=","zGfeoWKmrZlXMOvyi3R2GDbGpmI1skJW/wLTXCCgF0o=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3373466532\nrFBrBxu6Xgqo2FtM+aEAQTObIPIJVoC7XDswLKldQJ4=\n\n— rekor.sigstore.dev wNI9ajBFAiEA++FMEccTl8XPL4Jvb9sb8pmtXgD6D8v+Mxq00YHrze4CIE+Bc8UBXx9qJ1XmVfPcciFHIsdycK+pBK3vp4aAcK4W\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxMjNiMDVkZjIwODRlMDc5MzNhNjllOTI2MjdkNDFmOWMxZDA3NGMwMDg2N2M0NjlmNzBlY2VlNWM2MzUyNDUxIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQkRRb2F3Q1pWVGhJMXhSVG9vbityY0NGQUJweTQ5Q1F4TTd2bUIvR29iMUFpQUU4Yjk0Z0RXZjJqSExPaXo2RkJ1R0h6Sk1kRThWQ1Z0OGdpOFNkK3ZGQXc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KTFowRjNTVUpCWjBsVlNISTFNamRYVUZremVYbFdiM0paZGxScGJWWlZVbTg0UzBkQmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFU1RKTlZHc3hUbFJGTlZkb1kwNU5hbGw0VFVSSk1rMXFRWGRPVkVVMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZMYURCVlRrczRSR1pOZEcxbFRFTk1ZMHd6U1hoSkwweFVVVFZrUTB4NldFeHBXa3NLWmpaalVYbGlaWFZFYjFkWFVHTnFhazkxWTFRMVIyUnlRakpRVDJweGRXaHNUMm80YVhCNFN6WnhXbUZuUldkMVYzRlBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmQ0VDBSRk1RcE5NazVyVFVSak0xbHFXVEZPUkVac1QxZE5NRmt5U1RWUFIwWnJUMVJaTTA5SFVtbE9SMVY0VFdwVmVscEVSbTFOUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEWjNoUFJFVXhUVEpPYTAxRVl6TlphbGt4Q2s1RVJteFBWMDB3V1RKSk5VOUhSbXRQVkZrelQwZFNhVTVIVlhoTmFsVjZXa1JHYlUxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEWjNoUFJFVXhDazB5VG10TlJHTXpXV3BaTVU1RVJteFBWMDB3V1RKSk5VOUhSbXRQVkZrelQwZFNhVTVIVlhoTmFsVjZXa1JHYlUxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlOVkdkNFRsUk9hbHBFUVROT01ra3lUbFJSZUZwVWJHcE9SMDVwVDFSb2FGcEVhekpPZW1ocldXcFNiRTFVU1RFS1RUSlJlRnBxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRnd1RVUk5lRTlVWXpOT1JHZDRUV2s1YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvWldObllWcDNRVUZDUVUxQlVucENSa0ZwUWtneVkzWTJRbVpKWkdvdmREQlBSMWd4VmtWSUwwWTVUVFpXY1ZaMFJWcFJWQXBVUTJjNE9HSm1hM1YzU1doQlRIUTVjWGRGUW0xUk16WnFTM1J1ZUhNdmVFaE1ZMVkxWWxCNU9HOTVhbFp1ZDNaSGFrSXliWGxTYUUxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKalFVMUhVVU5OUlVWd2FWVkxjbTVxVDB0M2FFTnJNMkpDWWpFdlZFUk9NVkpYZG14R2RHVk9ibWRhUTNSc1YwWkNNSGcwUlRRS1NXdFJVVGRCYTBZclFXWjVVMnh4VDJSUlNYZEhPV05pVFVJM1ZrVm5jVXhqZVZocFNtcExUQ3RFVGxaRlpXdFJkMjF3YVRWSlZHeEdhbmcyYlZsd01ncEhTMFY0T0ROamVIQnlhbVZEWVc5MlNrdDZLd290TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgj9eAYV38vkDfO9smArUJJQinv5ScAUWUZdOg1rZh0dACFHRe2sy+1ZuovfOtbN75Q0I/1eQrGA8yMDI2MTAyNjE5NTUxOVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDI2MTk1NTE5WjAvBgkqhkiG9w0BCQQxIgQgLgHdAFQ/ekK+/bL98bBGrkkzRvJYNv95DC8/vkHB7sMwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxAPCo72xQ5j40WetvrmmS/pLWPrRoyaxOEsQlRKlampNlpbOiBRPhj7A67Zc5/BVyaAIxAOXlmuCqG6adooWiUiavvukxFfz4ND375GJYB8xwjxHyaoIOH5KeraQCotJZFZSMdA=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"EjsF3yCE4Hkzpp6SYn1B+cHQdMAIZ8Rp9w7O5cY1JFE="},"signature":"MEQCIBDQoawCZVThI1xRToon+rcCFABpy49CQxM7vmB/Gob1AiAE8b94gDWf2jHLOiz6FBuGHzJMdE8VCVt8gi8Sd+vFAw=="}}
build/torch-stable-abi210-cu128-aarch64-linux/symbols.json CHANGED
@@ -1,11 +1,11 @@
1
  {
2
  "schema_version": 1,
3
- "module": "_flash_attn2_cuda_460047c",
4
  "functions": [
5
  {
6
  "name": "flash_attn_func",
7
  "qualname": "flash_attn_func",
8
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
9
  "kind": "function",
10
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k: (batch_size, seqlen, nheads_k, headdim)\n v: (batch_size, seqlen, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
11
  "signature": {
@@ -83,7 +83,7 @@
83
  {
84
  "name": "flash_attn_kvpacked_func",
85
  "qualname": "flash_attn_kvpacked_func",
86
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
87
  "kind": "function",
88
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n kv: (batch_size, seqlen, 2, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
89
  "signature": {
@@ -155,7 +155,7 @@
155
  {
156
  "name": "flash_attn_qkvpacked_func",
157
  "qualname": "flash_attn_qkvpacked_func",
158
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
159
  "kind": "function",
160
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_kvpacked_func and flash_attn_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (batch_size, seqlen, 3, nheads, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|) is added to\n the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
161
  "signature": {
@@ -221,7 +221,7 @@
221
  {
222
  "name": "flash_attn_varlen_func",
223
  "qualname": "flash_attn_varlen_func",
224
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
225
  "kind": "function",
226
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in K, V with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n k: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n v: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
227
  "signature": {
@@ -329,7 +329,7 @@
329
  {
330
  "name": "flash_attn_varlen_kvpacked_func",
331
  "qualname": "flash_attn_varlen_kvpacked_func",
332
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
333
  "kind": "function",
334
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n kv: (total_k, 2, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
335
  "signature": {
@@ -425,7 +425,7 @@
425
  {
426
  "name": "flash_attn_varlen_qkvpacked_func",
427
  "qualname": "flash_attn_varlen_qkvpacked_func",
428
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
429
  "kind": "function",
430
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_varlen_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_varlen_kvpacked_func and flash_attn_varlen_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (total, 3, nheads, headdim), where total = total number of tokens in the batch.\n cu_seqlens: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into qkv.\n max_seqlen: int. Maximum sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
431
  "signature": {
@@ -503,7 +503,7 @@
503
  {
504
  "name": "flash_attn_with_kvcache",
505
  "qualname": "flash_attn_with_kvcache",
506
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
507
  "kind": "function",
508
  "doc": "If k and v are not None, k_cache and v_cache will be updated *inplace* with the new values from\nk and v. This is useful for incremental decoding: you can pass in the cached keys/values from\nthe previous step, and update them with the new keys/values from the current step, and do\nattention with the updated cache, all in 1 kernel.\n\nIf you pass in k / v, you must make sure that the cache is large enough to hold the new values.\nFor example, the KV cache could be pre-allocated with the max sequence length, and you can use\ncache_seqlens to keep track of the current sequence lengths of each sequence in the batch.\n\nAlso apply rotary embedding if rotary_cos and rotary_sin are passed in. The key @k will be\nrotated by rotary_cos and rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf causal or local (i.e., window_size != (-1, -1)), the query @q will be rotated by rotary_cos\nand rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf not causal and not local, the query @q will be rotated by rotary_cos and rotary_sin at\nindices cache_seqlens only (i.e. we consider all tokens in @q to be at position cache_seqlens).\n\nSee tests/test_flash_attn.py::test_flash_attn_kvcache for examples of how to use this function.\n\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nNote: Does not support backward pass.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n page_block_size must be a multiple of 256.\n v_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n k [optional]: (batch_size, seqlen_new, nheads_k, headdim). If not None, we concatenate\n k with k_cache, starting at the indices specified by cache_seqlens.\n v [optional]: (batch_size, seqlen_new, nheads_k, headdim). Similar to k.\n rotary_cos [optional]: (seqlen_ro, rotary_dim / 2). If not None, we apply rotary embedding\n to k and q. Only applicable if k and v are passed in. rotary_dim must be divisible by 16.\n rotary_sin [optional]: (seqlen_ro, rotary_dim / 2). Similar to rotary_cos.\n cache_seqlens: int, or (batch_size,), dtype torch.int32. The sequence lengths of the\n KV cache.\n cache_batch_idx: (batch_size,), dtype torch.int32. The indices used to index into the KV cache.\n If None, we assume that the batch indices are [0, 1, 2, ..., batch_size - 1].\n If the indices are not distinct, and k and v are provided, the values updated in the cache\n might come from any of the duplicate indices.\n cache_leftpad: (batch_size,), dtype torch.int32. The index that the KV cache starts. If None, assume 0.\n block_table [optional]: (batch_size, max_num_blocks_per_seq), dtype torch.int32.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n rotary_interleaved: bool. Only applicable if rotary_cos and rotary_sin are passed in.\n If True, rotary embedding will combine dimensions 0 & 1, 2 & 3, etc. If False,\n rotary embedding will combine dimensions 0 & rotary_dim / 2, 1 & rotary_dim / 2 + 1\n (i.e. GPT-NeoX style).\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n num_splits: int. If > 1, split the key/value into this many chunks along the sequence.\n If num_splits == 1, we don't split the key/value. If num_splits == 0, we use a heuristic\n to automatically determine the number of splits.\n Don't change this unless you know what you are doing.\n return_softmax_lse: bool. Whether to return the logsumexp of the attention scores.\n\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_softmax_lse=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).",
509
  "signature": {
@@ -629,7 +629,7 @@
629
  {
630
  "name": "fwd",
631
  "qualname": "fwd",
632
- "module": "_flash_attn2_cuda_460047c",
633
  "kind": "function",
634
  "doc": "Forward pass for multi-head attention.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Optional output tensor, same shape as q\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
635
  "signature": {
@@ -719,7 +719,7 @@
719
  {
720
  "name": "varlen_fwd",
721
  "qualname": "varlen_fwd",
722
- "module": "_flash_attn2_cuda_460047c",
723
  "kind": "function",
724
  "doc": "Forward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n q: Query tensor of shape [total_q, num_heads, head_size]\n k: Key tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n v: Value tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n out: Optional output tensor of shape [total_q, num_heads, head_size]\n seqused_k: Optional tensor specifying how many keys to use per batch element [batch_size]\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
725
  "signature": {
@@ -857,7 +857,7 @@
857
  {
858
  "name": "bwd",
859
  "qualname": "bwd",
860
- "module": "_flash_attn2_cuda_460047c",
861
  "kind": "function",
862
  "doc": "Backward pass for multi-head attention.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
863
  "signature": {
@@ -983,7 +983,7 @@
983
  {
984
  "name": "varlen_bwd",
985
  "qualname": "varlen_bwd",
986
- "module": "_flash_attn2_cuda_460047c",
987
  "kind": "function",
988
  "doc": "Backward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
989
  "signature": {
@@ -1139,7 +1139,7 @@
1139
  {
1140
  "name": "fwd_kvcache",
1141
  "qualname": "fwd_kvcache",
1142
- "module": "_flash_attn2_cuda_460047c",
1143
  "kind": "function",
1144
  "doc": "Forward pass for multi-head attention with KV cache.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n kcache: Key cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n vcache: Value cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n k: Optional new keys tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n v: Optional new values tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n seqlens_k: Optional sequence lengths for keys of shape [batch_size]\n rotary_cos: Optional rotary cosine tensor of shape [seqlen_ro, rotary_dim/2]\n rotary_sin: Optional rotary sine tensor of shape [seqlen_ro, rotary_dim/2]\n cache_batch_idx: Optional indices to index into the KV cache\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n out: Optional output tensor, same shape as q\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n is_rotary_interleaved: Whether rotary embeddings are interleaved\n num_splits: Number of splits for computation\n\nReturns:\n List of tensors: [output, softmax_lse]",
1145
  "signature": {
 
1
  {
2
  "schema_version": 1,
3
+ "module": "_flash_attn2_cuda_18153cd",
4
  "functions": [
5
  {
6
  "name": "flash_attn_func",
7
  "qualname": "flash_attn_func",
8
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
9
  "kind": "function",
10
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k: (batch_size, seqlen, nheads_k, headdim)\n v: (batch_size, seqlen, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
11
  "signature": {
 
83
  {
84
  "name": "flash_attn_kvpacked_func",
85
  "qualname": "flash_attn_kvpacked_func",
86
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
87
  "kind": "function",
88
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n kv: (batch_size, seqlen, 2, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
89
  "signature": {
 
155
  {
156
  "name": "flash_attn_qkvpacked_func",
157
  "qualname": "flash_attn_qkvpacked_func",
158
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
159
  "kind": "function",
160
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_kvpacked_func and flash_attn_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (batch_size, seqlen, 3, nheads, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|) is added to\n the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
161
  "signature": {
 
221
  {
222
  "name": "flash_attn_varlen_func",
223
  "qualname": "flash_attn_varlen_func",
224
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
225
  "kind": "function",
226
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in K, V with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n k: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n v: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
227
  "signature": {
 
329
  {
330
  "name": "flash_attn_varlen_kvpacked_func",
331
  "qualname": "flash_attn_varlen_kvpacked_func",
332
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
333
  "kind": "function",
334
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n kv: (total_k, 2, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
335
  "signature": {
 
425
  {
426
  "name": "flash_attn_varlen_qkvpacked_func",
427
  "qualname": "flash_attn_varlen_qkvpacked_func",
428
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
429
  "kind": "function",
430
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_varlen_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_varlen_kvpacked_func and flash_attn_varlen_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (total, 3, nheads, headdim), where total = total number of tokens in the batch.\n cu_seqlens: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into qkv.\n max_seqlen: int. Maximum sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
431
  "signature": {
 
503
  {
504
  "name": "flash_attn_with_kvcache",
505
  "qualname": "flash_attn_with_kvcache",
506
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
507
  "kind": "function",
508
  "doc": "If k and v are not None, k_cache and v_cache will be updated *inplace* with the new values from\nk and v. This is useful for incremental decoding: you can pass in the cached keys/values from\nthe previous step, and update them with the new keys/values from the current step, and do\nattention with the updated cache, all in 1 kernel.\n\nIf you pass in k / v, you must make sure that the cache is large enough to hold the new values.\nFor example, the KV cache could be pre-allocated with the max sequence length, and you can use\ncache_seqlens to keep track of the current sequence lengths of each sequence in the batch.\n\nAlso apply rotary embedding if rotary_cos and rotary_sin are passed in. The key @k will be\nrotated by rotary_cos and rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf causal or local (i.e., window_size != (-1, -1)), the query @q will be rotated by rotary_cos\nand rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf not causal and not local, the query @q will be rotated by rotary_cos and rotary_sin at\nindices cache_seqlens only (i.e. we consider all tokens in @q to be at position cache_seqlens).\n\nSee tests/test_flash_attn.py::test_flash_attn_kvcache for examples of how to use this function.\n\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nNote: Does not support backward pass.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n page_block_size must be a multiple of 256.\n v_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n k [optional]: (batch_size, seqlen_new, nheads_k, headdim). If not None, we concatenate\n k with k_cache, starting at the indices specified by cache_seqlens.\n v [optional]: (batch_size, seqlen_new, nheads_k, headdim). Similar to k.\n rotary_cos [optional]: (seqlen_ro, rotary_dim / 2). If not None, we apply rotary embedding\n to k and q. Only applicable if k and v are passed in. rotary_dim must be divisible by 16.\n rotary_sin [optional]: (seqlen_ro, rotary_dim / 2). Similar to rotary_cos.\n cache_seqlens: int, or (batch_size,), dtype torch.int32. The sequence lengths of the\n KV cache.\n cache_batch_idx: (batch_size,), dtype torch.int32. The indices used to index into the KV cache.\n If None, we assume that the batch indices are [0, 1, 2, ..., batch_size - 1].\n If the indices are not distinct, and k and v are provided, the values updated in the cache\n might come from any of the duplicate indices.\n cache_leftpad: (batch_size,), dtype torch.int32. The index that the KV cache starts. If None, assume 0.\n block_table [optional]: (batch_size, max_num_blocks_per_seq), dtype torch.int32.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n rotary_interleaved: bool. Only applicable if rotary_cos and rotary_sin are passed in.\n If True, rotary embedding will combine dimensions 0 & 1, 2 & 3, etc. If False,\n rotary embedding will combine dimensions 0 & rotary_dim / 2, 1 & rotary_dim / 2 + 1\n (i.e. GPT-NeoX style).\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n num_splits: int. If > 1, split the key/value into this many chunks along the sequence.\n If num_splits == 1, we don't split the key/value. If num_splits == 0, we use a heuristic\n to automatically determine the number of splits.\n Don't change this unless you know what you are doing.\n return_softmax_lse: bool. Whether to return the logsumexp of the attention scores.\n\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_softmax_lse=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).",
509
  "signature": {
 
629
  {
630
  "name": "fwd",
631
  "qualname": "fwd",
632
+ "module": "_flash_attn2_cuda_18153cd",
633
  "kind": "function",
634
  "doc": "Forward pass for multi-head attention.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Optional output tensor, same shape as q\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
635
  "signature": {
 
719
  {
720
  "name": "varlen_fwd",
721
  "qualname": "varlen_fwd",
722
+ "module": "_flash_attn2_cuda_18153cd",
723
  "kind": "function",
724
  "doc": "Forward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n q: Query tensor of shape [total_q, num_heads, head_size]\n k: Key tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n v: Value tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n out: Optional output tensor of shape [total_q, num_heads, head_size]\n seqused_k: Optional tensor specifying how many keys to use per batch element [batch_size]\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
725
  "signature": {
 
857
  {
858
  "name": "bwd",
859
  "qualname": "bwd",
860
+ "module": "_flash_attn2_cuda_18153cd",
861
  "kind": "function",
862
  "doc": "Backward pass for multi-head attention.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
863
  "signature": {
 
983
  {
984
  "name": "varlen_bwd",
985
  "qualname": "varlen_bwd",
986
+ "module": "_flash_attn2_cuda_18153cd",
987
  "kind": "function",
988
  "doc": "Backward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
989
  "signature": {
 
1139
  {
1140
  "name": "fwd_kvcache",
1141
  "qualname": "fwd_kvcache",
1142
+ "module": "_flash_attn2_cuda_18153cd",
1143
  "kind": "function",
1144
  "doc": "Forward pass for multi-head attention with KV cache.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n kcache: Key cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n vcache: Value cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n k: Optional new keys tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n v: Optional new values tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n seqlens_k: Optional sequence lengths for keys of shape [batch_size]\n rotary_cos: Optional rotary cosine tensor of shape [seqlen_ro, rotary_dim/2]\n rotary_sin: Optional rotary sine tensor of shape [seqlen_ro, rotary_dim/2]\n cache_batch_idx: Optional indices to index into the KV cache\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n out: Optional output tensor, same shape as q\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n is_rotary_interleaved: Whether rotary embeddings are interleaved\n num_splits: Number of splits for computation\n\nReturns:\n List of tensors: [output, softmax_lse]",
1145
  "signature": {
build/torch-stable-abi210-cu130-aarch64-linux/{_flash_attn2_cuda_460047c.abi3.so → _flash_attn2_cuda_18153cd.abi3.so} RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:5d3349b4e099095c41123643df2cbff49c7065bf03fb5ae0d88f598cd721e413
3
  size 1005585784
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:34d3696b76130f5e0f670dc9326cb421cfb7101be5552f5b4e9428c6935906e7
3
  size 1005585784
build/torch-stable-abi210-cu130-aarch64-linux/_ops.py CHANGED
@@ -1,9 +1,9 @@
1
  import torch
2
- from . import _flash_attn2_cuda_460047c
3
- ops = torch.ops._flash_attn2_cuda_460047c
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
- return f"_flash_attn2_cuda_460047c::{op_name}"
 
1
  import torch
2
+ from . import _flash_attn2_cuda_18153cd
3
+ ops = torch.ops._flash_attn2_cuda_18153cd
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
+ return f"_flash_attn2_cuda_18153cd::{op_name}"
build/torch-stable-abi210-cu130-aarch64-linux/metadata.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "flash-attn2",
3
- "id": "_flash_attn2_cuda_460047c",
4
  "version": 4,
5
  "kernels-minver": "0.14.0",
6
  "license": "BSD-3-Clause",
@@ -19,20 +19,20 @@
19
  "algorithm": "sha256",
20
  "files": {
21
  "__init__.py": "Nz8hqrusjoUHQqszpxfF2USMwUXn1VfpvcmtAAvutSM=",
22
- "_flash_attn2_cuda_460047c.abi3.so": "XTNJtOCZCVxBEjZD3yy/9JxwZb8D+1rg2I9ZjNch5BM=",
23
- "_ops.py": "DV4Eo4+s3aaNmDsfXoZiYKNLnRUJqlsdDGlMsdKFgk4=",
24
  "flash_attn_interface.py": "6UYUhfUax4+yOUygyS7K8dVjrIjU5GQr1AJ2gSp8rPo=",
25
- "symbols.json": "uvC+87tHUhtHv7L/Nl53T/Ms7ceX317/jwQBoqHY14A="
26
  }
27
  },
28
  "provenance": {
29
  "kernel-builder": {
30
  "version": "0.18.0-dev0",
31
- "commit": "d054906a13710b811b96697b4635f03020842733",
32
  "dirty": false
33
  },
34
  "kernel": {
35
- "commit": "460047c291fc7f0b3dbd4239b46bd5e1281b1806",
36
  "dirty": false
37
  }
38
  }
 
1
  {
2
  "name": "flash-attn2",
3
+ "id": "_flash_attn2_cuda_18153cd",
4
  "version": 4,
5
  "kernels-minver": "0.14.0",
6
  "license": "BSD-3-Clause",
 
19
  "algorithm": "sha256",
20
  "files": {
21
  "__init__.py": "Nz8hqrusjoUHQqszpxfF2USMwUXn1VfpvcmtAAvutSM=",
22
+ "_flash_attn2_cuda_18153cd.abi3.so": "NNNpa3YTD14PZw3JMmy0Ic+3EBvlVS9bTpQoxpNZBuc=",
23
+ "_ops.py": "OEGGtKiMxeERjOPhIchyq6H4g1NZegDCw0U6hBZPQcw=",
24
  "flash_attn_interface.py": "6UYUhfUax4+yOUygyS7K8dVjrIjU5GQr1AJ2gSp8rPo=",
25
+ "symbols.json": "OIur391E1YRjuOLt3sp+L6crAatjoIshDxNq6/odmYA="
26
  }
27
  },
28
  "provenance": {
29
  "kernel-builder": {
30
  "version": "0.18.0-dev0",
31
+ "commit": "d0ed138c0e5132e810e6fbbbc2a5c6981a9c7649",
32
  "dirty": false
33
  },
34
  "kernel": {
35
+ "commit": "18153cd077b6541e9c4cb98ad9678db4e1253d1f",
36
  "dirty": false
37
  }
38
  }
build/torch-stable-abi210-cu130-aarch64-linux/metadata.json.sigstore CHANGED
@@ -1 +1 @@
1
- {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"3430231988","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792800470","inclusionPromise":{"signedEntryTimestamp":"MEYCIQCmHkPxEo6UA56CtGAvcd7tuGSq+BTh09PAdp32SFBZLgIhAPToHBO342Kcu8F0o+BGUR+W22R/ILnHLl73H3vqP8Lj"},"inclusionProof":{"logIndex":"3308327726","rootHash":"9j+WvjjLBQ6Dg17XvdJ7GaT9NstggA0SjQdvQa4SJls=","treeSize":"3308328149","hashes":["NMP7eOc8EnoNjTnvyncEDeeDSn30GrZLCo/z/YmE8Lw=","ICRVwZIV8m9NxN75D8+IxvBmuVn1gqs5Xh10I4RFKY0=","WBxEYgVoTGEhcWfbUQduXtRHERE8IK0oWSPwDHRLT/U=","MnnalYww5Z3KevmaBMHkF5DOiCuZDATeV5EhjKf50LM=","Tc0I1OuGp5qzxaeLQEWZyOeCB8SHUPvP0eNG/K38o2c=","YwDNh7SwtIh/zqCVP1jL0CyyakPPls+pxGBrL4UWnKU=","qg3u2EeN52cnvOm+KIKO7RMKmtx8rYCMwXusD5VORnc=","+9D72OvJMqE7pujmt6xkkyNsnwEo55yUuDk9sn3o+eY=","XjdWy49UvJFoNoQxicEvigURdRnav3eX5vfaEMQxdR0=","C4d/JSc723ScaFwqOj7Rp4UyeZlWzqzRqTehzamGn7Y=","hM/G+D/5k6TXc6r9PyzYqE/YqDRL1txJXgyl5W+peYg=","gdS39fsn5MOVlKluUgGY2sdKF3H5oauxkHMa7DSSNcg=","8x0N/oAmvpY+6DQUGTU+i6a1Cuqphro2WbV5WZ/RHL8=","DMchGrSAeKV9qHo75XJV3UFZ/CHF8zofPRu+NgVRwA4=","V6dXjeDcwYxBG/9gVSBM8rYdPrAqGpZsf1e7v6l67GA=","iDfImp65w8dirRfYGNgFA34JTUYDWbcJwNBBU/Ok+X4=","YYCr61A8azar3dfO8Ct+pri7LqDxkUlUkfs7fiqYErU=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3308328149\n9j+WvjjLBQ6Dg17XvdJ7GaT9NstggA0SjQdvQa4SJls=\n\n— rekor.sigstore.dev wNI9ajBEAiBZmvNl49SFK82hdRPtmAHH84wBRtvOKW++tQp9p62duwIga+rvFXCpKRulXzsOALA3vQv+xB+oJAiUe5ehKu+mpn4=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI3NjFhZjcxMTBkYjY5OThiODVhZGViYWYwMjdhZTA5MDI4ZDA5ZmNmNWUzYWI5MzMyM2VmMDU3NjA3MzFjODEzIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJSGZsUUlkZlh6dHVFM2V5VzFiQUdidkZGR1RsajZ2L3VsYlFCN3JHRVhvT0FpQWswRUs4aDc0NzluVUI3KzVvMVhleCtraTFmMUtCNlJhaUJ2TXBJOVVSdXc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1SRU5EUW5KUFowRjNTVUpCWjBsVlZqVmtReTlSYzAxWk1XZGtXR2dyY0hoMlZrOVVSbVl5Ym5oUmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFU1RCTlJFRjNUbnBWZDFkb1kwNU5hbGw0VFVSSk1FMUVRWGhPZWxWM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ3V1c1b1IwVkRjakJWY25aaFZUZEdTM0JSZW1oWk1FNU5TamNyVjB0UFoyUlVSbllLU3pFMVNGTjZTalppU1RFNU16TTBPRXBYWW1kSWFHTnVSSEZXV25Cc1lVSjVMMUJrVlhkRGFtOXZiVVpSVm13MlZXRlBRMEprU1hkbloxaFBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmN3VG1wQmR3cE9SR1JxVFdwcmVGcHRUVE5hYWtKcFRUSlNhVnBFVVhsTmVteHBUa1JhYVZwRVZteE5WRWswVFZkSmVFOUVRVEpOUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEWnpCT2FrRjNUa1JrYWsxcWEzaGFiVTB6Q2xwcVFtbE5NbEpwV2tSUmVVMTZiR2xPUkZwcFdrUldiRTFVU1RSTlYwbDRUMFJCTWsxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEWnpCT2FrRjNDazVFWkdwTmFtdDRXbTFOTTFwcVFtbE5NbEpwV2tSUmVVMTZiR2xPUkZwcFdrUldiRTFVU1RSTlYwbDRUMFJCTWsxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlPUkZsM1RVUlJNMWw2U1RWTlYxcHFUakpaZDFscVRtdFpiVkV3VFdwTk5WbHFVVEpaYlZFeFdsUkZlVTlFUm1rS1RWUm5kMDVxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUnJORTFxV1RCTlJGVjRUbE01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTUNrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NEQkZaWGRDTlVGSVkwRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvWVhwM01raG5RVUZDUVUxQlUwUkNSMEZwUlVFdmMyUjRja2x2U0hkWFRIUk1XVWd2ZWxOdGNUZGFkVXBXZEhkaldtaEdZd3BtWlhWRGQzUnhOSHBoV1VOSlVVUTVSRUpxYzNoeFJHaFhZWE0wYm1ZemNWcFhVbEJPS3pSU2ExazRibXhFVHpaRVRsQkdUR3RvUlVKRVFVdENaMmR4Q21ocmFrOVFVVkZFUVhkT2JrRkVRbXRCYWtKUWVrTktXa0kwWm1VMEsyZDFjRFJwUVhOa1EwMUtSRk15Y2paNWRFZ3paSGsyUmsxaGRWZEpXRXBWWkhvS1NHZzBkRWxaTVdwdFRrbDVNSGRQVFhORWEwTk5RVGRIUkU1T1NWTXdTaTgwZDI5RWNrVlZiR0phYlVnd016VjJWV3BNYkhSR1duVkxLMGxSYzJKMk53cGhPVEY1UVZWb1VYaFNUVE5hYXk5b1ZVbGtNMXBCUFQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg2QDIXWO9VN8DxxfI85ni4MORa8cBbgJH6V5ccpOXqAICFQCVAWSZuF6tN+YWnLggZoOKD7AHMRgPMjAyNjEwMjQwMDA3NTBaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAyNDAwMDc1MFowLwYJKoZIhvcNAQkEMSIEILc7Pdnq0+D+Wv63pX98gN3xy67OZdkEQ65gYLOVewlGMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQDZQTHmRv2fKD0ezY8hk7lM1sHXqDGsSEzg0Bv4I+zLjAoMOxk1sXFqPJzlAZQCBMkCMQDwXXtXkhgqlcXEdGdUQ07XYZS90rGgRNiBS0VauRqvEMKCSPehugeIoH5zoaBHYa8="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"dhr3EQ22mYuFreuvAnrgkCjQn89eOrkzI+8FdgcxyBM="},"signature":"MEQCIHflQIdfXztuE3eyW1bAGbvFFGTlj6v/ulbQB7rGEXoOAiAk0EK8h7479nUB7+5o1Xex+ki1f1KB6RaiBvMpI9URuw=="}}
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"3495370917","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793044520","inclusionPromise":{"signedEntryTimestamp":"MEYCIQCBKApc2W7E79NLbXng26gS2y4M+supcrV8v3qUILw7RgIhAOoaAqpOTz4ICpK8ZgZtlKPXd2HJ/Bgm5Lz/v0egf1VN"},"inclusionProof":{"logIndex":"3373466655","rootHash":"4NvSTmBLY0jHq/jqgTw/tAX2HwscdDkWzPpaYtp6S5k=","treeSize":"3373466670","hashes":["lotsmkE5pLtpZGNDn6TYYRfLNfQt1UUKMTLR8jEwkgk=","xVRx7r0mfk1nTdsyfej34CACtmfN3zZ6lNb2q8Lpxs8=","Vkhz4Zpw7V0Kv1u8meor7l206saYPFN4HGb2pRuiMhk=","9Jzp3R8EMIu1e62eHCXChioDJ78JXzluMPROR1pHdYY=","puUUYwyg5Eax35kwr8VNELhxIBaZro9eH0wPSCebrwA=","O1/d/eYJVK8UOCYzz+YcvPbB9gBsZ2H+no4SLc+iQN8=","01Gz2sd491oAvPVtodAVG3L+ZnlmRtNI3p2z1lAIMfU=","AP1Gu3/J0eieIZMophuFtg5MjGG05ZDkCKVjbZ6u1Jc=","FM5ondRZhDi27kmSltSStj4O/ATXPz672VgA5aDgsr4=","LoMfGTs8fXIyNHYdO69USeIy3IiKviNIc6UY+e4Yvcg=","6isO7d5SZuUjk8FoC2N/4lrs2iljQ9nlCzDM90al4Mw=","zGfeoWKmrZlXMOvyi3R2GDbGpmI1skJW/wLTXCCgF0o=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3373466670\n4NvSTmBLY0jHq/jqgTw/tAX2HwscdDkWzPpaYtp6S5k=\n\n— rekor.sigstore.dev wNI9ajBGAiEAiLnC95CughNwC8J68flI6qldP/kO9HWw28BIHDe2MQcCIQD/Mi/ehEPOOzkFiQQbG4U/YXkDQ1uewkk1/+Evhqbkng==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxOTFhN2Y5ODI0NDhiMjk1ZjE4MWJkNDE4Y2M5NWQ0NGZiNzRlMDFhNzBkNDNhOGE4M2Q5ZTM4OTU3YzA1MTNmIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJR3lpU1dFVUtlaDBaaGdQbE9ManBzeFVxUW1obytXb0ZBOE5hUlYybmFrRUFpQTcwL3FpZlFTbGdrQVlJN1Y2aFQzb2xmVk14d0JMTG8yZnRERTZYdFBmSkE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KSFowRjNTVUpCWjBsVldWcFZNMU5GVGk4ME0zRlVlVEI1U2pCc1ZWQTNaVzlvWWs1RmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFU1RKTlZHc3hUbFJKZDFkb1kwNU5hbGw0VFVSSk1rMXFRWGRPVkVsM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVVyY2xkMVprb3ZhWGcyYjBkdFJrTm5ZMko1YkRNeGJuRkVOVFZUVlVsMVQwTkxORTBLZG1KRVYyUXdObEJMTWtwWlRqWllkMDB2Y2toMk1HVnNRV2wyUjNKc1VsQTBVemwzTjBSNFRGZG5jVTV6YzFsQmVUWlBRMEprUVhkbloxaE5UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmQ0VDBSRk1RcE5NazVyVFVSak0xbHFXVEZPUkVac1QxZE5NRmt5U1RWUFIwWnJUMVJaTTA5SFVtbE9SMVY0VFdwVmVscEVSbTFOUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEWjNoUFJFVXhUVEpPYTAxRVl6TlphbGt4Q2s1RVJteFBWMDB3V1RKSk5VOUhSbXRQVkZrelQwZFNhVTVIVlhoTmFsVjZXa1JHYlUxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEWjNoUFJFVXhDazB5VG10TlJHTXpXV3BaTVU1RVJteFBWMDB3V1RKSk5VOUhSbXRQVkZrelQwZFNhVTVIVlhoTmFsVjZXa1JHYlUxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlOVkdkNFRsUk9hbHBFUVROT01ra3lUbFJSZUZwVWJHcE9SMDVwVDFSb2FGcEVhekpPZW1ocldXcFNiRTFVU1RFS1RUSlJlRnBxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRnd1RVUk5lRTlVWXpOT1JHZDRUV2s1YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkS0NrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NITkZaVkZDTTBGSVZVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvWldOblpIVlJRVUZDUVUxQlVtcENSVUZwUVZGSk16bFRVbEoyUldJMVJYTnVPR1ZMYlZwRWEyZEJaM3BTT1VkS1pTOTRWQXBXTWl0V2NHNUhlVGgzU1dka1ltYzRNR016Um01clV6QmpkSGxCTkhBekwzRjNVazlqV0hGdFNFTnRkbkZ1TUZGdWVYbGlSVWh2ZDBObldVbExiMXBKQ25wcU1FVkJkMDFFWVVGQmQxcFJTWGRSYm5ONFpWUjFja0ZFV0U5eGNYRXhhRVpWTmxkSlpEUjVjVk5tYUVWdWMyWjRNakoyV2pSVU5sTnRjREZYUzBzS2JtRnpWbVUwYlZKVWNtZG1SeTlPSzBGcVJVRjNlVGROVFhkbmNuQm5WMVV4Um5aMEsxVnhXRk13VW5oMmRFbENNWEJYV1ZCTGVVd3hVbUpHYkZWMFNBcFBjRXRLWnpOblNUUjVSRWxHVWpkelFtRXJTUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg45uI55sPJSCh57lIUl7iVM0xts7oKDJ3KX3eogik5g4CFQCX/35xk/tWtwPfJbApEf2RzoKTzhgPMjAyNjEwMjYxOTU1MjBaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAyNjE5NTUyMFowLwYJKoZIhvcNAQkEMSIEIFqP8md+itnMVIDX8uNFgAy0cA/SHI06kHWZuViNzKgPMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMQD1BkZWgiIh2Tj7kdqxT2m+fc12184SAngTUxuD3us9PQ6GCfe903nJmi0efB89PbUCMAvpMIuDkHkvI3Gw/k5cPfUbMTFc6aUNunph+PoDu6L3cxJ+N/jWODklXObyQeqXmw=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"GRp/mCRIspXxgb1BjMldRPt04Bpw1DqKg9njiVfAUT8="},"signature":"MEQCIGyiSWEUKeh0ZhgPlOLjpsxUqQmho+WoFA8NaRV2nakEAiA70/qifQSlgkAYI7V6hT3olfVMxwBLLo2ftDE6XtPfJA=="}}
build/torch-stable-abi210-cu130-aarch64-linux/symbols.json CHANGED
@@ -1,11 +1,11 @@
1
  {
2
  "schema_version": 1,
3
- "module": "_flash_attn2_cuda_460047c",
4
  "functions": [
5
  {
6
  "name": "flash_attn_func",
7
  "qualname": "flash_attn_func",
8
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
9
  "kind": "function",
10
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k: (batch_size, seqlen, nheads_k, headdim)\n v: (batch_size, seqlen, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
11
  "signature": {
@@ -83,7 +83,7 @@
83
  {
84
  "name": "flash_attn_kvpacked_func",
85
  "qualname": "flash_attn_kvpacked_func",
86
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
87
  "kind": "function",
88
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n kv: (batch_size, seqlen, 2, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
89
  "signature": {
@@ -155,7 +155,7 @@
155
  {
156
  "name": "flash_attn_qkvpacked_func",
157
  "qualname": "flash_attn_qkvpacked_func",
158
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
159
  "kind": "function",
160
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_kvpacked_func and flash_attn_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (batch_size, seqlen, 3, nheads, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|) is added to\n the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
161
  "signature": {
@@ -221,7 +221,7 @@
221
  {
222
  "name": "flash_attn_varlen_func",
223
  "qualname": "flash_attn_varlen_func",
224
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
225
  "kind": "function",
226
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in K, V with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n k: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n v: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
227
  "signature": {
@@ -329,7 +329,7 @@
329
  {
330
  "name": "flash_attn_varlen_kvpacked_func",
331
  "qualname": "flash_attn_varlen_kvpacked_func",
332
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
333
  "kind": "function",
334
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n kv: (total_k, 2, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
335
  "signature": {
@@ -425,7 +425,7 @@
425
  {
426
  "name": "flash_attn_varlen_qkvpacked_func",
427
  "qualname": "flash_attn_varlen_qkvpacked_func",
428
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
429
  "kind": "function",
430
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_varlen_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_varlen_kvpacked_func and flash_attn_varlen_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (total, 3, nheads, headdim), where total = total number of tokens in the batch.\n cu_seqlens: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into qkv.\n max_seqlen: int. Maximum sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
431
  "signature": {
@@ -503,7 +503,7 @@
503
  {
504
  "name": "flash_attn_with_kvcache",
505
  "qualname": "flash_attn_with_kvcache",
506
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
507
  "kind": "function",
508
  "doc": "If k and v are not None, k_cache and v_cache will be updated *inplace* with the new values from\nk and v. This is useful for incremental decoding: you can pass in the cached keys/values from\nthe previous step, and update them with the new keys/values from the current step, and do\nattention with the updated cache, all in 1 kernel.\n\nIf you pass in k / v, you must make sure that the cache is large enough to hold the new values.\nFor example, the KV cache could be pre-allocated with the max sequence length, and you can use\ncache_seqlens to keep track of the current sequence lengths of each sequence in the batch.\n\nAlso apply rotary embedding if rotary_cos and rotary_sin are passed in. The key @k will be\nrotated by rotary_cos and rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf causal or local (i.e., window_size != (-1, -1)), the query @q will be rotated by rotary_cos\nand rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf not causal and not local, the query @q will be rotated by rotary_cos and rotary_sin at\nindices cache_seqlens only (i.e. we consider all tokens in @q to be at position cache_seqlens).\n\nSee tests/test_flash_attn.py::test_flash_attn_kvcache for examples of how to use this function.\n\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nNote: Does not support backward pass.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n page_block_size must be a multiple of 256.\n v_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n k [optional]: (batch_size, seqlen_new, nheads_k, headdim). If not None, we concatenate\n k with k_cache, starting at the indices specified by cache_seqlens.\n v [optional]: (batch_size, seqlen_new, nheads_k, headdim). Similar to k.\n rotary_cos [optional]: (seqlen_ro, rotary_dim / 2). If not None, we apply rotary embedding\n to k and q. Only applicable if k and v are passed in. rotary_dim must be divisible by 16.\n rotary_sin [optional]: (seqlen_ro, rotary_dim / 2). Similar to rotary_cos.\n cache_seqlens: int, or (batch_size,), dtype torch.int32. The sequence lengths of the\n KV cache.\n cache_batch_idx: (batch_size,), dtype torch.int32. The indices used to index into the KV cache.\n If None, we assume that the batch indices are [0, 1, 2, ..., batch_size - 1].\n If the indices are not distinct, and k and v are provided, the values updated in the cache\n might come from any of the duplicate indices.\n cache_leftpad: (batch_size,), dtype torch.int32. The index that the KV cache starts. If None, assume 0.\n block_table [optional]: (batch_size, max_num_blocks_per_seq), dtype torch.int32.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n rotary_interleaved: bool. Only applicable if rotary_cos and rotary_sin are passed in.\n If True, rotary embedding will combine dimensions 0 & 1, 2 & 3, etc. If False,\n rotary embedding will combine dimensions 0 & rotary_dim / 2, 1 & rotary_dim / 2 + 1\n (i.e. GPT-NeoX style).\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n num_splits: int. If > 1, split the key/value into this many chunks along the sequence.\n If num_splits == 1, we don't split the key/value. If num_splits == 0, we use a heuristic\n to automatically determine the number of splits.\n Don't change this unless you know what you are doing.\n return_softmax_lse: bool. Whether to return the logsumexp of the attention scores.\n\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_softmax_lse=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).",
509
  "signature": {
@@ -629,7 +629,7 @@
629
  {
630
  "name": "fwd",
631
  "qualname": "fwd",
632
- "module": "_flash_attn2_cuda_460047c",
633
  "kind": "function",
634
  "doc": "Forward pass for multi-head attention.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Optional output tensor, same shape as q\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
635
  "signature": {
@@ -719,7 +719,7 @@
719
  {
720
  "name": "varlen_fwd",
721
  "qualname": "varlen_fwd",
722
- "module": "_flash_attn2_cuda_460047c",
723
  "kind": "function",
724
  "doc": "Forward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n q: Query tensor of shape [total_q, num_heads, head_size]\n k: Key tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n v: Value tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n out: Optional output tensor of shape [total_q, num_heads, head_size]\n seqused_k: Optional tensor specifying how many keys to use per batch element [batch_size]\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
725
  "signature": {
@@ -857,7 +857,7 @@
857
  {
858
  "name": "bwd",
859
  "qualname": "bwd",
860
- "module": "_flash_attn2_cuda_460047c",
861
  "kind": "function",
862
  "doc": "Backward pass for multi-head attention.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
863
  "signature": {
@@ -983,7 +983,7 @@
983
  {
984
  "name": "varlen_bwd",
985
  "qualname": "varlen_bwd",
986
- "module": "_flash_attn2_cuda_460047c",
987
  "kind": "function",
988
  "doc": "Backward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
989
  "signature": {
@@ -1139,7 +1139,7 @@
1139
  {
1140
  "name": "fwd_kvcache",
1141
  "qualname": "fwd_kvcache",
1142
- "module": "_flash_attn2_cuda_460047c",
1143
  "kind": "function",
1144
  "doc": "Forward pass for multi-head attention with KV cache.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n kcache: Key cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n vcache: Value cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n k: Optional new keys tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n v: Optional new values tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n seqlens_k: Optional sequence lengths for keys of shape [batch_size]\n rotary_cos: Optional rotary cosine tensor of shape [seqlen_ro, rotary_dim/2]\n rotary_sin: Optional rotary sine tensor of shape [seqlen_ro, rotary_dim/2]\n cache_batch_idx: Optional indices to index into the KV cache\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n out: Optional output tensor, same shape as q\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n is_rotary_interleaved: Whether rotary embeddings are interleaved\n num_splits: Number of splits for computation\n\nReturns:\n List of tensors: [output, softmax_lse]",
1145
  "signature": {
 
1
  {
2
  "schema_version": 1,
3
+ "module": "_flash_attn2_cuda_18153cd",
4
  "functions": [
5
  {
6
  "name": "flash_attn_func",
7
  "qualname": "flash_attn_func",
8
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
9
  "kind": "function",
10
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k: (batch_size, seqlen, nheads_k, headdim)\n v: (batch_size, seqlen, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
11
  "signature": {
 
83
  {
84
  "name": "flash_attn_kvpacked_func",
85
  "qualname": "flash_attn_kvpacked_func",
86
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
87
  "kind": "function",
88
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n kv: (batch_size, seqlen, 2, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
89
  "signature": {
 
155
  {
156
  "name": "flash_attn_qkvpacked_func",
157
  "qualname": "flash_attn_qkvpacked_func",
158
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
159
  "kind": "function",
160
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_kvpacked_func and flash_attn_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (batch_size, seqlen, 3, nheads, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|) is added to\n the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
161
  "signature": {
 
221
  {
222
  "name": "flash_attn_varlen_func",
223
  "qualname": "flash_attn_varlen_func",
224
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
225
  "kind": "function",
226
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in K, V with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n k: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n v: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
227
  "signature": {
 
329
  {
330
  "name": "flash_attn_varlen_kvpacked_func",
331
  "qualname": "flash_attn_varlen_kvpacked_func",
332
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
333
  "kind": "function",
334
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n kv: (total_k, 2, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
335
  "signature": {
 
425
  {
426
  "name": "flash_attn_varlen_qkvpacked_func",
427
  "qualname": "flash_attn_varlen_qkvpacked_func",
428
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
429
  "kind": "function",
430
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_varlen_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_varlen_kvpacked_func and flash_attn_varlen_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (total, 3, nheads, headdim), where total = total number of tokens in the batch.\n cu_seqlens: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into qkv.\n max_seqlen: int. Maximum sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
431
  "signature": {
 
503
  {
504
  "name": "flash_attn_with_kvcache",
505
  "qualname": "flash_attn_with_kvcache",
506
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
507
  "kind": "function",
508
  "doc": "If k and v are not None, k_cache and v_cache will be updated *inplace* with the new values from\nk and v. This is useful for incremental decoding: you can pass in the cached keys/values from\nthe previous step, and update them with the new keys/values from the current step, and do\nattention with the updated cache, all in 1 kernel.\n\nIf you pass in k / v, you must make sure that the cache is large enough to hold the new values.\nFor example, the KV cache could be pre-allocated with the max sequence length, and you can use\ncache_seqlens to keep track of the current sequence lengths of each sequence in the batch.\n\nAlso apply rotary embedding if rotary_cos and rotary_sin are passed in. The key @k will be\nrotated by rotary_cos and rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf causal or local (i.e., window_size != (-1, -1)), the query @q will be rotated by rotary_cos\nand rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf not causal and not local, the query @q will be rotated by rotary_cos and rotary_sin at\nindices cache_seqlens only (i.e. we consider all tokens in @q to be at position cache_seqlens).\n\nSee tests/test_flash_attn.py::test_flash_attn_kvcache for examples of how to use this function.\n\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nNote: Does not support backward pass.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n page_block_size must be a multiple of 256.\n v_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n k [optional]: (batch_size, seqlen_new, nheads_k, headdim). If not None, we concatenate\n k with k_cache, starting at the indices specified by cache_seqlens.\n v [optional]: (batch_size, seqlen_new, nheads_k, headdim). Similar to k.\n rotary_cos [optional]: (seqlen_ro, rotary_dim / 2). If not None, we apply rotary embedding\n to k and q. Only applicable if k and v are passed in. rotary_dim must be divisible by 16.\n rotary_sin [optional]: (seqlen_ro, rotary_dim / 2). Similar to rotary_cos.\n cache_seqlens: int, or (batch_size,), dtype torch.int32. The sequence lengths of the\n KV cache.\n cache_batch_idx: (batch_size,), dtype torch.int32. The indices used to index into the KV cache.\n If None, we assume that the batch indices are [0, 1, 2, ..., batch_size - 1].\n If the indices are not distinct, and k and v are provided, the values updated in the cache\n might come from any of the duplicate indices.\n cache_leftpad: (batch_size,), dtype torch.int32. The index that the KV cache starts. If None, assume 0.\n block_table [optional]: (batch_size, max_num_blocks_per_seq), dtype torch.int32.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n rotary_interleaved: bool. Only applicable if rotary_cos and rotary_sin are passed in.\n If True, rotary embedding will combine dimensions 0 & 1, 2 & 3, etc. If False,\n rotary embedding will combine dimensions 0 & rotary_dim / 2, 1 & rotary_dim / 2 + 1\n (i.e. GPT-NeoX style).\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n num_splits: int. If > 1, split the key/value into this many chunks along the sequence.\n If num_splits == 1, we don't split the key/value. If num_splits == 0, we use a heuristic\n to automatically determine the number of splits.\n Don't change this unless you know what you are doing.\n return_softmax_lse: bool. Whether to return the logsumexp of the attention scores.\n\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_softmax_lse=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).",
509
  "signature": {
 
629
  {
630
  "name": "fwd",
631
  "qualname": "fwd",
632
+ "module": "_flash_attn2_cuda_18153cd",
633
  "kind": "function",
634
  "doc": "Forward pass for multi-head attention.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Optional output tensor, same shape as q\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
635
  "signature": {
 
719
  {
720
  "name": "varlen_fwd",
721
  "qualname": "varlen_fwd",
722
+ "module": "_flash_attn2_cuda_18153cd",
723
  "kind": "function",
724
  "doc": "Forward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n q: Query tensor of shape [total_q, num_heads, head_size]\n k: Key tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n v: Value tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n out: Optional output tensor of shape [total_q, num_heads, head_size]\n seqused_k: Optional tensor specifying how many keys to use per batch element [batch_size]\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
725
  "signature": {
 
857
  {
858
  "name": "bwd",
859
  "qualname": "bwd",
860
+ "module": "_flash_attn2_cuda_18153cd",
861
  "kind": "function",
862
  "doc": "Backward pass for multi-head attention.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
863
  "signature": {
 
983
  {
984
  "name": "varlen_bwd",
985
  "qualname": "varlen_bwd",
986
+ "module": "_flash_attn2_cuda_18153cd",
987
  "kind": "function",
988
  "doc": "Backward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
989
  "signature": {
 
1139
  {
1140
  "name": "fwd_kvcache",
1141
  "qualname": "fwd_kvcache",
1142
+ "module": "_flash_attn2_cuda_18153cd",
1143
  "kind": "function",
1144
  "doc": "Forward pass for multi-head attention with KV cache.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n kcache: Key cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n vcache: Value cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n k: Optional new keys tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n v: Optional new values tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n seqlens_k: Optional sequence lengths for keys of shape [batch_size]\n rotary_cos: Optional rotary cosine tensor of shape [seqlen_ro, rotary_dim/2]\n rotary_sin: Optional rotary sine tensor of shape [seqlen_ro, rotary_dim/2]\n cache_batch_idx: Optional indices to index into the KV cache\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n out: Optional output tensor, same shape as q\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n is_rotary_interleaved: Whether rotary embeddings are interleaved\n num_splits: Number of splits for computation\n\nReturns:\n List of tensors: [output, softmax_lse]",
1145
  "signature": {
build/torch-stable-abi210-cu132-aarch64-linux/{_flash_attn2_cuda_460047c.abi3.so → _flash_attn2_cuda_18153cd.abi3.so} RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a3829f9e740fcc72ea67cd5334a6917943be836f86bd652957fd62f1e3aea3b9
3
- size 1021117888
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a6681fc92bb05151204d9985078d37c020223dacd3213c73ea5845d956bf322c
3
+ size 1015416256
build/torch-stable-abi210-cu132-aarch64-linux/_ops.py CHANGED
@@ -1,9 +1,9 @@
1
  import torch
2
- from . import _flash_attn2_cuda_460047c
3
- ops = torch.ops._flash_attn2_cuda_460047c
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
- return f"_flash_attn2_cuda_460047c::{op_name}"
 
1
  import torch
2
+ from . import _flash_attn2_cuda_18153cd
3
+ ops = torch.ops._flash_attn2_cuda_18153cd
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
+ return f"_flash_attn2_cuda_18153cd::{op_name}"
build/torch-stable-abi210-cu132-aarch64-linux/metadata.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "flash-attn2",
3
- "id": "_flash_attn2_cuda_460047c",
4
  "version": 4,
5
  "kernels-minver": "0.14.0",
6
  "license": "BSD-3-Clause",
@@ -19,20 +19,20 @@
19
  "algorithm": "sha256",
20
  "files": {
21
  "__init__.py": "Nz8hqrusjoUHQqszpxfF2USMwUXn1VfpvcmtAAvutSM=",
22
- "_flash_attn2_cuda_460047c.abi3.so": "o4KfnnQPzHLqZ81TNKaReUO+g2+GvWUpV/1i8eOuo7k=",
23
- "_ops.py": "DV4Eo4+s3aaNmDsfXoZiYKNLnRUJqlsdDGlMsdKFgk4=",
24
  "flash_attn_interface.py": "6UYUhfUax4+yOUygyS7K8dVjrIjU5GQr1AJ2gSp8rPo=",
25
- "symbols.json": "uvC+87tHUhtHv7L/Nl53T/Ms7ceX317/jwQBoqHY14A="
26
  }
27
  },
28
  "provenance": {
29
  "kernel-builder": {
30
  "version": "0.18.0-dev0",
31
- "commit": "d054906a13710b811b96697b4635f03020842733",
32
  "dirty": false
33
  },
34
  "kernel": {
35
- "commit": "460047c291fc7f0b3dbd4239b46bd5e1281b1806",
36
  "dirty": false
37
  }
38
  }
 
1
  {
2
  "name": "flash-attn2",
3
+ "id": "_flash_attn2_cuda_18153cd",
4
  "version": 4,
5
  "kernels-minver": "0.14.0",
6
  "license": "BSD-3-Clause",
 
19
  "algorithm": "sha256",
20
  "files": {
21
  "__init__.py": "Nz8hqrusjoUHQqszpxfF2USMwUXn1VfpvcmtAAvutSM=",
22
+ "_flash_attn2_cuda_18153cd.abi3.so": "pmgfySuwUVEgTZmFB403wCAiPazTITxz6lhF2Va/Miw=",
23
+ "_ops.py": "OEGGtKiMxeERjOPhIchyq6H4g1NZegDCw0U6hBZPQcw=",
24
  "flash_attn_interface.py": "6UYUhfUax4+yOUygyS7K8dVjrIjU5GQr1AJ2gSp8rPo=",
25
+ "symbols.json": "OIur391E1YRjuOLt3sp+L6crAatjoIshDxNq6/odmYA="
26
  }
27
  },
28
  "provenance": {
29
  "kernel-builder": {
30
  "version": "0.18.0-dev0",
31
+ "commit": "d0ed138c0e5132e810e6fbbbc2a5c6981a9c7649",
32
  "dirty": false
33
  },
34
  "kernel": {
35
+ "commit": "18153cd077b6541e9c4cb98ad9678db4e1253d1f",
36
  "dirty": false
37
  }
38
  }
build/torch-stable-abi210-cu132-aarch64-linux/metadata.json.sigstore CHANGED
@@ -1 +1 @@
1
- {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"3430232829","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792800472","inclusionPromise":{"signedEntryTimestamp":"MEUCIQDapAVpzW9ZMQuTUJ39O7fTsatpIEek0pompEwTH4wvswIgRVThrMi15G2rOZgieSQkQYoUfgxwA9jQoW3N99QqtOU="},"inclusionProof":{"logIndex":"3308328567","rootHash":"8d7Q7d3LmggWU8eU5xZvu5mR+vnArSvWFl8O3w51kQ4=","treeSize":"3308328619","hashes":["ZeSraJnEOIg5RprEttxTPyJoHEIpK2DU9f+GgF7gKUU=","cTgqACgBgsyVC/yK4IGTbMOaCKHRO6569hXM02AYU7Q=","mlwEM8vnsselj+orQh+ahYjAcQRH/p00zGXam6wJfpg=","Ky499GSNP9wO5tKXqV1xgq2eVFaO9tYJrSgCADxcRvY=","C/FFp0p++7+e4msx8G01Pjp5EsyyHe7ThgIj+TssXXQ=","/ubypAm95ilTKdYwhtn6ndwUwRpZ3ICLmEdRdWZB5c8=","gWAOr6FsG8QrENGVRNoJq5UmkHkoGgTYikl74JYz6mg=","eiXoi0AkFmtS6KaPVPsLZdJkcMd6L/c9gNFiiUO7E+g=","K/8DiKTfabbp+AGoyQMoqW/REHMadjMC9YuSpdz5/Cs=","8jJv+xlIJWDTCEJK91Tx1dYXJK/tgcxFsykheeCSw3U=","gdS39fsn5MOVlKluUgGY2sdKF3H5oauxkHMa7DSSNcg=","8x0N/oAmvpY+6DQUGTU+i6a1Cuqphro2WbV5WZ/RHL8=","DMchGrSAeKV9qHo75XJV3UFZ/CHF8zofPRu+NgVRwA4=","V6dXjeDcwYxBG/9gVSBM8rYdPrAqGpZsf1e7v6l67GA=","iDfImp65w8dirRfYGNgFA34JTUYDWbcJwNBBU/Ok+X4=","YYCr61A8azar3dfO8Ct+pri7LqDxkUlUkfs7fiqYErU=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3308328619\n8d7Q7d3LmggWU8eU5xZvu5mR+vnArSvWFl8O3w51kQ4=\n\n— rekor.sigstore.dev wNI9ajBFAiEAl3psN46GEcjBpud4+y/WZ4F3HtMSO1IV8ZardGaTWcACIEjD4ZIUStqCf5b+jEh+/EbgTp70rKCnzpq9mNBPkHLQ\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIyNWMyZDk2MDQwNzkxYTJhNmMxZjE4ZDg0MjkwNDQxOTJlY2JjZTMzZTNiMjg4YjM1MDUyYWYxNDRjNGVlM2QzIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJRkJXa2hMNDl4V09YY3Vwdmh3VlBFZk14RWxPR0tvVmp1azlxZjF6OW1GMUFpRUF5Q0VaLzVTNmhENGNEajcwOUszUXl3elRmSUo1UkF6S1MrbjFNZ3RLTGtvPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KSFowRjNTVUpCWjBsVlRqZDVRVGx2WjFNclMydGxSRmwxYjFCalFWVnlObWh6UkRSbmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFU1RCTlJFRjNUbnBWZVZkb1kwNU5hbGw0VFVSSk1FMUVRWGhPZWxWNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZOVGpWYVlVeFlMMk5qYWxWR1MwdG1WRkUxV0ZBeE1qa3ZlVWgyZFhoR1VHTkZWSEVLTnpGaFVrZG1aRFJzV2s5V2QyaFFUbUV2ZVUxRE1uSktlSGhrYlhaSmJHNVlXRzVOTnpGak9YTTRhaXMwY21SelVuRlBRMEprUVhkbloxaE5UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmN3VG1wQmR3cE9SR1JxVFdwcmVGcHRUVE5hYWtKcFRUSlNhVnBFVVhsTmVteHBUa1JhYVZwRVZteE5WRWswVFZkSmVFOUVRVEpOUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEWnpCT2FrRjNUa1JrYWsxcWEzaGFiVTB6Q2xwcVFtbE5NbEpwV2tSUmVVMTZiR2xPUkZwcFdrUldiRTFVU1RSTlYwbDRUMFJCTWsxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEWnpCT2FrRjNDazVFWkdwTmFtdDRXbTFOTTFwcVFtbE5NbEpwV2tSUmVVMTZiR2xPUkZwcFdrUldiRTFVU1RSTlYwbDRUMFJCTWsxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlPUkZsM1RVUlJNMWw2U1RWTlYxcHFUakpaZDFscVRtdFpiVkV3VFdwTk5WbHFVVEpaYlZFeFdsUkZlVTlFUm1rS1RWUm5kMDVxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUnJORTFxV1RCTlJGVjRUbE01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkS0NrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NITkZaVkZDTTBGSVZVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvWVhwM0swWjNRVUZDUVUxQlVtcENSVUZwUW1oWVdHTmhMMUpRZUVGUlJEWjRNbFV2Wm10clVYTXlVV0k0ZUdoQ00wOWpZZ3AwYXpoRlFVdzROVWQzU1dkR1RHWm9TbXMxVlVKMmNEVkNRM0JSZVRNd05uVllOM3B5UlRCalpWRTJlbFpLTm5OTWF6WTBRMG80ZDBObldVbExiMXBKQ25wcU1FVkJkMDFFWVVGQmQxcFJTWGRUZFROb01ITm9iR1kxZWsxV1lta3laWE5LVDNaa1FqTjViekYwYW1aa1UxVXpjREJDYmxWUmNWUlJSMFJqU1dJS2VrWlNkelJrWVc5VGRIcG9kMGMyYzBGcVJVRm9XbWxtY2pCbVZWRXpkRXRHTjA1WldGbElVM0ZtVlZKaFVscGxaaXR2ZUhoTlQzQXliMjR4WWxsNmRBcG1ObTVxVEdFNFlsRTFiMloyUVZsU1VubEVkUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyDADAgEAMIICvwYJKoZIhvcNAQcCoIICsDCCAqwCAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgPBaos2ErBxosU60dEUHP72xA3r2tJxcZ+U5pO+kAzzgCFFY/daZCnGNuqdgKsimEVKQXAxKiGA8yMDI2MTAyNDAwMDc1MlowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdowggHWAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDI0MDAwNzUyWjAvBgkqhkiG9w0BCQQxIgQgDWv5Ubsq3b4BUyPtOKBjEHmam6qOnXf0Ducy0Q/ALagwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGYwZAIxAMGn96mgL9G4S6v8KAhsXgaLHLxLtLXkMEuVxlrkSey5PYJmitundFbhChOAUAn5UQIvVczNzLLzW54p+k/liiht08kDHlfLylc4CehlBIyOx4XANNwmxu4LW0fhJxYKjNI="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"JcLZYEB5GipsHxjYQpBEGS7LzjPjsoizUFKvFExO49M="},"signature":"MEUCIFBWkhL49xWOXcupvhwVPEfMxElOGKoVjuk9qf1z9mF1AiEAyCEZ/5S6hD4cDj709K3QywzTfIJ5RAzKS+n1MgtKLko="}}
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"3495371048","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793044521","inclusionPromise":{"signedEntryTimestamp":"MEQCIHbwdYU2XQkD3bYLxC5vVXKEMqTcM7cJfHXEfyVhbRjDAiAXk6u4OVqKUbgAy7NzG1GiVjiV5/XlgcH5hvSg0Vw0rQ=="},"inclusionProof":{"logIndex":"3373466786","rootHash":"jN1ogZ+xsDQUXectv9lDBFbn/rygd1fnEr/r9FfqhPo=","treeSize":"3373466805","hashes":["pYGJfHq7cxF4hAIqX3cf/pVgYhdpV0ry3zFbf6EC1L8=","OxcUuQRZKdEqe14lqRWcGV78cZnZI/iGBJNhbMPjpcE=","aiHNw+lpbavKL5Q9p/x3lYhV9iGLzTjhhOjS6kxv1T8=","cFOIXM+paxHNH0HkCu5FTBgMb3ltvuqlB0LMB5rEFak=","Z9NvFgHoCM+ubHyrzXj9T/O+sJSi1Mh4x037VAiJ+Dw=","KXOhsJ4jkLmoy3ZGYZsLYHrau3Cs74m0W82Fl6dnMIk=","aqtTyyMq0XavVvmWUM/Q2kyIFa+pLBM289wwu7ZyXBQ=","01Gz2sd491oAvPVtodAVG3L+ZnlmRtNI3p2z1lAIMfU=","AP1Gu3/J0eieIZMophuFtg5MjGG05ZDkCKVjbZ6u1Jc=","FM5ondRZhDi27kmSltSStj4O/ATXPz672VgA5aDgsr4=","LoMfGTs8fXIyNHYdO69USeIy3IiKviNIc6UY+e4Yvcg=","6isO7d5SZuUjk8FoC2N/4lrs2iljQ9nlCzDM90al4Mw=","zGfeoWKmrZlXMOvyi3R2GDbGpmI1skJW/wLTXCCgF0o=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3373466805\njN1ogZ+xsDQUXectv9lDBFbn/rygd1fnEr/r9FfqhPo=\n\n— rekor.sigstore.dev wNI9ajBFAiARTnmTqrIALPiTRYvoiu+JC5mLm7+/cfotJhO2LNsfngIhAO++WlVSKBLD+Vt0DZejsZuLeTtimcNF6E1lOg3v2YB/\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI0MjU4MzEzYjYyOTg3MmE4N2JhMzM1MTczMTI3M2I4M2M2ZTZiM2Y3OGZmNzJiYzcxYjI1NjgyOGQ2NThmN2RjIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUURxR1dhck1RQlJvK3FROHl1UzcwUDlsOW5VRWdZNHVxaDUxS0M3b2RkK3JBSWdaTXBHSDRnaEs5MnVWRzdrSXlBaVBlWkRNMXFOaEZpbXlpeVUvQ3Z1Z3o4PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KTFowRjNTVUpCWjBsVlVYSktPWGRyYTB4Q1dFZEpTak5oVEZKYVRUaEZSMVZZTlhjMGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFU1RKTlZHc3hUbFJKZUZkb1kwNU5hbGw0VFVSSk1rMXFRWGRPVkVsNFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ2Y1ZacmNWVk1Sa1ZvWTJKamJVWm5jaXN6Ylhwck1EazRVM2gwUmpOa1pHUjVLMndLYUVWTVIzTm9MMHhuTml0WWRscHRVV280VVRKNk9EbFBOVU00YW1ab2RETlVjMU42VERaWFNtOVJSRFUyWVhCbGJHRlBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmQ0VDBSRk1RcE5NazVyVFVSak0xbHFXVEZPUkVac1QxZE5NRmt5U1RWUFIwWnJUMVJaTTA5SFVtbE9SMVY0VFdwVmVscEVSbTFOUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEWjNoUFJFVXhUVEpPYTAxRVl6TlphbGt4Q2s1RVJteFBWMDB3V1RKSk5VOUhSbXRQVkZrelQwZFNhVTVIVlhoTmFsVjZXa1JHYlUxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEWjNoUFJFVXhDazB5VG10TlJHTXpXV3BaTVU1RVJteFBWMDB3V1RKSk5VOUhSbXRQVkZrelQwZFNhVTVIVlhoTmFsVjZXa1JHYlUxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlOVkdkNFRsUk9hbHBFUVROT01ra3lUbFJSZUZwVWJHcE9SMDVwVDFSb2FGcEVhekpPZW1ocldXcFNiRTFVU1RFS1RUSlJlRnBxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRnd1RVUk5lRTlVWXpOT1JHZDRUV2s1YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvWldOblp6Tm5RVUZDUVUxQlVucENSa0ZwUlVGNVJFRlZWa1o2U1UxcGEwODFNMmRKWm5KeFMxRllaa2REVTNOMlRFZHpSd3BhTDNaNVlYVlNUbVoyV1VOSlExQlhWVUZUWjNCa1UwOHpkVmRIVm1WWE1IZzRWbkZrWlRkS0wzRTBka3NyVkc5clIweEplVFIwWWsxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKalFVMUhVVU5OUW1SWlFWbzRTVVJxYTFsbEx6aEVlVWQzTjFCNGJuaDVWRm81U0VWd05EWjFkakppY2pVMGNFUk1NVTFFY1hFS1lrdzFNMjA1ZGxZM2QxVjJhMGtyWTBoM1NYZE1Va1oxTWpSd1pXMUpVakZ5TVhoV01tNTNkRk14TW5oMlJWQXZVVUZMVjJoV1QwbEhLMHQzVEd3eU5ncHZWa1ZoYzNKc2RsRjZRbWt2VjNOMlFUVlBhUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgnFjE5bLb3/cnererNt4Ocxsy8sAf1WCI02ndjGHJXWgCFDEkfdhSXXE0KpLrZSk226A8OkspGA8yMDI2MTAyNjE5NTUyMVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDI2MTk1NTIxWjAvBgkqhkiG9w0BCQQxIgQg9U9E7hZUubQjK5szihXAiLqS+oXZ8wgCXjgJSVX0Dj4wgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxAKg9aDZVhS45U5QCuYGf2kLjzN3QyL0FajCzi3bkN4bm0iuwvP6sd6U2KmA9t9uJdwIxAMJW+zz9h2edvVVRP40ADaoRqZ1e9nZa2NREpNTvB5hsYu8nzOu/BkisCzpmPKx35A=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"QlgxO2KYcqh7ozUXMSc7g8bms/eP9yvHGyVoKNZY99w="},"signature":"MEUCIQDqGWarMQBRo+qQ8yuS70P9l9nUEgY4uqh51KC7odd+rAIgZMpGH4ghK92uVG7kIyAiPeZDM1qNhFimyiyU/Cvugz8="}}
build/torch-stable-abi210-cu132-aarch64-linux/symbols.json CHANGED
@@ -1,11 +1,11 @@
1
  {
2
  "schema_version": 1,
3
- "module": "_flash_attn2_cuda_460047c",
4
  "functions": [
5
  {
6
  "name": "flash_attn_func",
7
  "qualname": "flash_attn_func",
8
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
9
  "kind": "function",
10
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k: (batch_size, seqlen, nheads_k, headdim)\n v: (batch_size, seqlen, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
11
  "signature": {
@@ -83,7 +83,7 @@
83
  {
84
  "name": "flash_attn_kvpacked_func",
85
  "qualname": "flash_attn_kvpacked_func",
86
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
87
  "kind": "function",
88
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n kv: (batch_size, seqlen, 2, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
89
  "signature": {
@@ -155,7 +155,7 @@
155
  {
156
  "name": "flash_attn_qkvpacked_func",
157
  "qualname": "flash_attn_qkvpacked_func",
158
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
159
  "kind": "function",
160
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_kvpacked_func and flash_attn_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (batch_size, seqlen, 3, nheads, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|) is added to\n the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
161
  "signature": {
@@ -221,7 +221,7 @@
221
  {
222
  "name": "flash_attn_varlen_func",
223
  "qualname": "flash_attn_varlen_func",
224
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
225
  "kind": "function",
226
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in K, V with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n k: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n v: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
227
  "signature": {
@@ -329,7 +329,7 @@
329
  {
330
  "name": "flash_attn_varlen_kvpacked_func",
331
  "qualname": "flash_attn_varlen_kvpacked_func",
332
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
333
  "kind": "function",
334
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n kv: (total_k, 2, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
335
  "signature": {
@@ -425,7 +425,7 @@
425
  {
426
  "name": "flash_attn_varlen_qkvpacked_func",
427
  "qualname": "flash_attn_varlen_qkvpacked_func",
428
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
429
  "kind": "function",
430
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_varlen_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_varlen_kvpacked_func and flash_attn_varlen_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (total, 3, nheads, headdim), where total = total number of tokens in the batch.\n cu_seqlens: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into qkv.\n max_seqlen: int. Maximum sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
431
  "signature": {
@@ -503,7 +503,7 @@
503
  {
504
  "name": "flash_attn_with_kvcache",
505
  "qualname": "flash_attn_with_kvcache",
506
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
507
  "kind": "function",
508
  "doc": "If k and v are not None, k_cache and v_cache will be updated *inplace* with the new values from\nk and v. This is useful for incremental decoding: you can pass in the cached keys/values from\nthe previous step, and update them with the new keys/values from the current step, and do\nattention with the updated cache, all in 1 kernel.\n\nIf you pass in k / v, you must make sure that the cache is large enough to hold the new values.\nFor example, the KV cache could be pre-allocated with the max sequence length, and you can use\ncache_seqlens to keep track of the current sequence lengths of each sequence in the batch.\n\nAlso apply rotary embedding if rotary_cos and rotary_sin are passed in. The key @k will be\nrotated by rotary_cos and rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf causal or local (i.e., window_size != (-1, -1)), the query @q will be rotated by rotary_cos\nand rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf not causal and not local, the query @q will be rotated by rotary_cos and rotary_sin at\nindices cache_seqlens only (i.e. we consider all tokens in @q to be at position cache_seqlens).\n\nSee tests/test_flash_attn.py::test_flash_attn_kvcache for examples of how to use this function.\n\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nNote: Does not support backward pass.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n page_block_size must be a multiple of 256.\n v_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n k [optional]: (batch_size, seqlen_new, nheads_k, headdim). If not None, we concatenate\n k with k_cache, starting at the indices specified by cache_seqlens.\n v [optional]: (batch_size, seqlen_new, nheads_k, headdim). Similar to k.\n rotary_cos [optional]: (seqlen_ro, rotary_dim / 2). If not None, we apply rotary embedding\n to k and q. Only applicable if k and v are passed in. rotary_dim must be divisible by 16.\n rotary_sin [optional]: (seqlen_ro, rotary_dim / 2). Similar to rotary_cos.\n cache_seqlens: int, or (batch_size,), dtype torch.int32. The sequence lengths of the\n KV cache.\n cache_batch_idx: (batch_size,), dtype torch.int32. The indices used to index into the KV cache.\n If None, we assume that the batch indices are [0, 1, 2, ..., batch_size - 1].\n If the indices are not distinct, and k and v are provided, the values updated in the cache\n might come from any of the duplicate indices.\n cache_leftpad: (batch_size,), dtype torch.int32. The index that the KV cache starts. If None, assume 0.\n block_table [optional]: (batch_size, max_num_blocks_per_seq), dtype torch.int32.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n rotary_interleaved: bool. Only applicable if rotary_cos and rotary_sin are passed in.\n If True, rotary embedding will combine dimensions 0 & 1, 2 & 3, etc. If False,\n rotary embedding will combine dimensions 0 & rotary_dim / 2, 1 & rotary_dim / 2 + 1\n (i.e. GPT-NeoX style).\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n num_splits: int. If > 1, split the key/value into this many chunks along the sequence.\n If num_splits == 1, we don't split the key/value. If num_splits == 0, we use a heuristic\n to automatically determine the number of splits.\n Don't change this unless you know what you are doing.\n return_softmax_lse: bool. Whether to return the logsumexp of the attention scores.\n\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_softmax_lse=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).",
509
  "signature": {
@@ -629,7 +629,7 @@
629
  {
630
  "name": "fwd",
631
  "qualname": "fwd",
632
- "module": "_flash_attn2_cuda_460047c",
633
  "kind": "function",
634
  "doc": "Forward pass for multi-head attention.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Optional output tensor, same shape as q\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
635
  "signature": {
@@ -719,7 +719,7 @@
719
  {
720
  "name": "varlen_fwd",
721
  "qualname": "varlen_fwd",
722
- "module": "_flash_attn2_cuda_460047c",
723
  "kind": "function",
724
  "doc": "Forward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n q: Query tensor of shape [total_q, num_heads, head_size]\n k: Key tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n v: Value tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n out: Optional output tensor of shape [total_q, num_heads, head_size]\n seqused_k: Optional tensor specifying how many keys to use per batch element [batch_size]\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
725
  "signature": {
@@ -857,7 +857,7 @@
857
  {
858
  "name": "bwd",
859
  "qualname": "bwd",
860
- "module": "_flash_attn2_cuda_460047c",
861
  "kind": "function",
862
  "doc": "Backward pass for multi-head attention.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
863
  "signature": {
@@ -983,7 +983,7 @@
983
  {
984
  "name": "varlen_bwd",
985
  "qualname": "varlen_bwd",
986
- "module": "_flash_attn2_cuda_460047c",
987
  "kind": "function",
988
  "doc": "Backward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
989
  "signature": {
@@ -1139,7 +1139,7 @@
1139
  {
1140
  "name": "fwd_kvcache",
1141
  "qualname": "fwd_kvcache",
1142
- "module": "_flash_attn2_cuda_460047c",
1143
  "kind": "function",
1144
  "doc": "Forward pass for multi-head attention with KV cache.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n kcache: Key cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n vcache: Value cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n k: Optional new keys tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n v: Optional new values tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n seqlens_k: Optional sequence lengths for keys of shape [batch_size]\n rotary_cos: Optional rotary cosine tensor of shape [seqlen_ro, rotary_dim/2]\n rotary_sin: Optional rotary sine tensor of shape [seqlen_ro, rotary_dim/2]\n cache_batch_idx: Optional indices to index into the KV cache\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n out: Optional output tensor, same shape as q\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n is_rotary_interleaved: Whether rotary embeddings are interleaved\n num_splits: Number of splits for computation\n\nReturns:\n List of tensors: [output, softmax_lse]",
1145
  "signature": {
 
1
  {
2
  "schema_version": 1,
3
+ "module": "_flash_attn2_cuda_18153cd",
4
  "functions": [
5
  {
6
  "name": "flash_attn_func",
7
  "qualname": "flash_attn_func",
8
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
9
  "kind": "function",
10
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k: (batch_size, seqlen, nheads_k, headdim)\n v: (batch_size, seqlen, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
11
  "signature": {
 
83
  {
84
  "name": "flash_attn_kvpacked_func",
85
  "qualname": "flash_attn_kvpacked_func",
86
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
87
  "kind": "function",
88
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n kv: (batch_size, seqlen, 2, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
89
  "signature": {
 
155
  {
156
  "name": "flash_attn_qkvpacked_func",
157
  "qualname": "flash_attn_qkvpacked_func",
158
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
159
  "kind": "function",
160
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_kvpacked_func and flash_attn_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (batch_size, seqlen, 3, nheads, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|) is added to\n the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
161
  "signature": {
 
221
  {
222
  "name": "flash_attn_varlen_func",
223
  "qualname": "flash_attn_varlen_func",
224
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
225
  "kind": "function",
226
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in K, V with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n k: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n v: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
227
  "signature": {
 
329
  {
330
  "name": "flash_attn_varlen_kvpacked_func",
331
  "qualname": "flash_attn_varlen_kvpacked_func",
332
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
333
  "kind": "function",
334
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n kv: (total_k, 2, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
335
  "signature": {
 
425
  {
426
  "name": "flash_attn_varlen_qkvpacked_func",
427
  "qualname": "flash_attn_varlen_qkvpacked_func",
428
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
429
  "kind": "function",
430
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_varlen_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_varlen_kvpacked_func and flash_attn_varlen_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (total, 3, nheads, headdim), where total = total number of tokens in the batch.\n cu_seqlens: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into qkv.\n max_seqlen: int. Maximum sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
431
  "signature": {
 
503
  {
504
  "name": "flash_attn_with_kvcache",
505
  "qualname": "flash_attn_with_kvcache",
506
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
507
  "kind": "function",
508
  "doc": "If k and v are not None, k_cache and v_cache will be updated *inplace* with the new values from\nk and v. This is useful for incremental decoding: you can pass in the cached keys/values from\nthe previous step, and update them with the new keys/values from the current step, and do\nattention with the updated cache, all in 1 kernel.\n\nIf you pass in k / v, you must make sure that the cache is large enough to hold the new values.\nFor example, the KV cache could be pre-allocated with the max sequence length, and you can use\ncache_seqlens to keep track of the current sequence lengths of each sequence in the batch.\n\nAlso apply rotary embedding if rotary_cos and rotary_sin are passed in. The key @k will be\nrotated by rotary_cos and rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf causal or local (i.e., window_size != (-1, -1)), the query @q will be rotated by rotary_cos\nand rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf not causal and not local, the query @q will be rotated by rotary_cos and rotary_sin at\nindices cache_seqlens only (i.e. we consider all tokens in @q to be at position cache_seqlens).\n\nSee tests/test_flash_attn.py::test_flash_attn_kvcache for examples of how to use this function.\n\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nNote: Does not support backward pass.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n page_block_size must be a multiple of 256.\n v_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n k [optional]: (batch_size, seqlen_new, nheads_k, headdim). If not None, we concatenate\n k with k_cache, starting at the indices specified by cache_seqlens.\n v [optional]: (batch_size, seqlen_new, nheads_k, headdim). Similar to k.\n rotary_cos [optional]: (seqlen_ro, rotary_dim / 2). If not None, we apply rotary embedding\n to k and q. Only applicable if k and v are passed in. rotary_dim must be divisible by 16.\n rotary_sin [optional]: (seqlen_ro, rotary_dim / 2). Similar to rotary_cos.\n cache_seqlens: int, or (batch_size,), dtype torch.int32. The sequence lengths of the\n KV cache.\n cache_batch_idx: (batch_size,), dtype torch.int32. The indices used to index into the KV cache.\n If None, we assume that the batch indices are [0, 1, 2, ..., batch_size - 1].\n If the indices are not distinct, and k and v are provided, the values updated in the cache\n might come from any of the duplicate indices.\n cache_leftpad: (batch_size,), dtype torch.int32. The index that the KV cache starts. If None, assume 0.\n block_table [optional]: (batch_size, max_num_blocks_per_seq), dtype torch.int32.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n rotary_interleaved: bool. Only applicable if rotary_cos and rotary_sin are passed in.\n If True, rotary embedding will combine dimensions 0 & 1, 2 & 3, etc. If False,\n rotary embedding will combine dimensions 0 & rotary_dim / 2, 1 & rotary_dim / 2 + 1\n (i.e. GPT-NeoX style).\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n num_splits: int. If > 1, split the key/value into this many chunks along the sequence.\n If num_splits == 1, we don't split the key/value. If num_splits == 0, we use a heuristic\n to automatically determine the number of splits.\n Don't change this unless you know what you are doing.\n return_softmax_lse: bool. Whether to return the logsumexp of the attention scores.\n\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_softmax_lse=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).",
509
  "signature": {
 
629
  {
630
  "name": "fwd",
631
  "qualname": "fwd",
632
+ "module": "_flash_attn2_cuda_18153cd",
633
  "kind": "function",
634
  "doc": "Forward pass for multi-head attention.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Optional output tensor, same shape as q\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
635
  "signature": {
 
719
  {
720
  "name": "varlen_fwd",
721
  "qualname": "varlen_fwd",
722
+ "module": "_flash_attn2_cuda_18153cd",
723
  "kind": "function",
724
  "doc": "Forward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n q: Query tensor of shape [total_q, num_heads, head_size]\n k: Key tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n v: Value tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n out: Optional output tensor of shape [total_q, num_heads, head_size]\n seqused_k: Optional tensor specifying how many keys to use per batch element [batch_size]\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
725
  "signature": {
 
857
  {
858
  "name": "bwd",
859
  "qualname": "bwd",
860
+ "module": "_flash_attn2_cuda_18153cd",
861
  "kind": "function",
862
  "doc": "Backward pass for multi-head attention.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
863
  "signature": {
 
983
  {
984
  "name": "varlen_bwd",
985
  "qualname": "varlen_bwd",
986
+ "module": "_flash_attn2_cuda_18153cd",
987
  "kind": "function",
988
  "doc": "Backward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
989
  "signature": {
 
1139
  {
1140
  "name": "fwd_kvcache",
1141
  "qualname": "fwd_kvcache",
1142
+ "module": "_flash_attn2_cuda_18153cd",
1143
  "kind": "function",
1144
  "doc": "Forward pass for multi-head attention with KV cache.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n kcache: Key cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n vcache: Value cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n k: Optional new keys tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n v: Optional new values tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n seqlens_k: Optional sequence lengths for keys of shape [batch_size]\n rotary_cos: Optional rotary cosine tensor of shape [seqlen_ro, rotary_dim/2]\n rotary_sin: Optional rotary sine tensor of shape [seqlen_ro, rotary_dim/2]\n cache_batch_idx: Optional indices to index into the KV cache\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n out: Optional output tensor, same shape as q\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n is_rotary_interleaved: Whether rotary embeddings are interleaved\n num_splits: Number of splits for computation\n\nReturns:\n List of tensors: [output, softmax_lse]",
1145
  "signature": {
build/torch-stable-abi210-cu134-aarch64-linux/{_flash_attn2_cuda_460047c.abi3.so → _flash_attn2_cuda_18153cd.abi3.so} RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:923bd50971a3d94f45b9a5fabc2223a7fdca1d40d8ccff4848907eb850e99b4c
3
  size 1011746240
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:62eb0dd3ea0e7b6301b20d1907e4816c0d0953dd73ad72e1f944236da8bb591b
3
  size 1011746240
build/torch-stable-abi210-cu134-aarch64-linux/_ops.py CHANGED
@@ -1,9 +1,9 @@
1
  import torch
2
- from . import _flash_attn2_cuda_460047c
3
- ops = torch.ops._flash_attn2_cuda_460047c
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
- return f"_flash_attn2_cuda_460047c::{op_name}"
 
1
  import torch
2
+ from . import _flash_attn2_cuda_18153cd
3
+ ops = torch.ops._flash_attn2_cuda_18153cd
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
+ return f"_flash_attn2_cuda_18153cd::{op_name}"
build/torch-stable-abi210-cu134-aarch64-linux/metadata.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "flash-attn2",
3
- "id": "_flash_attn2_cuda_460047c",
4
  "version": 4,
5
  "kernels-minver": "0.14.0",
6
  "license": "BSD-3-Clause",
@@ -19,20 +19,20 @@
19
  "algorithm": "sha256",
20
  "files": {
21
  "__init__.py": "Nz8hqrusjoUHQqszpxfF2USMwUXn1VfpvcmtAAvutSM=",
22
- "_flash_attn2_cuda_460047c.abi3.so": "kjvVCXGj2U9FuaX6vCIjp/3KHUDYzP9ISJB+uFDpm0w=",
23
- "_ops.py": "DV4Eo4+s3aaNmDsfXoZiYKNLnRUJqlsdDGlMsdKFgk4=",
24
  "flash_attn_interface.py": "6UYUhfUax4+yOUygyS7K8dVjrIjU5GQr1AJ2gSp8rPo=",
25
- "symbols.json": "uvC+87tHUhtHv7L/Nl53T/Ms7ceX317/jwQBoqHY14A="
26
  }
27
  },
28
  "provenance": {
29
  "kernel-builder": {
30
  "version": "0.18.0-dev0",
31
- "commit": "d054906a13710b811b96697b4635f03020842733",
32
  "dirty": false
33
  },
34
  "kernel": {
35
- "commit": "460047c291fc7f0b3dbd4239b46bd5e1281b1806",
36
  "dirty": false
37
  }
38
  }
 
1
  {
2
  "name": "flash-attn2",
3
+ "id": "_flash_attn2_cuda_18153cd",
4
  "version": 4,
5
  "kernels-minver": "0.14.0",
6
  "license": "BSD-3-Clause",
 
19
  "algorithm": "sha256",
20
  "files": {
21
  "__init__.py": "Nz8hqrusjoUHQqszpxfF2USMwUXn1VfpvcmtAAvutSM=",
22
+ "_flash_attn2_cuda_18153cd.abi3.so": "YusN0+oOe2MBsg0ZB+SBbA0JU91zrXLh+UQjbai7WRs=",
23
+ "_ops.py": "OEGGtKiMxeERjOPhIchyq6H4g1NZegDCw0U6hBZPQcw=",
24
  "flash_attn_interface.py": "6UYUhfUax4+yOUygyS7K8dVjrIjU5GQr1AJ2gSp8rPo=",
25
+ "symbols.json": "OIur391E1YRjuOLt3sp+L6crAatjoIshDxNq6/odmYA="
26
  }
27
  },
28
  "provenance": {
29
  "kernel-builder": {
30
  "version": "0.18.0-dev0",
31
+ "commit": "d0ed138c0e5132e810e6fbbbc2a5c6981a9c7649",
32
  "dirty": false
33
  },
34
  "kernel": {
35
+ "commit": "18153cd077b6541e9c4cb98ad9678db4e1253d1f",
36
  "dirty": false
37
  }
38
  }
build/torch-stable-abi210-cu134-aarch64-linux/metadata.json.sigstore CHANGED
@@ -1 +1 @@
1
- {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"3430233537","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792800474","inclusionPromise":{"signedEntryTimestamp":"MEQCIGf4qRksR2TOvKJqv5C3OXL9KCWq4DohDNE5OiRqroDSAiBZ/na5GYKHZMVmMM/RBb1tA3aWMI0vOAvXzqPbefcYcQ=="},"inclusionProof":{"logIndex":"3308329275","rootHash":"gvJkaoo5K4nnBj5tgxAdNtAsuOVBE3dwxp4HnZkfvek=","treeSize":"3308329751","hashes":["A6lD2MPXJCkNJ03unZasE28kCBO4cEhrMfr35263otA=","2juSPfQ+oiHAxdHnLkvjhIT+ZK12WdDckwwg3N92P7A=","LifhnEL2YNR6i6SL1PtcvHuNSG8cMuLHlq/xkxrLIl8=","bsl+fw0R4ouIsjrASTpknFPjkE8rV44VNY9PzMjKZXY=","7m7Os3c6xSIltD1PYdtmZWTvYcp/y98WcmkA5VHZLMc=","NrwiN5u5p9JLACtCux17Ga5le7OR7KG91Swm1vKzN4I=","B+n7TQ5+p34ZRpHoH7r7iRTI8eA90txEiNvVk/XQGlo=","ornPIqk+dhfmtF5rp9z75eQBaUggI9Zd0Yoov3BG4Zw=","0YVZixFviDG94SVGteh82jVzdNtBsMQZbb6BiHiUA30=","2Vc45+NdnNK2xlrvQ9A2rn3JmookZpsttqolVggzpFM=","eIbVG1biupwReGylDyasAnDJDAjvcA3MN0/o/j5H/Vg=","gdS39fsn5MOVlKluUgGY2sdKF3H5oauxkHMa7DSSNcg=","8x0N/oAmvpY+6DQUGTU+i6a1Cuqphro2WbV5WZ/RHL8=","DMchGrSAeKV9qHo75XJV3UFZ/CHF8zofPRu+NgVRwA4=","V6dXjeDcwYxBG/9gVSBM8rYdPrAqGpZsf1e7v6l67GA=","iDfImp65w8dirRfYGNgFA34JTUYDWbcJwNBBU/Ok+X4=","YYCr61A8azar3dfO8Ct+pri7LqDxkUlUkfs7fiqYErU=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3308329751\ngvJkaoo5K4nnBj5tgxAdNtAsuOVBE3dwxp4HnZkfvek=\n\n— rekor.sigstore.dev wNI9ajBEAiA7HK7JgdGaQLRpTJ61zoG8UJzLcQbCNxmOd2H6oBto3QIgPoF4fB3lpbTOp7T38nRRszHe0SI4Tet8YnGxCwxSXWI=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIyNTI4NjhhNGQyOGI4NzZlYzYyZjMxNmUzMWRkYTA5ZDQ5ZTlmNDYxYWQwNTk1MzlmNTc2YjJkYjJlZTE1YWMxIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUURsaktTUFVEQWtlYU9TMzFTTlFSMWt6amhrMGpwaVgvQy95bENaRS9zVW5nSWhBTHo4SEFwalYyM0E5ei9uRHZZNFRGdWZ6K2YvalBobkZJZkozNnRaRS9TTiIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1SRU5EUW5KTFowRjNTVUpCWjBsVlprbHNjVXhPZFRaVlpGaFpUblJXVlhZMVpsUmpXbEo1Y0ZrMGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFU1RCTlJFRjNUbnBWZWxkb1kwNU5hbGw0VFVSSk1FMUVRWGhPZWxWNlYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ3WTFGd2FIWXpWWGs0T0V0eFpsQkRNbUo2VVhReFNFeHVhWEF3VVVsa00yTmFaeThLYlUxSldGVXpOWGhEUzI1eU4xb3pZMlJYTURKVFQxbzRaemhJVTBRMVdVMVVPVXN4WWtSbFJXVktSMEo2V0dGblEzRlBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmN3VG1wQmR3cE9SR1JxVFdwcmVGcHRUVE5hYWtKcFRUSlNhVnBFVVhsTmVteHBUa1JhYVZwRVZteE5WRWswVFZkSmVFOUVRVEpOUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEWnpCT2FrRjNUa1JrYWsxcWEzaGFiVTB6Q2xwcVFtbE5NbEpwV2tSUmVVMTZiR2xPUkZwcFdrUldiRTFVU1RSTlYwbDRUMFJCTWsxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEWnpCT2FrRjNDazVFWkdwTmFtdDRXbTFOTTFwcVFtbE5NbEpwV2tSUmVVMTZiR2xPUkZwcFdrUldiRTFVU1RSTlYwbDRUMFJCTWsxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlPUkZsM1RVUlJNMWw2U1RWTlYxcHFUakpaZDFscVRtdFpiVkV3VFdwTk5WbHFVVEpaYlZFeFdsUkZlVTlFUm1rS1RWUm5kMDVxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUnJORTFxV1RCTlJGVjRUbE01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvWVhwNFJHOUJRVUZDUVUxQlVucENSa0ZwUVhkTVJDOURaVlp5Y0dOQk1rTXlhalU0Y3preU1HOHlSVXBaUTFKVWFsQjJZd3BOVW5KaWMxUlRObEozU1doQlVHWldNemxUYlZSb2EzSjVTVlpxVGxKMVpYZDBjRk5qU1hORFNDOHlUa0ZEV1hrclJrMVVkR01yUjAxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKblFVMUhWVU5OUjNZME9HSnllbE5ZYTFWa1pqVjNNbVowVDBwTlIxRlJhVnBvYlc1V01TOUNkblZDZG05VFRrdDRiV3B1UTNjS1NUVXdWakJwYW10R05YcGpSRTVqUkM5UlNYaEJUa3hpUkU4MFZ6STFkVU15THpNeFNqbFRPRXBVYkVsNEt6aGhjRVJTZURWSGFXUmxOV2RJZVhwTVV3cG5WakZzYWpRdk1XcE5OWEJPTW5VcllXOUpNa2RuUFQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgxAQshCKRlI1Pb2bAj9KFX31k9RqTG+GzEdk6zzSe9FQCFCRfS1fC3kY93BLQYuBiV9kW0SCsGA8yMDI2MTAyNDAwMDc1NFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDI0MDAwNzU0WjAvBgkqhkiG9w0BCQQxIgQgKYUPinZ7u9mF7M+Vqfl8o6ym/pWAGm/AA/NVEIq4DiowgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxAOfOfD0hEGMls7xwJHci7OLQt6Qvku2I1Nb2833ad+2sRiZplkmYRU975nVt0EqtBwIxAInS0x2jMo+2BSef7XYiRS+na+f//QqAjBUE3FBJqXjdgCv8yOVhN0+f26chU1s4og=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"JShopNKLh27GLzFuMd2gnUnp9GGtBZU59Xay2y7hWsE="},"signature":"MEYCIQDljKSPUDAkeaOS31SNQR1kzjhk0jpiX/C/ylCZE/sUngIhALz8HApjV23A9z/nDvY4TFufz+f/jPhnFIfJ36tZE/SN"}}
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"3495371204","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793044522","inclusionPromise":{"signedEntryTimestamp":"MEUCIQD9AzcTWHftGNNNe1omtJJIsXIxaxUTTHsG9oo54iiHTAIgIlR1PYDfEPXXg2qFHxg3uCGwDv18iD7JvGuIntAU7U0="},"inclusionProof":{"logIndex":"3373466942","rootHash":"gTAENJyUe6gjbhwmVR1cuybMBRgBVd3DJqd+1w4bJfo=","treeSize":"3373466962","hashes":["nvS/nQHh+RQC6dDXzrZzYbo0A87zhZSoci/2Ok7garA=","bOhgH2ZvCYiRdVlzrsztkHV/PJCYH+eZKpy06uQwxZY=","xeH21z6q6FBWv9PcWxZZ3B0NpPGcEMg5mrnNw9szv7Y=","sUGm11zmvC1eMyzwmmrGpFinpsY6xepI5Gx4441ZBGo=","+PB0baI3UdfcMcVLYqCdblXmOxsxpqdzf/pq3k06zwc=","3Ta6LOxcBhqZHWVAnkakc0RYTv+e4JrLPe8f6+PI5Cw=","T9COR1pAhBEpdpuKvhWkDa/cof4gDDlyxofP2eQxQFo=","BtU/O7LSBCRxOiUYfo6w6QDE9wPL+E0BMNVmIHTac4g=","01Gz2sd491oAvPVtodAVG3L+ZnlmRtNI3p2z1lAIMfU=","AP1Gu3/J0eieIZMophuFtg5MjGG05ZDkCKVjbZ6u1Jc=","FM5ondRZhDi27kmSltSStj4O/ATXPz672VgA5aDgsr4=","LoMfGTs8fXIyNHYdO69USeIy3IiKviNIc6UY+e4Yvcg=","6isO7d5SZuUjk8FoC2N/4lrs2iljQ9nlCzDM90al4Mw=","zGfeoWKmrZlXMOvyi3R2GDbGpmI1skJW/wLTXCCgF0o=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3373466962\ngTAENJyUe6gjbhwmVR1cuybMBRgBVd3DJqd+1w4bJfo=\n\n— rekor.sigstore.dev wNI9ajBFAiB5PYQgDgqI5Cm5Qg5Jfc2NEdJakz62UHWzmM0jXOInbQIhANDecfD9sZzjk3WamkhopZ5+C6PXdLuK5kbkko6bUN9M\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI0NWRhMDdiOGRiZDRmZmY3ZDg0NDE4ZTJmODVjOGNmYzZlZWMwY2U4M2Q1MGJkMzUxYjUwYTJkYTE4NTU4ZDcwIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUNtdlhSRWR6bERiVzFxK0ltaUlhQ3Q2NlpsRlFhZkVHV3pUaHdSNFJTZmhRSWdPWXBJZytpS0NYVHNJUnREQ2FXMlEwZHBsbjlIOUxDOGJkL1BIRjNGdzlzPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1SRU5EUW5KSFowRjNTVUpCWjBsVlNtWTVPV2t3YjFVclowazVORkJQTDFCcmVXNUZTRlZMSzJ4bmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFU1RKTlZHc3hUbFJKZVZkb1kwNU5hbGw0VFVSSk1rMXFRWGRPVkVsNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZxYms1eE9ISkpSazFwTXpka05WQkRkazF6ZGswM1NrSlNRekpMU1VaWlYwRndlbWdLZFRGQ2IwbEljVU5VSzI4eVozaEdVVzFWUjNJdlYzQnhOMGxyU1ZsRmMxbFhiVmh6UzI1NmRWcEJTVGxST1ZKeU5tRlBRMEprUVhkbloxaE5UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmQ0VDBSRk1RcE5NazVyVFVSak0xbHFXVEZPUkVac1QxZE5NRmt5U1RWUFIwWnJUMVJaTTA5SFVtbE9SMVY0VFdwVmVscEVSbTFOUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEWjNoUFJFVXhUVEpPYTAxRVl6TlphbGt4Q2s1RVJteFBWMDB3V1RKSk5VOUhSbXRQVkZrelQwZFNhVTVIVlhoTmFsVjZXa1JHYlUxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEWjNoUFJFVXhDazB5VG10TlJHTXpXV3BaTVU1RVJteFBWMDB3V1RKSk5VOUhSbXRQVkZrelQwZFNhVTVIVlhoTmFsVjZXa1JHYlUxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlOVkdkNFRsUk9hbHBFUVROT01ra3lUbFJSZUZwVWJHcE9SMDVwVDFSb2FGcEVhekpPZW1ocldXcFNiRTFVU1RFS1RUSlJlRnBxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRnd1RVUk5lRTlVWXpOT1JHZDRUV2s1YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkS0NrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NITkZaVkZDTTBGSVZVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvWldObmEySjNRVUZDUVUxQlVtcENSVUZwUWtKemFVVXllREZ1TUZaTWFIaDVjbFJJYzBsRk0xZDRkRnB5VFdoaVNuQXJid3BRVFU1WVlVbGxhMXBuU1dkTlZ6QjNVbkJ4WW01a1J5OU1SMlUxVjJGYUwzTk5URzFyT0hCU2JIWXdhRE55VldkTFMyZExNRVpaZDBObldVbExiMXBKQ25wcU1FVkJkMDFFWVZGQmQxcG5TWGhCVDFwRWJHTnpUMUUxZEVRMFpWSldkMnhpWVdoTmQybFFNa1JrVTFOcVZXZHlTR05zU0VaV1dUTnZUa2xZTTBZS01ISklOV2R1YlVvNVoyRnhjVXhTVERWQlNYaEJURWxtTlVzeGFqQkNSMnhWUkVnNFZGTndUM3BzTWtaM2FESjJRekZrVEVGVU9ESnNNbmxzTWxWSllRcDJhRkZsZVZoSE1VRTRNVXhVYW1WeFdWZHhUVGxuUFQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyDADAgEAMIICvwYJKoZIhvcNAQcCoIICsDCCAqwCAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgY9TGxTDVGyYoTMV01Pc4pP01l58Nd4kBn0Sumg9qhqgCFDOXUpJ7cXtrwjOYilQd9ud40s6XGA8yMDI2MTAyNjE5NTUyMlowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdowggHWAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDI2MTk1NTIyWjAvBgkqhkiG9w0BCQQxIgQg29pTiOY44IC14xScsl25SrSvYTLDfJcNnC8hyTkcavgwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGYwZAIwVT85iWUpewUvcb9SE7ah4Zo5VZLynW9sqrVSv5+W0V+ohJmK6PYGIoAx+DJRb/LiAjALEf9S/Nf+wrCoRzzWqWk8tv25g41HPtqB+kB4D0v1tTZUVXuvoPYJ4pi5fW320VU="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"RdoHuNvU//fYRBji+FyM/G7sDOg9UL01G1Ci2hhVjXA="},"signature":"MEUCIQCmvXREdzlDbW1q+ImiIaCt66ZlFQafEGWzThwR4RSfhQIgOYpIg+iKCXTsIRtDCaW2Q0dpln9H9LC8bd/PHF3Fw9s="}}
build/torch-stable-abi210-cu134-aarch64-linux/symbols.json CHANGED
@@ -1,11 +1,11 @@
1
  {
2
  "schema_version": 1,
3
- "module": "_flash_attn2_cuda_460047c",
4
  "functions": [
5
  {
6
  "name": "flash_attn_func",
7
  "qualname": "flash_attn_func",
8
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
9
  "kind": "function",
10
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k: (batch_size, seqlen, nheads_k, headdim)\n v: (batch_size, seqlen, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
11
  "signature": {
@@ -83,7 +83,7 @@
83
  {
84
  "name": "flash_attn_kvpacked_func",
85
  "qualname": "flash_attn_kvpacked_func",
86
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
87
  "kind": "function",
88
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n kv: (batch_size, seqlen, 2, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
89
  "signature": {
@@ -155,7 +155,7 @@
155
  {
156
  "name": "flash_attn_qkvpacked_func",
157
  "qualname": "flash_attn_qkvpacked_func",
158
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
159
  "kind": "function",
160
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_kvpacked_func and flash_attn_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (batch_size, seqlen, 3, nheads, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|) is added to\n the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
161
  "signature": {
@@ -221,7 +221,7 @@
221
  {
222
  "name": "flash_attn_varlen_func",
223
  "qualname": "flash_attn_varlen_func",
224
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
225
  "kind": "function",
226
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in K, V with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n k: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n v: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
227
  "signature": {
@@ -329,7 +329,7 @@
329
  {
330
  "name": "flash_attn_varlen_kvpacked_func",
331
  "qualname": "flash_attn_varlen_kvpacked_func",
332
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
333
  "kind": "function",
334
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n kv: (total_k, 2, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
335
  "signature": {
@@ -425,7 +425,7 @@
425
  {
426
  "name": "flash_attn_varlen_qkvpacked_func",
427
  "qualname": "flash_attn_varlen_qkvpacked_func",
428
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
429
  "kind": "function",
430
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_varlen_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_varlen_kvpacked_func and flash_attn_varlen_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (total, 3, nheads, headdim), where total = total number of tokens in the batch.\n cu_seqlens: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into qkv.\n max_seqlen: int. Maximum sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
431
  "signature": {
@@ -503,7 +503,7 @@
503
  {
504
  "name": "flash_attn_with_kvcache",
505
  "qualname": "flash_attn_with_kvcache",
506
- "module": "_flash_attn2_cuda_460047c.flash_attn_interface",
507
  "kind": "function",
508
  "doc": "If k and v are not None, k_cache and v_cache will be updated *inplace* with the new values from\nk and v. This is useful for incremental decoding: you can pass in the cached keys/values from\nthe previous step, and update them with the new keys/values from the current step, and do\nattention with the updated cache, all in 1 kernel.\n\nIf you pass in k / v, you must make sure that the cache is large enough to hold the new values.\nFor example, the KV cache could be pre-allocated with the max sequence length, and you can use\ncache_seqlens to keep track of the current sequence lengths of each sequence in the batch.\n\nAlso apply rotary embedding if rotary_cos and rotary_sin are passed in. The key @k will be\nrotated by rotary_cos and rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf causal or local (i.e., window_size != (-1, -1)), the query @q will be rotated by rotary_cos\nand rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf not causal and not local, the query @q will be rotated by rotary_cos and rotary_sin at\nindices cache_seqlens only (i.e. we consider all tokens in @q to be at position cache_seqlens).\n\nSee tests/test_flash_attn.py::test_flash_attn_kvcache for examples of how to use this function.\n\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nNote: Does not support backward pass.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n page_block_size must be a multiple of 256.\n v_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n k [optional]: (batch_size, seqlen_new, nheads_k, headdim). If not None, we concatenate\n k with k_cache, starting at the indices specified by cache_seqlens.\n v [optional]: (batch_size, seqlen_new, nheads_k, headdim). Similar to k.\n rotary_cos [optional]: (seqlen_ro, rotary_dim / 2). If not None, we apply rotary embedding\n to k and q. Only applicable if k and v are passed in. rotary_dim must be divisible by 16.\n rotary_sin [optional]: (seqlen_ro, rotary_dim / 2). Similar to rotary_cos.\n cache_seqlens: int, or (batch_size,), dtype torch.int32. The sequence lengths of the\n KV cache.\n cache_batch_idx: (batch_size,), dtype torch.int32. The indices used to index into the KV cache.\n If None, we assume that the batch indices are [0, 1, 2, ..., batch_size - 1].\n If the indices are not distinct, and k and v are provided, the values updated in the cache\n might come from any of the duplicate indices.\n cache_leftpad: (batch_size,), dtype torch.int32. The index that the KV cache starts. If None, assume 0.\n block_table [optional]: (batch_size, max_num_blocks_per_seq), dtype torch.int32.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n rotary_interleaved: bool. Only applicable if rotary_cos and rotary_sin are passed in.\n If True, rotary embedding will combine dimensions 0 & 1, 2 & 3, etc. If False,\n rotary embedding will combine dimensions 0 & rotary_dim / 2, 1 & rotary_dim / 2 + 1\n (i.e. GPT-NeoX style).\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n num_splits: int. If > 1, split the key/value into this many chunks along the sequence.\n If num_splits == 1, we don't split the key/value. If num_splits == 0, we use a heuristic\n to automatically determine the number of splits.\n Don't change this unless you know what you are doing.\n return_softmax_lse: bool. Whether to return the logsumexp of the attention scores.\n\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_softmax_lse=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).",
509
  "signature": {
@@ -629,7 +629,7 @@
629
  {
630
  "name": "fwd",
631
  "qualname": "fwd",
632
- "module": "_flash_attn2_cuda_460047c",
633
  "kind": "function",
634
  "doc": "Forward pass for multi-head attention.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Optional output tensor, same shape as q\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
635
  "signature": {
@@ -719,7 +719,7 @@
719
  {
720
  "name": "varlen_fwd",
721
  "qualname": "varlen_fwd",
722
- "module": "_flash_attn2_cuda_460047c",
723
  "kind": "function",
724
  "doc": "Forward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n q: Query tensor of shape [total_q, num_heads, head_size]\n k: Key tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n v: Value tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n out: Optional output tensor of shape [total_q, num_heads, head_size]\n seqused_k: Optional tensor specifying how many keys to use per batch element [batch_size]\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
725
  "signature": {
@@ -857,7 +857,7 @@
857
  {
858
  "name": "bwd",
859
  "qualname": "bwd",
860
- "module": "_flash_attn2_cuda_460047c",
861
  "kind": "function",
862
  "doc": "Backward pass for multi-head attention.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
863
  "signature": {
@@ -983,7 +983,7 @@
983
  {
984
  "name": "varlen_bwd",
985
  "qualname": "varlen_bwd",
986
- "module": "_flash_attn2_cuda_460047c",
987
  "kind": "function",
988
  "doc": "Backward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
989
  "signature": {
@@ -1139,7 +1139,7 @@
1139
  {
1140
  "name": "fwd_kvcache",
1141
  "qualname": "fwd_kvcache",
1142
- "module": "_flash_attn2_cuda_460047c",
1143
  "kind": "function",
1144
  "doc": "Forward pass for multi-head attention with KV cache.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n kcache: Key cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n vcache: Value cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n k: Optional new keys tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n v: Optional new values tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n seqlens_k: Optional sequence lengths for keys of shape [batch_size]\n rotary_cos: Optional rotary cosine tensor of shape [seqlen_ro, rotary_dim/2]\n rotary_sin: Optional rotary sine tensor of shape [seqlen_ro, rotary_dim/2]\n cache_batch_idx: Optional indices to index into the KV cache\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n out: Optional output tensor, same shape as q\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n is_rotary_interleaved: Whether rotary embeddings are interleaved\n num_splits: Number of splits for computation\n\nReturns:\n List of tensors: [output, softmax_lse]",
1145
  "signature": {
 
1
  {
2
  "schema_version": 1,
3
+ "module": "_flash_attn2_cuda_18153cd",
4
  "functions": [
5
  {
6
  "name": "flash_attn_func",
7
  "qualname": "flash_attn_func",
8
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
9
  "kind": "function",
10
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k: (batch_size, seqlen, nheads_k, headdim)\n v: (batch_size, seqlen, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
11
  "signature": {
 
83
  {
84
  "name": "flash_attn_kvpacked_func",
85
  "qualname": "flash_attn_kvpacked_func",
86
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
87
  "kind": "function",
88
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n kv: (batch_size, seqlen, 2, nheads_k, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
89
  "signature": {
 
155
  {
156
  "name": "flash_attn_qkvpacked_func",
157
  "qualname": "flash_attn_qkvpacked_func",
158
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
159
  "kind": "function",
160
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_kvpacked_func and flash_attn_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (batch_size, seqlen, 3, nheads, headdim)\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|) is added to\n the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
161
  "signature": {
 
221
  {
222
  "name": "flash_attn_varlen_func",
223
  "qualname": "flash_attn_varlen_func",
224
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
225
  "kind": "function",
226
  "doc": "dropout_p should be set to 0.0 during evaluation\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in K, V with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n k: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n v: (total_k, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
227
  "signature": {
 
329
  {
330
  "name": "flash_attn_varlen_kvpacked_func",
331
  "qualname": "flash_attn_varlen_kvpacked_func",
332
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
333
  "kind": "function",
334
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of K, V.\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nArguments:\n q: (total_q, nheads, headdim), where total_q = total number of query tokens in the batch.\n kv: (total_k, 2, nheads_k, headdim), where total_k = total number of key tokens in the batch.\n cu_seqlens_q: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into q.\n cu_seqlens_k: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into kv.\n max_seqlen_q: int. Maximum query sequence length in the batch.\n max_seqlen_k: int. Maximum key sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
335
  "signature": {
 
425
  {
426
  "name": "flash_attn_varlen_qkvpacked_func",
427
  "qualname": "flash_attn_varlen_qkvpacked_func",
428
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
429
  "kind": "function",
430
  "doc": "dropout_p should be set to 0.0 during evaluation\nIf Q, K, V are already stacked into 1 tensor, this function will be faster than\ncalling flash_attn_varlen_func on Q, K, V since the backward pass avoids explicit concatenation\nof the gradients of Q, K, V.\nFor multi-query and grouped-query attention (MQA/GQA), please see\nflash_attn_varlen_kvpacked_func and flash_attn_varlen_func.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between [i - window_size[0], i + window_size[1]] inclusive.\n\nArguments:\n qkv: (total, 3, nheads, headdim), where total = total number of tokens in the batch.\n cu_seqlens: (batch_size + 1,), dtype torch.int32. The cumulative sequence lengths\n of the sequences in the batch, used to index into qkv.\n max_seqlen: int. Maximum sequence length in the batch.\n dropout_p: float. Dropout probability.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of (-alibi_slope * |i - j|)\n is added to the attention score of query i and key j.\n deterministic: bool. Whether to use the deterministic implementation of the backward pass,\n which is slightly slower and uses more memory. The forward pass is always deterministic.\n return_attn_probs: bool. Whether to return the attention probabilities. This option is for\n testing only. The returned probabilities are not guaranteed to be correct\n (they might not have the right scaling).\nReturn:\n out: (total, nheads, headdim).\n softmax_lse [optional, if return_attn_probs=True]: (nheads, total_q_seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).\n S_dmask [optional, if return_attn_probs=True]: (batch_size, nheads, seqlen, seqlen).\n The output of softmax (possibly with different scaling). It also encodes the dropout\n pattern (negative means that location was dropped, nonnegative means it was kept).",
431
  "signature": {
 
503
  {
504
  "name": "flash_attn_with_kvcache",
505
  "qualname": "flash_attn_with_kvcache",
506
+ "module": "_flash_attn2_cuda_18153cd.flash_attn_interface",
507
  "kind": "function",
508
  "doc": "If k and v are not None, k_cache and v_cache will be updated *inplace* with the new values from\nk and v. This is useful for incremental decoding: you can pass in the cached keys/values from\nthe previous step, and update them with the new keys/values from the current step, and do\nattention with the updated cache, all in 1 kernel.\n\nIf you pass in k / v, you must make sure that the cache is large enough to hold the new values.\nFor example, the KV cache could be pre-allocated with the max sequence length, and you can use\ncache_seqlens to keep track of the current sequence lengths of each sequence in the batch.\n\nAlso apply rotary embedding if rotary_cos and rotary_sin are passed in. The key @k will be\nrotated by rotary_cos and rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf causal or local (i.e., window_size != (-1, -1)), the query @q will be rotated by rotary_cos\nand rotary_sin at indices cache_seqlens, cache_seqlens + 1, etc.\nIf not causal and not local, the query @q will be rotated by rotary_cos and rotary_sin at\nindices cache_seqlens only (i.e. we consider all tokens in @q to be at position cache_seqlens).\n\nSee tests/test_flash_attn.py::test_flash_attn_kvcache for examples of how to use this function.\n\nSupports multi-query and grouped-query attention (MQA/GQA) by passing in KV with fewer heads\nthan Q. Note that the number of heads in Q must be divisible by the number of heads in KV.\nFor example, if Q has 6 heads and K, V have 2 heads, head 0, 1, 2 of Q will attention to head\n0 of K, V, and head 3, 4, 5 of Q will attention to head 1 of K, V.\n\nIf causal=True, the causal mask is aligned to the bottom right corner of the attention matrix.\nFor example, if seqlen_q = 2 and seqlen_k = 5, the causal mask (1 = keep, 0 = masked out) is:\n 1 1 1 1 0\n 1 1 1 1 1\nIf seqlen_q = 5 and seqlen_k = 2, the causal mask is:\n 0 0\n 0 0\n 0 0\n 1 0\n 1 1\nIf the row of the mask is all zero, the output will be zero.\n\nIf window_size != (-1, -1), implements sliding window local attention. Query at position i\nwill only attend to keys between\n[i + seqlen_k - seqlen_q - window_size[0], i + seqlen_k - seqlen_q + window_size[1]] inclusive.\n\nNote: Does not support backward pass.\n\nArguments:\n q: (batch_size, seqlen, nheads, headdim)\n k_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n page_block_size must be a multiple of 256.\n v_cache: (batch_size_cache, seqlen_cache, nheads_k, headdim) if there's no block_table,\n or (num_blocks, page_block_size, nheads_k, headdim) if there's a block_table (i.e. paged KV cache)\n k [optional]: (batch_size, seqlen_new, nheads_k, headdim). If not None, we concatenate\n k with k_cache, starting at the indices specified by cache_seqlens.\n v [optional]: (batch_size, seqlen_new, nheads_k, headdim). Similar to k.\n rotary_cos [optional]: (seqlen_ro, rotary_dim / 2). If not None, we apply rotary embedding\n to k and q. Only applicable if k and v are passed in. rotary_dim must be divisible by 16.\n rotary_sin [optional]: (seqlen_ro, rotary_dim / 2). Similar to rotary_cos.\n cache_seqlens: int, or (batch_size,), dtype torch.int32. The sequence lengths of the\n KV cache.\n cache_batch_idx: (batch_size,), dtype torch.int32. The indices used to index into the KV cache.\n If None, we assume that the batch indices are [0, 1, 2, ..., batch_size - 1].\n If the indices are not distinct, and k and v are provided, the values updated in the cache\n might come from any of the duplicate indices.\n cache_leftpad: (batch_size,), dtype torch.int32. The index that the KV cache starts. If None, assume 0.\n block_table [optional]: (batch_size, max_num_blocks_per_seq), dtype torch.int32.\n softmax_scale: float. The scaling of QK^T before applying softmax.\n Default to 1 / sqrt(headdim).\n causal: bool. Whether to apply causal attention mask (e.g., for auto-regressive modeling).\n window_size: (left, right). If not (-1, -1), implements sliding window local attention.\n softcap: float. Anything > 0 activates softcapping attention.\n rotary_interleaved: bool. Only applicable if rotary_cos and rotary_sin are passed in.\n If True, rotary embedding will combine dimensions 0 & 1, 2 & 3, etc. If False,\n rotary embedding will combine dimensions 0 & rotary_dim / 2, 1 & rotary_dim / 2 + 1\n (i.e. GPT-NeoX style).\n alibi_slopes: (nheads,) or (batch_size, nheads), fp32. A bias of\n (-alibi_slope * |i + seqlen_k - seqlen_q - j|)\n is added to the attention score of query i and key j.\n num_splits: int. If > 1, split the key/value into this many chunks along the sequence.\n If num_splits == 1, we don't split the key/value. If num_splits == 0, we use a heuristic\n to automatically determine the number of splits.\n Don't change this unless you know what you are doing.\n return_softmax_lse: bool. Whether to return the logsumexp of the attention scores.\n\nReturn:\n out: (batch_size, seqlen, nheads, headdim).\n softmax_lse [optional, if return_softmax_lse=True]: (batch_size, nheads, seqlen). The\n logsumexp of each row of the matrix QK^T * scaling (e.g., log of the softmax\n normalization factor).",
509
  "signature": {
 
629
  {
630
  "name": "fwd",
631
  "qualname": "fwd",
632
+ "module": "_flash_attn2_cuda_18153cd",
633
  "kind": "function",
634
  "doc": "Forward pass for multi-head attention.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Optional output tensor, same shape as q\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
635
  "signature": {
 
719
  {
720
  "name": "varlen_fwd",
721
  "qualname": "varlen_fwd",
722
+ "module": "_flash_attn2_cuda_18153cd",
723
  "kind": "function",
724
  "doc": "Forward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n q: Query tensor of shape [total_q, num_heads, head_size]\n k: Key tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n v: Value tensor of shape [total_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n out: Optional output tensor of shape [total_q, num_heads, head_size]\n seqused_k: Optional tensor specifying how many keys to use per batch element [batch_size]\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n return_softmax: Whether to return softmax weights\n gen: Optional random number generator\n\nReturns:\n List of tensors: [output, softmax_lse, (softmax if return_softmax)]",
725
  "signature": {
 
857
  {
858
  "name": "bwd",
859
  "qualname": "bwd",
860
+ "module": "_flash_attn2_cuda_18153cd",
861
  "kind": "function",
862
  "doc": "Backward pass for multi-head attention.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
863
  "signature": {
 
983
  {
984
  "name": "varlen_bwd",
985
  "qualname": "varlen_bwd",
986
+ "module": "_flash_attn2_cuda_18153cd",
987
  "kind": "function",
988
  "doc": "Backward pass for multi-head attention with variable sequence lengths.\n\nArgs:\n dout: Gradient tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n k: Key tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n v: Value tensor of shape [batch_size, seqlen_k, num_heads_k, head_size]\n out: Output tensor from forward pass of shape [batch_size, seqlen_q, num_heads, head_size]\n softmax_lse: Log-sum-exp values from forward pass of shape [batch_size, num_heads, seqlen_q]\n cu_seqlens_q: Cumulative sequence lengths for queries of shape [batch_size+1]\n cu_seqlens_k: Cumulative sequence lengths for keys of shape [batch_size+1]\n dq: Optional gradient tensor for queries, same shape as q\n dk: Optional gradient tensor for keys, same shape as k\n dv: Optional gradient tensor for values, same shape as v\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n max_seqlen_q: Maximum sequence length for queries\n max_seqlen_k: Maximum sequence length for keys\n p_dropout: Dropout probability\n softmax_scale: Scale factor for softmax\n zero_tensors: Whether to zero tensors before computation\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n deterministic: Whether to use deterministic algorithms\n gen: Optional random number generator\n rng_state: Optional RNG state from forward pass\n\nReturns:\n List of tensors: [dq, dk, dv]",
989
  "signature": {
 
1139
  {
1140
  "name": "fwd_kvcache",
1141
  "qualname": "fwd_kvcache",
1142
+ "module": "_flash_attn2_cuda_18153cd",
1143
  "kind": "function",
1144
  "doc": "Forward pass for multi-head attention with KV cache.\n\nArgs:\n q: Query tensor of shape [batch_size, seqlen_q, num_heads, head_size]\n kcache: Key cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n vcache: Value cache tensor of shape [batch_size_c, seqlen_k, num_heads_k, head_size] or [num_blocks, page_block_size, num_heads_k, head_size]\n k: Optional new keys tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n v: Optional new values tensor of shape [batch_size, seqlen_knew, num_heads_k, head_size]\n seqlens_k: Optional sequence lengths for keys of shape [batch_size]\n rotary_cos: Optional rotary cosine tensor of shape [seqlen_ro, rotary_dim/2]\n rotary_sin: Optional rotary sine tensor of shape [seqlen_ro, rotary_dim/2]\n cache_batch_idx: Optional indices to index into the KV cache\n leftpad_k: Optional left padding for keys of shape [batch_size]\n block_table: Optional block table of shape [batch_size, max_num_blocks_per_seq]\n alibi_slopes: Optional ALiBi slopes tensor of shape [num_heads] or [batch_size, num_heads]\n out: Optional output tensor, same shape as q\n softmax_scale: Scale factor for softmax\n is_causal: Whether to use causal attention\n window_size_left: Window size for left context (-1 for unlimited)\n window_size_right: Window size for right context (-1 for unlimited)\n softcap: Soft cap for attention weights\n is_rotary_interleaved: Whether rotary embeddings are interleaved\n num_splits: Number of splits for computation\n\nReturns:\n List of tensors: [output, softmax_lse]",
1145
  "signature": {