kernels-bot commited on
Commit
f9f3ea7
·
verified ·
1 Parent(s): ddb6fc1

Uploaded using `kernel-builder`.

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. build/torch210-cu126-aarch64-linux/__init__.py +57 -0
  2. build/torch210-cu126-aarch64-linux/_ops.py +9 -0
  3. build/torch210-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so +3 -0
  4. build/torch210-cu126-aarch64-linux/layers.py +41 -0
  5. build/torch210-cu126-aarch64-linux/metadata.json +43 -0
  6. build/torch210-cu126-aarch64-linux/metadata.json.sigstore +1 -0
  7. build/torch210-cu126-aarch64-linux/symbols.json +103 -0
  8. build/torch210-cu128-aarch64-linux/__init__.py +57 -0
  9. build/torch210-cu128-aarch64-linux/_ops.py +9 -0
  10. build/torch210-cu128-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so +3 -0
  11. build/torch210-cu128-aarch64-linux/layers.py +41 -0
  12. build/torch210-cu128-aarch64-linux/metadata.json +46 -0
  13. build/torch210-cu128-aarch64-linux/metadata.json.sigstore +1 -0
  14. build/torch210-cu128-aarch64-linux/symbols.json +103 -0
  15. build/torch210-cu130-aarch64-linux/__init__.py +57 -0
  16. build/torch210-cu130-aarch64-linux/_ops.py +9 -0
  17. build/torch210-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so +3 -0
  18. build/torch210-cu130-aarch64-linux/layers.py +41 -0
  19. build/torch210-cu130-aarch64-linux/metadata.json +46 -0
  20. build/torch210-cu130-aarch64-linux/metadata.json.sigstore +1 -0
  21. build/torch210-cu130-aarch64-linux/symbols.json +103 -0
  22. build/torch211-cu126-aarch64-linux/__init__.py +57 -0
  23. build/torch211-cu126-aarch64-linux/_ops.py +9 -0
  24. build/torch211-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so +3 -0
  25. build/torch211-cu126-aarch64-linux/layers.py +41 -0
  26. build/torch211-cu126-aarch64-linux/metadata.json +43 -0
  27. build/torch211-cu126-aarch64-linux/metadata.json.sigstore +1 -0
  28. build/torch211-cu126-aarch64-linux/symbols.json +103 -0
  29. build/torch211-cu128-aarch64-linux/__init__.py +57 -0
  30. build/torch211-cu128-aarch64-linux/_ops.py +9 -0
  31. build/torch211-cu128-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so +3 -0
  32. build/torch211-cu128-aarch64-linux/layers.py +41 -0
  33. build/torch211-cu128-aarch64-linux/metadata.json +46 -0
  34. build/torch211-cu128-aarch64-linux/metadata.json.sigstore +1 -0
  35. build/torch211-cu128-aarch64-linux/symbols.json +103 -0
  36. build/torch211-cu130-aarch64-linux/__init__.py +57 -0
  37. build/torch211-cu130-aarch64-linux/_ops.py +9 -0
  38. build/torch211-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so +3 -0
  39. build/torch211-cu130-aarch64-linux/layers.py +41 -0
  40. build/torch211-cu130-aarch64-linux/metadata.json +46 -0
  41. build/torch211-cu130-aarch64-linux/metadata.json.sigstore +1 -0
  42. build/torch211-cu130-aarch64-linux/symbols.json +103 -0
  43. build/torch212-cu126-aarch64-linux/__init__.py +57 -0
  44. build/torch212-cu126-aarch64-linux/_ops.py +9 -0
  45. build/torch212-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so +3 -0
  46. build/torch212-cu126-aarch64-linux/layers.py +41 -0
  47. build/torch212-cu126-aarch64-linux/metadata.json +43 -0
  48. build/torch212-cu126-aarch64-linux/metadata.json.sigstore +1 -0
  49. build/torch212-cu126-aarch64-linux/symbols.json +103 -0
  50. build/torch212-cu130-aarch64-linux/__init__.py +57 -0
