Kernels:
Trusted publisher
Uploaded using `kernel-builder`.
Browse files
build/torch-xpu/_ops.py
CHANGED
|
@@ -4,11 +4,8 @@ def get_backend() -> str:
|
|
| 4 |
"""Detect the backend by inspecting torch."""
|
| 5 |
import torch
|
| 6 |
|
| 7 |
-
if hasattr(torch
|
| 8 |
-
|
| 9 |
-
# torch's device-backend autoload), regardless of whether TPU
|
| 10 |
-
# hardware is present — analogous to torch.version.cuda being
|
| 11 |
-
# set on CUDA builds without a GPU.
|
| 12 |
return "tpu"
|
| 13 |
elif hasattr(torch, "neuron"):
|
| 14 |
# Needs to be sorted before specific Torch builds, since Neuron
|
|
@@ -28,7 +25,7 @@ def get_backend() -> str:
|
|
| 28 |
|
| 29 |
def _find_ops_name() -> str:
|
| 30 |
kernel_name = "fla"
|
| 31 |
-
unique_id = "
|
| 32 |
backend = get_backend()
|
| 33 |
return f"_{kernel_name}_{backend}_{unique_id}"
|
| 34 |
|
|
|
|
| 4 |
"""Detect the backend by inspecting torch."""
|
| 5 |
import torch
|
| 6 |
|
| 7 |
+
acc = torch.accelerator.current_accelerator() if hasattr(torch, "accelerator") else None
|
| 8 |
+
if acc is not None and acc.type == "tpu":
|
|
|
|
|
|
|
|
|
|
| 9 |
return "tpu"
|
| 10 |
elif hasattr(torch, "neuron"):
|
| 11 |
# Needs to be sorted before specific Torch builds, since Neuron
|
|
|
|
| 25 |
|
| 26 |
def _find_ops_name() -> str:
|
| 27 |
kernel_name = "fla"
|
| 28 |
+
unique_id = "fe2bb66"
|
| 29 |
backend = get_backend()
|
| 30 |
return f"_{kernel_name}_{backend}_{unique_id}"
|
| 31 |
|
build/torch-xpu/metadata.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"name": "fla",
|
| 3 |
-
"id": "
|
| 4 |
"version": 1,
|
| 5 |
"kernels-minver": "0.14.0",
|
| 6 |
"license": "MIT",
|
|
@@ -15,7 +15,7 @@
|
|
| 15 |
"algorithm": "sha256",
|
| 16 |
"files": {
|
| 17 |
"__init__.py": "bVRNYUhThvULeUaovvQFZCJ9IZZsC+0kU/HbnXdYT1A=",
|
| 18 |
-
"_ops.py": "
|
| 19 |
"layers.py": "/39XVQW4d4GHeNROqT67ujKbItdteLBtm0PT6zq41YQ=",
|
| 20 |
"modules/__init__.py": "6ZjjRMt6Rf+2OegXDC8w58RD1IW3SBK+dxBoZa4Uohc=",
|
| 21 |
"modules/activations.py": "Lp7xLUf7r785nt93NFhqoSQM+G7AK2e6kviE2/0TRJs=",
|
|
@@ -296,6 +296,7 @@
|
|
| 296 |
"ops/wall_attn/decode.py": "JphI1kWj0Wwu024gnwgUWrWmhkAnKloXi1ik6cDpRrY=",
|
| 297 |
"ops/wall_attn/naive.py": "9YKwBSvQ9imy229T5KMYKpuVNb+xEzhXsXdMemRWqjQ=",
|
| 298 |
"ops/wall_attn/parallel.py": "oa2UJtSi8ouSG8g6bUWHwOehbwLH74SSHIU8LUiwVrg=",
|
|
|
|
| 299 |
"utils/__init__.py": "bdtrr5b2e7dzcO88Il6bH72LypiM103tHkbY2kPoaeE=",
|
| 300 |
"utils/_compat.py": "kYAtqK4JdTczM1FpqT44T/mILN7DcnPb8C4uPnO4Ho0=",
|
| 301 |
"utils/_config.py": "l1PBnf2C6SABltOAhs9GB0GTr0olQ1fA7d/bhzTb6IA=",
|
|
@@ -308,12 +309,12 @@
|
|
| 308 |
},
|
| 309 |
"provenance": {
|
| 310 |
"kernel-builder": {
|
| 311 |
-
"version": "0.
|
| 312 |
-
"commit": "
|
| 313 |
"dirty": false
|
| 314 |
},
|
| 315 |
"kernel": {
|
| 316 |
-
"commit": "
|
| 317 |
"dirty": false
|
| 318 |
}
|
| 319 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"name": "fla",
|
| 3 |
+
"id": "_fla_xpu_fe2bb66",
|
| 4 |
"version": 1,
|
| 5 |
"kernels-minver": "0.14.0",
|
| 6 |
"license": "MIT",
|
|
|
|
| 15 |
"algorithm": "sha256",
|
| 16 |
"files": {
|
| 17 |
"__init__.py": "bVRNYUhThvULeUaovvQFZCJ9IZZsC+0kU/HbnXdYT1A=",
|
| 18 |
+
"_ops.py": "pXgvH5hf/dXVr6/amV+mRqgiBUGncbV3gbMubhmlOW4=",
|
| 19 |
"layers.py": "/39XVQW4d4GHeNROqT67ujKbItdteLBtm0PT6zq41YQ=",
|
| 20 |
"modules/__init__.py": "6ZjjRMt6Rf+2OegXDC8w58RD1IW3SBK+dxBoZa4Uohc=",
|
| 21 |
"modules/activations.py": "Lp7xLUf7r785nt93NFhqoSQM+G7AK2e6kviE2/0TRJs=",
|
|
|
|
| 296 |
"ops/wall_attn/decode.py": "JphI1kWj0Wwu024gnwgUWrWmhkAnKloXi1ik6cDpRrY=",
|
| 297 |
"ops/wall_attn/naive.py": "9YKwBSvQ9imy229T5KMYKpuVNb+xEzhXsXdMemRWqjQ=",
|
| 298 |
"ops/wall_attn/parallel.py": "oa2UJtSi8ouSG8g6bUWHwOehbwLH74SSHIU8LUiwVrg=",
|
| 299 |
+
"symbols.json": "mLYlaOKZomfTLhl4BVcyn4O5q2XY2OfxWDiw6nZrSrU=",
|
| 300 |
"utils/__init__.py": "bdtrr5b2e7dzcO88Il6bH72LypiM103tHkbY2kPoaeE=",
|
| 301 |
"utils/_compat.py": "kYAtqK4JdTczM1FpqT44T/mILN7DcnPb8C4uPnO4Ho0=",
|
| 302 |
"utils/_config.py": "l1PBnf2C6SABltOAhs9GB0GTr0olQ1fA7d/bhzTb6IA=",
|
|
|
|
| 309 |
},
|
| 310 |
"provenance": {
|
| 311 |
"kernel-builder": {
|
| 312 |
+
"version": "0.18.0-dev0",
|
| 313 |
+
"commit": "d054906a13710b811b96697b4635f03020842733",
|
| 314 |
"dirty": false
|
| 315 |
},
|
| 316 |
"kernel": {
|
| 317 |
+
"commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
|
| 318 |
"dirty": false
|
| 319 |
}
|
| 320 |
}
|
build/torch-xpu/metadata.json.sigstore
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSzCCBtGgAwIBAgIUGcN7LQkcvdyuhnO14CIR52+bQQQwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwOTExMTI0NjA4WhcNMjYwOTExMTI1NjA4WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7oSL/bhmllXOIEDBBC4cSUNOM6VlEL15k+nhO3cusI++bePwA3i0wzb7FOtMcOsSw6iZo099L4Ikh3s5QKThaaOCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUH8yU9ifEmDNBMqZ/I5O5+Mu5GvcwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNDEyM2Y5NmY2NDc3NWVkYTZlOTRmODdjZGY4NDgzZTkyM2I4NmQyMDATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNDEyM2Y5NmY2NDc3NWVkYTZlOTRmODdjZGY4NDgzZTkyM2I4NmQyMDAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoNDEyM2Y5NmY2NDc3NWVkYTZlOTRmODdjZGY4NDgzZTkyM2I4NmQyMDAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDQxMjNmOTZmNjQ3NzVlZGE2ZTk0Zjg3Y2RmODQ4M2U5MjNiODZkMjAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzQ2MDAzNTI5OTAvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoJCBACMAAAQDAEcwRQIhAOb/0QJ319L1YOOkgYukOYPh2W8GWumHcHlziA1C93cmAiAaKdG/p00mK1x9U9zMW5aaffXyha/efVRs2yxwOauvkTAKBggqhkjOPQQDAwNoADBlAjB5bYR2rnIh8ziuruB0q7/iuvkqYfSMq6fsbW1d72z0i21zapX1NH6eMhMtIhI6Ke4CMQDne/qto47GArLjAVGi8Zk/5CfGcHTbFqnHk7/abZZofh1i5ODPdOwmeVLGXqec8vE="}, "tlogEntries":[{"logIndex":"2793362354", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1789130768", "inclusionPromise":{"signedEntryTimestamp":"MEQCIGKV83P0BgFHqobBk72noNoAEddF5i0mL6+7aboimkzlAiAhrg6FJ7CW4BH+uAR0eBsc7W7aTr4iF+FOp3+Focr17Q=="}, "inclusionProof":{"logIndex":"2671458092", "rootHash":"ANa4CJ8rYhknUcf5LwE7mS5c+92lA6aLHO/Z2NtTY+A=", "treeSize":"2671458115", "hashes":["slEQblbMYqePBCt7cry09itMV2MtecsQlxoFWRAOvx8=", "9syqG8w8oiXhxh5KXqsckrGwgyND9HT42ji+u9olmu0=", "kxHac7K3kx7wFjO4G1ptbhm+5sk6jW9aai1bBYdn2nM=", "B/V6sXsuiatY1gSG6i/5ugHv/7fzK35ZDegs79vsSOI=", "0zN1Tz3TiG/gBH5ULTVm1pzhHHIL3caE5brBzRbKQEY=", "Za5HK3xABuajEYZP+THCeYjJ3Dh0Moqx1UpYwq9cSME=", "j4kslJqSj/pADtr8lSiZnGG54Sg6PYCPUQ/00qlyWJk=", "boSBwC21uMQAMndX7Z8d4D8K+MYXVfFPy9DoeueE6ug=", "sPl07GzZyajNTQKGw59Xf5i3P/yDTlwAxXO4kN6FP7s=", "z54K+8JsNrvBQ2+Mhdsl0CUVzOMFf5twZgR/dj6RkAA=", "QSceGXuGTW/9/g+10B4y4zChaUpvaKLUZaLscFeOkAw=", "tsHhfJ+X4RzI9PA4JV0E91uOIJxXQRN7iEOZuxOIvKo=", "HjIF5qmuq64UWjnlLDUL73mqoLvbcmcWoxZTIccCZiY=", "k+BNotUfxhhXkBmIxNKyQj+1wiL82kdwx2Gq2N4D4Jc=", "AQMAZinvrdBp0wx7QCP1xhhBIIuI3ZKYBvZzHDq2NIw=", "tmmncJvF9VDF4uh5faBrieoKJbtWN2rpKvk3uQQ2W8o=", "/mjQogAQefxrs6hDWFie0uOlNqZc4omr6I+XxshnZ1Y=", "Ari+W6zWoRpeR1Lw5lnM64DXE7cw7awR/QTfo7IO3PM=", "4SexKjDhe33uQFmbzX5SUsB0SyhTm14ObSvNGPpKDFk=", "7tD2K8mAqGTMENrP2YXWz71BeTWQPCiYd3CESAgQLz8=", "eXSLrLqKSxRTixSP/k4YimriB2lufao6trqTrsxxlyg=", "SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2671458115\nANa4CJ8rYhknUcf5LwE7mS5c+92lA6aLHO/Z2NtTY+A=\n\n— rekor.sigstore.dev wNI9ajBGAiEA1bASs1lRPR3nHKa9VmWd5pPJPRFqMWzEZs2IHMcsr/sCIQCPIEehohgEFTU1Bp5KjVCBCpAreIhpC3veRh5tsL4xVQ==\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIyNzMyNTVhMjk4YjMyOGYzNzZjNDM3MmZmOWNjZGZkMWFmMzE0NGQxMTU4ZjczNWM0NWM1ZTkxZmQzZTQ0MzhiIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQnVDWXpucDlTNzUzTGgvczRTTS9RSzRQOXNJb25aSlljZ2dCVHJyN0JURUFpRUF4cnN0clJRVzZlMUoyYk5oTFdlMmdoOW9ONWhOSGdYUDVqbS9leWFJTlRFPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRla05EUW5SSFowRjNTVUpCWjBsVlIyTk9OMHhSYTJOMlpIbDFhRzVQTVRSRFNWSTFNaXRpVVZGUmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVUlhoTlZFa3dUbXBCTkZkb1kwNU5hbGwzVDFSRmVFMVVTVEZPYWtFMFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVUzYjFOTUwySm9iV3hzV0U5SlJVUkNRa00wWTFOVlRrOU5ObFpzUlV3eE5Xc3JibWdLVHpOamRYTkpLeXRpWlZCM1FUTnBNSGQ2WWpkR1QzUk5ZMDl6VTNjMmFWcHZNRGs1VERSSmEyZ3pjelZSUzFSb1lXRlBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZJT0hsVkNqbHBaa1Z0UkU1Q1RYRmFMMGsxVHpVclRYVTFSM1pqZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU9SRVY1VFRKWk5VNXRXVEpPUkdNelRsZFdhMWxVV214UFZGSnRDazlFWkdwYVIxazBUa1JuZWxwVWEzbE5Na2swVG0xUmVVMUVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDVFUlhsTk1sazFUbTFaTWs1RVl6Tk9WMVpyV1ZSYWJFOVVVbTFQUkdScVdrZFpORTVFWjNvS1dsUnJlVTB5U1RST2JWRjVUVVJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDVFUlhsTk1sazFUbTFaTWs1RVl6Tk9WMVpyV1ZSYWJFOVVVbTBLVDBSa2FscEhXVFJPUkdkNldsUnJlVTB5U1RST2JWRjVUVVJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUlJlRTFxVG0wS1QxUmFiVTVxVVROT2VsWnNXa2RGTWxwVWF6QmFhbWN6V1RKU2JVOUVVVFJOTWxVMVRXcE9hVTlFV210TmFrRjNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWxFeVRVUkJlazVVU1RWUFZFRjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOUtRMEpCUTAxQlFVRlJSQXBCUldOM1VsRkphRUZQWWk4d1VVb3pNVGxNTVZsUFQydG5XWFZyVDFsUWFESlhPRWRYZFcxSVkwaHNlbWxCTVVNNU0yTnRRV2xCWVV0a1J5OXdNREJ0Q2tzeGVEbFZPWHBOVnpWaFlXWm1XSGxvWVM5bFpsWlNjeko1ZUhkUFlYVjJhMVJCUzBKblozRm9hMnBQVUZGUlJFRjNUbTlCUkVKc1FXcENOV0paVWpJS2NtNUphRGg2YVhWeWRVSXdjVGN2YVhWMmEzRlpabE5OY1RabWMySlhNV1EzTW5vd2FUSXhlbUZ3V0RGT1NEWmxUV2hOZEVsb1NUWkxaVFJEVFZGRWJncGxMM0YwYnpRM1IwRnlUR3BCVmtkcE9GcHJMelZEWmtkalNGUmlSbkZ1U0dzM0wyRmlXbHB2Wm1neGFUVlBSRkJrVDNkdFpWWk1SMWh4WldNNGRrVTlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgPslqQ2lbmYVVNfnAWTi5Fblkwx47eA3DyMErk+wbMv0CFQDy7EgZ1FsBmDmix+qzTd1MMb4RwBgPMjAyNjA5MTExMjQ2MDhaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkxMTEyNDYwOFowLwYJKoZIhvcNAQkEMSIEIO1x7kjXoXusYUVglJzpMxPrrJK7IJ8cqyQr2qpM0Sg3MIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMQDiq8h6Uq+z3gvPFyVPHxju1tMYwolHd6DaKMMRZETk/ev5rhO+byQ+/Aw/n2FbZZwCMGXNlKj0Ur8xSXTfwnBGnUD7SkU3IqJHdcGWdqn7JVJvqjLqC3hqiN4ouiW1z6XvWA=="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"JzJVopizKPN2xDcv+czf0a8xRNEVj3NcRcXpH9PkQ4s="}, "signature":"MEUCIBuCYznp9S753Lh/s4SM/QK4P9sIonZJYcggBTrr7BTEAiEAxrstrRQW6e1J2bNhLWe2gh9oN5hNHgXP5jm/eyaINTE="}}
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHLTCCBrOgAwIBAgIUccKqLwRVOhn7FTeoom+7JBUxGR4wCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTEwMDU2WhcNMjYxMDE5MTExMDU2WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcf0Zu+ccQZsFDzoPKdqMiKLK1d5n8//7KDoRGgTN9mzwlldvwE//TLmPf/BmuPtrXY60QrCR1D0tkMtpbG4LRKOCBdIwggXOMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTU0OTYzNS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhU9JYiwAABAMASDBGAiEAqpB2O914Vim67H+8TKHmD5w80d5/SwUBTo0qW+hpz04CIQCdLOoKdYZoyG9aM1grLsvH/kvCr+cuPYy7Oav8Mj7qNTAKBggqhkjOPQQDAwNoADBlAjEAudbzki4fUOODSHG9WPt+8Luz2Ekrng8x6RaXnNSQLw+4r7o3l7bbFtF+QqHValG9AjAaIrNSVz/rn6aVoaQ8YS53NRvUn8AoLswkHSZSVSNJSgVcFk7+zfyQGUo/sGk2UrU="}, "tlogEntries":[{"logIndex":"3320106863", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1792407656", "inclusionPromise":{"signedEntryTimestamp":"MEUCIBIXVACpzZk3A5UdTHJGNzY1+BEe8izv6WytQRoNurdRAiEAwiN6I127S9wYrzzhAp1KlLnJg6t79oYM7xeX1ljOCX8="}, "inclusionProof":{"logIndex":"3198202601", "rootHash":"7NFr/lK6Bzd15e0zU7FG33+UqCjS81C8Wqgavc/42PY=", "treeSize":"3198202606", "hashes":["Jqmf6hBm2SlbxPt6bWzI3yTDaXWJ9wpwn4oFUPfSzC4=", "Hu84dUxAvrcEUjbpHGVTa0v3W9f4bcLgyxJ9arIsA4k=", "iwjbHz8DebR+crQAEZT8SrEV6EY2d6vr38RBJMuRdI8=", "aSMGqrar0XadNbUv88cEFHH4z041bKA8kIwNb0/4dvw=", "da3b5yFUv0WI9AHoAIzLrj+mneing+E7+sN84uV6dyU=", "AIg+9CDrUOfKYHkholj8Hb5rLzOEXDmzH8bvEzlWT5A=", "9XILTHMRbuTH5s7/ktpnEOF5r3lYOe799pW7DVDKXb0=", "A9FtVzn33g4x+CTV70Ba6UZyAYH9uzW+6x2dh0lNvgI=", "fc0pcvawZCdBMV+HYOr/hQ5DyDVH7XSj5bkI9of0GLM=", "FEgdG4+ki96DDLGD8Iuzoy3Ym45SfhKnrkhNx+u0ElY=", "OlLDeTiZ1vIMDel4vGDtbNVnrFnzDe1MFV5rBN5Ep4o=", "uCZQe757l2sS1c05Y7TzOwEm+X8MeGLIUCkEOmFVOz4=", "nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=", "G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=", "qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=", "gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=", "NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=", "qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3198202606\n7NFr/lK6Bzd15e0zU7FG33+UqCjS81C8Wqgavc/42PY=\n\n— rekor.sigstore.dev wNI9ajBFAiEAnIN6aO06lOxaFRKVVPyZZ+iY3yKFD7FjVuY2RcYj9SoCIBQUN/Yq8vPM0QLSjxPAH1I37N99dRXRjLZ48pJyi46Z\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJiZDFlMGE3NWQxNjhiZDJiMWNmOWM3NzQwNTI1OGQyMmZiOWJiMjgzNDRmYjUwZGJiNzlmMGU0NDNiYTZjZDlkIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUURzUERCOE9MMWd2bnpTeUY2VHpKMllqQW9YSFJkcjhnUnZOaVd2V25xNklBSWhBS3pkQTJuMjlqK3MyK2JNd1RoUEIwMHRJb29BOWdRczNFRVo2b3N1WHkvWiIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1WRU5EUW5KUFowRjNTVUpCWjBsVlkyTkxjVXgzVWxaUGFHNDNSbFJsYjI5dEt6ZEtRbFY0UjFJMGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZFVjNUVVJWTWxkb1kwNU5hbGw0VFVSRk5VMVVSWGhOUkZVeVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZqWmpCYWRTdGpZMUZhYzBaRWVtOVFTMlJ4VFdsTFRFc3haRFZ1T0M4dk4wdEViMUlLUjJkVVRqbHRlbmRzYkdSMmQwVXZMMVJNYlZCbUwwSnRkVkIwY2xoWk5qQlJja05TTVVRd2RHdE5kSEJpUnpSTVVrdFBRMEprU1hkbloxaFBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVVlRCUFZGbDZUbE01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTUNrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NEQkZaWGRDTlVGSVkwRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVlRsS1dXbDNRVUZDUVUxQlUwUkNSMEZwUlVGeGNFSXlUemt4TkZacGJUWTNTQ3M0VkV0SWJVUTFkemd3WkRVdlUzZFZRZ3BVYnpCeFZ5dG9jSG93TkVOSlVVTmtURTl2UzJSWldtOTVSemxoVFRGbmNreHpka2d2YTNaRGNpdGpkVkJaZVRkUFlYWTRUV28zY1U1VVFVdENaMmR4Q21ocmFrOVFVVkZFUVhkT2IwRkVRbXhCYWtWQmRXUmllbXRwTkdaVlQwOUVVMGhIT1ZkUWRDczRUSFY2TWtWcmNtNW5PSGcyVW1GWWJrNVRVVXgzS3pRS2NqZHZNMnczWW1KR2RFWXJVWEZJVm1Gc1J6bEJha0ZoU1hKT1UxWjZMM0p1Tm1GV2IyRlJPRmxUTlROT1VuWlZiamhCYjB4emQydElVMXBUVmxOT1NncFRaMVpqUm1zM0szcG1lVkZIVlc4dmMwZHJNbFZ5VlQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyDADAgEAMIICvwYJKoZIhvcNAQcCoIICsDCCAqwCAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgSXEeWTKPy5M344/YFT/XP8azEPBYve+1t3rfl2y9fU8CFGZeBX8tHbhk1uWSO0u4AA1UktZhGA8yMDI2MTAxOTExMDA1NlowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdowggHWAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTEwMDU2WjAvBgkqhkiG9w0BCQQxIgQgwfvgGPFqgA9OvUgsLvMTGQENfojqD7cfseLFLfU9c84wgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGYwZAIwYWMvEXVuabGURhsFSF1Y6rl227JXpU/4jZkBHXYZbZbN5Aqs8ZZw2U+hsJmLxqjyAjA9CeY2AqRWdIrE4bTzCHn/eZH533Bce4owlrDB6F9jzhkrgN9DihO3z3YSPGhRhGM="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"vR4KddFovSsc+cd0BSWNIvubsoNE+1Dbt58ORDumzZ0="}, "signature":"MEYCIQDsPDB8OL1gvnzSyF6TzJ2YjAoXHRdr8gRvNiWvWnq6IAIhAKzdA2n29j+s2+bMwThPB00tIooA9gQs3EEZ6osuXy/Z"}}
|
build/torch-xpu/symbols.json
ADDED
|
@@ -0,0 +1,640 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"module": "_fla_xpu_fe2bb66",
|
| 4 |
+
"functions": [
|
| 5 |
+
{
|
| 6 |
+
"name": "chunk_kda",
|
| 7 |
+
"qualname": "chunk_kda",
|
| 8 |
+
"module": "_fla_xpu_fe2bb66.ops.kda.chunk",
|
| 9 |
+
"kind": "function",
|
| 10 |
+
"doc": "Args:\n q (torch.Tensor):\n queries of shape ``[B, T, H, K]``.\n k (torch.Tensor):\n keys of shape ``[B, T, H, K]``.\n v (torch.Tensor):\n values of shape ``[B, T, HV, V]``.\n GVA (Grouped Value Attention) is applied if ``HV > H``, where ``HV`` must be divisible by ``H``.\n g (torch.Tensor):\n (forget) gating tensor (in log space!) of shape ``[B, T, HV, K]``.\n When ``use_gate_in_kernel=False`` (default), ``g`` should be the pre-computed decay value.\n When ``use_gate_in_kernel=True``, ``g`` is the raw input before gate activation;\n the kernel fuses ``-exp(A_log) * softplus(g + dt_bias)`` + chunk cumsum internally.\n beta (torch.Tensor):\n betas of shape ``[B, T, HV]``.\n scale (Optional[float]):\n Scale factor for the KDA attention scores.\n If not provided, it will default to ``1 / sqrt(K)``. Default: ``None``.\n initial_state (Optional[torch.Tensor]):\n Initial state of shape ``[N, HV, K, V]`` for ``N`` input sequences.\n For equal-length input sequences, ``N`` equals the batch size ``B``.\n Default: ``None``.\n output_final_state (Optional[bool]):\n Whether to output the final state of shape ``[N, HV, K, V]``. Default: ``False``.\n use_qk_l2norm_in_kernel (bool):\n Whether to apply L2norm to the q,k tensor internally. Default: ``False``.\n use_gate_in_kernel (bool):\n Whether to compute the log-space KDA decay internally.\n - If ``True``:\n The passed ``g`` acts as the raw input for ``-exp(A_log) * softplus(g + dt_bias.view(HV, K))``.\n Note that as part of the input arguments,\n ``A_log`` (shape ``[HV]``) and the optional ``dt_bias`` (shape ``[HV * K]``) should be provided.\n - If ``False``, ``g`` is expected to be the pre-computed decay value.\n Default: ``False``.\n use_beta_sigmoid_in_kernel (bool):\n Whether to apply ``torch.sigmoid(beta)`` before launching the chunk kernel.\n - If ``True``, the passed ``beta`` acts as the raw beta logits.\n - If ``False``, ``beta`` is expected to already be in post-sigmoid space.\n Default: ``False``.\n allow_neg_eigval (bool):\n Whether to allow negative eigenvalues by scaling ``beta`` to ``[0, 2)``.\n Only takes effect together with ``use_beta_sigmoid_in_kernel=True``, in which case\n the kernel computes ``2 * sigmoid(beta)`` instead of ``sigmoid(beta)``.\n Default: ``False``.\n safe_gate (bool):\n Whether to clamp the gate to ``[lower_bound, 0)`` and enable M=16 TensorCore\n acceleration for higher throughput. Requires ``lower_bound`` to be set.\n Default: ``False``.\n lower_bound (Optional[float]):\n Lower bound for the forget gate (in log space). When set together with\n ``safe_gate=True``, changes the gate activation from\n ``-exp(A_log) * softplus(g + dt_bias)`` to\n ``lower_bound * sigmoid(exp(A_log) * (g + dt_bias))``,\n which naturally clamps the output to ``[lower_bound, 0)``.\n Recommended value: ``-5`` (i.e., per-step decay ``exp(-5) ≈ 0.0067``).\n Default: ``None``.\n disable_recompute (bool):\n Whether to disable gradient recomputation in the kernel. When ``True``, the kernel\n will save all intermediate activations for backward pass, which is beneficial\n for training small models at the cost of increased memory usage. Default: ``False``.\n return_intermediate_states (bool):\n If True, returns intermediate state ``h`` for inference scenarios (e.g., vLLM).\n Must be used within ``torch.inference_mode()`` and will return a 3-tuple instead of 2-tuple.\n This is not intended for training as it bypasses autograd. Default: ``False``.\n state_v_first (Optional[bool]):\n Store the recurrent state in V-first ``[V, K]`` layout instead of the default ``[K, V]``. Default: ``False``.\n cu_seqlens (torch.LongTensor):\n Cumulative sequence lengths of shape ``[N+1]`` used for variable-length training,\n consistent with the FlashAttention API.\n cu_seqlens_cpu (torch.LongTensor):\n Cumulative sequence lengths of shape ``[N+1]`` used for variable-length training,\n consistent with the FlashAttention API.\n cp_context (Optional[FLACPContext]):\n Context parallel context for distributed training across multiple devices.\n When provided, ``initial_state`` and ``output_final_state`` are not supported,\n and ``cu_seqlens`` will be overridden by the context. Default: ``None``.\n\nReturns:\n - Normal mode (return_intermediate_states=False): A tuple (o, final_state)\n o (torch.Tensor):\n Outputs of shape ``[B, T, HV, V]``.\n final_state (torch.Tensor):\n Final state of shape ``[N, HV, K, V]`` if ``output_final_state=True`` else ``None``.\n - Inference mode (return_intermediate_states=True): A tuple (o, final_state, h)\n o (torch.Tensor):\n Outputs of shape ``[B, T, HV, V]``.\n final_state (torch.Tensor):\n Final state of shape ``[N, HV, K, V]`` if ``output_final_state=True`` else ``None``.\n h (torch.Tensor):\n Intermediate states of shape ``[B, NT, HV, K, V]`` and dtype ``bfloat16``.\n - For equal-length sequences: ``NT = ceil(T / chunk_size)``\n - For variable-length sequences (cu_seqlens): B is always 1 (flattened),\n NT is the total number of chunks across all sequences.\n\nExamples::\n >>> import torch\n >>> import torch.nn.functional as F\n >>> from einops import rearrange\n >>> from ...ops.kda import chunk_kda\n # inputs with equal lengths (no GVA, HV == H)\n >>> B, T, H, K, V = 4, 2048, 4, 512, 512\n >>> q = torch.randn(B, T, H, K, dtype=torch.bfloat16, device='cuda')\n >>> k = torch.randn(B, T, H, K, dtype=torch.bfloat16, device='cuda')\n >>> v = torch.randn(B, T, H, V, dtype=torch.bfloat16, device='cuda')\n >>> beta = torch.rand(B, T, H, dtype=torch.bfloat16, device='cuda')\n >>> g = torch.rand(B, T, H, K, dtype=torch.bfloat16, device='cuda')\n >>> h0 = torch.randn(B, H, K, V, dtype=torch.bfloat16, device='cuda')\n >>> A_log = torch.randn(H, dtype=torch.float32, device='cuda')\n >>> dt_bias = torch.randn(H * K, dtype=torch.float32, device='cuda')\n >>> o, ht = chunk_kda(\n q, k, v, g, beta,\n A_log=A_log,\n dt_bias=dt_bias,\n use_qk_l2norm_in_kernel=True,\n use_gate_in_kernel=True,\n initial_state=h0,\n output_final_state=True\n )\n # GVA mode (HV > H)\n >>> HV = 8 # 2x more value heads than qk heads\n >>> v = torch.randn(B, T, HV, V, dtype=torch.bfloat16, device='cuda')\n >>> g = torch.rand(B, T, HV, K, dtype=torch.bfloat16, device='cuda')\n >>> beta = torch.rand(B, T, HV, dtype=torch.bfloat16, device='cuda')\n >>> h0 = torch.randn(B, HV, K, V, dtype=torch.bfloat16, device='cuda')\n >>> A_log = torch.randn(HV, dtype=torch.float32, device='cuda')\n >>> dt_bias = torch.randn(HV * K, dtype=torch.float32, device='cuda')\n >>> o, ht = chunk_kda(\n q, k, v, g, beta,\n A_log=A_log,\n dt_bias=dt_bias,\n use_qk_l2norm_in_kernel=True,\n use_gate_in_kernel=True,\n initial_state=h0,\n output_final_state=True\n )\n # for variable-length inputs, the batch size `B` is expected to be 1 and `cu_seqlens` is required\n >>> q, k, v, beta, g = map(lambda x: rearrange(x, 'b t ... -> 1 (b t) ...'), (q, k, v, beta, g))\n # for a batch with 4 sequences, `cu_seqlens` with 5 start/end positions are expected\n >>> cu_seqlens = q.new_tensor([0, 2048, 4096, 6144, 8192], dtype=torch.long)\n >>> o, ht = chunk_kda(\n q, k, v, g, beta,\n A_log=A_log,\n dt_bias=dt_bias,\n use_qk_l2norm_in_kernel=True,\n use_gate_in_kernel=True,\n initial_state=h0,\n output_final_state=True,\n cu_seqlens=cu_seqlens\n )",
|
| 11 |
+
"signature": {
|
| 12 |
+
"parameters": [
|
| 13 |
+
{
|
| 14 |
+
"name": "q",
|
| 15 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 16 |
+
"default": null,
|
| 17 |
+
"annotation": "torch.Tensor"
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"name": "k",
|
| 21 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 22 |
+
"default": null,
|
| 23 |
+
"annotation": "torch.Tensor"
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"name": "v",
|
| 27 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 28 |
+
"default": null,
|
| 29 |
+
"annotation": "torch.Tensor"
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"name": "g",
|
| 33 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 34 |
+
"default": null,
|
| 35 |
+
"annotation": "torch.Tensor"
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"name": "beta",
|
| 39 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 40 |
+
"default": null,
|
| 41 |
+
"annotation": "torch.Tensor"
|
| 42 |
+
},
|
| 43 |
+
{
|
| 44 |
+
"name": "scale",
|
| 45 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 46 |
+
"default": "None",
|
| 47 |
+
"annotation": "float | None"
|
| 48 |
+
},
|
| 49 |
+
{
|
| 50 |
+
"name": "initial_state",
|
| 51 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 52 |
+
"default": "None",
|
| 53 |
+
"annotation": "torch.Tensor | None"
|
| 54 |
+
},
|
| 55 |
+
{
|
| 56 |
+
"name": "output_final_state",
|
| 57 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 58 |
+
"default": "False",
|
| 59 |
+
"annotation": "bool"
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"name": "use_qk_l2norm_in_kernel",
|
| 63 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 64 |
+
"default": "False",
|
| 65 |
+
"annotation": "bool"
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"name": "use_gate_in_kernel",
|
| 69 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 70 |
+
"default": "False",
|
| 71 |
+
"annotation": "bool"
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"name": "use_beta_sigmoid_in_kernel",
|
| 75 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 76 |
+
"default": "False",
|
| 77 |
+
"annotation": "bool"
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"name": "allow_neg_eigval",
|
| 81 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 82 |
+
"default": "False",
|
| 83 |
+
"annotation": "bool"
|
| 84 |
+
},
|
| 85 |
+
{
|
| 86 |
+
"name": "safe_gate",
|
| 87 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 88 |
+
"default": "False",
|
| 89 |
+
"annotation": "bool"
|
| 90 |
+
},
|
| 91 |
+
{
|
| 92 |
+
"name": "lower_bound",
|
| 93 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 94 |
+
"default": "None",
|
| 95 |
+
"annotation": "float | None"
|
| 96 |
+
},
|
| 97 |
+
{
|
| 98 |
+
"name": "disable_recompute",
|
| 99 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 100 |
+
"default": "False",
|
| 101 |
+
"annotation": "bool"
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
"name": "return_intermediate_states",
|
| 105 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 106 |
+
"default": "False",
|
| 107 |
+
"annotation": "bool"
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"name": "state_v_first",
|
| 111 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 112 |
+
"default": "False",
|
| 113 |
+
"annotation": "bool"
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"name": "cu_seqlens",
|
| 117 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 118 |
+
"default": "None",
|
| 119 |
+
"annotation": "torch.LongTensor | None"
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"name": "cu_seqlens_cpu",
|
| 123 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 124 |
+
"default": "None",
|
| 125 |
+
"annotation": "torch.LongTensor | None"
|
| 126 |
+
},
|
| 127 |
+
{
|
| 128 |
+
"name": "cp_context",
|
| 129 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 130 |
+
"default": "None",
|
| 131 |
+
"annotation": "_fla_xpu_fe2bb66.ops.cp.context.FLACPContext"
|
| 132 |
+
},
|
| 133 |
+
{
|
| 134 |
+
"name": "kwargs",
|
| 135 |
+
"kind": "VAR_KEYWORD",
|
| 136 |
+
"default": null,
|
| 137 |
+
"annotation": null
|
| 138 |
+
}
|
| 139 |
+
],
|
| 140 |
+
"return_annotation": null
|
| 141 |
+
}
|
| 142 |
+
},
|
| 143 |
+
{
|
| 144 |
+
"name": "fused_recurrent_kda",
|
| 145 |
+
"qualname": "fused_recurrent_kda",
|
| 146 |
+
"module": "_fla_xpu_fe2bb66.ops.kda.fused_recurrent",
|
| 147 |
+
"kind": "function",
|
| 148 |
+
"doc": "Args:\n q (torch.Tensor):\n queries of shape `[B, T, H, K]`.\n k (torch.Tensor):\n keys of shape `[B, T, H, K]`.\n v (torch.Tensor):\n values of shape `[B, T, HV, V]`.\n GVA is applied if `HV > H`.\n g (torch.Tensor):\n g (decays) of shape `[B, T, HV, K]`.\n beta (torch.Tensor):\n betas of shape `[B, T, HV]`.\n A_log (Optional[torch.Tensor]):\n Decay parameter of shape `[HV]`. Required when `use_gate_in_kernel=True`.\n dt_bias (Optional[torch.Tensor]):\n Bias added to `g` before activation, of shape `[HV]`.\n Only used when `use_gate_in_kernel=True`.\n scale (Optional[float]):\n Scale factor for the RetNet attention scores.\n If not provided, it will default to `1 / sqrt(K)`. Default: `None`.\n initial_state (Optional[torch.Tensor]):\n Initial state of shape `[N, HV, K, V]` for `N` input sequences.\n For equal-length input sequences, `N` equals the batch size `B`.\n Default: `None`.\n output_final_state (Optional[bool]):\n Whether to output the final state of shape `[N, HV, K, V]`. Default: `False`.\n use_qk_l2norm_in_kernel (Optional[bool]):\n Whether to use L2 normalization in the kernel. Default: `False`.\n use_gate_in_kernel (Optional[bool]):\n Whether to compute the log-space KDA decay internally.\n When `True`, `g` is the raw input and `A_log` must be provided; the kernel fuses\n gate activation into the recurrence. Default: `False`.\n use_beta_sigmoid_in_kernel (Optional[bool]):\n Whether to apply `torch.sigmoid(beta)` inside the kernel.\n - If `True`, the passed `beta` acts as the raw beta logits.\n - If `False`, `beta` is expected to already be in post-sigmoid space.\n Default: `False`.\n allow_neg_eigval (Optional[bool]):\n Whether to allow negative eigenvalues by scaling `beta` to `[0, 2)`.\n Only takes effect together with `use_beta_sigmoid_in_kernel=True`, in which case\n the kernel computes `2 * sigmoid(beta)` instead of `sigmoid(beta)`. Default: `False`.\n lower_bound (Optional[float]):\n Lower bound for the forget gate (in log space). Only used when `use_gate_in_kernel=True`. Default: `None`.\n state_v_first (Optional[bool]):\n Store the recurrent state in V-first ``[V, K]`` layout instead of the default ``[K, V]``. Default: ``False``.\n cu_seqlens (torch.LongTensor):\n Cumulative sequence lengths of shape `[N+1]` used for variable-length training,\n consistent with the FlashAttention API.\n\nReturns:\n o (torch.Tensor):\n Outputs of shape `[B, T, HV, V]`.\n final_state (torch.Tensor):\n Final state of shape `[N, HV, K, V]` if `output_final_state=True` else `None`.\n\nExamples::\n >>> import torch\n >>> import torch.nn.functional as F\n >>> from einops import rearrange\n >>> from ...ops.kda import fused_recurrent_kda\n # inputs with equal lengths\n >>> B, T, H, HV, K, V = 4, 2048, 4, 8, 512, 512\n >>> q = torch.randn(B, T, H, K, device='cuda')\n >>> k = F.normalize(torch.randn(B, T, H, K, device='cuda'), p=2, dim=-1)\n >>> v = torch.randn(B, T, HV, V, device='cuda')\n >>> g = F.logsigmoid(torch.rand(B, T, HV, K, device='cuda'))\n >>> beta = torch.rand(B, T, HV, device='cuda').sigmoid()\n >>> h0 = torch.randn(B, HV, K, V, device='cuda')\n >>> o, ht = fused_recurrent_kda(\n q, k, v, g, beta,\n initial_state=h0,\n output_final_state=True\n )\n # for variable-length inputs, the batch size `B` is expected to be 1 and `cu_seqlens` is required\n >>> q, k, v, g, beta = map(lambda x: rearrange(x, 'b t ... -> 1 (b t) ...'), (q, k, v, g, beta))\n # for a batch with 4 sequences, `cu_seqlens` with 5 start/end positions are expected\n >>> cu_seqlens = q.new_tensor([0, 2048, 4096, 6144, 8192], dtype=torch.long)\n >>> o_var, ht_var = fused_recurrent_kda(\n q, k, v, g, beta,\n initial_state=h0,\n output_final_state=True,\n cu_seqlens=cu_seqlens\n )",
|
| 149 |
+
"signature": {
|
| 150 |
+
"parameters": [
|
| 151 |
+
{
|
| 152 |
+
"name": "q",
|
| 153 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 154 |
+
"default": null,
|
| 155 |
+
"annotation": "torch.Tensor"
|
| 156 |
+
},
|
| 157 |
+
{
|
| 158 |
+
"name": "k",
|
| 159 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 160 |
+
"default": null,
|
| 161 |
+
"annotation": "torch.Tensor"
|
| 162 |
+
},
|
| 163 |
+
{
|
| 164 |
+
"name": "v",
|
| 165 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 166 |
+
"default": null,
|
| 167 |
+
"annotation": "torch.Tensor"
|
| 168 |
+
},
|
| 169 |
+
{
|
| 170 |
+
"name": "g",
|
| 171 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 172 |
+
"default": null,
|
| 173 |
+
"annotation": "torch.Tensor"
|
| 174 |
+
},
|
| 175 |
+
{
|
| 176 |
+
"name": "beta",
|
| 177 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 178 |
+
"default": null,
|
| 179 |
+
"annotation": "torch.Tensor"
|
| 180 |
+
},
|
| 181 |
+
{
|
| 182 |
+
"name": "A_log",
|
| 183 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 184 |
+
"default": "None",
|
| 185 |
+
"annotation": "torch.Tensor | None"
|
| 186 |
+
},
|
| 187 |
+
{
|
| 188 |
+
"name": "dt_bias",
|
| 189 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 190 |
+
"default": "None",
|
| 191 |
+
"annotation": "torch.Tensor | None"
|
| 192 |
+
},
|
| 193 |
+
{
|
| 194 |
+
"name": "scale",
|
| 195 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 196 |
+
"default": "None",
|
| 197 |
+
"annotation": "float | None"
|
| 198 |
+
},
|
| 199 |
+
{
|
| 200 |
+
"name": "initial_state",
|
| 201 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 202 |
+
"default": "None",
|
| 203 |
+
"annotation": "torch.Tensor"
|
| 204 |
+
},
|
| 205 |
+
{
|
| 206 |
+
"name": "output_final_state",
|
| 207 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 208 |
+
"default": "False",
|
| 209 |
+
"annotation": "bool"
|
| 210 |
+
},
|
| 211 |
+
{
|
| 212 |
+
"name": "use_qk_l2norm_in_kernel",
|
| 213 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 214 |
+
"default": "False",
|
| 215 |
+
"annotation": "bool"
|
| 216 |
+
},
|
| 217 |
+
{
|
| 218 |
+
"name": "use_gate_in_kernel",
|
| 219 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 220 |
+
"default": "False",
|
| 221 |
+
"annotation": "bool"
|
| 222 |
+
},
|
| 223 |
+
{
|
| 224 |
+
"name": "use_beta_sigmoid_in_kernel",
|
| 225 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 226 |
+
"default": "False",
|
| 227 |
+
"annotation": "bool"
|
| 228 |
+
},
|
| 229 |
+
{
|
| 230 |
+
"name": "allow_neg_eigval",
|
| 231 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 232 |
+
"default": "False",
|
| 233 |
+
"annotation": "bool"
|
| 234 |
+
},
|
| 235 |
+
{
|
| 236 |
+
"name": "lower_bound",
|
| 237 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 238 |
+
"default": "None",
|
| 239 |
+
"annotation": "float | None"
|
| 240 |
+
},
|
| 241 |
+
{
|
| 242 |
+
"name": "state_v_first",
|
| 243 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 244 |
+
"default": "False",
|
| 245 |
+
"annotation": "bool"
|
| 246 |
+
},
|
| 247 |
+
{
|
| 248 |
+
"name": "cu_seqlens",
|
| 249 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 250 |
+
"default": "None",
|
| 251 |
+
"annotation": "torch.LongTensor | None"
|
| 252 |
+
},
|
| 253 |
+
{
|
| 254 |
+
"name": "kwargs",
|
| 255 |
+
"kind": "VAR_KEYWORD",
|
| 256 |
+
"default": null,
|
| 257 |
+
"annotation": null
|
| 258 |
+
}
|
| 259 |
+
],
|
| 260 |
+
"return_annotation": "tuple[torch.Tensor, torch.Tensor]"
|
| 261 |
+
}
|
| 262 |
+
},
|
| 263 |
+
{
|
| 264 |
+
"name": "chunk_gated_delta_rule",
|
| 265 |
+
"qualname": "chunk_gated_delta_rule",
|
| 266 |
+
"module": "_fla_xpu_fe2bb66.ops.gated_delta_rule.chunk",
|
| 267 |
+
"kind": "function",
|
| 268 |
+
"doc": "Args:\n q (torch.Tensor):\n queries of shape `[B, T, H, K]`.\n k (torch.Tensor):\n keys of shape `[B, T, H, K]`.\n v (torch.Tensor):\n values of shape `[B, T, HV, V]`.\n GVA (Grouped Value Attention) is applied if `HV > H`, where `HV` must be divisible by `H`.\n g (torch.Tensor):\n (forget) gating tensor of shape `[B, T, HV]`.\n When `use_gate_in_kernel=False` (default), `g` should be in log space (pre-computed decay).\n When `use_gate_in_kernel=True`, `g` is the raw input before gate activation;\n the kernel fuses `-exp(A_log) * softplus(g + dt_bias)` + chunk cumsum internally.\n beta (torch.Tensor):\n betas of shape `[B, T, HV]`.\n scale (Optional[float]):\n Scale factor for the RetNet attention scores.\n If not provided, it will default to `1 / sqrt(K)`. Default: `None`.\n initial_state (Optional[torch.Tensor]):\n Initial state of shape `[N, HV, K, V]` for `N` input sequences.\n For equal-length input sequences, `N` equals the batch size `B`.\n Default: `None`.\n output_final_state (Optional[bool]):\n Whether to output the final state of shape `[N, HV, K, V]`. Default: `False`.\n use_qk_l2norm_in_kernel (bool):\n Whether to apply L2norm to the q/k tensor internally. Default: `False`.\n use_gate_in_kernel (bool):\n Whether to compute the log-space GDN decay internally.\n When `True`, the passed `g` is the raw input, and `A_log` must be provided.\n The kernel fuses gate activation + chunk cumsum in a single pass.\n Default: `False`.\n A_log (Optional[torch.Tensor]):\n Decay parameter of shape `[HV]`. Required when `use_gate_in_kernel=True`.\n dt_bias (Optional[torch.Tensor]):\n Bias added to `g` before activation, of shape `[HV]`.\n Only used when `use_gate_in_kernel=True`.\n use_beta_sigmoid_in_kernel (bool):\n Whether to apply `torch.sigmoid(beta)` before launching the chunk kernel.\n - If `True`, the passed `beta` acts as the raw beta logits.\n - If `False`, `beta` is expected to already be in post-sigmoid space.\n Default: `False`.\n allow_neg_eigval (bool):\n Whether to allow negative eigenvalues by scaling `beta` to `[0, 2)`.\n Only takes effect together with `use_beta_sigmoid_in_kernel=True`, in which case\n the kernel computes `2 * sigmoid(beta)` instead of `sigmoid(beta)`. Default: `False`.\n state_v_first (Optional[bool]):\n Store the recurrent state in V-first ``[V, K]`` layout instead of the default ``[K, V]``. Default: ``False``.\n cu_seqlens (torch.LongTensor):\n Cumulative sequence lengths of shape `[N+1]` used for variable-length training,\n consistent with the FlashAttention API.\n cp_context (Optional[FLACPContext]):\n Context parallel context for distributed training across multiple devices.\n When provided, `initial_state` and `output_final_state` are not supported,\n and `cu_seqlens` will be overridden by the context. Default: `None`.\n\nReturns:\n o (torch.Tensor):\n Outputs of shape `[B, T, HV, V]`.\n final_state (torch.Tensor):\n Final state of shape `[N, HV, K, V]` if `output_final_state=True` else `None`.\n\nExamples::\n >>> import torch\n >>> import torch.nn.functional as F\n >>> from einops import rearrange\n >>> from ...ops.gated_delta_rule import chunk_gated_delta_rule\n # inputs with equal lengths\n >>> B, T, H, HV, K, V = 4, 2048, 4, 8, 512, 512\n >>> q = torch.randn(B, T, H, K, dtype=torch.bfloat16, device='cuda')\n >>> k = F.normalize(torch.randn(B, T, H, K, dtype=torch.bfloat16, device='cuda'), p=2, dim=-1)\n >>> v = torch.randn(B, T, HV, V, dtype=torch.bfloat16, device='cuda')\n >>> beta = torch.rand(B, T, HV, dtype=torch.bfloat16, device='cuda').sigmoid()\n >>> g = F.logsigmoid(torch.rand(B, T, HV, dtype=torch.bfloat16, device='cuda'))\n >>> h0 = torch.randn(B, HV, K, V, dtype=torch.bfloat16, device='cuda')\n >>> o, ht = chunk_gated_delta_rule(\n q, k, v, g, beta,\n initial_state=h0,\n output_final_state=True\n )\n # for variable-length inputs, the batch size `B` is expected to be 1 and `cu_seqlens` is required\n >>> q, k, v, beta, g = map(lambda x: rearrange(x, 'b t ... -> 1 (b t) ...'), (q, k, v, beta, g))\n # for a batch with 4 sequences, `cu_seqlens` with 5 start/end positions are expected\n >>> cu_seqlens = q.new_tensor([0, 2048, 4096, 6144, 8192], dtype=torch.long)\n >>> o, ht = chunk_gated_delta_rule(\n q, k, v, g, beta,\n initial_state=h0,\n output_final_state=True,\n cu_seqlens=cu_seqlens\n )",
|
| 269 |
+
"signature": {
|
| 270 |
+
"parameters": [
|
| 271 |
+
{
|
| 272 |
+
"name": "q",
|
| 273 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 274 |
+
"default": null,
|
| 275 |
+
"annotation": "torch.Tensor"
|
| 276 |
+
},
|
| 277 |
+
{
|
| 278 |
+
"name": "k",
|
| 279 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 280 |
+
"default": null,
|
| 281 |
+
"annotation": "torch.Tensor"
|
| 282 |
+
},
|
| 283 |
+
{
|
| 284 |
+
"name": "v",
|
| 285 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 286 |
+
"default": null,
|
| 287 |
+
"annotation": "torch.Tensor"
|
| 288 |
+
},
|
| 289 |
+
{
|
| 290 |
+
"name": "g",
|
| 291 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 292 |
+
"default": null,
|
| 293 |
+
"annotation": "torch.Tensor"
|
| 294 |
+
},
|
| 295 |
+
{
|
| 296 |
+
"name": "beta",
|
| 297 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 298 |
+
"default": null,
|
| 299 |
+
"annotation": "torch.Tensor"
|
| 300 |
+
},
|
| 301 |
+
{
|
| 302 |
+
"name": "scale",
|
| 303 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 304 |
+
"default": "None",
|
| 305 |
+
"annotation": "float | None"
|
| 306 |
+
},
|
| 307 |
+
{
|
| 308 |
+
"name": "initial_state",
|
| 309 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 310 |
+
"default": "None",
|
| 311 |
+
"annotation": "torch.Tensor | None"
|
| 312 |
+
},
|
| 313 |
+
{
|
| 314 |
+
"name": "output_final_state",
|
| 315 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 316 |
+
"default": "False",
|
| 317 |
+
"annotation": "bool"
|
| 318 |
+
},
|
| 319 |
+
{
|
| 320 |
+
"name": "use_qk_l2norm_in_kernel",
|
| 321 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 322 |
+
"default": "False",
|
| 323 |
+
"annotation": "bool"
|
| 324 |
+
},
|
| 325 |
+
{
|
| 326 |
+
"name": "use_beta_sigmoid_in_kernel",
|
| 327 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 328 |
+
"default": "False",
|
| 329 |
+
"annotation": "bool"
|
| 330 |
+
},
|
| 331 |
+
{
|
| 332 |
+
"name": "allow_neg_eigval",
|
| 333 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 334 |
+
"default": "False",
|
| 335 |
+
"annotation": "bool"
|
| 336 |
+
},
|
| 337 |
+
{
|
| 338 |
+
"name": "state_v_first",
|
| 339 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 340 |
+
"default": "False",
|
| 341 |
+
"annotation": "bool"
|
| 342 |
+
},
|
| 343 |
+
{
|
| 344 |
+
"name": "cu_seqlens",
|
| 345 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 346 |
+
"default": "None",
|
| 347 |
+
"annotation": "torch.LongTensor | None"
|
| 348 |
+
},
|
| 349 |
+
{
|
| 350 |
+
"name": "cu_seqlens_cpu",
|
| 351 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 352 |
+
"default": "None",
|
| 353 |
+
"annotation": "torch.LongTensor | None"
|
| 354 |
+
},
|
| 355 |
+
{
|
| 356 |
+
"name": "cp_context",
|
| 357 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 358 |
+
"default": "None",
|
| 359 |
+
"annotation": "_fla_xpu_fe2bb66.ops.cp.context.FLACPContext | None"
|
| 360 |
+
},
|
| 361 |
+
{
|
| 362 |
+
"name": "kwargs",
|
| 363 |
+
"kind": "VAR_KEYWORD",
|
| 364 |
+
"default": null,
|
| 365 |
+
"annotation": null
|
| 366 |
+
}
|
| 367 |
+
],
|
| 368 |
+
"return_annotation": null
|
| 369 |
+
}
|
| 370 |
+
},
|
| 371 |
+
{
|
| 372 |
+
"name": "fused_recurrent_gated_delta_rule",
|
| 373 |
+
"qualname": "fused_recurrent_gated_delta_rule",
|
| 374 |
+
"module": "_fla_xpu_fe2bb66.ops.gated_delta_rule.fused_recurrent",
|
| 375 |
+
"kind": "function",
|
| 376 |
+
"doc": "Args:\n q (torch.Tensor):\n queries of shape `[B, T, H, K]`.\n k (torch.Tensor):\n keys of shape `[B, T, H, K]`.\n v (torch.Tensor):\n values of shape `[B, T, HV, V]`.\n GVA (Grouped Value Attention) is applied if `HV > H`, where `HV` must be divisible by `H`.\n g (torch.Tensor):\n g (decays) of shape `[B, T, HV]`. Default: `None`.\n When `use_gate_in_kernel=False` (default), `g` must be in log space (pre-computed decay).\n When `use_gate_in_kernel=True`, `g` is the raw pre-activation input; the kernel fuses\n `-exp(A_log) * softplus(g + dt_bias)` internally per step.\n gk (torch.Tensor):\n gk (decays) of shape `[B, T, HV, K]`. Default: `None`.\n gv (torch.Tensor):\n gv (decays) of shape `[B, T, HV, V]`. Default: `None`.\n beta (torch.Tensor):\n betas of shape `[B, T, HV]`.\n scale (Optional[float]):\n Scale factor for the RetNet attention scores.\n If not provided, it will default to `1 / sqrt(K)`. Default: `None`.\n initial_state (Optional[torch.Tensor]):\n Initial state of shape `[N, HV, K, V]` for `N` input sequences.\n For equal-length input sequences, `N` equals the batch size `B`.\n Default: `None`.\n output_final_state (Optional[bool]):\n Whether to output the final state of shape `[N, HV, K, V]`. Default: `False`.\n use_qk_l2norm_in_kernel (Optional[bool]):\n Whether to use L2 normalization in the kernel. Default: `False`.\n use_gate_in_kernel (bool):\n Whether to compute the log-space GDN decay internally.\n When `True`, `g` is the raw input and `A_log` must be provided; the kernel fuses\n gate activation into the recurrence. Default: `False`.\n A_log (Optional[torch.Tensor]):\n Decay parameter of shape `[HV]`. Required when `use_gate_in_kernel=True`.\n dt_bias (Optional[torch.Tensor]):\n Bias added to `g` before activation, of shape `[HV]`.\n Only used when `use_gate_in_kernel=True`.\n use_beta_sigmoid_in_kernel (Optional[bool]):\n Whether to apply `torch.sigmoid(beta)` inside the kernel.\n - If `True`, the passed `beta` acts as the raw beta logits.\n - If `False`, `beta` is expected to already be in post-sigmoid space.\n Default: `False`.\n allow_neg_eigval (Optional[bool]):\n Whether to allow negative eigenvalues by scaling `beta` to `[0, 2)`.\n Only takes effect together with `use_beta_sigmoid_in_kernel=True`, in which case\n the kernel computes `2 * sigmoid(beta)` instead of `sigmoid(beta)`. Default: `False`.\n state_v_first (Optional[bool]):\n Store the recurrent state in V-first ``[V, K]`` layout instead of the default ``[K, V]``. Default: ``False``.\n cu_seqlens (torch.LongTensor):\n Cumulative sequence lengths of shape `[N+1]` used for variable-length training,\n consistent with the FlashAttention API.\n\nReturns:\n o (torch.Tensor):\n Outputs of shape `[B, T, HV, V]`.\n final_state (torch.Tensor):\n Final state of shape `[N, HV, K, V]` if `output_final_state=True` else `None`.\n\nExamples::\n >>> import torch\n >>> import torch.nn.functional as F\n >>> from einops import rearrange\n >>> from ...ops.gated_delta_rule import fused_recurrent_gated_delta_rule\n # inputs with equal lengths\n >>> B, T, H, HV, K, V = 4, 2048, 4, 8, 512, 512\n >>> q = torch.randn(B, T, H, K, device='cuda')\n >>> k = F.normalize(torch.randn(B, T, H, K, device='cuda'), p=2, dim=-1)\n >>> v = torch.randn(B, T, HV, V, device='cuda')\n >>> g = F.logsigmoid(torch.rand(B, T, HV, device='cuda'))\n >>> beta = torch.rand(B, T, HV, device='cuda').sigmoid()\n >>> h0 = torch.randn(B, HV, K, V, device='cuda')\n >>> o, ht = fused_gated_recurrent_delta_rule(\n q, k, v, g, beta,\n initial_state=h0,\n output_final_state=True\n )\n # for variable-length inputs, the batch size `B` is expected to be 1 and `cu_seqlens` is required\n >>> q, k, v, g, beta = map(lambda x: rearrange(x, 'b t ... -> 1 (b t) ...'), (q, k, v, g, beta))\n # for a batch with 4 sequences, `cu_seqlens` with 5 start/end positions are expected\n >>> cu_seqlens = q.new_tensor([0, 2048, 4096, 6144, 8192], dtype=torch.long)\n >>> o, ht = fused_gated_recurrent_delta_rule(\n q, k, v, g, beta,\n initial_state=h0,\n output_final_state=True,\n cu_seqlens=cu_seqlens\n )",
|
| 377 |
+
"signature": {
|
| 378 |
+
"parameters": [
|
| 379 |
+
{
|
| 380 |
+
"name": "q",
|
| 381 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 382 |
+
"default": null,
|
| 383 |
+
"annotation": "torch.Tensor"
|
| 384 |
+
},
|
| 385 |
+
{
|
| 386 |
+
"name": "k",
|
| 387 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 388 |
+
"default": null,
|
| 389 |
+
"annotation": "torch.Tensor"
|
| 390 |
+
},
|
| 391 |
+
{
|
| 392 |
+
"name": "v",
|
| 393 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 394 |
+
"default": null,
|
| 395 |
+
"annotation": "torch.Tensor"
|
| 396 |
+
},
|
| 397 |
+
{
|
| 398 |
+
"name": "g",
|
| 399 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 400 |
+
"default": "None",
|
| 401 |
+
"annotation": "torch.Tensor | None"
|
| 402 |
+
},
|
| 403 |
+
{
|
| 404 |
+
"name": "gk",
|
| 405 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 406 |
+
"default": "None",
|
| 407 |
+
"annotation": "torch.Tensor | None"
|
| 408 |
+
},
|
| 409 |
+
{
|
| 410 |
+
"name": "gv",
|
| 411 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 412 |
+
"default": "None",
|
| 413 |
+
"annotation": "torch.Tensor | None"
|
| 414 |
+
},
|
| 415 |
+
{
|
| 416 |
+
"name": "beta",
|
| 417 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 418 |
+
"default": "None",
|
| 419 |
+
"annotation": "torch.Tensor | None"
|
| 420 |
+
},
|
| 421 |
+
{
|
| 422 |
+
"name": "scale",
|
| 423 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 424 |
+
"default": "None",
|
| 425 |
+
"annotation": "float"
|
| 426 |
+
},
|
| 427 |
+
{
|
| 428 |
+
"name": "initial_state",
|
| 429 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 430 |
+
"default": "None",
|
| 431 |
+
"annotation": "torch.Tensor"
|
| 432 |
+
},
|
| 433 |
+
{
|
| 434 |
+
"name": "output_final_state",
|
| 435 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 436 |
+
"default": "False",
|
| 437 |
+
"annotation": "bool"
|
| 438 |
+
},
|
| 439 |
+
{
|
| 440 |
+
"name": "use_qk_l2norm_in_kernel",
|
| 441 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 442 |
+
"default": "False",
|
| 443 |
+
"annotation": "bool"
|
| 444 |
+
},
|
| 445 |
+
{
|
| 446 |
+
"name": "use_gate_in_kernel",
|
| 447 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 448 |
+
"default": "False",
|
| 449 |
+
"annotation": "bool"
|
| 450 |
+
},
|
| 451 |
+
{
|
| 452 |
+
"name": "A_log",
|
| 453 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 454 |
+
"default": "None",
|
| 455 |
+
"annotation": "torch.Tensor | None"
|
| 456 |
+
},
|
| 457 |
+
{
|
| 458 |
+
"name": "dt_bias",
|
| 459 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 460 |
+
"default": "None",
|
| 461 |
+
"annotation": "torch.Tensor | None"
|
| 462 |
+
},
|
| 463 |
+
{
|
| 464 |
+
"name": "use_beta_sigmoid_in_kernel",
|
| 465 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 466 |
+
"default": "False",
|
| 467 |
+
"annotation": "bool"
|
| 468 |
+
},
|
| 469 |
+
{
|
| 470 |
+
"name": "allow_neg_eigval",
|
| 471 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 472 |
+
"default": "False",
|
| 473 |
+
"annotation": "bool"
|
| 474 |
+
},
|
| 475 |
+
{
|
| 476 |
+
"name": "state_v_first",
|
| 477 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 478 |
+
"default": "False",
|
| 479 |
+
"annotation": "bool"
|
| 480 |
+
},
|
| 481 |
+
{
|
| 482 |
+
"name": "cu_seqlens",
|
| 483 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 484 |
+
"default": "None",
|
| 485 |
+
"annotation": "torch.LongTensor | None"
|
| 486 |
+
},
|
| 487 |
+
{
|
| 488 |
+
"name": "kwargs",
|
| 489 |
+
"kind": "VAR_KEYWORD",
|
| 490 |
+
"default": null,
|
| 491 |
+
"annotation": null
|
| 492 |
+
}
|
| 493 |
+
],
|
| 494 |
+
"return_annotation": "tuple[torch.Tensor, torch.Tensor]"
|
| 495 |
+
}
|
| 496 |
+
}
|
| 497 |
+
],
|
| 498 |
+
"layers": [
|
| 499 |
+
{
|
| 500 |
+
"name": "FusedRMSNormGated",
|
| 501 |
+
"qualname": "FusedRMSNormGated",
|
| 502 |
+
"module": "_fla_xpu_fe2bb66.layers",
|
| 503 |
+
"kind": "class",
|
| 504 |
+
"doc": "Base class for all neural network modules.\n\nYour models should also subclass this class.\n\nModules can also contain other Modules, allowing them to be nested in\na tree structure. You can assign the submodules as regular attributes::\n\n import torch.nn as nn\n import torch.nn.functional as F\n\n\n class Model(nn.Module):\n def __init__(self) -> None:\n super().__init__()\n self.conv1 = nn.Conv2d(1, 20, 5)\n self.conv2 = nn.Conv2d(20, 20, 5)\n\n def forward(self, x):\n x = F.relu(self.conv1(x))\n return F.relu(self.conv2(x))\n\nSubmodules assigned in this way will be registered, and will also have their\nparameters converted when you call :meth:`to`, etc.\n\n.. note::\n As per the example above, an ``__init__()`` call to the parent class\n must be made before assignment on the child.\n\n:ivar training: Boolean represents whether this module is in training or\n evaluation mode.\n:vartype training: bool",
|
| 505 |
+
"signature": {
|
| 506 |
+
"parameters": [
|
| 507 |
+
{
|
| 508 |
+
"name": "args",
|
| 509 |
+
"kind": "VAR_POSITIONAL",
|
| 510 |
+
"default": null,
|
| 511 |
+
"annotation": "Any"
|
| 512 |
+
},
|
| 513 |
+
{
|
| 514 |
+
"name": "kwargs",
|
| 515 |
+
"kind": "VAR_KEYWORD",
|
| 516 |
+
"default": null,
|
| 517 |
+
"annotation": "Any"
|
| 518 |
+
}
|
| 519 |
+
],
|
| 520 |
+
"return_annotation": "None"
|
| 521 |
+
},
|
| 522 |
+
"attributes": {
|
| 523 |
+
"has_backward": null,
|
| 524 |
+
"can_torch_compile": null
|
| 525 |
+
}
|
| 526 |
+
},
|
| 527 |
+
{
|
| 528 |
+
"name": "chunk_kimi_delta_attention",
|
| 529 |
+
"qualname": "chunk_kimi_delta_attention",
|
| 530 |
+
"module": "_fla_xpu_fe2bb66.layers",
|
| 531 |
+
"kind": "class",
|
| 532 |
+
"doc": "Base class for all neural network modules.\n\nYour models should also subclass this class.\n\nModules can also contain other Modules, allowing them to be nested in\na tree structure. You can assign the submodules as regular attributes::\n\n import torch.nn as nn\n import torch.nn.functional as F\n\n\n class Model(nn.Module):\n def __init__(self) -> None:\n super().__init__()\n self.conv1 = nn.Conv2d(1, 20, 5)\n self.conv2 = nn.Conv2d(20, 20, 5)\n\n def forward(self, x):\n x = F.relu(self.conv1(x))\n return F.relu(self.conv2(x))\n\nSubmodules assigned in this way will be registered, and will also have their\nparameters converted when you call :meth:`to`, etc.\n\n.. note::\n As per the example above, an ``__init__()`` call to the parent class\n must be made before assignment on the child.\n\n:ivar training: Boolean represents whether this module is in training or\n evaluation mode.\n:vartype training: bool",
|
| 533 |
+
"signature": {
|
| 534 |
+
"parameters": [
|
| 535 |
+
{
|
| 536 |
+
"name": "args",
|
| 537 |
+
"kind": "VAR_POSITIONAL",
|
| 538 |
+
"default": null,
|
| 539 |
+
"annotation": "Any"
|
| 540 |
+
},
|
| 541 |
+
{
|
| 542 |
+
"name": "kwargs",
|
| 543 |
+
"kind": "VAR_KEYWORD",
|
| 544 |
+
"default": null,
|
| 545 |
+
"annotation": "Any"
|
| 546 |
+
}
|
| 547 |
+
],
|
| 548 |
+
"return_annotation": "None"
|
| 549 |
+
},
|
| 550 |
+
"attributes": {
|
| 551 |
+
"has_backward": null,
|
| 552 |
+
"can_torch_compile": null
|
| 553 |
+
}
|
| 554 |
+
},
|
| 555 |
+
{
|
| 556 |
+
"name": "recurrent_kimi_delta_attention",
|
| 557 |
+
"qualname": "recurrent_kimi_delta_attention",
|
| 558 |
+
"module": "_fla_xpu_fe2bb66.layers",
|
| 559 |
+
"kind": "class",
|
| 560 |
+
"doc": "Base class for all neural network modules.\n\nYour models should also subclass this class.\n\nModules can also contain other Modules, allowing them to be nested in\na tree structure. You can assign the submodules as regular attributes::\n\n import torch.nn as nn\n import torch.nn.functional as F\n\n\n class Model(nn.Module):\n def __init__(self) -> None:\n super().__init__()\n self.conv1 = nn.Conv2d(1, 20, 5)\n self.conv2 = nn.Conv2d(20, 20, 5)\n\n def forward(self, x):\n x = F.relu(self.conv1(x))\n return F.relu(self.conv2(x))\n\nSubmodules assigned in this way will be registered, and will also have their\nparameters converted when you call :meth:`to`, etc.\n\n.. note::\n As per the example above, an ``__init__()`` call to the parent class\n must be made before assignment on the child.\n\n:ivar training: Boolean represents whether this module is in training or\n evaluation mode.\n:vartype training: bool",
|
| 561 |
+
"signature": {
|
| 562 |
+
"parameters": [
|
| 563 |
+
{
|
| 564 |
+
"name": "args",
|
| 565 |
+
"kind": "VAR_POSITIONAL",
|
| 566 |
+
"default": null,
|
| 567 |
+
"annotation": "Any"
|
| 568 |
+
},
|
| 569 |
+
{
|
| 570 |
+
"name": "kwargs",
|
| 571 |
+
"kind": "VAR_KEYWORD",
|
| 572 |
+
"default": null,
|
| 573 |
+
"annotation": "Any"
|
| 574 |
+
}
|
| 575 |
+
],
|
| 576 |
+
"return_annotation": "None"
|
| 577 |
+
},
|
| 578 |
+
"attributes": {
|
| 579 |
+
"has_backward": null,
|
| 580 |
+
"can_torch_compile": null
|
| 581 |
+
}
|
| 582 |
+
},
|
| 583 |
+
{
|
| 584 |
+
"name": "chunk_gated_delta_rule",
|
| 585 |
+
"qualname": "chunk_gated_delta_rule",
|
| 586 |
+
"module": "_fla_xpu_fe2bb66.layers",
|
| 587 |
+
"kind": "class",
|
| 588 |
+
"doc": "Base class for all neural network modules.\n\nYour models should also subclass this class.\n\nModules can also contain other Modules, allowing them to be nested in\na tree structure. You can assign the submodules as regular attributes::\n\n import torch.nn as nn\n import torch.nn.functional as F\n\n\n class Model(nn.Module):\n def __init__(self) -> None:\n super().__init__()\n self.conv1 = nn.Conv2d(1, 20, 5)\n self.conv2 = nn.Conv2d(20, 20, 5)\n\n def forward(self, x):\n x = F.relu(self.conv1(x))\n return F.relu(self.conv2(x))\n\nSubmodules assigned in this way will be registered, and will also have their\nparameters converted when you call :meth:`to`, etc.\n\n.. note::\n As per the example above, an ``__init__()`` call to the parent class\n must be made before assignment on the child.\n\n:ivar training: Boolean represents whether this module is in training or\n evaluation mode.\n:vartype training: bool",
|
| 589 |
+
"signature": {
|
| 590 |
+
"parameters": [
|
| 591 |
+
{
|
| 592 |
+
"name": "args",
|
| 593 |
+
"kind": "VAR_POSITIONAL",
|
| 594 |
+
"default": null,
|
| 595 |
+
"annotation": "Any"
|
| 596 |
+
},
|
| 597 |
+
{
|
| 598 |
+
"name": "kwargs",
|
| 599 |
+
"kind": "VAR_KEYWORD",
|
| 600 |
+
"default": null,
|
| 601 |
+
"annotation": "Any"
|
| 602 |
+
}
|
| 603 |
+
],
|
| 604 |
+
"return_annotation": "None"
|
| 605 |
+
},
|
| 606 |
+
"attributes": {
|
| 607 |
+
"has_backward": null,
|
| 608 |
+
"can_torch_compile": null
|
| 609 |
+
}
|
| 610 |
+
},
|
| 611 |
+
{
|
| 612 |
+
"name": "recurrent_gated_delta_rule",
|
| 613 |
+
"qualname": "recurrent_gated_delta_rule",
|
| 614 |
+
"module": "_fla_xpu_fe2bb66.layers",
|
| 615 |
+
"kind": "class",
|
| 616 |
+
"doc": "Base class for all neural network modules.\n\nYour models should also subclass this class.\n\nModules can also contain other Modules, allowing them to be nested in\na tree structure. You can assign the submodules as regular attributes::\n\n import torch.nn as nn\n import torch.nn.functional as F\n\n\n class Model(nn.Module):\n def __init__(self) -> None:\n super().__init__()\n self.conv1 = nn.Conv2d(1, 20, 5)\n self.conv2 = nn.Conv2d(20, 20, 5)\n\n def forward(self, x):\n x = F.relu(self.conv1(x))\n return F.relu(self.conv2(x))\n\nSubmodules assigned in this way will be registered, and will also have their\nparameters converted when you call :meth:`to`, etc.\n\n.. note::\n As per the example above, an ``__init__()`` call to the parent class\n must be made before assignment on the child.\n\n:ivar training: Boolean represents whether this module is in training or\n evaluation mode.\n:vartype training: bool",
|
| 617 |
+
"signature": {
|
| 618 |
+
"parameters": [
|
| 619 |
+
{
|
| 620 |
+
"name": "args",
|
| 621 |
+
"kind": "VAR_POSITIONAL",
|
| 622 |
+
"default": null,
|
| 623 |
+
"annotation": "Any"
|
| 624 |
+
},
|
| 625 |
+
{
|
| 626 |
+
"name": "kwargs",
|
| 627 |
+
"kind": "VAR_KEYWORD",
|
| 628 |
+
"default": null,
|
| 629 |
+
"annotation": "Any"
|
| 630 |
+
}
|
| 631 |
+
],
|
| 632 |
+
"return_annotation": "None"
|
| 633 |
+
},
|
| 634 |
+
"attributes": {
|
| 635 |
+
"has_backward": null,
|
| 636 |
+
"can_torch_compile": null
|
| 637 |
+
}
|
| 638 |
+
}
|
| 639 |
+
]
|
| 640 |
+
}
|