build/torch210-cu126-aarch64-linux/__init__.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+
3
+ from . import layers
4
+ from ._ops import ops
5
+
6
+
7
+ def apply_rotary(
8
+ x1: torch.Tensor,
9
+ x2: torch.Tensor,
10
+ cos: torch.Tensor,
11
+ sin: torch.Tensor,
12
+ out1: torch.Tensor,
13
+ out2: torch.Tensor,
14
+ conj: bool,
15
+ ) -> None:
16
+ ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj)
17
+
18
+
19
+ def apply_rotary_transformers(
20
+ q: torch.Tensor,
21
+ k: torch.Tensor,
22
+ cos: torch.Tensor,
23
+ sin: torch.Tensor,
24
+ unsqueeze_dim: int = 1,
25
+ ) -> tuple[torch.Tensor, torch.Tensor]:
26
+ """
27
+ Rotary kernel implementation wrapper
28
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
29
+ """
30
+ cos = cos.unsqueeze(unsqueeze_dim)
31
+ sin = sin.unsqueeze(unsqueeze_dim)
32
+
33
+ q_rotated = q.clone()
34
+ k_rotated = k.clone()
35
+
36
+ # Get half dimension for rotation
37
+ half_dim = q.shape[-1] // 2
38
+ q1 = q_rotated[..., :half_dim]
39
+ q2 = q_rotated[..., half_dim:]
40
+ k1 = k_rotated[..., :half_dim]
41
+ k2 = k_rotated[..., half_dim:]
42
+ if cos.shape[-1] != half_dim:
43
+ # Trim cos/sin to match half_dim
44
+ cos = cos[..., :half_dim]
45
+ sin = sin[..., :half_dim]
46
+
47
+ apply_rotary(q1, q2, cos, sin, q1, q2, False)
48
+ apply_rotary(k1, k2, cos, sin, k1, k2, False)
49
+ return q_rotated, k_rotated
50
+
51
+
52
+ # Add torch compile support for functions
53
+ apply_rotary_transformers.can_torch_compile = True
54
+
55
+
56
+ # Keeping `apply_rotary` and `apply_rotary_transformers` for BC
57
+ __all__ = ["apply_rotary", "apply_rotary_transformers", "layers"]
build/torch210-cu126-aarch64-linux/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _rotary_cuda_fe2bb66
3
+ ops = torch.ops._rotary_cuda_fe2bb66
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_rotary_cuda_fe2bb66::{op_name}"
build/torch210-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a6126ee8e7f7434e90d9f4011ef62630251f6ab8cc707a04ffcc0112226e6b7d
3
+ size 6337928
build/torch210-cu126-aarch64-linux/layers.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+
4
+ from ._ops import ops
5
+
6
+
7
+ class apply_rotary_transformers(nn.Module):
8
+ can_torch_compile = True
9
+
10
+ def forward(
11
+ self,
12
+ q: torch.Tensor,
13
+ k: torch.Tensor,
14
+ cos: torch.Tensor,
15
+ sin: torch.Tensor,
16
+ unsqueeze_dim: int = 1,
17
+ ) -> tuple[torch.Tensor, torch.Tensor]:
18
+ """
19
+ Rotary kernel implementation wrapper
20
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
21
+ """
22
+ cos = cos.unsqueeze(unsqueeze_dim)
23
+ sin = sin.unsqueeze(unsqueeze_dim)
24
+
25
+ q_rotated = q.clone()
26
+ k_rotated = k.clone()
27
+
28
+ # Get half dimension for rotation
29
+ half_dim = q.shape[-1] // 2
30
+ q1 = q_rotated[..., :half_dim]
31
+ q2 = q_rotated[..., half_dim:]
32
+ k1 = k_rotated[..., :half_dim]
33
+ k2 = k_rotated[..., half_dim:]
34
+ if cos.shape[-1] != half_dim:
35
+ # Trim cos/sin to match half_dim
36
+ cos = cos[..., :half_dim]
37
+ sin = sin[..., :half_dim]
38
+
39
+ ops.apply_rotary(q1, q2, cos, sin, q1, q2, False)
40
+ ops.apply_rotary(k1, k2, cos, sin, k1, k2, False)
41
+ return q_rotated, k_rotated
build/torch210-cu126-aarch64-linux/metadata.json ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "rotary",
3
+ "id": "_rotary_cuda_fe2bb66",
4
+ "version": 2,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "BSD-3-Clause",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "cuda",
11
+ "archs": [
12
+ "7.0",
13
+ "7.2",
14
+ "7.5",
15
+ "8.0",
16
+ "8.6",
17
+ "8.7",
18
+ "8.9",
19
+ "9.0+PTX"
20
+ ]
21
+ },
22
+ "digest": {
23
+ "algorithm": "sha256",
24
+ "files": {
25
+ "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=",
26
+ "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=",
27
+ "_rotary_cuda_fe2bb66.abi3.so": "phJu6Of3Q06Q2fQBHvYmMCUfarjMcHoE/8wBEiJua30=",
28
+ "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=",
29
+ "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM="
30
+ }
31
+ },
32
+ "provenance": {
33
+ "kernel-builder": {
34
+ "version": "0.18.0-dev0",
35
+ "commit": "d054906a13710b811b96697b4635f03020842733",
36
+ "dirty": false
37
+ },
38
+ "kernel": {
39
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
40
+ "dirty": false
41
+ }
42
+ }
43
+ }
build/torch210-cu126-aarch64-linux/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHLDCCBrGgAwIBAgIULwjILP3X16EWx8UqM1D6L5VeoS8wCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDI1WhcNMjYxMDE5MTQ1MDI1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3TPe5vH/zNh4x1x2NLI8CVcETzenyqHHidrK00sNU8+lz3e/UDrsQ1waVB6yHXvK2I+D/RuSaL78qLzlMA9KxKOCBdAwggXMMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGJBgorBgEEAdZ5AgQCBHsEeQB3AHUA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJtKUgAABAMARjBEAiAOuW93cNjp5AmQJ69Qs+eCHsQSu1YNDyfHngSoV8/NgAIgJqS911o+k5+YzEQ/Yj0lOgtp6HA61hiKXDcc28cfiZcwCgYIKoZIzj0EAwMDaQAwZgIxANJzAu3i7SnexAbavue5SZbGOBDmKOpW1jckQUGtDUywtBgkLkqOfjaXjCBdLFbgOwIxAK2HdIqzVcYnkKZXly/U5gsmwXJBmuP7CJNwJmYBrPnx51joNjZszDGrOhG9QB4EDg=="},"tlogEntries":[{"logIndex":"3322189442","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420825","inclusionPromise":{"signedEntryTimestamp":"MEUCIQDeqRDLioZTAuRyNgvKkOHhYgvuoHYWPAX5uQy4HmnmPwIgNSh/6+YyI9RUCa1AaYjQmN5FnP/u+1m1/BQPCBtj4/g="},"inclusionProof":{"logIndex":"3200285180","rootHash":"FdJZd2tF5xsJ7qZrnl967zSUyVfpC5gqZ3o48lTTYOw=","treeSize":"3200285364","hashes":["f78W7BFco2u8OlLNbdy8ZABxx0NJpElm5KceT972zhY=","fri73CtKNIa4SSMw/oBSy7O6/6/djpYvSV2D5i2bFjk=","plAaOSnlmIYfJzv27FHGPvOofvJ+QyfbjXBhoQFcus0=","3vrrLljhAQxZdTHrzELHk4wSIkYMmnbnSy7vEaGHITA=","FkMv0xY1XOgPbM62UJekWkRhNgQV0T5AeLU0ChfQapM=","yLqL2Uivt+OitXCsKiyyF6uvmsYfXXGCCkRmU8i6bsw=","0rv9b6PvghebmagGwoSwRX8SXzU1dOD5bq2Q03XEu8s=","nD2ipzpfvAEjjXBnZclcq88aXLam3ybIAj0w8bz4bkc=","gbKXwv6tWf/Gjotr4BKO5sf1jUUU5oEQqznNo4xTpdY=","+Vsz3KGNhRdlZ5I5Ns0SF4PVgHR7riGKK7rDEUBtzqY=","XOWsq9QVXcgSlfehEYZ/+6qBqznm92n6ybg/xLu5UW0=","vr/I5/Xf0PmHferwNfBzMHIwhozHb7BdkFEViVC+DS0=","SksIxFpXB9fPLUXaMWYYyCR+CHfLk+YqXWhltM2oQIM=","AKeuacrT6C2M0EPPUKzmcVVZfsOoSiMACj//uUTCeOc=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200285364\nFdJZd2tF5xsJ7qZrnl967zSUyVfpC5gqZ3o48lTTYOw=\n\n— rekor.sigstore.dev wNI9ajBGAiEA43+ztYxKaC8TQ4PL5t1aiobvAheHJfoYjyXPeKJqRqMCIQC3gB/Nwf0ovAnw4Vfznl1JIhX8As0/Unri9WONT9KqrQ==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIzODU3ZjMzYjQ4NDljNzZjNmQ0YTE0NGUzODk2NDUyZjVhZDhmNTk4YmZkOGE0YTI2Y2U4M2UwNTk0OTNhYWYyIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUURFb1JpTVU2Tk1NSEpXVlhicjRQTUN2d2R2Ui96a1pEQ1ZscC94by91bFFBSWdIWW5QWmR3WEJFcXFzOHprbko5L2o2L0JTU2NSYm0vUUt1SzRlWVkwbWdvPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1SRU5EUW5KSFowRjNTVUpCWjBsVlRIZHFTVXhRTTFneE5rVlhlRGhWY1UweFJEWk1OVlpsYjFNNGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJKTVZkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkVreFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVV6VkZCbE5YWklMM3BPYURSNE1YZ3lUa3hKT0VOV1kwVlVlbVZ1ZVhGSVNHbGtja3NLTURCelRsVTRLMng2TTJVdlZVUnljMUV4ZDJGV1FqWjVTRmgyU3pKSkswUXZVblZUWVV3M09IRk1lbXhOUVRsTGVFdFBRMEprUVhkbloxaE5UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkS0NrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NITkZaVkZDTTBGSVZVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMFMxVm5RVUZDUVUxQlVtcENSVUZwUVU5MVZ6a3pZMDVxY0RWQmJWRktOamxSY3l0bFEwaHpVVk4xTVZsT1JIbG1TQXB1WjFOdlZqZ3ZUbWRCU1dkS2NWTTVNVEZ2SzJzMUsxbDZSVkV2V1dvd2JFOW5kSEEyU0VFMk1XaHBTMWhFWTJNeU9HTm1hVnBqZDBObldVbExiMXBKQ25wcU1FVkJkMDFFWVZGQmQxcG5TWGhCVGtwNlFYVXphVGRUYm1WNFFXSmhkblZsTlZOYVlrZFBRa1J0UzA5d1Z6RnFZMnRSVlVkMFJGVjVkM1JDWjJzS1RHdHhUMlpxWVZocVEwSmtURVppWjA5M1NYaEJTekpJWkVseGVsWmpXVzVyUzFwWWJIa3ZWVFZuYzIxM1dFcENiWFZRTjBOS1RuZEtiVmxDY2xCdWVBbzFNV3B2VG1wYWMzcEVSM0pQYUVjNVVVSTBSVVJuUFQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgFstvTij2fwtJTpUm6UGl61QDiYc2GfyZhgYAaQQ4iGcCFACfRK1d0eKgoTJJJU1QqUv78t7uGA8yMDI2MTAxOTE0NDAyNVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTQ0MDI1WjAvBgkqhkiG9w0BCQQxIgQgqGakJEJiiDyxxKcg5/x1Sdgsbpy5oUWWtBzsQUGw5tMwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxAKU5g1Gp6UL4R5R2ByAAijIf8GBwP0Vs9H9s8hKlFSrdcEiUzgaTVF218kbL+iQTBAIxAKjMHKL/roBOPNiaBr4Hk//2AEGbo0k8TpUhVGfNnXyKjfOrvu22yGaPromKGyQ8ww=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"OFfzO0hJx2xtShROOJZFL1rY9Zi/2KSibOg+BZSTqvI="},"signature":"MEUCIQDEoRiMU6NMMHJWVXbr4PMCvwdvR/zkZDCVlp/xo/ulQAIgHYnPZdwXBEqqs8zknJ9/j6/BSScRbm/QKuK4eYY0mgo="}}
build/torch210-cu126-aarch64-linux/symbols.json ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_rotary_cuda_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "apply_rotary",
7
+ "qualname": "apply_rotary",
8
+ "module": "_rotary_cuda_fe2bb66",
9
+ "kind": "function",
10
+ "doc": null,
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "x1",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "x2",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "torch.Tensor"
24
+ },
25
+ {
26
+ "name": "cos",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": null,
29
+ "annotation": "torch.Tensor"
30
+ },
31
+ {
32
+ "name": "sin",
33
+ "kind": "POSITIONAL_OR_KEYWORD",
34
+ "default": null,
35
+ "annotation": "torch.Tensor"
36
+ },
37
+ {
38
+ "name": "out1",
39
+ "kind": "POSITIONAL_OR_KEYWORD",
40
+ "default": null,
41
+ "annotation": "torch.Tensor"
42
+ },
43
+ {
44
+ "name": "out2",
45
+ "kind": "POSITIONAL_OR_KEYWORD",
46
+ "default": null,
47
+ "annotation": "torch.Tensor"
48
+ },
49
+ {
50
+ "name": "conj",
51
+ "kind": "POSITIONAL_OR_KEYWORD",
52
+ "default": null,
53
+ "annotation": "bool"
54
+ }
55
+ ],
56
+ "return_annotation": "None"
57
+ }
58
+ },
59
+ {
60
+ "name": "apply_rotary_transformers",
61
+ "qualname": "apply_rotary_transformers",
62
+ "module": "_rotary_cuda_fe2bb66",
63
+ "kind": "function",
64
+ "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature",
65
+ "signature": {
66
+ "parameters": [
67
+ {
68
+ "name": "q",
69
+ "kind": "POSITIONAL_OR_KEYWORD",
70
+ "default": null,
71
+ "annotation": "torch.Tensor"
72
+ },
73
+ {
74
+ "name": "k",
75
+ "kind": "POSITIONAL_OR_KEYWORD",
76
+ "default": null,
77
+ "annotation": "torch.Tensor"
78
+ },
79
+ {
80
+ "name": "cos",
81
+ "kind": "POSITIONAL_OR_KEYWORD",
82
+ "default": null,
83
+ "annotation": "torch.Tensor"
84
+ },
85
+ {
86
+ "name": "sin",
87
+ "kind": "POSITIONAL_OR_KEYWORD",
88
+ "default": null,
89
+ "annotation": "torch.Tensor"
90
+ },
91
+ {
92
+ "name": "unsqueeze_dim",
93
+ "kind": "POSITIONAL_OR_KEYWORD",
94
+ "default": "1",
95
+ "annotation": "int"
96
+ }
97
+ ],
98
+ "return_annotation": "tuple[torch.Tensor, torch.Tensor]"
99
+ }
100
+ }
101
+ ],
102
+ "layers": []
103
+ }
build/torch210-cu128-aarch64-linux/__init__.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+
3
+ from . import layers
4
+ from ._ops import ops
5
+
6
+
7
+ def apply_rotary(
8
+ x1: torch.Tensor,
9
+ x2: torch.Tensor,
10
+ cos: torch.Tensor,
11
+ sin: torch.Tensor,
12
+ out1: torch.Tensor,
13
+ out2: torch.Tensor,
14
+ conj: bool,
15
+ ) -> None:
16
+ ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj)
17
+
18
+
19
+ def apply_rotary_transformers(
20
+ q: torch.Tensor,
21
+ k: torch.Tensor,
22
+ cos: torch.Tensor,
23
+ sin: torch.Tensor,
24
+ unsqueeze_dim: int = 1,
25
+ ) -> tuple[torch.Tensor, torch.Tensor]:
26
+ """
27
+ Rotary kernel implementation wrapper
28
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
29
+ """
30
+ cos = cos.unsqueeze(unsqueeze_dim)
31
+ sin = sin.unsqueeze(unsqueeze_dim)
32
+
33
+ q_rotated = q.clone()
34
+ k_rotated = k.clone()
35
+
36
+ # Get half dimension for rotation
37
+ half_dim = q.shape[-1] // 2
38
+ q1 = q_rotated[..., :half_dim]
39
+ q2 = q_rotated[..., half_dim:]
40
+ k1 = k_rotated[..., :half_dim]
41
+ k2 = k_rotated[..., half_dim:]
42
+ if cos.shape[-1] != half_dim:
43
+ # Trim cos/sin to match half_dim
44
+ cos = cos[..., :half_dim]
45
+ sin = sin[..., :half_dim]
46
+
47
+ apply_rotary(q1, q2, cos, sin, q1, q2, False)
48
+ apply_rotary(k1, k2, cos, sin, k1, k2, False)
49
+ return q_rotated, k_rotated
50
+
51
+
52
+ # Add torch compile support for functions
53
+ apply_rotary_transformers.can_torch_compile = True
54
+
55
+
56
+ # Keeping `apply_rotary` and `apply_rotary_transformers` for BC
57
+ __all__ = ["apply_rotary", "apply_rotary_transformers", "layers"]
build/torch210-cu128-aarch64-linux/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _rotary_cuda_fe2bb66
3
+ ops = torch.ops._rotary_cuda_fe2bb66
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_rotary_cuda_fe2bb66::{op_name}"
build/torch210-cu128-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:40055e50c07700da6b9bf37330b1f465be0591256c2b5d6155dc7012cf2be10c
3
+ size 10008872
build/torch210-cu128-aarch64-linux/layers.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+
4
+ from ._ops import ops
5
+
6
+
7
+ class apply_rotary_transformers(nn.Module):
8
+ can_torch_compile = True
9
+
10
+ def forward(
11
+ self,
12
+ q: torch.Tensor,
13
+ k: torch.Tensor,
14
+ cos: torch.Tensor,
15
+ sin: torch.Tensor,
16
+ unsqueeze_dim: int = 1,
17
+ ) -> tuple[torch.Tensor, torch.Tensor]:
18
+ """
19
+ Rotary kernel implementation wrapper
20
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
21
+ """
22
+ cos = cos.unsqueeze(unsqueeze_dim)
23
+ sin = sin.unsqueeze(unsqueeze_dim)
24
+
25
+ q_rotated = q.clone()
26
+ k_rotated = k.clone()
27
+
28
+ # Get half dimension for rotation
29
+ half_dim = q.shape[-1] // 2
30
+ q1 = q_rotated[..., :half_dim]
31
+ q2 = q_rotated[..., half_dim:]
32
+ k1 = k_rotated[..., :half_dim]
33
+ k2 = k_rotated[..., half_dim:]
34
+ if cos.shape[-1] != half_dim:
35
+ # Trim cos/sin to match half_dim
36
+ cos = cos[..., :half_dim]
37
+ sin = sin[..., :half_dim]
38
+
39
+ ops.apply_rotary(q1, q2, cos, sin, q1, q2, False)
40
+ ops.apply_rotary(k1, k2, cos, sin, k1, k2, False)
41
+ return q_rotated, k_rotated
build/torch210-cu128-aarch64-linux/metadata.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "rotary",
3
+ "id": "_rotary_cuda_fe2bb66",
4
+ "version": 2,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "BSD-3-Clause",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "cuda",
11
+ "archs": [
12
+ "10.0",
13
+ "10.1",
14
+ "12.0+PTX",
15
+ "7.0",
16
+ "7.2",
17
+ "7.5",
18
+ "8.0",
19
+ "8.6",
20
+ "8.7",
21
+ "8.9",
22
+ "9.0"
23
+ ]
24
+ },
25
+ "digest": {
26
+ "algorithm": "sha256",
27
+ "files": {
28
+ "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=",
29
+ "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=",
30
+ "_rotary_cuda_fe2bb66.abi3.so": "QAVeUMB3ANprm/NzMLH0Zb4FkSVsK11hVdxwEs8r4Qw=",
31
+ "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=",
32
+ "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM="
33
+ }
34
+ },
35
+ "provenance": {
36
+ "kernel-builder": {
37
+ "version": "0.18.0-dev0",
38
+ "commit": "d054906a13710b811b96697b4635f03020842733",
39
+ "dirty": false
40
+ },
41
+ "kernel": {
42
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
43
+ "dirty": false
44
+ }
45
+ }
46
+ }
build/torch210-cu128-aarch64-linux/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHLTCCBrOgAwIBAgIUIKDWhlHaKltjSvVbNuJUKEhfKFswCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDI0WhcNMjYxMDE5MTQ1MDI0WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1uVIru7tqVjKe1hwyRpfQtl9KJAnsKWI+I5igNMV4gzlNrZMwopRL6LOEg5RFWhiTQ4r3nK9yt26gN8IHwUqIaOCBdIwggXOMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJtFFgAABAMASDBGAiEA3rH2IeTmokcONbEu0aGAa58yw8B2kWraNIyeLetCrxkCIQDUfCAONLB36qNMQeFND7Ks/Oca+TVuP2Q/RdyxSOyJxDAKBggqhkjOPQQDAwNoADBlAjEA8gF7KOXyC7QQAHJveOHMSpkPBUA85/n8pFmYaDiDPovWthRBNMWB38bUAhToW5MEAjBi8lLiJu0eTm9WbwRVUTtwuYNfu5NxpaUD/h2k2ItaqaYhWuAwARYVCCCqcqB8W6U="},"tlogEntries":[{"logIndex":"3322189235","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420824","inclusionPromise":{"signedEntryTimestamp":"MEQCICmOY862WSJyDIDsKWJNnNZBCHrE7F+nSJyX4gGWYGR3AiAQbYUko8aK5ih/kf2dU9r/EJa82iUDUiZBDrWpGih/zA=="},"inclusionProof":{"logIndex":"3200284973","rootHash":"FgKavwECbRimOEPw6Dku+fEtFNmd8PSqCW+ofl4LPgA=","treeSize":"3200284986","hashes":["jqd46HuchflZmtsPcsal5b1rL0uByz5FfzBDzyXkPVo=","WjO10XwnilZiAmOomeIjJ5ROagFKVpZdKf/Xy+TtozM=","aQYSdsFSAdQHFx9GhE/U9NfG5OGuCwH/uOJVnsnOPVA=","JCo5gCYXTCx6nUkT87Qn/xZ9U8lRcWTgSOYBPdEEtSk=","AdWWW4Qkhyp4KBHjGFKjmj9N4c4EXj5LW8NDvGKiqng=","3SdbaVWB/8jyXpPaIy0CzHZa5UmuB51afGt9hnvOq4g=","gbKXwv6tWf/Gjotr4BKO5sf1jUUU5oEQqznNo4xTpdY=","XOWsq9QVXcgSlfehEYZ/+6qBqznm92n6ybg/xLu5UW0=","vr/I5/Xf0PmHferwNfBzMHIwhozHb7BdkFEViVC+DS0=","SksIxFpXB9fPLUXaMWYYyCR+CHfLk+YqXWhltM2oQIM=","AKeuacrT6C2M0EPPUKzmcVVZfsOoSiMACj//uUTCeOc=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200284986\nFgKavwECbRimOEPw6Dku+fEtFNmd8PSqCW+ofl4LPgA=\n\n— rekor.sigstore.dev wNI9ajBEAiB5sWbks6j2QPO79Fn7K2qUPD9iuEbablyhZ8cxcTw8zgIgKyGDUI6zuHRt1tbBP9A0XDWg9NKiTzfQO+nEQHSD1iM=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIwMjMwNTRiZjdhYzNkZmEyYzYwZjBiNzk5MTIzZDRmYmIxNzJmMmFmNWUyMDllMzg2MzQxNjIyZDUzN2EyNzRmIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUNCNGdTcHpYTUhDalZ3R3ZrWmJLRXRHUk5lUy9qZmRtRTc0cHhDTXZEUThBSWdEa0RmVkxybHJHbnB0cjFROW1kalgyQjg2ZzRIMFVtc1FrU016TVpTRFNnPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1WRU5EUW5KUFowRjNTVUpCWjBsVlNVdEVWMmhzU0dGTGJIUnFVM1pXWWs1MVNsVkxSV2htUzBaemQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJKTUZkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkVrd1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVV4ZFZaSmNuVTNkSEZXYWt0bE1XaDNlVkp3WmxGMGJEbExTa0Z1YzB0WFNTdEpOV2tLWjA1TlZqUm5lbXhPY2xwTmQyOXdVa3cyVEU5Rlp6VlNSbGRvYVZSUk5ISXpia3M1ZVhReU5tZE9PRWxJZDFWeFNXRlBRMEprU1hkbloxaFBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTUNrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NEQkZaWGRDTlVGSVkwRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMFJrWm5RVUZDUVUxQlUwUkNSMEZwUlVFemNrZ3lTV1ZVYlc5clkwOU9Za1YxTUdGSFFXRTFPSGwzT0VJeWExZHlZUXBPU1hsbFRHVjBRM0o0YTBOSlVVUlZaa05CVDA1TVFqTTJjVTVOVVdWR1RrUTNTM012VDJOaEsxUldkVkF5VVM5U1pIbDRVMDk1U25oRVFVdENaMmR4Q21ocmFrOVFVVkZFUVhkT2IwRkVRbXhCYWtWQk9HZEdOMHRQV0hsRE4xRlJRVWhLZG1WUFNFMVRjR3RRUWxWQk9EVXZiamh3Um0xWllVUnBSRkJ2ZGxjS2RHaFNRazVOVjBJek9HSlZRV2hVYjFjMVRVVkJha0pwT0d4TWFVcDFNR1ZVYlRsWFluZFNWbFZVZEhkMVdVNW1kVFZPZUhCaFZVUXZhREpyTWtsMFlRcHhZVmxvVjNWQmQwRlNXVlpEUTBOeFkzRkNPRmMyVlQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgsh+1wT+HjbN+4lRe4HfiIqGBdRjqbbZ6urUN3hVoje8CFAXCxjxvlOIysCMmGfzSGxytihRkGA8yMDI2MTAxOTE0NDAyNFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTQ0MDI0WjAvBgkqhkiG9w0BCQQxIgQgWLDNCfIDeOCR4XmdxiYfBcZanF00d+HCA2sPO9x61OMwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxAPrCjHE5UFvjeRfJm/eq3FDHTPrzakez44P9pAuPciEtXuLOpav8mLfR1iVbwC5HzQIxAIWuG0w8y1f/f2kz40JqQfkA0wQxEbADk5x1EDwu6Nk8yWtL8PN9nof172KRt5EB/w=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"AjBUv3rD36LGDwt5kSPU+7Fy8q9eIJ44Y0FiLVN6J08="},"signature":"MEUCIQCB4gSpzXMHCjVwGvkZbKEtGRNeS/jfdmE74pxCMvDQ8AIgDkDfVLrlrGnptr1Q9mdjX2B86g4H0UmsQkSMzMZSDSg="}}
build/torch210-cu128-aarch64-linux/symbols.json ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_rotary_cuda_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "apply_rotary",
7
+ "qualname": "apply_rotary",
8
+ "module": "_rotary_cuda_fe2bb66",
9
+ "kind": "function",
10
+ "doc": null,
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "x1",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "x2",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "torch.Tensor"
24
+ },
25
+ {
26
+ "name": "cos",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": null,
29
+ "annotation": "torch.Tensor"
30
+ },
31
+ {
32
+ "name": "sin",
33
+ "kind": "POSITIONAL_OR_KEYWORD",
34
+ "default": null,
35
+ "annotation": "torch.Tensor"
36
+ },
37
+ {
38
+ "name": "out1",
39
+ "kind": "POSITIONAL_OR_KEYWORD",
40
+ "default": null,
41
+ "annotation": "torch.Tensor"
42
+ },
43
+ {
44
+ "name": "out2",
45
+ "kind": "POSITIONAL_OR_KEYWORD",
46
+ "default": null,
47
+ "annotation": "torch.Tensor"
48
+ },
49
+ {
50
+ "name": "conj",
51
+ "kind": "POSITIONAL_OR_KEYWORD",
52
+ "default": null,
53
+ "annotation": "bool"
54
+ }
55
+ ],
56
+ "return_annotation": "None"
57
+ }
58
+ },
59
+ {
60
+ "name": "apply_rotary_transformers",
61
+ "qualname": "apply_rotary_transformers",
62
+ "module": "_rotary_cuda_fe2bb66",
63
+ "kind": "function",
64
+ "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature",
65
+ "signature": {
66
+ "parameters": [
67
+ {
68
+ "name": "q",
69
+ "kind": "POSITIONAL_OR_KEYWORD",
70
+ "default": null,
71
+ "annotation": "torch.Tensor"
72
+ },
73
+ {
74
+ "name": "k",
75
+ "kind": "POSITIONAL_OR_KEYWORD",
76
+ "default": null,
77
+ "annotation": "torch.Tensor"
78
+ },
79
+ {
80
+ "name": "cos",
81
+ "kind": "POSITIONAL_OR_KEYWORD",
82
+ "default": null,
83
+ "annotation": "torch.Tensor"
84
+ },
85
+ {
86
+ "name": "sin",
87
+ "kind": "POSITIONAL_OR_KEYWORD",
88
+ "default": null,
89
+ "annotation": "torch.Tensor"
90
+ },
91
+ {
92
+ "name": "unsqueeze_dim",
93
+ "kind": "POSITIONAL_OR_KEYWORD",
94
+ "default": "1",
95
+ "annotation": "int"
96
+ }
97
+ ],
98
+ "return_annotation": "tuple[torch.Tensor, torch.Tensor]"
99
+ }
100
+ }
101
+ ],
102
+ "layers": []
103
+ }
build/torch210-cu130-aarch64-linux/__init__.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+
3
+ from . import layers
4
+ from ._ops import ops
5
+
6
+
7
+ def apply_rotary(
8
+ x1: torch.Tensor,
9
+ x2: torch.Tensor,
10
+ cos: torch.Tensor,
11
+ sin: torch.Tensor,
12
+ out1: torch.Tensor,
13
+ out2: torch.Tensor,
14
+ conj: bool,
15
+ ) -> None:
16
+ ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj)
17
+
18
+
19
+ def apply_rotary_transformers(
20
+ q: torch.Tensor,
21
+ k: torch.Tensor,
22
+ cos: torch.Tensor,
23
+ sin: torch.Tensor,
24
+ unsqueeze_dim: int = 1,
25
+ ) -> tuple[torch.Tensor, torch.Tensor]:
26
+ """
27
+ Rotary kernel implementation wrapper
28
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
29
+ """
30
+ cos = cos.unsqueeze(unsqueeze_dim)
31
+ sin = sin.unsqueeze(unsqueeze_dim)
32
+
33
+ q_rotated = q.clone()
34
+ k_rotated = k.clone()
35
+
36
+ # Get half dimension for rotation
37
+ half_dim = q.shape[-1] // 2
38
+ q1 = q_rotated[..., :half_dim]
39
+ q2 = q_rotated[..., half_dim:]
40
+ k1 = k_rotated[..., :half_dim]
41
+ k2 = k_rotated[..., half_dim:]
42
+ if cos.shape[-1] != half_dim:
43
+ # Trim cos/sin to match half_dim
44
+ cos = cos[..., :half_dim]
45
+ sin = sin[..., :half_dim]
46
+
47
+ apply_rotary(q1, q2, cos, sin, q1, q2, False)
48
+ apply_rotary(k1, k2, cos, sin, k1, k2, False)
49
+ return q_rotated, k_rotated
50
+
51
+
52
+ # Add torch compile support for functions
53
+ apply_rotary_transformers.can_torch_compile = True
54
+
55
+
56
+ # Keeping `apply_rotary` and `apply_rotary_transformers` for BC
57
+ __all__ = ["apply_rotary", "apply_rotary_transformers", "layers"]
build/torch210-cu130-aarch64-linux/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _rotary_cuda_fe2bb66
3
+ ops = torch.ops._rotary_cuda_fe2bb66
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_rotary_cuda_fe2bb66::{op_name}"
build/torch210-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c7ac482809196a8c1b0dab0a93d63c375a37b434b377be6bdae749e528be74b3
3
+ size 10957128
build/torch210-cu130-aarch64-linux/layers.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+
4
+ from ._ops import ops
5
+
6
+
7
+ class apply_rotary_transformers(nn.Module):
8
+ can_torch_compile = True
9
+
10
+ def forward(
11
+ self,
12
+ q: torch.Tensor,
13
+ k: torch.Tensor,
14
+ cos: torch.Tensor,
15
+ sin: torch.Tensor,
16
+ unsqueeze_dim: int = 1,
17
+ ) -> tuple[torch.Tensor, torch.Tensor]:
18
+ """
19
+ Rotary kernel implementation wrapper
20
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
21
+ """
22
+ cos = cos.unsqueeze(unsqueeze_dim)
23
+ sin = sin.unsqueeze(unsqueeze_dim)
24
+
25
+ q_rotated = q.clone()
26
+ k_rotated = k.clone()
27
+
28
+ # Get half dimension for rotation
29
+ half_dim = q.shape[-1] // 2
30
+ q1 = q_rotated[..., :half_dim]
31
+ q2 = q_rotated[..., half_dim:]
32
+ k1 = k_rotated[..., :half_dim]
33
+ k2 = k_rotated[..., half_dim:]
34
+ if cos.shape[-1] != half_dim:
35
+ # Trim cos/sin to match half_dim
36
+ cos = cos[..., :half_dim]
37
+ sin = sin[..., :half_dim]
38
+
39
+ ops.apply_rotary(q1, q2, cos, sin, q1, q2, False)
40
+ ops.apply_rotary(k1, k2, cos, sin, k1, k2, False)
41
+ return q_rotated, k_rotated
build/torch210-cu130-aarch64-linux/metadata.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "rotary",
3
+ "id": "_rotary_cuda_fe2bb66",
4
+ "version": 2,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "BSD-3-Clause",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "cuda",
11
+ "archs": [
12
+ "10.0",
13
+ "10.3",
14
+ "11.0",
15
+ "12.0",
16
+ "12.1+PTX",
17
+ "7.5",
18
+ "8.0",
19
+ "8.6",
20
+ "8.7",
21
+ "8.9",
22
+ "9.0"
23
+ ]
24
+ },
25
+ "digest": {
26
+ "algorithm": "sha256",
27
+ "files": {
28
+ "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=",
29
+ "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=",
30
+ "_rotary_cuda_fe2bb66.abi3.so": "x6xIKAkZaowbDasKk9Y8N1o3tDSzd75r2udJ5Si+dLM=",
31
+ "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=",
32
+ "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM="
33
+ }
34
+ },
35
+ "provenance": {
36
+ "kernel-builder": {
37
+ "version": "0.18.0-dev0",
38
+ "commit": "d054906a13710b811b96697b4635f03020842733",
39
+ "dirty": false
40
+ },
41
+ "kernel": {
42
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
43
+ "dirty": false
44
+ }
45
+ }
46
+ }
build/torch210-cu130-aarch64-linux/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHLDCCBrKgAwIBAgIUUq4s4ENE8X+JW51knmH/Iotu2/0wCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDI3WhcNMjYxMDE5MTQ1MDI3WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdkUHlZ9mnqcN87RPZJaBpG9KxWF6n4R9q4UWjhB0MHJdHkJow2pFj4kxpYGguqwaPGYiMk6OIzqAx9OvcyUwJqOCBdEwggXNMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJtSJgAABAMARzBFAiEA+h7xLSb0IbFvLOaLr2TsmbcD2u79a3kZbiyIS1zsdEoCIBlsRTmluVx2qf88waAF021SgyeAe+CExCJ9UHaWslALMAoGCCqGSM49BAMDA2gAMGUCMQCotnCbllOEKJxhyRGSoCb9HzlB66f19TGaK9zW8ib5Rp7pauwlEiuBHjOGmsUxPl4CMD6RxVGEji37wQNqWXQA52UkLkD6h+EEeLbWqB/8FLZBxHlrwgSs7tIseg8zVC8V/Q=="},"tlogEntries":[{"logIndex":"3322189954","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420828","inclusionPromise":{"signedEntryTimestamp":"MEYCIQDV7sefUa2kp9RaOLfK8HSJAcI2eun9nHuV3T9isZAHtgIhANQz7poWpQxG7JzDfwIAdK2+FaG07GJfLvAjJlthySOk"},"inclusionProof":{"logIndex":"3200285692","rootHash":"51ZOmwjxfTbNfrahP72UnVTOv7NE2dpU/SzXqPemw/8=","treeSize":"3200285834","hashes":["v+HzuUG5z3fKjImPj/d7M65Ejf2cb49lh86OWPmjudw=","SCvT7YQWSMme5FjMt+TKfpstv1tztdkuU1R88J6hhq0=","AS6/70Oypv+xSJNURY6xWQYTYVgobJlTTFZy58/ApOk=","90JQPcvD5yyanhnWtvo0UeNnlut213GC8LcRhRSR+HU=","jX7hNhwOpf2lq0IyJLLZi0ujoDBhGu15yR6c0R78Pq8=","pG8JwPNJzrs6BzCA7Dc6Jk4ZUpOZGIFGr7VEEf/QpXQ=","ewxuV4SdHIirh5/YBxXIw146lvIqhA0E2mVUbY7WuvQ=","8IZolaa0AEh9V8Yqgf9jHDKMyfgSJrpKACU8vo9Mkkc=","78k9AP+GsRL41Pcr55MVoEYtlgYl6bTEckgb0zxXQR0=","J9J5UmUcZqcjXjHijSTKWpuMOAD204gAQ2ezy7EMQKs=","rB31w7mqkIdLgwc1wGMMZwV7S8lj7sSMf8l3gVIzsPs=","XOWsq9QVXcgSlfehEYZ/+6qBqznm92n6ybg/xLu5UW0=","vr/I5/Xf0PmHferwNfBzMHIwhozHb7BdkFEViVC+DS0=","SksIxFpXB9fPLUXaMWYYyCR+CHfLk+YqXWhltM2oQIM=","AKeuacrT6C2M0EPPUKzmcVVZfsOoSiMACj//uUTCeOc=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200285834\n51ZOmwjxfTbNfrahP72UnVTOv7NE2dpU/SzXqPemw/8=\n\n— rekor.sigstore.dev wNI9ajBGAiEA81XMvXmliPDNr9Xbd+A+9taGxDm7oErBiheijp8zPE4CIQD+Vbc0NxIV7xyDzC0VNcfB2AWB7WAHDY4RoyQsjsJzLA==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJiNGUzOTBmYWM1ZDc5OTUzOTI2NjA2YWMxMjYxOWRmYTM5Yzg2YjA0YTg2YjdlZGJiMTEyYWU3YjI4NTA0MjNkIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRzJiOURBdTRwMHFpZGJWVGJ4Q3kzY3JzZ3p1cURnbCtzWmhlaUxobDlyTkFpQVpLenBYYksyRi8vRXFXSGhtTHQvQ0h6UnJMMHgrTzZLcDR0NTRjRTVqMnc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1SRU5EUW5KTFowRjNTVUpCWjBsVlZYRTBjelJGVGtVNFdDdEtWelV4YTI1dFNDOUpiM1IxTWk4d2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJKTTFkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkVrelYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZrYTFWSWJGbzViVzV4WTA0NE4xSlFXa3BoUW5CSE9VdDRWMFkyYmpSU09YRTBWVmNLYW1oQ01FMUlTbVJJYTBwdmR6SndSbW8wYTNod1dVZG5kWEYzWVZCSFdXbE5helpQU1hweFFYZzVUM1pqZVZWM1NuRlBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMFUwcG5RVUZDUVUxQlVucENSa0ZwUlVFcmFEZDRURk5pTUVsaVJuWk1UMkZNY2pKVWMyMWlZMFF5ZFRjNVlUTnJXZ3BpYVhsSlV6RjZjMlJGYjBOSlFteHpVbFJ0YkhWV2VESnhaamc0ZDJGQlJqQXlNVk5uZVdWQlpTdERSWGhEU2psVlNHRlhjMnhCVEUxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKblFVMUhWVU5OVVVOdmRHNURZbXhzVDBWTFNuaG9lVkpIVTI5RFlqbEllbXhDTmpabU1UbFVSMkZMT1hwWE9HbGlOVkp3TjNBS1lYVjNiRVZwZFVKSWFrOUhiWE5WZUZCc05FTk5SRFpTZUZaSFJXcHBNemQzVVU1eFYxaFJRVFV5Vld0TWEwUTJhQ3RGUldWTVlsZHhRaTg0Umt4YVFncDRTR3h5ZDJkVGN6ZDBTWE5sWnpoNlZrTTRWaTlSUFQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgU5nwiWmdhbU+qYkylWW8txxGftyYae9bAXD/BL/PIM8CFQD9BN973qVudHyOD9SxA5poitumZxgPMjAyNjEwMTkxNDQwMjdaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAxOTE0NDAyN1owLwYJKoZIhvcNAQkEMSIEIKqLsOWRxqvE9NWLY3eX4rWs+bdYW1nGzr+7Sp5zPuvnMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMGcjldPmrKjKyr950zw+HlSpeG6fyXZSrofFDh3hJ2LhHRcoVsqSsXOD8IiB0qynPwIxAPvH7bD7YMbyGfXzYns9IXLwmf4rwSA2arX/KwYK8UH8ib/D1zNBqwFxiGIpx5nzyQ=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"tOOQ+sXXmVOSZgasEmGd+jnIawSoa37bsRKueyhQQj0="},"signature":"MEQCIG2b9DAu4p0qidbVTbxCy3crsgzuqDgl+sZheiLhl9rNAiAZKzpXbK2F//EqWHhmLt/CHzRrL0x+O6Kp4t54cE5j2w=="}}
build/torch210-cu130-aarch64-linux/symbols.json ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_rotary_cuda_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "apply_rotary",
7
+ "qualname": "apply_rotary",
8
+ "module": "_rotary_cuda_fe2bb66",
9
+ "kind": "function",
10
+ "doc": null,
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "x1",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "x2",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "torch.Tensor"
24
+ },
25
+ {
26
+ "name": "cos",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": null,
29
+ "annotation": "torch.Tensor"
30
+ },
31
+ {
32
+ "name": "sin",
33
+ "kind": "POSITIONAL_OR_KEYWORD",
34
+ "default": null,
35
+ "annotation": "torch.Tensor"
36
+ },
37
+ {
38
+ "name": "out1",
39
+ "kind": "POSITIONAL_OR_KEYWORD",
40
+ "default": null,
41
+ "annotation": "torch.Tensor"
42
+ },
43
+ {
44
+ "name": "out2",
45
+ "kind": "POSITIONAL_OR_KEYWORD",
46
+ "default": null,
47
+ "annotation": "torch.Tensor"
48
+ },
49
+ {
50
+ "name": "conj",
51
+ "kind": "POSITIONAL_OR_KEYWORD",
52
+ "default": null,
53
+ "annotation": "bool"
54
+ }
55
+ ],
56
+ "return_annotation": "None"
57
+ }
58
+ },
59
+ {
60
+ "name": "apply_rotary_transformers",
61
+ "qualname": "apply_rotary_transformers",
62
+ "module": "_rotary_cuda_fe2bb66",
63
+ "kind": "function",
64
+ "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature",
65
+ "signature": {
66
+ "parameters": [
67
+ {
68
+ "name": "q",
69
+ "kind": "POSITIONAL_OR_KEYWORD",
70
+ "default": null,
71
+ "annotation": "torch.Tensor"
72
+ },
73
+ {
74
+ "name": "k",
75
+ "kind": "POSITIONAL_OR_KEYWORD",
76
+ "default": null,
77
+ "annotation": "torch.Tensor"
78
+ },
79
+ {
80
+ "name": "cos",
81
+ "kind": "POSITIONAL_OR_KEYWORD",
82
+ "default": null,
83
+ "annotation": "torch.Tensor"
84
+ },
85
+ {
86
+ "name": "sin",
87
+ "kind": "POSITIONAL_OR_KEYWORD",
88
+ "default": null,
89
+ "annotation": "torch.Tensor"
90
+ },
91
+ {
92
+ "name": "unsqueeze_dim",
93
+ "kind": "POSITIONAL_OR_KEYWORD",
94
+ "default": "1",
95
+ "annotation": "int"
96
+ }
97
+ ],
98
+ "return_annotation": "tuple[torch.Tensor, torch.Tensor]"
99
+ }
100
+ }
101
+ ],
102
+ "layers": []
103
+ }
build/torch211-cu126-aarch64-linux/__init__.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+
3
+ from . import layers
4
+ from ._ops import ops
5
+
6
+
7
+ def apply_rotary(
8
+ x1: torch.Tensor,
9
+ x2: torch.Tensor,
10
+ cos: torch.Tensor,
11
+ sin: torch.Tensor,
12
+ out1: torch.Tensor,
13
+ out2: torch.Tensor,
14
+ conj: bool,
15
+ ) -> None:
16
+ ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj)
17
+
18
+
19
+ def apply_rotary_transformers(
20
+ q: torch.Tensor,
21
+ k: torch.Tensor,
22
+ cos: torch.Tensor,
23
+ sin: torch.Tensor,
24
+ unsqueeze_dim: int = 1,
25
+ ) -> tuple[torch.Tensor, torch.Tensor]:
26
+ """
27
+ Rotary kernel implementation wrapper
28
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
29
+ """
30
+ cos = cos.unsqueeze(unsqueeze_dim)
31
+ sin = sin.unsqueeze(unsqueeze_dim)
32
+
33
+ q_rotated = q.clone()
34
+ k_rotated = k.clone()
35
+
36
+ # Get half dimension for rotation
37
+ half_dim = q.shape[-1] // 2
38
+ q1 = q_rotated[..., :half_dim]
39
+ q2 = q_rotated[..., half_dim:]
40
+ k1 = k_rotated[..., :half_dim]
41
+ k2 = k_rotated[..., half_dim:]
42
+ if cos.shape[-1] != half_dim:
43
+ # Trim cos/sin to match half_dim
44
+ cos = cos[..., :half_dim]
45
+ sin = sin[..., :half_dim]
46
+
47
+ apply_rotary(q1, q2, cos, sin, q1, q2, False)
48
+ apply_rotary(k1, k2, cos, sin, k1, k2, False)
49
+ return q_rotated, k_rotated
50
+
51
+
52
+ # Add torch compile support for functions
53
+ apply_rotary_transformers.can_torch_compile = True
54
+
55
+
56
+ # Keeping `apply_rotary` and `apply_rotary_transformers` for BC
57
+ __all__ = ["apply_rotary", "apply_rotary_transformers", "layers"]
build/torch211-cu126-aarch64-linux/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _rotary_cuda_fe2bb66
3
+ ops = torch.ops._rotary_cuda_fe2bb66
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_rotary_cuda_fe2bb66::{op_name}"
build/torch211-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e45897fe4458a0ece9bf6dcc10f8bc399f3ce79397c626d0c559fd6560370174
3
+ size 6334272
build/torch211-cu126-aarch64-linux/layers.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+
4
+ from ._ops import ops
5
+
6
+
7
+ class apply_rotary_transformers(nn.Module):
8
+ can_torch_compile = True
9
+
10
+ def forward(
11
+ self,
12
+ q: torch.Tensor,
13
+ k: torch.Tensor,
14
+ cos: torch.Tensor,
15
+ sin: torch.Tensor,
16
+ unsqueeze_dim: int = 1,
17
+ ) -> tuple[torch.Tensor, torch.Tensor]:
18
+ """
19
+ Rotary kernel implementation wrapper
20
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
21
+ """
22
+ cos = cos.unsqueeze(unsqueeze_dim)
23
+ sin = sin.unsqueeze(unsqueeze_dim)
24
+
25
+ q_rotated = q.clone()
26
+ k_rotated = k.clone()
27
+
28
+ # Get half dimension for rotation
29
+ half_dim = q.shape[-1] // 2
30
+ q1 = q_rotated[..., :half_dim]
31
+ q2 = q_rotated[..., half_dim:]
32
+ k1 = k_rotated[..., :half_dim]
33
+ k2 = k_rotated[..., half_dim:]
34
+ if cos.shape[-1] != half_dim:
35
+ # Trim cos/sin to match half_dim
36
+ cos = cos[..., :half_dim]
37
+ sin = sin[..., :half_dim]
38
+
39
+ ops.apply_rotary(q1, q2, cos, sin, q1, q2, False)
40
+ ops.apply_rotary(k1, k2, cos, sin, k1, k2, False)
41
+ return q_rotated, k_rotated
build/torch211-cu126-aarch64-linux/metadata.json ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "rotary",
3
+ "id": "_rotary_cuda_fe2bb66",
4
+ "version": 2,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "BSD-3-Clause",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "cuda",
11
+ "archs": [
12
+ "7.0",
13
+ "7.2",
14
+ "7.5",
15
+ "8.0",
16
+ "8.6",
17
+ "8.7",
18
+ "8.9",
19
+ "9.0+PTX"
20
+ ]
21
+ },
22
+ "digest": {
23
+ "algorithm": "sha256",
24
+ "files": {
25
+ "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=",
26
+ "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=",
27
+ "_rotary_cuda_fe2bb66.abi3.so": "5FiX/kRYoOzpv23MEPi8OZ8855OXxibQxVn9ZWA3AXQ=",
28
+ "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=",
29
+ "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM="
30
+ }
31
+ },
32
+ "provenance": {
33
+ "kernel-builder": {
34
+ "version": "0.18.0-dev0",
35
+ "commit": "d054906a13710b811b96697b4635f03020842733",
36
+ "dirty": false
37
+ },
38
+ "kernel": {
39
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
40
+ "dirty": false
41
+ }
42
+ }
43
+ }
build/torch211-cu126-aarch64-linux/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHLTCCBrKgAwIBAgIUNKr2HJn3rIZSZT6TshpTIf45VAYwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDMwWhcNMjYxMDE5MTQ1MDMwWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPba+8Qa4jYW8JUf9q/ewWDpL8nkRKfKmpd+dtrSni4e/LFy7YFb09kFZTwwWliIisxfjt4s2mw4gSWYX7gugNqOCBdEwggXNMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJte7QAABAMARzBFAiANrSbgZOQjKFzAn8WGXQsv6DNSpz/4mB+mcVK6Nv9s/QIhAL4tqDGPkFh9Z82lq+BXfm5QAzsNkEC2vYeZiXWANrxfMAoGCCqGSM49BAMDA2kAMGYCMQCEckfXsmPow744Ak3QptjFXCTM1L1IEKbOaopvp0xWW9j9AwTWRV6cpNtkvPHOwaUCMQCf2ECRhiXf8ugwmiNkF6k/90NchJk4la/EIPgzFVTMU4M+smR/0gfN0/H9OcWzC2U="},"tlogEntries":[{"logIndex":"3322190801","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420831","inclusionPromise":{"signedEntryTimestamp":"MEUCIQCkbJNNYxs0bhg5PClr6zeqzAT10+s7BrEQkRNfvUA/FwIgZl0nZ0K9GFa4YwS7RDOhtR+ph7EE/9D0wTep/54VKHY="},"inclusionProof":{"logIndex":"3200286539","rootHash":"LINLsbKeXx4FoO9VKNVc8wtW3jvHRyR1kOUBQQzVQ6M=","treeSize":"3200286787","hashes":["JRGG9pNL3lLrSUrB1BlkOCgtBCicDOm0P5WWONqxhdI=","i6CA44f+1bBNJHKcFtK1dq2AT+oSXWGqNliX8GW27oQ=","XJhEynRl6fGcq6Vgfr9b7tF2RgY8okXgXIp5WsCAvfI=","TU5k1obHGvMVtqgD11O3IL1mI/7oHRCIKujoBfgCo+U=","It8fsV7ipu0qQZCDSWZKo1pAUX4u7RB1TiU1jquU8p8=","2vzTSrN20GLzpyvWQxP3ZuVoftqNmhg6v5Oss2IFkGA=","HGLpNbonMF5RHtROlnnkhsvOJv0BKs5MLEsH0duuAAI=","pyMfHCjsKW+ualK0OSCRrEJ3CtejOi/A3fG8u/nkkuQ=","HVI74DP3aKxcofmhCLPPd0JmnvnTj+Veaai2+89GpAY=","5m2TpCZfySIywiQ7iT4qUpYago0hBAtoyiEQ0AKg7MI=","6GqHglNndYdrBLvN1vR83/EWe7SdULLsxnck15og18w=","XOWsq9QVXcgSlfehEYZ/+6qBqznm92n6ybg/xLu5UW0=","vr/I5/Xf0PmHferwNfBzMHIwhozHb7BdkFEViVC+DS0=","SksIxFpXB9fPLUXaMWYYyCR+CHfLk+YqXWhltM2oQIM=","AKeuacrT6C2M0EPPUKzmcVVZfsOoSiMACj//uUTCeOc=","+o6VDvJw5afo3+ahKrkPfki5CfOlcs7XtTkNksGh/Pk=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200286787\nLINLsbKeXx4FoO9VKNVc8wtW3jvHRyR1kOUBQQzVQ6M=\n\n— rekor.sigstore.dev wNI9ajBEAiAQ+QKAxbJPht2WHQZTq2Sn5nVFJlP6DlKohcrr9lx3kgIgRn7+hlNT64UPdoaa91iO8f3QucJo7h1G2+PyHxdHLUI=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIwYzdmNGI3M2RjYTJhOGQ0Nzc1NjcxNTFiNTA3YmY5YjVmNzIxZTA4YjcxM2VhZTVmYmZjNGI1YjBmMGVmZTM1In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJR3oxNGVKSDllMzZLZWZ5U1BscnpNTTFKUUd1bHpuNzJrbFlNNjNNeVBKOUFpRUErVVd1UnVKWTM1cU1Tbzh0ZzNTdzMyM1NUQ05LSk9wRm9telFKZWRaaFFRPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1WRU5EUW5KTFowRjNTVUpCWjBsVlRrdHlNa2hLYmpOeVNWcFRXbFEyVkhOb2NGUkpaalExVmtGWmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJOZDFkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkUxM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZRWW1Fck9GRmhOR3BaVnpoS1ZXWTVjUzlsZDFkRWNFdzRibXRTUzJaTGJYQmtLMlFLZEhKVGJtazBaUzlNUm5rM1dVWmlNRGxyUmxwVWQzZFhiR2xKYVhONFptcDBOSE15YlhjMFoxTlhXVmczWjNWblRuRlBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMFpUZFJRVUZDUVUxQlVucENSa0ZwUVU1eVUySm5XazlSYWt0R2VrRnVPRmRIV0ZGemRqWkVUbE53ZWk4MGJVSXJiUXBqVmtzMlRuWTVjeTlSU1doQlREUjBjVVJIVUd0R2FEbGFPREpzY1N0Q1dHWnROVkZCZW5OT2EwVkRNblpaWlZwcFdGZEJUbko0WmsxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKclFVMUhXVU5OVVVORlkydG1XSE50VUc5M056UTBRV3N6VVhCMGFrWllRMVJOTVV3eFNVVkxZazloYjNCMmNEQjRWMWM1YWprS1FYZFVWMUpXTm1Od1RuUnJkbEJJVDNkaFZVTk5VVU5tTWtWRFVtaHBXR1k0ZFdkM2JXbE9hMFkyYXk4NU1FNWphRXByTkd4aEwwVkpVR2Q2UmxaVVRRcFZORTByYzIxU0x6Qm5aazR3TDBnNVQyTlhla015VlQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgcWHYZv4b8SwyygtVptH9nCeha97eW9CQWZuC/NGuayYCFGSzNpI1ZWIuyCb+0hDvVwG23t7yGA8yMDI2MTAxOTE0NDAzMVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTQ0MDMxWjAvBgkqhkiG9w0BCQQxIgQgQzWXZEXjMQxNOohIM+3SWLI97lzgjUz3QGEhzuTEFxwwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxAI5KLPEttJSX9PHDflp939OuNzU4Yk2eQG+VGPUI2xt+buKc9kasLQk+eRPHr+nwjAIxAIkX0cXHgMxPllj68ZQGCxaGOaBHwmIZYKfbCkFcrTQRtEhcddR/j/yOqV4S5KkBJw=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"DH9Lc9yiqNR3VnFRtQe/m19yHgi3E+rl+/xLWw8O/jU="},"signature":"MEUCIGz14eJH9e36KefySPlrzMM1JQGulzn72klYM63MyPJ9AiEA+UWuRuJY35qMSo8tg3Sw323STCNKJOpFomzQJedZhQQ="}}
build/torch211-cu126-aarch64-linux/symbols.json ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_rotary_cuda_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "apply_rotary",
7
+ "qualname": "apply_rotary",
8
+ "module": "_rotary_cuda_fe2bb66",
9
+ "kind": "function",
10
+ "doc": null,
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "x1",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "x2",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "torch.Tensor"
24
+ },
25
+ {
26
+ "name": "cos",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": null,
29
+ "annotation": "torch.Tensor"
30
+ },
31
+ {
32
+ "name": "sin",
33
+ "kind": "POSITIONAL_OR_KEYWORD",
34
+ "default": null,
35
+ "annotation": "torch.Tensor"
36
+ },
37
+ {
38
+ "name": "out1",
39
+ "kind": "POSITIONAL_OR_KEYWORD",
40
+ "default": null,
41
+ "annotation": "torch.Tensor"
42
+ },
43
+ {
44
+ "name": "out2",
45
+ "kind": "POSITIONAL_OR_KEYWORD",
46
+ "default": null,
47
+ "annotation": "torch.Tensor"
48
+ },
49
+ {
50
+ "name": "conj",
51
+ "kind": "POSITIONAL_OR_KEYWORD",
52
+ "default": null,
53
+ "annotation": "bool"
54
+ }
55
+ ],
56
+ "return_annotation": "None"
57
+ }
58
+ },
59
+ {
60
+ "name": "apply_rotary_transformers",
61
+ "qualname": "apply_rotary_transformers",
62
+ "module": "_rotary_cuda_fe2bb66",
63
+ "kind": "function",
64
+ "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature",
65
+ "signature": {
66
+ "parameters": [
67
+ {
68
+ "name": "q",
69
+ "kind": "POSITIONAL_OR_KEYWORD",
70
+ "default": null,
71
+ "annotation": "torch.Tensor"
72
+ },
73
+ {
74
+ "name": "k",
75
+ "kind": "POSITIONAL_OR_KEYWORD",
76
+ "default": null,
77
+ "annotation": "torch.Tensor"
78
+ },
79
+ {
80
+ "name": "cos",
81
+ "kind": "POSITIONAL_OR_KEYWORD",
82
+ "default": null,
83
+ "annotation": "torch.Tensor"
84
+ },
85
+ {
86
+ "name": "sin",
87
+ "kind": "POSITIONAL_OR_KEYWORD",
88
+ "default": null,
89
+ "annotation": "torch.Tensor"
90
+ },
91
+ {
92
+ "name": "unsqueeze_dim",
93
+ "kind": "POSITIONAL_OR_KEYWORD",
94
+ "default": "1",
95
+ "annotation": "int"
96
+ }
97
+ ],
98
+ "return_annotation": "tuple[torch.Tensor, torch.Tensor]"
99
+ }
100
+ }
101
+ ],
102
+ "layers": []
103
+ }
build/torch211-cu128-aarch64-linux/__init__.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+
3
+ from . import layers
4
+ from ._ops import ops
5
+
6
+
7
+ def apply_rotary(
8
+ x1: torch.Tensor,
9
+ x2: torch.Tensor,
10
+ cos: torch.Tensor,
11
+ sin: torch.Tensor,
12
+ out1: torch.Tensor,
13
+ out2: torch.Tensor,
14
+ conj: bool,
15
+ ) -> None:
16
+ ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj)
17
+
18
+
19
+ def apply_rotary_transformers(
20
+ q: torch.Tensor,
21
+ k: torch.Tensor,
22
+ cos: torch.Tensor,
23
+ sin: torch.Tensor,
24
+ unsqueeze_dim: int = 1,
25
+ ) -> tuple[torch.Tensor, torch.Tensor]:
26
+ """
27
+ Rotary kernel implementation wrapper
28
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
29
+ """
30
+ cos = cos.unsqueeze(unsqueeze_dim)
31
+ sin = sin.unsqueeze(unsqueeze_dim)
32
+
33
+ q_rotated = q.clone()
34
+ k_rotated = k.clone()
35
+
36
+ # Get half dimension for rotation
37
+ half_dim = q.shape[-1] // 2
38
+ q1 = q_rotated[..., :half_dim]
39
+ q2 = q_rotated[..., half_dim:]
40
+ k1 = k_rotated[..., :half_dim]
41
+ k2 = k_rotated[..., half_dim:]
42
+ if cos.shape[-1] != half_dim:
43
+ # Trim cos/sin to match half_dim
44
+ cos = cos[..., :half_dim]
45
+ sin = sin[..., :half_dim]
46
+
47
+ apply_rotary(q1, q2, cos, sin, q1, q2, False)
48
+ apply_rotary(k1, k2, cos, sin, k1, k2, False)
49
+ return q_rotated, k_rotated
50
+
51
+
52
+ # Add torch compile support for functions
53
+ apply_rotary_transformers.can_torch_compile = True
54
+
55
+
56
+ # Keeping `apply_rotary` and `apply_rotary_transformers` for BC
57
+ __all__ = ["apply_rotary", "apply_rotary_transformers", "layers"]
build/torch211-cu128-aarch64-linux/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _rotary_cuda_fe2bb66
3
+ ops = torch.ops._rotary_cuda_fe2bb66
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_rotary_cuda_fe2bb66::{op_name}"
build/torch211-cu128-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5e38b00686d0ad16a8b5ab4420f3279c16bcaa274306c14250c6f243c55e7a64
3
+ size 10005216
build/torch211-cu128-aarch64-linux/layers.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+
4
+ from ._ops import ops
5
+
6
+
7
+ class apply_rotary_transformers(nn.Module):
8
+ can_torch_compile = True
9
+
10
+ def forward(
11
+ self,
12
+ q: torch.Tensor,
13
+ k: torch.Tensor,
14
+ cos: torch.Tensor,
15
+ sin: torch.Tensor,
16
+ unsqueeze_dim: int = 1,
17
+ ) -> tuple[torch.Tensor, torch.Tensor]:
18
+ """
19
+ Rotary kernel implementation wrapper
20
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
21
+ """
22
+ cos = cos.unsqueeze(unsqueeze_dim)
23
+ sin = sin.unsqueeze(unsqueeze_dim)
24
+
25
+ q_rotated = q.clone()
26
+ k_rotated = k.clone()
27
+
28
+ # Get half dimension for rotation
29
+ half_dim = q.shape[-1] // 2
30
+ q1 = q_rotated[..., :half_dim]
31
+ q2 = q_rotated[..., half_dim:]
32
+ k1 = k_rotated[..., :half_dim]
33
+ k2 = k_rotated[..., half_dim:]
34
+ if cos.shape[-1] != half_dim:
35
+ # Trim cos/sin to match half_dim
36
+ cos = cos[..., :half_dim]
37
+ sin = sin[..., :half_dim]
38
+
39
+ ops.apply_rotary(q1, q2, cos, sin, q1, q2, False)
40
+ ops.apply_rotary(k1, k2, cos, sin, k1, k2, False)
41
+ return q_rotated, k_rotated
build/torch211-cu128-aarch64-linux/metadata.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "rotary",
3
+ "id": "_rotary_cuda_fe2bb66",
4
+ "version": 2,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "BSD-3-Clause",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "cuda",
11
+ "archs": [
12
+ "10.0",
13
+ "10.1",
14
+ "12.0+PTX",
15
+ "7.0",
16
+ "7.2",
17
+ "7.5",
18
+ "8.0",
19
+ "8.6",
20
+ "8.7",
21
+ "8.9",
22
+ "9.0"
23
+ ]
24
+ },
25
+ "digest": {
26
+ "algorithm": "sha256",
27
+ "files": {
28
+ "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=",
29
+ "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=",
30
+ "_rotary_cuda_fe2bb66.abi3.so": "XjiwBobQrRaotatEIPMnnBa8qidDBsFCUMbyQ8VeemQ=",
31
+ "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=",
32
+ "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM="
33
+ }
34
+ },
35
+ "provenance": {
36
+ "kernel-builder": {
37
+ "version": "0.18.0-dev0",
38
+ "commit": "d054906a13710b811b96697b4635f03020842733",
39
+ "dirty": false
40
+ },
41
+ "kernel": {
42
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
43
+ "dirty": false
44
+ }
45
+ }
46
+ }
build/torch211-cu128-aarch64-linux/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHKzCCBrKgAwIBAgIUJBlNzyisD8nfe3B4SZPEWTLuGHIwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDMzWhcNMjYxMDE5MTQ1MDMzWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6TsHxdZ0kLks4M7OevFlstXGId396ePqbTrlCLaFydFsM5F/sakmLXZrIbtGDMPqthhfndqeX4dcAzsJkkLgN6OCBdEwggXNMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJtoxgAABAMARzBFAiBebh36ruNq68fhaSFAb4ncn4zEbUcm3tczb7iX09hfEgIhAIhQGBtJzIvPaw5JDeS51qczei8/vmcsGz0F64stxYWXMAoGCCqGSM49BAMDA2cAMGQCMBYKtOhkp7GM3lJ6pHrZx9x7Qbj02hskcAhwWnRUYzYzQ4vSg1bGeKfE8B89Fv/yJwIwZ/FHv/eNocbucDbU3mNcDU9ktWRHvHpXUhdUra7pIR1gWnosD5HQ9sKe1rSUKiEy"},"tlogEntries":[{"logIndex":"3322191400","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420834","inclusionPromise":{"signedEntryTimestamp":"MEQCIFHcVUYohN95W+yHhGFESU6wyDcRpg7HK3qDZ4/p6sfyAiAfpW4R0FKqXa0VmnCiSaf2o/IhbNkv0LUJJj39i0L0tg=="},"inclusionProof":{"logIndex":"3200287138","rootHash":"e8tBJo5n4xtiKa0J5Cg6BwWco97VFBYOfYb+j0/il2A=","treeSize":"3200287265","hashes":["ioW5flNxgtUuSfapGYp9/OGGX1sdVdOE3QYcB3vbQ3M=","DAYlVmc9jnPorGapupNPKhMYdLvUAY/YIJYiMZd/fn8=","iy6jIU9GKCDCIVlNhbE9Q+MiaiJba2PvuefqJRGwnVk=","luZ5YU7SiCtC7g035k6FQ1rRh9ey4XURahGVbTUK05o=","2/gDBP7zQYq27T6LA9SONKEIUhdo9VWKl6yXnFBG+LU=","Bdg6oSOCbLhrXhJYVdqfgUVfAyOmMQWcM2bjHaJV5ws=","xK0ReCU72du2RhjlL/gb+f8dzaQqGvYLT7PV/hgPssU=","NaAs2DjupeGWe6AcjZsRXF16p/jqYnjEd7xxK+ZHwag=","OfPrBL7gVrbebLxU3P9zFZxlv7DO+MmdqgNpODVXKBM=","l4Zpl9tUfW49PN/STRT4C51OWeLwLLdo461sdp+zLo0=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200287265\ne8tBJo5n4xtiKa0J5Cg6BwWco97VFBYOfYb+j0/il2A=\n\n— rekor.sigstore.dev wNI9ajBGAiEAs6bey3xoNMFrJiONEBu6vp2Biv1X1NWF2TamNUZWt1oCIQCseHHUPglmdzV5LD4F2t3w/2Hxc3y+/O95OirJ2KhdAQ==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI3YjJhZjFiZjAxMTE4NGFmOWIzYjAyN2E1ZDMyMjk0ODI2MmEwOWJlNzcxYjk2OWY4ODUzYzE1M2ExYzNhNGEyIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQSsxemdiSGgwOWp5czZXdCtwaGNOOFE3MzJ1S0xiWVc4cFF5UTVGVkdhc0FpRUF5MHBYUTdCMzF5QnR3Z245MDhSOGYxdlNRTTVwS0NFTU1Bb2dGTTB4UkRVPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KTFowRjNTVUpCWjBsVlNrSnNUbnA1YVhORU9HNW1aVE5DTkZOYVVFVlhWRXgxUjBoSmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJOZWxkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkUxNlYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVUyVkhOSWVHUmFNR3RNYTNNMFRUZFBaWFpHYkhOMFdFZEpaRE01Tm1WUWNXSlVjbXdLUTB4aFJubGtSbk5OTlVZdmMyRnJiVXhZV25KSlluUkhSRTFRY1hSb2FHWnVaSEZsV0RSa1kwRjZjMHByYTB4blRqWlBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMGIzaG5RVUZDUVUxQlVucENSa0ZwUW1WaWFETTJjblZPY1RZNFptaGhVMFpCWWpSdVkyNDBla1ZpVldOdE0zUmplZ3BpTjJsWU1EbG9aa1ZuU1doQlNXaFJSMEowU25wSmRsQmhkelZLUkdWVE5URnhZM3BsYVRndmRtMWpjMGQ2TUVZMk5ITjBlRmxYV0UxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKalFVMUhVVU5OUWxsTGRFOW9hM0EzUjAwemJFbzJjRWh5V25nNWVEZFJZbW93TW1oemEyTkJhSGRYYmxKVldYcFplbEUwZGxNS1p6RmlSMlZMWmtVNFFqZzVSbll2ZVVwM1NYZGFMMFpJZGk5bFRtOWpZblZqUkdKVk0yMU9ZMFJWT1d0MFYxSklka2h3V0ZWb1pGVnlZVGR3U1ZJeFp3cFhibTl6UkRWSVVUbHpTMlV4Y2xOVlMybEZlUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgP3acRPGvfDfxHm/WmgrifyazPHATAGk1kiXHIOT66FoCFGLdMZYo7bsbag7HMjJWVOk/bfSWGA8yMDI2MTAxOTE0NDAzM1owAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTQ0MDMzWjAvBgkqhkiG9w0BCQQxIgQg0EaJZ7RYnjewks++aTEfMJNs1w5tMKWGZmeL85IREpcwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwJvWnHOqjlRmlestHzSXEGwIdSovgC7sQPI6YmHtXsn4Rnx7Bcp50Ua8RIVUtKqT5AjEA7d801hxRu3bSS8JeBxTaRaxn+Jg/pe87ffdPyTiY/OTl/AM/BCF+aMEUtUUTXGZT"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"eyrxvwERhK+bOwJ6XTIpSCYqCb53G5afiFPBU6HDpKI="},"signature":"MEUCIA+1zgbHh09jys6Wt+phcN8Q732uKLbYW8pQyQ5FVGasAiEAy0pXQ7B31yBtwgn908R8f1vSQM5pKCEMMAogFM0xRDU="}}
build/torch211-cu128-aarch64-linux/symbols.json ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_rotary_cuda_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "apply_rotary",
7
+ "qualname": "apply_rotary",
8
+ "module": "_rotary_cuda_fe2bb66",
9
+ "kind": "function",
10
+ "doc": null,
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "x1",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "x2",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "torch.Tensor"
24
+ },
25
+ {
26
+ "name": "cos",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": null,
29
+ "annotation": "torch.Tensor"
30
+ },
31
+ {
32
+ "name": "sin",
33
+ "kind": "POSITIONAL_OR_KEYWORD",
34
+ "default": null,
35
+ "annotation": "torch.Tensor"
36
+ },
37
+ {
38
+ "name": "out1",
39
+ "kind": "POSITIONAL_OR_KEYWORD",
40
+ "default": null,
41
+ "annotation": "torch.Tensor"
42
+ },
43
+ {
44
+ "name": "out2",
45
+ "kind": "POSITIONAL_OR_KEYWORD",
46
+ "default": null,
47
+ "annotation": "torch.Tensor"
48
+ },
49
+ {
50
+ "name": "conj",
51
+ "kind": "POSITIONAL_OR_KEYWORD",
52
+ "default": null,
53
+ "annotation": "bool"
54
+ }
55
+ ],
56
+ "return_annotation": "None"
57
+ }
58
+ },
59
+ {
60
+ "name": "apply_rotary_transformers",
61
+ "qualname": "apply_rotary_transformers",
62
+ "module": "_rotary_cuda_fe2bb66",
63
+ "kind": "function",
64
+ "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature",
65
+ "signature": {
66
+ "parameters": [
67
+ {
68
+ "name": "q",
69
+ "kind": "POSITIONAL_OR_KEYWORD",
70
+ "default": null,
71
+ "annotation": "torch.Tensor"
72
+ },
73
+ {
74
+ "name": "k",
75
+ "kind": "POSITIONAL_OR_KEYWORD",
76
+ "default": null,
77
+ "annotation": "torch.Tensor"
78
+ },
79
+ {
80
+ "name": "cos",
81
+ "kind": "POSITIONAL_OR_KEYWORD",
82
+ "default": null,
83
+ "annotation": "torch.Tensor"
84
+ },
85
+ {
86
+ "name": "sin",
87
+ "kind": "POSITIONAL_OR_KEYWORD",
88
+ "default": null,
89
+ "annotation": "torch.Tensor"
90
+ },
91
+ {
92
+ "name": "unsqueeze_dim",
93
+ "kind": "POSITIONAL_OR_KEYWORD",
94
+ "default": "1",
95
+ "annotation": "int"
96
+ }
97
+ ],
98
+ "return_annotation": "tuple[torch.Tensor, torch.Tensor]"
99
+ }
100
+ }
101
+ ],
102
+ "layers": []
103
+ }
build/torch211-cu130-aarch64-linux/__init__.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+
3
+ from . import layers
4
+ from ._ops import ops
5
+
6
+
7
+ def apply_rotary(
8
+ x1: torch.Tensor,
9
+ x2: torch.Tensor,
10
+ cos: torch.Tensor,
11
+ sin: torch.Tensor,
12
+ out1: torch.Tensor,
13
+ out2: torch.Tensor,
14
+ conj: bool,
15
+ ) -> None:
16
+ ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj)
17
+
18
+
19
+ def apply_rotary_transformers(
20
+ q: torch.Tensor,
21
+ k: torch.Tensor,
22
+ cos: torch.Tensor,
23
+ sin: torch.Tensor,
24
+ unsqueeze_dim: int = 1,
25
+ ) -> tuple[torch.Tensor, torch.Tensor]:
26
+ """
27
+ Rotary kernel implementation wrapper
28
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
29
+ """
30
+ cos = cos.unsqueeze(unsqueeze_dim)
31
+ sin = sin.unsqueeze(unsqueeze_dim)
32
+
33
+ q_rotated = q.clone()
34
+ k_rotated = k.clone()
35
+
36
+ # Get half dimension for rotation
37
+ half_dim = q.shape[-1] // 2
38
+ q1 = q_rotated[..., :half_dim]
39
+ q2 = q_rotated[..., half_dim:]
40
+ k1 = k_rotated[..., :half_dim]
41
+ k2 = k_rotated[..., half_dim:]
42
+ if cos.shape[-1] != half_dim:
43
+ # Trim cos/sin to match half_dim
44
+ cos = cos[..., :half_dim]
45
+ sin = sin[..., :half_dim]
46
+
47
+ apply_rotary(q1, q2, cos, sin, q1, q2, False)
48
+ apply_rotary(k1, k2, cos, sin, k1, k2, False)
49
+ return q_rotated, k_rotated
50
+
51
+
52
+ # Add torch compile support for functions
53
+ apply_rotary_transformers.can_torch_compile = True
54
+
55
+
56
+ # Keeping `apply_rotary` and `apply_rotary_transformers` for BC
57
+ __all__ = ["apply_rotary", "apply_rotary_transformers", "layers"]
build/torch211-cu130-aarch64-linux/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _rotary_cuda_fe2bb66
3
+ ops = torch.ops._rotary_cuda_fe2bb66
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_rotary_cuda_fe2bb66::{op_name}"
build/torch211-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:89eaea71556c106a178a3559987fbdd11372149ea145d9474f84c74cedd60dc5
3
+ size 10953480
build/torch211-cu130-aarch64-linux/layers.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+
4
+ from ._ops import ops
5
+
6
+
7
+ class apply_rotary_transformers(nn.Module):
8
+ can_torch_compile = True
9
+
10
+ def forward(
11
+ self,
12
+ q: torch.Tensor,
13
+ k: torch.Tensor,
14
+ cos: torch.Tensor,
15
+ sin: torch.Tensor,
16
+ unsqueeze_dim: int = 1,
17
+ ) -> tuple[torch.Tensor, torch.Tensor]:
18
+ """
19
+ Rotary kernel implementation wrapper
20
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
21
+ """
22
+ cos = cos.unsqueeze(unsqueeze_dim)
23
+ sin = sin.unsqueeze(unsqueeze_dim)
24
+
25
+ q_rotated = q.clone()
26
+ k_rotated = k.clone()
27
+
28
+ # Get half dimension for rotation
29
+ half_dim = q.shape[-1] // 2
30
+ q1 = q_rotated[..., :half_dim]
31
+ q2 = q_rotated[..., half_dim:]
32
+ k1 = k_rotated[..., :half_dim]
33
+ k2 = k_rotated[..., half_dim:]
34
+ if cos.shape[-1] != half_dim:
35
+ # Trim cos/sin to match half_dim
36
+ cos = cos[..., :half_dim]
37
+ sin = sin[..., :half_dim]
38
+
39
+ ops.apply_rotary(q1, q2, cos, sin, q1, q2, False)
40
+ ops.apply_rotary(k1, k2, cos, sin, k1, k2, False)
41
+ return q_rotated, k_rotated
build/torch211-cu130-aarch64-linux/metadata.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "rotary",
3
+ "id": "_rotary_cuda_fe2bb66",
4
+ "version": 2,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "BSD-3-Clause",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "cuda",
11
+ "archs": [
12
+ "10.0",
13
+ "10.3",
14
+ "11.0",
15
+ "12.0",
16
+ "12.1+PTX",
17
+ "7.5",
18
+ "8.0",
19
+ "8.6",
20
+ "8.7",
21
+ "8.9",
22
+ "9.0"
23
+ ]
24
+ },
25
+ "digest": {
26
+ "algorithm": "sha256",
27
+ "files": {
28
+ "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=",
29
+ "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=",
30
+ "_rotary_cuda_fe2bb66.abi3.so": "ierqcVVsEGoXijVZmH+90RNyFJ6hRdlHT4THTO3WDcU=",
31
+ "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=",
32
+ "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM="
33
+ }
34
+ },
35
+ "provenance": {
36
+ "kernel-builder": {
37
+ "version": "0.18.0-dev0",
38
+ "commit": "d054906a13710b811b96697b4635f03020842733",
39
+ "dirty": false
40
+ },
41
+ "kernel": {
42
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
43
+ "dirty": false
44
+ }
45
+ }
46
+ }
build/torch211-cu130-aarch64-linux/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHLTCCBrOgAwIBAgIUVTb/T7wdHCLUj/HCFgzNDi62/kkwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDM1WhcNMjYxMDE5MTQ1MDM1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbQa9Bd4TuTbi2jn/wQ09l3LVxpkBsU1ttHFMY1SIsh9b6PLMg5Y+U2vBNOdl+3RRMdVPUpzq35HKwGi6B3B5f6OCBdIwggXOMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJtyfwAABAMASDBGAiEA3DcrLyjSMVlVrmwmuCjDFMOcBoVKobR94i11ODxuJgACIQD48LLC+8pneGNrdqfgATMjkqeL/GLCzUXFbqZdpbHoVTAKBggqhkjOPQQDAwNoADBlAjAMpQUPjT/xlr4HGiABMXIvkC+GMm/+8jKkGr1JTciPS06sRb/JJDMaQpCQE+fqQcYCMQCwbratD9jlk0JQ544Dz9xcM0xqqiJjeOqaWQGTH3pKax2Sw23BcpxeYSvWIb8FlIo="},"tlogEntries":[{"logIndex":"3322191920","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420836","inclusionPromise":{"signedEntryTimestamp":"MEUCIQCMhMyOzW6cSjwmqHgaiI0s1gn/RwiF/VFVTrnAC9A59wIgGP/8o2Y6cYbYhDPkY2tpHCV8CGq/9Yci7qREvbhWmbs="},"inclusionProof":{"logIndex":"3200287658","rootHash":"nLdAtMfaZ7FbvN8cAk9zh4gEdfPydkgSP+5nMHVUQx8=","treeSize":"3200288079","hashes":["ZqwHABSc75irYHfrX508cG1be0pQrnWFA2HMkVy1188=","GjGT1+IneFeSRT5ajqj7sQY1iCabRnKsHaNr3dvQELA=","OAC6AKlIVRxxqkBrojcmkVgqMI1VSxawTxjAe3+dPmg=","BQL1ypAMFfJGFLUVmSllO6h/m6upqa+JBISRi62wf4A=","bk8y/Cdv6FCIJd8fLlNsNJhz2J1xFXFzj/GRrhz5Ixk=","sEOF+5yk8/pN1EkiwMeEN4uCHBRMBtDwi1CLpg1ZE6M=","G/ATVhTY2g/hrKscLqKY1ylGwCVa1EUrI3nzYi1lluQ=","atNM69wWYtji5g3ykbd6Su+4oO8JH5yQPmQKQnanV1U=","M3hrCufH/GD1I0chaWbS1s8kLKLigyvpYUQzwAbnO8s=","ncynaUAQ0vZ2yAzJK6rE85hPqPUiBH/fUHtD1iEBu8M=","aL9pxJ5qfHCckFeHek+3F4UyKb0iYr75XCNydgX3K2M=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200288079\nnLdAtMfaZ7FbvN8cAk9zh4gEdfPydkgSP+5nMHVUQx8=\n\n— rekor.sigstore.dev wNI9ajBFAiEApyUEEnvxonUHY3519ft4s2JOEoEh5/qyLt8zXoowPZUCIAX6x1szhhDr9kN9wVcGhqmjolwLCQ4FUL8vh2pTk5JU\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI2MGM4NzMxYjFmMWE1NDBiMjRhNjkzOWM4MzgwZDU0NWEwZGFhMDIxNjMxMzdiY2UyOTdjYmIxYWUzOWUyNTMyIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUM0dVRNZnBNNys3enduQ1BwRWJ3VkRrektlSEVBekpJaVpuTmZ5U0tycnpRSWdOK2xCZ3ZWV0RlZDlYa2xjd0IzZ2h6eWNqSjBqZXJYdEhvdmxjZEtzM2NjPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1WRU5EUW5KUFowRjNTVUpCWjBsVlZsUmlMMVEzZDJSSVEweFZhaTlJUTBabmVrNUVhVFl5TDJ0cmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJOTVZkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkUweFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZpVVdFNVFtUTBWSFZVWW1reWFtNHZkMUV3T1d3elRGWjRjR3RDYzFVeGRIUklSazBLV1RGVFNYTm9PV0kyVUV4Tlp6VlpLMVV5ZGtKT1QyUnNLek5TVWsxa1ZsQlZjSHB4TXpWSVMzZEhhVFpDTTBJMVpqWlBRMEprU1hkbloxaFBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTUNrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NEQkZaWGRDTlVGSVkwRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMGVXWjNRVUZDUVUxQlUwUkNSMEZwUlVFelJHTnlUSGxxVTAxV2JGWnliWGR0ZFVOcVJFWk5UMk5DYjFaTGIySlNPUW8wYVRFeFQwUjRkVXBuUVVOSlVVUTBPRXhNUXlzNGNHNWxSMDV5WkhGbVowRlVUV3ByY1dWTUwwZE1RM3BWV0VaaWNWcGtjR0pJYjFaVVFVdENaMmR4Q21ocmFrOVFVVkZFUVhkT2IwRkVRbXhCYWtGTmNGRlZVR3BVTDNoc2NqUklSMmxCUWsxWVNYWnJReXRIVFcwdkt6aHFTMnRIY2pGS1ZHTnBVRk13Tm5NS1VtSXZTa3BFVFdGUmNFTlJSU3RtY1ZGaldVTk5VVU4zWW5KaGRFUTVhbXhyTUVwUk5UUTBSSG81ZUdOTk1IaHhjV2xLYW1WUGNXRlhVVWRVU0ROd1N3cGhlREpUZHpJelFtTndlR1ZaVTNaWFNXSTRSbXhKYnowS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgZludu6/lY4xnMLYYfVDok0j9i5FD+IH5FZQO+1XWu1ECFQD45C5VB/YcK13Ej2qn+6+aTceAKRgPMjAyNjEwMTkxNDQwMzZaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAxOTE0NDAzNlowLwYJKoZIhvcNAQkEMSIEIEmC6AIgGbbnc1Ol7axuer7SQ8zZDc3vwQFF71oo4YwCMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQCGhunHUcIabTCQrbcHEzil3CwJD7LAntAyFwQYGn1OEUhxiQDtSObQprDhboyA7hICMQCtB0u5B6ZSTHYMOSV/8p1QlfvklJkPjy9fPO5+bMU2I8wvB80WJavLqCfnlwO9B/k="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"YMhzGx8aVAskppOcg4DVRaDaoCFjE3vOKXy7GuOeJTI="},"signature":"MEUCIQC4uTMfpM7+7zwnCPpEbwVDkzKeHEAzJIiZnNfySKrrzQIgN+lBgvVWDed9XklcwB3ghzycjJ0jerXtHovlcdKs3cc="}}
build/torch211-cu130-aarch64-linux/symbols.json ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_rotary_cuda_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "apply_rotary",
7
+ "qualname": "apply_rotary",
8
+ "module": "_rotary_cuda_fe2bb66",
9
+ "kind": "function",
10
+ "doc": null,
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "x1",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "x2",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "torch.Tensor"
24
+ },
25
+ {
26
+ "name": "cos",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": null,
29
+ "annotation": "torch.Tensor"
30
+ },
31
+ {
32
+ "name": "sin",
33
+ "kind": "POSITIONAL_OR_KEYWORD",
34
+ "default": null,
35
+ "annotation": "torch.Tensor"
36
+ },
37
+ {
38
+ "name": "out1",
39
+ "kind": "POSITIONAL_OR_KEYWORD",
40
+ "default": null,
41
+ "annotation": "torch.Tensor"
42
+ },
43
+ {
44
+ "name": "out2",
45
+ "kind": "POSITIONAL_OR_KEYWORD",
46
+ "default": null,
47
+ "annotation": "torch.Tensor"
48
+ },
49
+ {
50
+ "name": "conj",
51
+ "kind": "POSITIONAL_OR_KEYWORD",
52
+ "default": null,
53
+ "annotation": "bool"
54
+ }
55
+ ],
56
+ "return_annotation": "None"
57
+ }
58
+ },
59
+ {
60
+ "name": "apply_rotary_transformers",
61
+ "qualname": "apply_rotary_transformers",
62
+ "module": "_rotary_cuda_fe2bb66",
63
+ "kind": "function",
64
+ "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature",
65
+ "signature": {
66
+ "parameters": [
67
+ {
68
+ "name": "q",
69
+ "kind": "POSITIONAL_OR_KEYWORD",
70
+ "default": null,
71
+ "annotation": "torch.Tensor"
72
+ },
73
+ {
74
+ "name": "k",
75
+ "kind": "POSITIONAL_OR_KEYWORD",
76
+ "default": null,
77
+ "annotation": "torch.Tensor"
78
+ },
79
+ {
80
+ "name": "cos",
81
+ "kind": "POSITIONAL_OR_KEYWORD",
82
+ "default": null,
83
+ "annotation": "torch.Tensor"
84
+ },
85
+ {
86
+ "name": "sin",
87
+ "kind": "POSITIONAL_OR_KEYWORD",
88
+ "default": null,
89
+ "annotation": "torch.Tensor"
90
+ },
91
+ {
92
+ "name": "unsqueeze_dim",
93
+ "kind": "POSITIONAL_OR_KEYWORD",
94
+ "default": "1",
95
+ "annotation": "int"
96
+ }
97
+ ],
98
+ "return_annotation": "tuple[torch.Tensor, torch.Tensor]"
99
+ }
100
+ }
101
+ ],
102
+ "layers": []
103
+ }
build/torch212-cu126-aarch64-linux/__init__.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+
3
+ from . import layers
4
+ from ._ops import ops
5
+
6
+
7
+ def apply_rotary(
8
+ x1: torch.Tensor,
9
+ x2: torch.Tensor,
10
+ cos: torch.Tensor,
11
+ sin: torch.Tensor,
12
+ out1: torch.Tensor,
13
+ out2: torch.Tensor,
14
+ conj: bool,
15
+ ) -> None:
16
+ ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj)
17
+
18
+
19
+ def apply_rotary_transformers(
20
+ q: torch.Tensor,
21
+ k: torch.Tensor,
22
+ cos: torch.Tensor,
23
+ sin: torch.Tensor,
24
+ unsqueeze_dim: int = 1,
25
+ ) -> tuple[torch.Tensor, torch.Tensor]:
26
+ """
27
+ Rotary kernel implementation wrapper
28
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
29
+ """
30
+ cos = cos.unsqueeze(unsqueeze_dim)
31
+ sin = sin.unsqueeze(unsqueeze_dim)
32
+
33
+ q_rotated = q.clone()
34
+ k_rotated = k.clone()
35
+
36
+ # Get half dimension for rotation
37
+ half_dim = q.shape[-1] // 2
38
+ q1 = q_rotated[..., :half_dim]
39
+ q2 = q_rotated[..., half_dim:]
40
+ k1 = k_rotated[..., :half_dim]
41
+ k2 = k_rotated[..., half_dim:]
42
+ if cos.shape[-1] != half_dim:
43
+ # Trim cos/sin to match half_dim
44
+ cos = cos[..., :half_dim]
45
+ sin = sin[..., :half_dim]
46
+
47
+ apply_rotary(q1, q2, cos, sin, q1, q2, False)
48
+ apply_rotary(k1, k2, cos, sin, k1, k2, False)
49
+ return q_rotated, k_rotated
50
+
51
+
52
+ # Add torch compile support for functions
53
+ apply_rotary_transformers.can_torch_compile = True
54
+
55
+
56
+ # Keeping `apply_rotary` and `apply_rotary_transformers` for BC
57
+ __all__ = ["apply_rotary", "apply_rotary_transformers", "layers"]
build/torch212-cu126-aarch64-linux/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _rotary_cuda_fe2bb66
3
+ ops = torch.ops._rotary_cuda_fe2bb66
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_rotary_cuda_fe2bb66::{op_name}"
build/torch212-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e004ec2d7ed554f0e1968df2ce3f50850190874b430d264c1f5f4d1b210bd122
3
+ size 6337680
build/torch212-cu126-aarch64-linux/layers.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+
4
+ from ._ops import ops
5
+
6
+
7
+ class apply_rotary_transformers(nn.Module):
8
+ can_torch_compile = True
9
+
10
+ def forward(
11
+ self,
12
+ q: torch.Tensor,
13
+ k: torch.Tensor,
14
+ cos: torch.Tensor,
15
+ sin: torch.Tensor,
16
+ unsqueeze_dim: int = 1,
17
+ ) -> tuple[torch.Tensor, torch.Tensor]:
18
+ """
19
+ Rotary kernel implementation wrapper
20
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
21
+ """
22
+ cos = cos.unsqueeze(unsqueeze_dim)
23
+ sin = sin.unsqueeze(unsqueeze_dim)
24
+
25
+ q_rotated = q.clone()
26
+ k_rotated = k.clone()
27
+
28
+ # Get half dimension for rotation
29
+ half_dim = q.shape[-1] // 2
30
+ q1 = q_rotated[..., :half_dim]
31
+ q2 = q_rotated[..., half_dim:]
32
+ k1 = k_rotated[..., :half_dim]
33
+ k2 = k_rotated[..., half_dim:]
34
+ if cos.shape[-1] != half_dim:
35
+ # Trim cos/sin to match half_dim
36
+ cos = cos[..., :half_dim]
37
+ sin = sin[..., :half_dim]
38
+
39
+ ops.apply_rotary(q1, q2, cos, sin, q1, q2, False)
40
+ ops.apply_rotary(k1, k2, cos, sin, k1, k2, False)
41
+ return q_rotated, k_rotated
build/torch212-cu126-aarch64-linux/metadata.json ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "rotary",
3
+ "id": "_rotary_cuda_fe2bb66",
4
+ "version": 2,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "BSD-3-Clause",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "cuda",
11
+ "archs": [
12
+ "7.0",
13
+ "7.2",
14
+ "7.5",
15
+ "8.0",
16
+ "8.6",
17
+ "8.7",
18
+ "8.9",
19
+ "9.0+PTX"
20
+ ]
21
+ },
22
+ "digest": {
23
+ "algorithm": "sha256",
24
+ "files": {
25
+ "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=",
26
+ "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=",
27
+ "_rotary_cuda_fe2bb66.abi3.so": "4ATsLX7VVPDhlo3yzj9QhQGQh0tDDSZMH19NGyEL0SI=",
28
+ "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=",
29
+ "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM="
30
+ }
31
+ },
32
+ "provenance": {
33
+ "kernel-builder": {
34
+ "version": "0.18.0-dev0",
35
+ "commit": "d054906a13710b811b96697b4635f03020842733",
36
+ "dirty": false
37
+ },
38
+ "kernel": {
39
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
40
+ "dirty": false
41
+ }
42
+ }
43
+ }
build/torch212-cu126-aarch64-linux/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHLDCCBrKgAwIBAgIUEPg9By6VRsP2/tH+NVGoVMuC0aowCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDM5WhcNMjYxMDE5MTQ1MDM5WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsh6kmEMl4iIm+bh1gyEdhBG1nSkD4Kj3h0JkpwfubixRhnZtw9OkNgj5E2rpvYUQ4zN6mQLIEwDk+EErrdK/KKOCBdEwggXNMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJuBNgAABAMARzBFAiAIZj2LTaFIlynRuwGN0dg+CIm7dwljDuJQ1b9IKSx+SgIhAJxVUooOkCP68IIQmKmcE0zVOyA/m+2y3Rv4NnWwcnGYMAoGCCqGSM49BAMDA2gAMGUCMQCOitPDiM0RHgGNO8eZNewE8gkOOyrymVAjs2l6rNwG3NFImCTt3kro8A5J5+/7Hr4CMFMGD9FYLZAg4wiCUtHScuD2FT+p5gk0An3eBWz9opo2DZUuy6JNnxixbKiweogngA=="},"tlogEntries":[{"logIndex":"3322192787","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420839","inclusionPromise":{"signedEntryTimestamp":"MEUCIQDM0rpGJM+vNQ8d6YT43N8Jp/AMbdwgvB7IFdh5SVDb9gIgeBc5+E0mZF6OYm4H3V2Eafgy0wNnztnoP09/YI/5yQc="},"inclusionProof":{"logIndex":"3200288525","rootHash":"3EfADIiJmGcFuEmdGU2c5SqMOpdtwLJNHUWTxA49Qf8=","treeSize":"3200288627","hashes":["b9gILPB03K/XM1qYQSyjNHy8UMCFDN/n/YElcmir9UU=","BTSIE0DsPDCzocNt9igFKAtkl1zx1AzzL5/6N3Ogv1g=","Dhpe6UNpJVcOw0jzRoM2BdtFDhDuX1EHVyJqumjhBWw=","IXkqalPs/8K7EAiod2UYU9nh4ans3mtbOvGnW0CG58I=","wwrLh2X4PuuBWy5YoaIoVhk96b2Vhlu6e/Sq768z6n8=","nGC+3xOmbwxa8+VGhmxfwkxUS1NRiBHNCbX3V/NVwbA=","FqkRY/P8IpzqpR+gi94/kD4NVTcaYdXF+mcYDZRNOjQ=","GIsm4MZvo3Whcvua1gfnHcg0qetzQKjDytyE6YsfGOw=","Z3oiCA2eFC0h5o2YcJdv3Cebiojw9K9ae8JsX6AKhlw=","HuvYDLFxEt/BvAcEK5B41aKw9JFKm0L67mb3V/6qEoI=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200288627\n3EfADIiJmGcFuEmdGU2c5SqMOpdtwLJNHUWTxA49Qf8=\n\n— rekor.sigstore.dev wNI9ajBEAiBSHvZDvbIUKV85Qsz/zZZNtweNeayHb2Uu+CynHZEgHwIgDseekL9dkESRTVctcmkb7D1U3pBmHTpfC9IdWk06TfY=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJhYzY2YTY2NTBmMjhkM2I0ODM4MDU4MzVkYWZmOGE4MDQ2Mzc1MWY4ZjcxNzI3MDE3YWE4MDc0NDI0NTQzMmEzIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUNqczJ3SndLMTMwMlV3cUJDNk9GTGdsZ05CTG1pQ1NzcFFBTHJzYmFCalZRSWdhLy9KQ1UrUFlOc1lEay9TOU90QTdSdnI1Y1VkdWEzQTdqVDBsMnB2N00wPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1SRU5EUW5KTFowRjNTVUpCWjBsVlJWQm5PVUo1TmxaU2MxQXlMM1JJSzA1V1IyOVdUWFZETUdGdmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJOTlZkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkUwMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ6YURacmJVVk5iRFJwU1cwclltZ3haM2xGWkdoQ1J6RnVVMnRFTkV0cU0yZ3dTbXNLY0hkbWRXSnBlRkpvYmxwMGR6bFBhMDVuYWpWRk1uSndkbGxWVVRSNlRqWnRVVXhKUlhkRWF5dEZSWEp5WkVzdlMwdFBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMVFrNW5RVUZDUVUxQlVucENSa0ZwUVVsYWFqSk1WR0ZHU1d4NWJsSjFkMGRPTUdSbkswTkpiVGRrZDJ4cVJIVktVUW94WWpsSlMxTjRLMU5uU1doQlNuaFdWVzl2VDJ0RFVEWTRTVWxSYlV0dFkwVXdlbFpQZVVFdmJTc3llVE5TZGpST2JsZDNZMjVIV1UxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKblFVMUhWVU5OVVVOUGFYUlFSR2xOTUZKSVowZE9UemhsV2s1bGQwVTRaMnRQVDNseWVXMVdRV3B6TW13MmNrNTNSek5PUmtrS2JVTlVkRE5yY204NFFUVktOU3N2TjBoeU5FTk5SazFIUkRsR1dVeGFRV2MwZDJsRFZYUklVMk4xUkRKR1ZDdHdOV2RyTUVGdU0yVkNWM281YjNCdk1ncEVXbFYxZVRaS1RtNTRhWGhpUzJsM1pXOW5ibWRCUFQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyDADAgEAMIICvwYJKoZIhvcNAQcCoIICsDCCAqwCAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQghAGD8JBgC3kSVmrKBM3q6DJSWdgyhNY12woVPe09JjACFBKHyHK86TWvG3c20wqdo4eTVbJqGA8yMDI2MTAxOTE0NDAzOVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdowggHWAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTQ0MDM5WjAvBgkqhkiG9w0BCQQxIgQg7MwEhAfjVKeNuI4j3BfP1rkm9hmm1J31Nrio44v89JQwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGYwZAIwVXXMqaVj7FpKhLA8VqZtmeM5loKAiKYTR8OV8/qTaOyG4LQvwxtifjMz6Qrs2oEWAjAqGwAf4TWnMLgJ2dee5R+ipMarnYV6LIdGprgg/joU3SYYsEZa71yNB0gX6+XaNxU="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"rGamZQ8o07SDgFg12v+KgEY3Ufj3FycBeqgHRCRUMqM="},"signature":"MEUCIQCjs2wJwK1302UwqBC6OFLglgNBLmiCSspQALrsbaBjVQIga//JCU+PYNsYDk/S9OtA7Rvr5cUdua3A7jT0l2pv7M0="}}
build/torch212-cu126-aarch64-linux/symbols.json ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_rotary_cuda_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "apply_rotary",
7
+ "qualname": "apply_rotary",
8
+ "module": "_rotary_cuda_fe2bb66",
9
+ "kind": "function",
10
+ "doc": null,
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "x1",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "x2",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "torch.Tensor"
24
+ },
25
+ {
26
+ "name": "cos",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": null,
29
+ "annotation": "torch.Tensor"
30
+ },
31
+ {
32
+ "name": "sin",
33
+ "kind": "POSITIONAL_OR_KEYWORD",
34
+ "default": null,
35
+ "annotation": "torch.Tensor"
36
+ },
37
+ {
38
+ "name": "out1",
39
+ "kind": "POSITIONAL_OR_KEYWORD",
40
+ "default": null,
41
+ "annotation": "torch.Tensor"
42
+ },
43
+ {
44
+ "name": "out2",
45
+ "kind": "POSITIONAL_OR_KEYWORD",
46
+ "default": null,
47
+ "annotation": "torch.Tensor"
48
+ },
49
+ {
50
+ "name": "conj",
51
+ "kind": "POSITIONAL_OR_KEYWORD",
52
+ "default": null,
53
+ "annotation": "bool"
54
+ }
55
+ ],
56
+ "return_annotation": "None"
57
+ }
58
+ },
59
+ {
60
+ "name": "apply_rotary_transformers",
61
+ "qualname": "apply_rotary_transformers",
62
+ "module": "_rotary_cuda_fe2bb66",
63
+ "kind": "function",
64
+ "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature",
65
+ "signature": {
66
+ "parameters": [
67
+ {
68
+ "name": "q",
69
+ "kind": "POSITIONAL_OR_KEYWORD",
70
+ "default": null,
71
+ "annotation": "torch.Tensor"
72
+ },
73
+ {
74
+ "name": "k",
75
+ "kind": "POSITIONAL_OR_KEYWORD",
76
+ "default": null,
77
+ "annotation": "torch.Tensor"
78
+ },
79
+ {
80
+ "name": "cos",
81
+ "kind": "POSITIONAL_OR_KEYWORD",
82
+ "default": null,
83
+ "annotation": "torch.Tensor"
84
+ },
85
+ {
86
+ "name": "sin",
87
+ "kind": "POSITIONAL_OR_KEYWORD",
88
+ "default": null,
89
+ "annotation": "torch.Tensor"
90
+ },
91
+ {
92
+ "name": "unsqueeze_dim",
93
+ "kind": "POSITIONAL_OR_KEYWORD",
94
+ "default": "1",
95
+ "annotation": "int"
96
+ }
97
+ ],
98
+ "return_annotation": "tuple[torch.Tensor, torch.Tensor]"
99
+ }
100
+ }
101
+ ],
102
+ "layers": []
103
+ }
build/torch212-cu130-aarch64-linux/__init__.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+
3
+ from . import layers
4
+ from ._ops import ops
5
+
6
+
7
+ def apply_rotary(
8
+ x1: torch.Tensor,
9
+ x2: torch.Tensor,
10
+ cos: torch.Tensor,
11
+ sin: torch.Tensor,
12
+ out1: torch.Tensor,
13
+ out2: torch.Tensor,
14
+ conj: bool,
15
+ ) -> None:
16
+ ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj)
17
+
18
+
19
+ def apply_rotary_transformers(
20
+ q: torch.Tensor,
21
+ k: torch.Tensor,
22
+ cos: torch.Tensor,
23
+ sin: torch.Tensor,
24
+ unsqueeze_dim: int = 1,
25
+ ) -> tuple[torch.Tensor, torch.Tensor]:
26
+ """
27
+ Rotary kernel implementation wrapper
28
+ Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature
29
+ """
30
+ cos = cos.unsqueeze(unsqueeze_dim)
31
+ sin = sin.unsqueeze(unsqueeze_dim)
32
+
33
+ q_rotated = q.clone()
34
+ k_rotated = k.clone()
35
+
36
+ # Get half dimension for rotation
37
+ half_dim = q.shape[-1] // 2
38
+ q1 = q_rotated[..., :half_dim]
39
+ q2 = q_rotated[..., half_dim:]
40
+ k1 = k_rotated[..., :half_dim]
41
+ k2 = k_rotated[..., half_dim:]
42
+ if cos.shape[-1] != half_dim:
43
+ # Trim cos/sin to match half_dim
44
+ cos = cos[..., :half_dim]
45
+ sin = sin[..., :half_dim]
46
+
47
+ apply_rotary(q1, q2, cos, sin, q1, q2, False)
48
+ apply_rotary(k1, k2, cos, sin, k1, k2, False)
49
+ return q_rotated, k_rotated
50
+
51
+
52
+ # Add torch compile support for functions
53
+ apply_rotary_transformers.can_torch_compile = True
54
+
55
+
56
+ # Keeping `apply_rotary` and `apply_rotary_transformers` for BC
57
+ __all__ = ["apply_rotary", "apply_rotary_transformers", "layers"]