diff --git a/build/torch210-cu126-aarch64-linux/__init__.py b/build/torch210-cu126-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch210-cu126-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch210-cu126-aarch64-linux/_ops.py b/build/torch210-cu126-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch210-cu126-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch210-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch210-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..ab0deffff43b516d4af47b49a0100f368f2fbc5e --- /dev/null +++ b/build/torch210-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6126ee8e7f7434e90d9f4011ef62630251f6ab8cc707a04ffcc0112226e6b7d +size 6337928 diff --git a/build/torch210-cu126-aarch64-linux/layers.py b/build/torch210-cu126-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch210-cu126-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch210-cu126-aarch64-linux/metadata.json b/build/torch210-cu126-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..b0a1201bb48a903d0ae590bcd2e0ab9d58b5897c --- /dev/null +++ b/build/torch210-cu126-aarch64-linux/metadata.json @@ -0,0 +1,43 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "7.0", + "7.2", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0+PTX" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "phJu6Of3Q06Q2fQBHvYmMCUfarjMcHoE/8wBEiJua30=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch210-cu126-aarch64-linux/metadata.json.sigstore b/build/torch210-cu126-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..5c00ff0c854d88dcf9281aaba47c79d62a29b793 --- /dev/null +++ b/build/torch210-cu126-aarch64-linux/metadata.json.sigstore @@ -0,0 +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="}} \ No newline at end of file diff --git a/build/torch210-cu126-aarch64-linux/symbols.json b/build/torch210-cu126-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch210-cu126-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch210-cu128-aarch64-linux/__init__.py b/build/torch210-cu128-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch210-cu128-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch210-cu128-aarch64-linux/_ops.py b/build/torch210-cu128-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch210-cu128-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch210-cu128-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch210-cu128-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..d602efad416e21ba6a444fef2d93e96cb83ab0f9 --- /dev/null +++ b/build/torch210-cu128-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40055e50c07700da6b9bf37330b1f465be0591256c2b5d6155dc7012cf2be10c +size 10008872 diff --git a/build/torch210-cu128-aarch64-linux/layers.py b/build/torch210-cu128-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch210-cu128-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch210-cu128-aarch64-linux/metadata.json b/build/torch210-cu128-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..4ad074f3c4659a16b1acbc849ed068e299f57ef6 --- /dev/null +++ b/build/torch210-cu128-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.1", + "12.0+PTX", + "7.0", + "7.2", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "QAVeUMB3ANprm/NzMLH0Zb4FkSVsK11hVdxwEs8r4Qw=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch210-cu128-aarch64-linux/metadata.json.sigstore b/build/torch210-cu128-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..b86557b3b11e59f095255cf57efec9f02d402501 --- /dev/null +++ b/build/torch210-cu128-aarch64-linux/metadata.json.sigstore @@ -0,0 +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="}} \ No newline at end of file diff --git a/build/torch210-cu128-aarch64-linux/symbols.json b/build/torch210-cu128-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch210-cu128-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch210-cu130-aarch64-linux/__init__.py b/build/torch210-cu130-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch210-cu130-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch210-cu130-aarch64-linux/_ops.py b/build/torch210-cu130-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch210-cu130-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch210-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch210-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..e38d156fdfb5b35a0cc2d29b7d5138aa25f92b52 --- /dev/null +++ b/build/torch210-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7ac482809196a8c1b0dab0a93d63c375a37b434b377be6bdae749e528be74b3 +size 10957128 diff --git a/build/torch210-cu130-aarch64-linux/layers.py b/build/torch210-cu130-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch210-cu130-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch210-cu130-aarch64-linux/metadata.json b/build/torch210-cu130-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..aad355ea76fa633cc69ccb1de66ca44178e94f03 --- /dev/null +++ b/build/torch210-cu130-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.3", + "11.0", + "12.0", + "12.1+PTX", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "x6xIKAkZaowbDasKk9Y8N1o3tDSzd75r2udJ5Si+dLM=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch210-cu130-aarch64-linux/metadata.json.sigstore b/build/torch210-cu130-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..d6a2cf1a0e4fb5f9f216f78832681f8043efe7ba --- /dev/null +++ b/build/torch210-cu130-aarch64-linux/metadata.json.sigstore @@ -0,0 +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=="}} \ No newline at end of file diff --git a/build/torch210-cu130-aarch64-linux/symbols.json b/build/torch210-cu130-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch210-cu130-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch211-cu126-aarch64-linux/__init__.py b/build/torch211-cu126-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch211-cu126-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch211-cu126-aarch64-linux/_ops.py b/build/torch211-cu126-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch211-cu126-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch211-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch211-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..238e6157a9a47e3df7afa0f38ae2634fea299e46 --- /dev/null +++ b/build/torch211-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e45897fe4458a0ece9bf6dcc10f8bc399f3ce79397c626d0c559fd6560370174 +size 6334272 diff --git a/build/torch211-cu126-aarch64-linux/layers.py b/build/torch211-cu126-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch211-cu126-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch211-cu126-aarch64-linux/metadata.json b/build/torch211-cu126-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..2b9617f57239ad7136a6a16f09f6c6d22e34cc6f --- /dev/null +++ b/build/torch211-cu126-aarch64-linux/metadata.json @@ -0,0 +1,43 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "7.0", + "7.2", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0+PTX" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "5FiX/kRYoOzpv23MEPi8OZ8855OXxibQxVn9ZWA3AXQ=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch211-cu126-aarch64-linux/metadata.json.sigstore b/build/torch211-cu126-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..48b7eb4cbab9d22fb1cac0eb5d41c30fa1084240 --- /dev/null +++ b/build/torch211-cu126-aarch64-linux/metadata.json.sigstore @@ -0,0 +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="}} \ No newline at end of file diff --git a/build/torch211-cu126-aarch64-linux/symbols.json b/build/torch211-cu126-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch211-cu126-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch211-cu128-aarch64-linux/__init__.py b/build/torch211-cu128-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch211-cu128-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch211-cu128-aarch64-linux/_ops.py b/build/torch211-cu128-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch211-cu128-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch211-cu128-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch211-cu128-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..be8a5f63f9c71a9f0bd961967f5dcf2fea2a0625 --- /dev/null +++ b/build/torch211-cu128-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e38b00686d0ad16a8b5ab4420f3279c16bcaa274306c14250c6f243c55e7a64 +size 10005216 diff --git a/build/torch211-cu128-aarch64-linux/layers.py b/build/torch211-cu128-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch211-cu128-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch211-cu128-aarch64-linux/metadata.json b/build/torch211-cu128-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..21d8eb64511d957d2d1eb1b7d637606f4882c881 --- /dev/null +++ b/build/torch211-cu128-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.1", + "12.0+PTX", + "7.0", + "7.2", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "XjiwBobQrRaotatEIPMnnBa8qidDBsFCUMbyQ8VeemQ=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch211-cu128-aarch64-linux/metadata.json.sigstore b/build/torch211-cu128-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..6cef048973fc41b9700394221f9f1a6aab0ef6b7 --- /dev/null +++ b/build/torch211-cu128-aarch64-linux/metadata.json.sigstore @@ -0,0 +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="}} \ No newline at end of file diff --git a/build/torch211-cu128-aarch64-linux/symbols.json b/build/torch211-cu128-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch211-cu128-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch211-cu130-aarch64-linux/__init__.py b/build/torch211-cu130-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch211-cu130-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch211-cu130-aarch64-linux/_ops.py b/build/torch211-cu130-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch211-cu130-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch211-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch211-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..55e05d5f8bda3eedeb83c46b2eb36ef9e85d58d4 --- /dev/null +++ b/build/torch211-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89eaea71556c106a178a3559987fbdd11372149ea145d9474f84c74cedd60dc5 +size 10953480 diff --git a/build/torch211-cu130-aarch64-linux/layers.py b/build/torch211-cu130-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch211-cu130-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch211-cu130-aarch64-linux/metadata.json b/build/torch211-cu130-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..9c0b5a93836357cf83b4804f1a74d1e41891ff93 --- /dev/null +++ b/build/torch211-cu130-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.3", + "11.0", + "12.0", + "12.1+PTX", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "ierqcVVsEGoXijVZmH+90RNyFJ6hRdlHT4THTO3WDcU=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch211-cu130-aarch64-linux/metadata.json.sigstore b/build/torch211-cu130-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..749824af95bc77fbf1c23d327e032f99d62a12dd --- /dev/null +++ b/build/torch211-cu130-aarch64-linux/metadata.json.sigstore @@ -0,0 +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="}} \ No newline at end of file diff --git a/build/torch211-cu130-aarch64-linux/symbols.json b/build/torch211-cu130-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch211-cu130-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch212-cu126-aarch64-linux/__init__.py b/build/torch212-cu126-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch212-cu126-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch212-cu126-aarch64-linux/_ops.py b/build/torch212-cu126-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch212-cu126-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch212-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch212-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..20568fcebf938115c91a4a1814da3cbe271d9dc3 --- /dev/null +++ b/build/torch212-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e004ec2d7ed554f0e1968df2ce3f50850190874b430d264c1f5f4d1b210bd122 +size 6337680 diff --git a/build/torch212-cu126-aarch64-linux/layers.py b/build/torch212-cu126-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch212-cu126-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch212-cu126-aarch64-linux/metadata.json b/build/torch212-cu126-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..dc4ddb03d481a5756017da327122fee3e1872a5d --- /dev/null +++ b/build/torch212-cu126-aarch64-linux/metadata.json @@ -0,0 +1,43 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "7.0", + "7.2", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0+PTX" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "4ATsLX7VVPDhlo3yzj9QhQGQh0tDDSZMH19NGyEL0SI=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch212-cu126-aarch64-linux/metadata.json.sigstore b/build/torch212-cu126-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..32bddc90ba5830e1a6601d2ba27b8c04b525cce7 --- /dev/null +++ b/build/torch212-cu126-aarch64-linux/metadata.json.sigstore @@ -0,0 +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="}} \ No newline at end of file diff --git a/build/torch212-cu126-aarch64-linux/symbols.json b/build/torch212-cu126-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch212-cu126-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch212-cu130-aarch64-linux/__init__.py b/build/torch212-cu130-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch212-cu130-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch212-cu130-aarch64-linux/_ops.py b/build/torch212-cu130-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch212-cu130-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch212-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch212-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..9153dda95f0556969b961ae5747edb36266b75f8 --- /dev/null +++ b/build/torch212-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d11f16530eb407cec9e558c47733cf3411de92934b83a89364d0fcce8b0b61a8 +size 10956776 diff --git a/build/torch212-cu130-aarch64-linux/layers.py b/build/torch212-cu130-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch212-cu130-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch212-cu130-aarch64-linux/metadata.json b/build/torch212-cu130-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..f293949223bdb7237ef9ff5216d1ec61f4e4be23 --- /dev/null +++ b/build/torch212-cu130-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.3", + "11.0", + "12.0", + "12.1+PTX", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "0R8WUw60B87J5VjEdzPPNBHekpNLg6iTZND8zosLYag=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch212-cu130-aarch64-linux/metadata.json.sigstore b/build/torch212-cu130-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..fe8138523f7a0b5a9c636079464c2a467fb910e3 --- /dev/null +++ b/build/torch212-cu130-aarch64-linux/metadata.json.sigstore @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHKjCCBrGgAwIBAgIUYu4vmykKqbdo3ImJvHtVlMVeXnAwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDQwWhcNMjYxMDE5MTQ1MDQwWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyUAPTcGSW4oM8acstgUbUxsjG1JbZRzKSB5R9fGt27JcLUJrKmXVfFOOhr5PZtVmM0JFCe6YLk06H48lSZykOKOCBdAwggXMMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGJBgorBgEEAdZ5AgQCBHsEeQB3AHUA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJuFhwAABAMARjBEAiBDmXETx3J3nS5QachOqVXGYqj9UBQadac8VyX4Jwu3ggIgYOs2QyrRlE7llpfvfKieZi+qBA6FwK+X7ge6cKmexKAwCgYIKoZIzj0EAwMDZwAwZAIwCf1RP+n1hwmvLtSxPn/LCoJIgWklsG8ccPhDfnbsY0rOAumJAhZN9vcaBTfGpJl+AjATW/IIZ34o4aT6o1XrbbdxKHqwlB22+PmPDCKyH09Lu2YICHycmtmJbm+vtp4wD8M="},"tlogEntries":[{"logIndex":"3322193136","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420841","inclusionPromise":{"signedEntryTimestamp":"MEYCIQDmcxGYwv9hslmMcEm7bL9RHEtSzcBXtaiARsYhCddRcAIhALIZXvbXAt3YMWwWubFXTZ8Mk3uGuneTtPtgyl86Gia5"},"inclusionProof":{"logIndex":"3200288874","rootHash":"SaNSK6O6wcFzSmgeQGCmzYZCqKoFwY+DzVzawCS++yw=","treeSize":"3200288970","hashes":["UFwyidojNcH2L5QescaEt1hFqYS1L1moOcQxtHf4/80=","5XV+I7qt5UL7TZpPst+AoyzzhPrTFUMSrRvY9nBpaDM=","Rb+X/NEn0Y1gkScbiTFAT9lLg3ZvPLRYUc3HC2yz3Uo=","nzq9DETaQbKWk3deGZGehY8grVqtldzvQ7rNnBpGgto=","mdEybEOfkWgO3VEVFRTGensleIJ/0Y2MySTEkH8gJAM=","vx0bs6YM7G+edR5CFMdZmi5Pw9+wGjSr5As5Y27wZ7U=","AALMcPF7V1RGeXo7yuY4N44QOXR/ZkzZJia3/RvaMJc=","iKHJS49RJRQ07/oiWV0rikDKo24hLDhg0RvQO5NnVBM=","9X5bYcTKETMQHYQVPTj4kv4pL4CmJ/K4E4jOFPgGQtw=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200288970\nSaNSK6O6wcFzSmgeQGCmzYZCqKoFwY+DzVzawCS++yw=\n\n— rekor.sigstore.dev wNI9ajBFAiAbEyPDO7yNY6IBFvd7LcEaxIOYuIAUonziQgUXJ2O/AgIhAPsvoUzdhm3jJT52mnDrx6leh32RXbESf8GYwVJIK4+O\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxNTcwNzdhYmRkZDhhYjE2ODljMGI3NDliZTI0NTY0Mzk4ZDAzMzE3ODdmZTczYjM1MGQ5ZGYwYTBlY2FlYjU3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJRmQxN0UwaWNLSy9JaXBXOTVzamx1dUFlNklTei9Bbm9ZZ0VZQTl4RiszckFpRUFnUllQa0F3VVlOMWZlVkw3RzdYK2dFdFRrOHJvYVN2dmNsdWd6bUY5aFFzPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExha05EUW5KSFowRjNTVUpCWjBsVldYVTBkbTE1YTB0eFltUnZNMGx0U25aSWRGWnNUVlpsV0c1QmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJSZDFkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkZGM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVY1VlVGUVZHTkhVMWMwYjAwNFlXTnpkR2RWWWxWNGMycEhNVXBpV2xKNlMxTkNOVklLT1daSGRESTNTbU5NVlVweVMyMVlWbVpHVDA5b2NqVlFXblJXYlUwd1NrWkRaVFpaVEdzd05rZzBPR3hUV25sclQwdFBRMEprUVhkbloxaE5UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkS0NrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NITkZaVkZDTTBGSVZVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMVJtaDNRVUZDUVUxQlVtcENSVUZwUWtSdFdFVlVlRE5LTTI1VE5WRmhZMmhQY1ZaWVIxbHhhamxWUWxGaFpHRmpPQXBXZVZnMFNuZDFNMmRuU1dkWlQzTXlVWGx5VW14Rk4yeHNjR1oyWmt0cFpWcHBLM0ZDUVRaR2Qwc3JXRGRuWlRaalMyMWxlRXRCZDBObldVbExiMXBKQ25wcU1FVkJkMDFFV25kQmQxcEJTWGREWmpGU1VDdHVNV2gzYlhaTWRGTjRVRzR2VEVOdlNrbG5WMnRzYzBjNFkyTlFhRVJtYm1KeldUQnlUMEYxYlVvS1FXaGFUamwyWTJGQ1ZHWkhjRXBzSzBGcVFWUlhMMGxKV2pNMGJ6UmhWRFp2TVZoeVltSmtlRXRJY1hkc1FqSXlLMUJ0VUVSRFMzbElNRGxNZFRKWlNRcERTSGxqYlhSdFNtSnRLM1owY0RSM1JEaE5QUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgxLNQSjxH18v/DDilqcavDZRB0wJUF7KtM8Os3GjYaaQCFQCsyqA1Ci+O1PZi7YR9EvGJ06LFGhgPMjAyNjEwMTkxNDQwNDFaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAxOTE0NDA0MVowLwYJKoZIhvcNAQkEMSIEINEuu3l2s8kF3rDPv3h4Yo3O4mCTjt8EJS1Jlozz0EVAMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMA/L2WThU4Ph4gu7dLY6TRmcmb6nkrKxFjrGK9FecATDibvKXABsbjSr31C700eP4AIxAKHekwgaW6WumHV3oetqNCETjUXXMzRm0jn9TWx/snuv9Im/EC1Isw/3Pbx0H1xEQQ=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"FXB3q93YqxaJwLdJviRWQ5jQMxeH/nOzUNnfCg7K61c="},"signature":"MEUCIFd17E0icKK/IipW95sjluuAe6ISz/AnoYgEYA9xF+3rAiEAgRYPkAwUYN1feVL7G7X+gEtTk8roaSvvclugzmF9hQs="}} \ No newline at end of file diff --git a/build/torch212-cu130-aarch64-linux/symbols.json b/build/torch212-cu130-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch212-cu130-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch212-cu132-aarch64-linux/__init__.py b/build/torch212-cu132-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch212-cu132-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch212-cu132-aarch64-linux/_ops.py b/build/torch212-cu132-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch212-cu132-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch212-cu132-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch212-cu132-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..9708e7d7f47eaa04828c920b5226a81fd0053319 --- /dev/null +++ b/build/torch212-cu132-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6968ef4f8f5336909f0c685cbdacdd022a923ba05a907d4c58072f59580527d +size 11223552 diff --git a/build/torch212-cu132-aarch64-linux/layers.py b/build/torch212-cu132-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch212-cu132-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch212-cu132-aarch64-linux/metadata.json b/build/torch212-cu132-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..4853c8e9d3ecec53aa324efaa3fc5cb5bbfc5bcf --- /dev/null +++ b/build/torch212-cu132-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.3", + "11.0", + "12.0", + "12.1+PTX", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "tpaO9Pj1M2kJ8MaFy9rN0CKpI7oFqQfUxYBy9ZWAUn0=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch212-cu132-aarch64-linux/metadata.json.sigstore b/build/torch212-cu132-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..0dd9f48d9dfc6628dcd14481ef9f9d6cc5d6bf94 --- /dev/null +++ b/build/torch212-cu132-aarch64-linux/metadata.json.sigstore @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHKzCCBrKgAwIBAgIUXbEuPhqeJ+V2a3gw8dpgT8jcCkwwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDQyWhcNMjYxMDE5MTQ1MDQyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoFI0sDlRp5KlKDvZRts8oiRbdymMaQtJxxSp47rjJ3QMlynOUDyrRh5HLxQFsQ/ECq1yeeBmjWP3DPx+uKo6pqOCBdEwggXNMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJuMcAAABAMARzBFAiAttzRKWEY4711tICiruK82qt/8nv5qaUOTKQZBmzgeZQIhAN2mvdx/PC3n98BNOe9GL2mSx9HZYBVx+BGWqIarzmWzMAoGCCqGSM49BAMDA2cAMGQCMCT/sThkbuMCPKpYByClHR8fDR91nbl+sEE8XetCHKgMxsL95jx/36V2akaYUQH7zgIwHtS+lgHdVJnkwYWbUZMI7ceOjCwJJQA9+7QFnfvrFbnpbIREpWDXRfy/s9PDaF6I"},"tlogEntries":[{"logIndex":"3322193592","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420843","inclusionPromise":{"signedEntryTimestamp":"MEUCIQDQfVOGDsESZksLTBDoaOf1+jSYX0kayg4ht1+2dFNZYAIgO09tF+HLYbXJMmOyIWWdggpkCjO+xEriKRSrL6jtoQk="},"inclusionProof":{"logIndex":"3200289330","rootHash":"sFCy7nxh7Wr0nmNhsQcoOIAnUvWgWTn+PpduSWswr9k=","treeSize":"3200289547","hashes":["kNhJ059nHgnGtt8geHFOy6YeBfxe53EJFEiPDKrryQc=","wp+ncCqaviblrzdgJL8s6WgLTJuxOLSfXIO/kznAgrE=","wCa4FxLMppGfVGnHwb0ulNwPcyl0SYPAzK7R29tCmAc=","6U7dn/vJpGBvkbUvmR9h+KO0B0TutOtbrYTQB5nC3FU=","CSGwWtaGyuP/Me3csQidnjIgCI39oBAYq6QNROGTvrA=","3X6gy3O+gC/WT4pRIPHvloI59yJ8/IGb4HlGKulGK8o=","Xsd9vQR5mD/SUnjHSksNlPeROSLvY6y1S8q6xxicwxo=","ONadDm8mBXxSPuu+9t1icxw1jdD0V28SMlXGMBbaCC4=","QT9MenqMlyzCAt7f7ZRQcchhr2hh0DOc44fUOf45JLM=","rKuBzlEgt1CiiLgrJQJJfUqcKbzuoQ12IFPefKFjq6w=","9X5bYcTKETMQHYQVPTj4kv4pL4CmJ/K4E4jOFPgGQtw=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200289547\nsFCy7nxh7Wr0nmNhsQcoOIAnUvWgWTn+PpduSWswr9k=\n\n— rekor.sigstore.dev wNI9ajBFAiAVL6G6Q2h28T6EsWbGVR4n0UCIjoejgO9SG5CmmO8OKgIhALecdRcbM6I+U8elY4UJ9eqrqfqQkzdG2tOi6gDtjBIA\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIzMmM5MWMzYWFlNmJmMjdlNDg2MWI2MDEwYmIwODYwMDcwZjliYzliNDFlNTI0MzYyOGFmY2YxMzhmMWY1MDBiIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQXJKbko0elg4eEJ0dmRNUEFPcXZnMGJGcjJzVkN4WWxyTk0zRnB6Qmw4UkFpQjJpa09FcXBLYTNkeGdJOUlTYVpyMVlYclNic1R0SURQVk91TzJiOTBOY1E9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KTFowRjNTVUpCWjBsVldHSkZkVkJvY1dWS0sxWXlZVE5uZHpoa2NHZFVPR3BqUTJ0M2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJSZVZkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkZGNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ2Umtrd2MwUnNVbkExUzJ4TFJIWmFVblJ6T0c5cFVtSmtlVzFOWVZGMFNuaDRVM0FLTkRkeWFrb3pVVTFzZVc1UFZVUjVjbEpvTlVoTWVGRkdjMUV2UlVOeE1YbGxaVUp0YWxkUU0wUlFlQ3QxUzI4MmNIRlBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMVRXTkJRVUZDUVUxQlVucENSa0ZwUVhSMGVsSkxWMFZaTkRjeE1YUkpRMmx5ZFVzNE1uRjBMemh1ZGpWeFlWVlBWQXBMVVZwQ2JYcG5aVnBSU1doQlRqSnRkbVI0TDFCRE0yNDVPRUpPVDJVNVIwd3liVk40T1VoYVdVSldlQ3RDUjFkeFNXRnllbTFYZWsxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKalFVMUhVVU5OUTFRdmMxUm9hMkoxVFVOUVMzQlpRbmxEYkVoU09HWkVVamt4Ym1Kc0szTkZSVGhZWlhSRFNFdG5UWGh6VERrS05XcDRMek0yVmpKaGEyRlpWVkZJTjNwblNYZElkRk1yYkdkSVpGWktibXQzV1ZkaVZWcE5TVGRqWlU5cVEzZEtTbEZCT1NzM1VVWnVablp5Um1KdWNBcGlTVkpGY0ZkRVdGSm1lUzl6T1ZCRVlVWTJTUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgm0aAKA6mHJt3mgtsR8Ac0y/laX07ymXJ2KdWM2J46YwCFHfV3gDPLgTrWefBtPv1UD39ULxBGA8yMDI2MTAxOTE0NDA0MlowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTQ0MDQyWjAvBgkqhkiG9w0BCQQxIgQgL7aswnDWiju6umQPS2iMtHWGiNwS6vXyCsKyfaOcdUowgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIxALXOo8KYQEhB31d9uL/2GfDIlZMTa5OKStOrdIa4/1j4G/EAUqiS9BgyqED5A+Jm1AIwaF6iP7Q9xM0HsC5xWO2ReebvMJmXduWd3stRpFtggJJU8bOq6v7jP7cRXDSx40vK"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"MskcOq5r8n5IYbYBC7CGAHD5vJtB5SQ2KK/PE48fUAs="},"signature":"MEQCIArJnJ4zX8xBtvdMPAOqvg0bFr2sVCxYlrNM3FpzBl8RAiB2ikOEqpKa3dxgI9ISaZr1YXrSbsTtIDPVOuO2b90NcQ=="}} \ No newline at end of file diff --git a/build/torch212-cu132-aarch64-linux/symbols.json b/build/torch212-cu132-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch212-cu132-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch213-cu126-aarch64-linux/__init__.py b/build/torch213-cu126-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch213-cu126-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch213-cu126-aarch64-linux/_ops.py b/build/torch213-cu126-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch213-cu126-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch213-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch213-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..915d8be643f6aef897fb134426e63daf04491a66 --- /dev/null +++ b/build/torch213-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a30be7e14efb9270f7591cdb3be7cc2bd7ef1a65fc7216d0d06bfcfcfefc4a4 +size 6337568 diff --git a/build/torch213-cu126-aarch64-linux/layers.py b/build/torch213-cu126-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch213-cu126-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch213-cu126-aarch64-linux/metadata.json b/build/torch213-cu126-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..14b27c2ad4f54f327c570e1e0bbbb7dffbbd23e0 --- /dev/null +++ b/build/torch213-cu126-aarch64-linux/metadata.json @@ -0,0 +1,43 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "7.0", + "7.2", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0+PTX" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "KjC+fhTvuScPdZHNs758wr1+8aZfxyFtDQa/z8/vxKQ=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch213-cu126-aarch64-linux/metadata.json.sigstore b/build/torch213-cu126-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..087cff7fa47da606c95d382b48e3f566cee83aef --- /dev/null +++ b/build/torch213-cu126-aarch64-linux/metadata.json.sigstore @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHLTCCBrOgAwIBAgIUa1olKQTstWvLz1HAuo1y/sxinbAwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDQ0WhcNMjYxMDE5MTQ1MDQ0WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcJ6GdpGqDBtqRRO5l5x/mO9UWLhcZ6ykhal96iYNydi/Ze5qxHanIoRX2Wmt76zaA/g5jmaKsnNBg8SSB60E4qOCBdIwggXOMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJuT5AAABAMASDBGAiEAmys5Cb0zzUAQzWp8WxGJj27i/gNY7ZKs9Vm0ZPHXqeMCIQDdRkhAt5TmbzQh7TuGklkolrDULtWGq43aLnMsf/JqXzAKBggqhkjOPQQDAwNoADBlAjA5S087fT9KgzqZ3HWqAUiqqK0ZbbP+uX+n0/3UXceLh1z7iNv7JHy4M5FR+jKokAgCMQCr0/AZ/dWFwQCdiVq7v6DLlyaEkB9TEQvny/f/aFtN8gBarJ+NfecXAyA6LIMWXRE="},"tlogEntries":[{"logIndex":"3322194071","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420844","inclusionPromise":{"signedEntryTimestamp":"MEUCIGh35VpawZDY0lAng0hsa6EOj08XfLv5hOr9A5NHxLUzAiEA0WR/keKhjNPaJeOXVW97gml1LNTfDcYL73vXMLW5FFw="},"inclusionProof":{"logIndex":"3200289809","rootHash":"I5beZvkx2xrvzqUVllZ9eBrkuKiT2exbVUAZ2fU/2hk=","treeSize":"3200290038","hashes":["ZzN1vQWddTS7v3ecsiVf+rvq2sps8X7WU1XVEM2q+Z4=","5HMN/Ss3O1vfDIXEPrgRqGbvSfFCr9Z06hgHXmPAeqU=","g3bpP5No6rS1/vMLWAcYXxCoy4vDVmKmcQGb7ebmz0M=","5lxZniP4c/0ergcXaHu2EG3bvkGbYTSdV4nJ67eCFqY=","+SAlLy9D8iGC6MfhDW89GJ5B+/S1OND2NJmxjNXQC/c=","NXqMI+sIc8yuMN+yXWTeSspzGRoszjVw/cY1mI3XZVk=","NxJYrTKIn9waZKcto6ZSUQ5IA94/mROXHafjVVqbW1g=","gHaPJ2Vh1LY6e3sYd4iHiucSSSwl38UcCfjlbAAxv3s=","9A+mfO8hbxK35cdDKlkrQx6n+wL1n+ahoKG1I5Z0wtE=","9X5bYcTKETMQHYQVPTj4kv4pL4CmJ/K4E4jOFPgGQtw=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200290038\nI5beZvkx2xrvzqUVllZ9eBrkuKiT2exbVUAZ2fU/2hk=\n\n— rekor.sigstore.dev wNI9ajBFAiEAyWtPBI0JSSEq7CfHR22OrbiC/1WmoCquOGt+r3i+NV0CIC5pStFZ3j0OlhsQOZ6CZGaetQ15W6Y2Q4Z3OE/j1Wha\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJiZTM0NDczZmI3MTBjNjEzNzgwODUyNzdkZWY5ZWNlMjFhZGMwZWFlYjQxMDNkOGJjYjM2YmY3NmU1YjI3MGU5In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJR2h5OS92emk3eHVVcndmWjFwVTdOY0czZHZWUmhFRU90bDUwQzBMOFN5VEFpRUEzWGNVWVVURTVyNkxpVzl4ekE5YnVNcjZzR1dzd1ZmM0ZvK2Fndis2NklVPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1WRU5EUW5KUFowRjNTVUpCWjBsVllURnZiRXRSVkhOMFYzWk1lakZJUVhWdk1Ya3ZjM2hwYm1KQmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJSTUZkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkZFd1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZqU2paSFpIQkhjVVJDZEhGU1VrODFiRFY0TDIxUE9WVlhUR2hqV2paNWEyaGhiRGtLTm1sWlRubGthUzlhWlRWeGVFaGhia2x2VWxneVYyMTBOelo2WVVFdlp6VnFiV0ZMYzI1T1FtYzRVMU5DTmpCRk5IRlBRMEprU1hkbloxaFBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTUNrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NEQkZaWGRDTlVGSVkwRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMVZEVkJRVUZDUVUxQlUwUkNSMEZwUlVGdGVYTTFRMkl3ZW5wVlFWRjZWM0E0VjNoSFNtb3lOMmt2WjA1Wk4xcExjd281Vm0wd1dsQklXSEZsVFVOSlVVUmtVbXRvUVhRMVZHMWllbEZvTjFSMVIydHNhMjlzY2tSVlRIUlhSM0UwTTJGTWJrMXpaaTlLY1ZoNlFVdENaMmR4Q21ocmFrOVFVVkZFUVhkT2IwRkVRbXhCYWtFMVV6QTROMlpVT1V0bmVuRmFNMGhYY1VGVmFYRnhTekJhWW1KUUszVllLMjR3THpOVldHTmxUR2d4ZWpjS2FVNTJOMHBJZVRSTk5VWlNLMnBMYjJ0QlowTk5VVU55TUM5QldpOWtWMFozVVVOa2FWWnhOM1kyUkV4c2VXRkZhMEk1VkVWUmRtNTVMMll2WVVaMFRnbzRaMEpoY2tvclRtWmxZMWhCZVVFMlRFbE5WMWhTUlQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgGK766qBvaQ9akjU/m7igsf/5121vLzNsp0Q7/83NYZMCFQDEnsiRrmjl6pVWwhErl+cNePYlGBgPMjAyNjEwMTkxNDQwNDRaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAxOTE0NDA0NFowLwYJKoZIhvcNAQkEMSIEIMenvmIGoj1OHVj9BY76//6JkNLFuZR8BBpuRb8ej8jDMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMCPoH4ru7sMEG6iB72cbTnbLM+3RaxPht0YtIj9sEx4OZ/WuwEDpe7g8rsxxSzNbUwIwLQ8JIQAKRZFl5bLimbjkDQ4MK5yl1/uhie6dAQrV+G4v5pNuvV5Ydia4/zJjdRsF"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"vjRHP7cQxhN4CFJ33vns4hrcDq60ED2Lyza/duWycOk="},"signature":"MEUCIGhy9/vzi7xuUrwfZ1pU7NcG3dvVRhEEOtl50C0L8SyTAiEA3XcUYUTE5r6LiW9xzA9buMr6sGWswVf3Fo+agv+66IU="}} \ No newline at end of file diff --git a/build/torch213-cu126-aarch64-linux/symbols.json b/build/torch213-cu126-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch213-cu126-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch213-cu130-aarch64-linux/__init__.py b/build/torch213-cu130-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch213-cu130-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch213-cu130-aarch64-linux/_ops.py b/build/torch213-cu130-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch213-cu130-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch213-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch213-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..a8f6ee2dfc52ba001d2ad915e6e9f709ac0d823c --- /dev/null +++ b/build/torch213-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a256ed8242032f5242a158d0880e60cf6968e44066c609604fce75de98d04cc +size 10956664 diff --git a/build/torch213-cu130-aarch64-linux/layers.py b/build/torch213-cu130-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch213-cu130-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch213-cu130-aarch64-linux/metadata.json b/build/torch213-cu130-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..465ab6305a9452a06ef5847909b6fe71d912c074 --- /dev/null +++ b/build/torch213-cu130-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.3", + "11.0", + "12.0", + "12.1+PTX", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "aiVu2CQgMvUkKhWNCIDmDPaWjkQGbGCWBPznXemNBMw=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch213-cu130-aarch64-linux/metadata.json.sigstore b/build/torch213-cu130-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..2d4c56f70e689780a44732048e2992e97ee60bb1 --- /dev/null +++ b/build/torch213-cu130-aarch64-linux/metadata.json.sigstore @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHKzCCBrGgAwIBAgIUUgxEw+QuOl8xbZ5clYD1q3Pw1tkwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDQ2WhcNMjYxMDE5MTQ1MDQ2WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzn/iHfEzOfXxb9z40fyzhRbDJzJAVSzjep6p2Ym5S1NJCsFW9Bqq3D6SqQfDhjg7OSNo7TtpYcqtQ29bd1AAYaOCBdAwggXMMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGJBgorBgEEAdZ5AgQCBHsEeQB3AHUA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJub1AAABAMARjBEAiB0Pijwa5x2IODyYuG/FOE+HhHgMeDS+fFk/4oLL6gkuwIgG6DGBxKG6ZYrWZr276dhuf5NWCe+44LSNgFPBJS0PCQwCgYIKoZIzj0EAwMDaAAwZQIwWjzkLSDqytuGevpJj4M8lgSfop75G1ntV1t8OC1nOxrKAM3jPv8HoeanBuSrKqyvAjEA2c/8hahLhdZ7D3xShcG4FH8UaQN2uXD7Zr3272RE1kLHTJXcq6hQwyNPAAlG6RM5"},"tlogEntries":[{"logIndex":"3322194602","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420846","inclusionPromise":{"signedEntryTimestamp":"MEQCIHaktcg61LzcMOtRwEydZCSvZmYseSFZdMbcXLEL27rNAiBWotXQ9a+mwRWenC1g6+oBSVRlcFg83oJ5KnJ2888Y6A=="},"inclusionProof":{"logIndex":"3200290340","rootHash":"wkR7G/C1d/kr9h+lZwbqaom+lDb2jAmDYPEJgVOr/Ek=","treeSize":"3200290356","hashes":["cXEMdh8Zgb1b0Ow+4EhamGcac8wPNO5WonVhermW9fs=","Yg6NtbdD4OL0lbDDfRSGDIEeBBAIwNjJGbn50qyWvD4=","kIoVZPxibdI4uep9QN/6DkaNQcmWzI0FMSfE8FCKwp8=","HhZ0ZdDU+b0D7N2y1BIHuHP1cS2wsW6C/uQSY7lkxRg=","TB2gUJSRQKUbTouxmSANa+smbd/AxSgiy21oGDnNTzU=","Om3A+F72FGw3lzNuiTeR3YSChUzVpJthQDXGfGOSNE8=","n7yvWbCiwCg2kSnNN4SheFfJyqgZ0m6Gvq93p3vr4lo=","9A+mfO8hbxK35cdDKlkrQx6n+wL1n+ahoKG1I5Z0wtE=","9X5bYcTKETMQHYQVPTj4kv4pL4CmJ/K4E4jOFPgGQtw=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200290356\nwkR7G/C1d/kr9h+lZwbqaom+lDb2jAmDYPEJgVOr/Ek=\n\n— rekor.sigstore.dev wNI9ajBGAiEA9SXdPLAA3TtNpWjnq4dGBH1Kd87zUNVQAf1XerRzqsYCIQD5W8v2Xb3KLuDNe+gYrfEqOet7EJKSebI/ffZ49JUy/A==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJlOTZmNDVkNTIzMmE2YTVmN2M0Y2VlZmQyMTcyNTYyYWYwNzA2YTdjYzIyY2Q0ZTAxMDMwYWE5NDI4YWYxNWVlIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJRHVCRno1ODFHazh3RnlZL0tCMWVFMXlFRXVVcnZVV1ViTlBtaFoxQ3dRK0FpRUE5elVMRGQ5cW5tc0lHSWJWZDFFOEU2MFVXOWFta0VJSUpacmtWbC92c0w4PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KSFowRjNTVUpCWjBsVlZXZDRSWGNyVVhWUGJEaDRZbG8xWTJ4WlJERnhNMUIzTVhScmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJSTWxkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkZFeVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVY2Ymk5cFNHWkZlazltV0hoaU9YbzBNR1o1ZW1oU1lrUktla3BCVmxONmFtVndObkFLTWxsdE5WTXhUa3BEYzBaWE9VSnhjVE5FTmxOeFVXWkVhR3BuTjA5VFRtODNWSFJ3V1dOeGRGRXlPV0prTVVGQldXRlBRMEprUVhkbloxaE5UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkS0NrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NITkZaVkZDTTBGSVZVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMVlqRkJRVUZDUVUxQlVtcENSVUZwUWpCUWFXcDNZVFY0TWtsUFJIbFpkVWN2Ums5RkswaG9TR2ROWlVSVEsyWkdhd292Tkc5TVREWm5hM1YzU1dkSE5rUkhRbmhMUnpaYVdYSlhXbkl5Tnpaa2FIVm1OVTVYUTJVck5EUk1VMDVuUmxCQ1NsTXdVRU5SZDBObldVbExiMXBKQ25wcU1FVkJkMDFFWVVGQmQxcFJTWGRYYW5wclRGTkVjWGwwZFVkbGRuQkthalJOT0d4blUyWnZjRGMxUnpGdWRGWXhkRGhQUXpGdVQzaHlTMEZOTTJvS1VIWTRTRzlsWVc1Q2RWTnlTM0Y1ZGtGcVJVRXlZeTg0YUdGb1RHaGtXamRFTTNoVGFHTkhORVpJT0ZWaFVVNHlkVmhFTjFweU16STNNbEpGTVd0TVNBcFVTbGhqY1Rab1VYZDVUbEJCUVd4SE5sSk5OUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyDADAgEAMIICvwYJKoZIhvcNAQcCoIICsDCCAqwCAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgOivKtsBiE0xZMyPlgMDDucdQamlHb86ai4rMU4sDK0QCFDE6UsjMXvcpVC/DupEjZgzsWvwXGA8yMDI2MTAxOTE0NDA0NlowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdowggHWAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTQ0MDQ2WjAvBgkqhkiG9w0BCQQxIgQg39KG42EiBHqrOfNe8mK94r6DtSnPpL6TbKxffyXpW40wgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGYwZAIwPjMRL3xt1lvsCzzhiOK8HhWiZESu+rf8TZQPsrVylX60HCJCxJo1rgOemDeMYTEaAjBa8PpZA7+nItsszTTGVbLc/AC0AaRjrqfMNoIFzFGiY8q8HfmRKNPTUR7mzml3i14="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"6W9F1SMqal98TO79IXJWKvBwanzCLNTgEDCqlCivFe4="},"signature":"MEUCIDuBFz581Gk8wFyY/KB1eE1yEEuUrvUWUbNPmhZ1CwQ+AiEA9zULDd9qnmsIGIbVd1E8E60UW9amkEIIJZrkVl/vsL8="}} \ No newline at end of file diff --git a/build/torch213-cu130-aarch64-linux/symbols.json b/build/torch213-cu130-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch213-cu130-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch213-cu132-aarch64-linux/__init__.py b/build/torch213-cu132-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch213-cu132-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch213-cu132-aarch64-linux/_ops.py b/build/torch213-cu132-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch213-cu132-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch213-cu132-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch213-cu132-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..b4e5959594490afc1dbc640e62a50baf00b3afe1 --- /dev/null +++ b/build/torch213-cu132-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa4cd9826a05cb683b8c37b5d2664330474ee4c4f227d082ca89a25894f2943d +size 11223440 diff --git a/build/torch213-cu132-aarch64-linux/layers.py b/build/torch213-cu132-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch213-cu132-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch213-cu132-aarch64-linux/metadata.json b/build/torch213-cu132-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..1a5128d1285794b3c0a233044c0d9fb3945bc156 --- /dev/null +++ b/build/torch213-cu132-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.3", + "11.0", + "12.0", + "12.1+PTX", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "+kzZgmoFy2g7jDe10mZDMEdO5MTyJ9CCyomiWJTylD0=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch213-cu132-aarch64-linux/metadata.json.sigstore b/build/torch213-cu132-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..6fed2f59970e51008cc6af200e7ac4dc017a9715 --- /dev/null +++ b/build/torch213-cu132-aarch64-linux/metadata.json.sigstore @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHKzCCBrKgAwIBAgIUWhIzNZXVSfkQOOvODB61nDmA8uMwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDQ5WhcNMjYxMDE5MTQ1MDQ5WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUMm0lIYWDHyvhxRaC5KlLHr5X5Bi1FhvBaGaUEVUHx9jlJEhWAwE184qW7Eze5U5JK4+caXPyVVK7JzC1HdyXKOCBdEwggXNMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJumtwAABAMARzBFAiBOTqwqmlr9cHzVdGgVnkfdRGoBkFZRb9THFe1HXGBUXgIhAPpCJRiRoEHUTUS9TkJD+L+dSNHKy8/qUnZua1M8FmYpMAoGCCqGSM49BAMDA2cAMGQCMDdV6vn2Lbb3Xy5m4KMXXZBMQYLJAznl4OvVwhnH5J0g12fq8qdtRmfuLdh+1dYx0wIwFHdovQ9rViIxZL2anpFtb/AnfshrpGi0k2F5091i6FVRNmPJLANB1L0z0xYw7/Lo"},"tlogEntries":[{"logIndex":"3322195260","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420849","inclusionPromise":{"signedEntryTimestamp":"MEQCIGVEsdoKoUS82jEFfLLGHkdnwvTNCkxEX+lvSStno/kcAiATctjavaYgkC6sPq0OGRnNxc2KsuXZsrczSdVy6sMXOA=="},"inclusionProof":{"logIndex":"3200290998","rootHash":"C+VUqBMYDSZCzkyxWpOtdLMtCUoQ18tZVH2aMfk4w2I=","treeSize":"3200291028","hashes":["4R37qws+oVO3EbwZUZZpBOBB3bB7kJYN5JhQqDr/l/o=","oFHnajwOdIK7v+BarwxGqncWHb789kgO/xEG9qHXgsA=","35Vg/EBXavYL5el2UniDOAmz7K1scV/fsYP8khb52KY=","ZWKb5scOMZHvyIdY9EGFsPTHvLvbbjzGa0/hvASFtjI=","PBW7XKVz+ND4QZfCFCHJJrvLMyO+mkwj3+jwmvdKi2M=","tAHRhydznYaeuMMFGAR+WU6bADQxu7cxjT+gcBpwZfc=","xz+kqd5SI5pRmztawJuqrpKS+RJYhx4klHIiabmalSQ=","+nRanucqvF1gODzbUw4eLq7ptImpuzMXns9XLDTVApI=","ZjQgD8f3Dt3UhIl3ca9g7/SsF4dZobbZn7TcZgPWXzI=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200291028\nC+VUqBMYDSZCzkyxWpOtdLMtCUoQ18tZVH2aMfk4w2I=\n\n— rekor.sigstore.dev wNI9ajBFAiEAldoFi08/C3J45xKEjAvcox0mPEMsBNrlx0sZqtRQw+QCICX+7kF1f376ewO9CAmVNVs6RgfmoK3rmy4tAIlpkdvP\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJlYWMwNTY4ZTJiMDMxZDBmMjdhYTk4NjE5ODdkZjQ5NTg1YmZiOWQ2NDA2MDY2YmIwZjZlNDQ2ZGI1NmVhNGUxIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUNMaTl1endibTY5OXF3ZUhBZ1ZYVXE4UXltaDVXa2F4cUZBTE8vdEU1N093SWdZZUx6ZFpHbzh1RkREc25WV3ArSDRIR084K2JqTzNsRVIrY2x0bUtyYWdrPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KTFowRjNTVUpCWjBsVlYyaEplazVhV0ZaVFptdFJUMDkyVDBSQ05qRnVSRzFCT0hWTmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJSTlZkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkZFMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZWVFcwd2JFbFpWMFJJZVhab2VGSmhRelZMYkV4SWNqVllOVUpwTVVab2RrSmhSMkVLVlVWV1ZVaDRPV3BzU2tWb1YwRjNSVEU0TkhGWE4wVjZaVFZWTlVwTE5DdGpZVmhRZVZaV1N6ZEtla014U0dSNVdFdFBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMWJYUjNRVUZDUVUxQlVucENSa0ZwUWs5VWNYZHhiV3h5T1dOSWVsWmtSMmRXYm10bVpGSkhiMEpyUmxwU1lqbFVTQXBHWlRGSVdFZENWVmhuU1doQlVIQkRTbEpwVW05RlNGVlVWVk01Vkd0S1JDdE1LMlJUVGtoTGVUZ3ZjVlZ1V25WaE1VMDRSbTFaY0UxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKalFVMUhVVU5OUkdSV05uWnVNa3hpWWpOWWVUVnRORXROV0ZoYVFrMVJXVXhLUVhwdWJEUlBkbFozYUc1SU5Vb3daekV5Wm5FS09IRmtkRkp0Wm5WTVpHZ3JNV1JaZURCM1NYZEdTR1J2ZGxFNWNsWnBTWGhhVERKaGJuQkdkR0l2UVc1bWMyaHljRWRwTUdzeVJqVXdPVEZwTmtaV1VncE9iVkJLVEVGT1FqRk1NSG93ZUZsM055OU1id290TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgblcgoBanL8FRp0a0+QzmB25Ch+iAcpDKh/UEKUJwHFkCFBy9tGqia4VcaSyshFY6FFkI5/IAGA8yMDI2MTAxOTE0NDA0OVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTQ0MDQ5WjAvBgkqhkiG9w0BCQQxIgQg7oeAUepqOBW7TLx8oEe1pX0S2NVQQt+cyHRhvNX/p30wgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwKdSe2wmCte53n6xu2upllq4c5iQI72S4j86pYVBRmTDWCmQvjndWKpK5kugbAWFuAjEApG8SPjxH5CpPnokyvZ09/Y709au+jbFO7dFWWl+NgVWZBxJ5CcMW+n7MlqSWjl7A"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"6sBWjisDHQ8nqphhmH30lYW/udZAYGa7D25EbbVupOE="},"signature":"MEUCIQCLi9uzwbm699qweHAgVXUq8Qymh5WkaxqFALO/tE57OwIgYeLzdZGo8uFDDsnVWp+H4HGO8+bjO3lER+cltmKragk="}} \ No newline at end of file diff --git a/build/torch213-cu132-aarch64-linux/symbols.json b/build/torch213-cu132-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch213-cu132-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch214-cu126-aarch64-linux/__init__.py b/build/torch214-cu126-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch214-cu126-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch214-cu126-aarch64-linux/_ops.py b/build/torch214-cu126-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch214-cu126-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch214-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch214-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..0bc8516f7803638ebde0f2a190b0992f8f910cd6 --- /dev/null +++ b/build/torch214-cu126-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7399e3454d71b5454df9e23cd0c257619d0bee3befcbd42db3fe453e03bb4259 +size 6338320 diff --git a/build/torch214-cu126-aarch64-linux/layers.py b/build/torch214-cu126-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch214-cu126-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch214-cu126-aarch64-linux/metadata.json b/build/torch214-cu126-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..85bb0bcc50fb227e4f03ce86eaa633f91a74e075 --- /dev/null +++ b/build/torch214-cu126-aarch64-linux/metadata.json @@ -0,0 +1,43 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "7.0", + "7.2", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0+PTX" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "c5njRU1xtUVN+eI80MJXYZ0L7jvvy9Qts/5FPgO7Qlk=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch214-cu126-aarch64-linux/metadata.json.sigstore b/build/torch214-cu126-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..7b619b773b7bdbb368044d53a776f3a5112f1296 --- /dev/null +++ b/build/torch214-cu126-aarch64-linux/metadata.json.sigstore @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHLDCCBrKgAwIBAgIUekGgWqzqkIoCcVBB/qJsib9GvoMwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDUzWhcNMjYxMDE5MTQ1MDUzWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7NLaNQn/AP2Y1XUbatuG7NQdzzyzo6KBSe1bbnZRPg65P10Uwh5njTGKlMw8Q7Ek8cbr/Acvw+oPdawCDIt7z6OCBdEwggXNMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJu2BQAABAMARzBFAiAb5ZyRMZbbNnN8Ve/+XkSgIQt3d+TDqqCPU7msrNBT4wIhAKNmErqHjkTy7GF5MRE561py8EmjNLzrFIJRuUizyn3tMAoGCCqGSM49BAMDA2gAMGUCMAV73kbgODu9nBV/bx8Gxdt2eNSKmFmlVNjuftRLd055/ur1hkJZWcha0l9oXIJzqQIxAP68ebbk4fjT7zL+27+7wj9OzBUjwrBcj2bmcd5k9Rj/lYpl+o7GQtHMujtOJQqsmg=="},"tlogEntries":[{"logIndex":"3322196503","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420853","inclusionPromise":{"signedEntryTimestamp":"MEUCIB4TpDDGoILdw+2cSpQU8iu3vN5fDyxEvJygDP0z8rCRAiEApdfNBmwFwqj5bWVlMQO2jJMdYH+Uut0UFuHnyiX+kyw="},"inclusionProof":{"logIndex":"3200292241","rootHash":"qCxg5tctQbqHjUABzn70BUVqUGa1+PvYgsAn023fQ7g=","treeSize":"3200292479","hashes":["GGtwcKWDvhE3EyvkAQx+zhRSj1UZKNSPc/0cHjc0ow0=","yJ0trc0so87H84d5j+wlJVxJifns0xLHK71WqvY7d54=","v6XYZY2lQW5ZsHDdzLegrQTSjccq8N04V6bVHrisrR4=","sKrYPiohDe7GTV+PHNDwGW0uzRzIYuCNsgeTX3UkLl8=","7NXQaO53Zy44ebDB7mmuFRxrKjfkiwTjtDSr5esDEkI=","o6xtFps8UUXYEJ5cJ5lJyohYK3SOs27/DfBV9adEyWM=","ak+DJLTExZzlXVLWSIn/CCNynF4wkq8/wF9mi/5CHTw=","33/62B781fI96uWls6zDM3qByZBodMKjfUbPncVNrJA=","4SvYcV6Ot3eQH+JGDHopHZ5kea+ny9LYtaScxUp8F60=","gxUT+pjhDcRkOgR/Ihlt3AK6s5cRtqbgVTTswHBmGro=","Wg42aCYqu8DRYh2O9rfLBf2HgM3tUwG7Mj8TZCcH5JY=","ZjQgD8f3Dt3UhIl3ca9g7/SsF4dZobbZn7TcZgPWXzI=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200292479\nqCxg5tctQbqHjUABzn70BUVqUGa1+PvYgsAn023fQ7g=\n\n— rekor.sigstore.dev wNI9ajBGAiEAvJswJw0gLxM3XolTqlJxXmazzI7bhSOwW42B1QcdfdcCIQCbQS/qU0sss6JfuvFjgdma35rIpReT8kZ2PdOKUALL9w==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJhYmNiZTgzMWI1YmYzMzUwYmVjNTA5OTAyYzgwNmE2MGE5YTBkNmZkM2I0ZmU4Y2Q5NGQwNmM3MTFmOThkZDNjIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUM5QkRmYlNRdFFpTTY3MDhlSjNwejQzWkR1ZWRpUk9NOWNqdmM1bkw1Mmp3SWdNOWhjSnRKeEVFMk5mLy9CdkxlRGF3WTF2Zlh6clhvS0hSZkIwTVQzMXd3PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1SRU5EUW5KTFowRjNTVUpCWjBsVlpXdEhaMWR4ZW5GclNXOURZMVpDUWk5eFNuTnBZamxIZG05TmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJWZWxkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkZWNlYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVUzVGt4aFRsRnVMMEZRTWxreFdGVmlZWFIxUnpkT1VXUjZlbmw2YnpaTFFsTmxNV0lLWW01YVVsQm5OalZRTVRCVmQyZzFibXBVUjB0c1RYYzRVVGRGYXpoalluSXZRV04yZHl0dlVHUmhkME5FU1hRM2VqWlBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMU1rSlJRVUZDUVUxQlVucENSa0ZwUVdJMVdubFNUVnBpWWs1dVRqaFdaUzhyV0d0VFowbFJkRE5rSzFSRWNYRkRVQXBWTjIxemNrNUNWRFIzU1doQlMwNXRSWEp4U0dwclZIazNSMFkxVFZKRk5UWXhjSGs0UlcxcVRreDZja1pKU2xKMVZXbDZlVzR6ZEUxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKblFVMUhWVU5OUVZZM00ydGlaMDlFZFRsdVFsWXZZbmc0UjNoa2RESmxUbE5MYlVadGJGWk9hblZtZEZKTVpEQTFOUzkxY2pFS2FHdEtXbGRqYUdFd2JEbHZXRWxLZW5GUlNYaEJVRFk0WldKaWF6Um1hbFEzZWt3ck1qY3JOM2RxT1U5NlFsVnFkM0pDWTJveVltMWpaRFZyT1ZKcUx3cHNXWEJzSzI4M1IxRjBTRTExYW5SUFNsRnhjMjFuUFQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgavSDDFVE33YbGETT/TG1a1KM4hdrCWmI8yguXWgD13MCFQDixcIjAwvwZ91rDTmgvtObZZ/ikxgPMjAyNjEwMTkxNDQwNTNaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAxOTE0NDA1M1owLwYJKoZIhvcNAQkEMSIEIAOI+B0BIGW4mWrxWwztuQPuUYHNT7aF9n/YiW6BI++/MIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQDZD/gxkKW2vng6iNXgAWiXnHLiMp0U6ZUiTj2m6IgHufd5tf1nNIQ8nmmaSHe6xzsCMQCkKB8zscYIsh+jRNQsABRecMv/AdiHzzqV4KrZPiR8E66WOERZ2t3StbvDBjjh8S4="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"q8voMbW/M1C+xQmQLIBqYKmg1v07T+jNlNBscR+Y3Tw="},"signature":"MEUCIQC9BDfbSQtQiM6708eJ3pz43ZDuediROM9cjvc5nL52jwIgM9hcJtJxEE2Nf//BvLeDawY1vfXzrXoKHRfB0MT31ww="}} \ No newline at end of file diff --git a/build/torch214-cu126-aarch64-linux/symbols.json b/build/torch214-cu126-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch214-cu126-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch214-cu130-aarch64-linux/__init__.py b/build/torch214-cu130-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch214-cu130-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch214-cu130-aarch64-linux/_ops.py b/build/torch214-cu130-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch214-cu130-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch214-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch214-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..e3090f571685410208fa5d856a76563fb82ecce1 --- /dev/null +++ b/build/torch214-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e26e78ad239df2b8c97af540c266783a57304bf2b5c5da6a81c8a8268ce75de +size 10957424 diff --git a/build/torch214-cu130-aarch64-linux/layers.py b/build/torch214-cu130-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch214-cu130-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch214-cu130-aarch64-linux/metadata.json b/build/torch214-cu130-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..c9809ae9e4041fd74c12cf06d774ae6b227e927e --- /dev/null +++ b/build/torch214-cu130-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.3", + "11.0", + "12.0", + "12.1+PTX", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "DibnitI53yuMl69UDCZng6VzBL8rXF2mqByKgmjOdd4=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch214-cu130-aarch64-linux/metadata.json.sigstore b/build/torch214-cu130-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..fbbb85c74a2734da6a0c65ab75f026d648159bca --- /dev/null +++ b/build/torch214-cu130-aarch64-linux/metadata.json.sigstore @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHLTCCBrOgAwIBAgIUP9qkRkWqbLGwgXimHdY8WnNxNAkwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDU2WhcNMjYxMDE5MTQ1MDU2WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgDgSJICBqY6m51f8NG5cN9AU2p0hgSnqBXp3kcg16bC2H/rxWYo/ivWcdCar8O20e4xVE/XE1EXgwOuqsaYxV6OCBdIwggXOMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJvA8wAABAMASDBGAiEA7fUVy6pqCC7Mb8PRm+jQ/pT1g0uJAm7LrAU7lL2/6X4CIQCegybWRq54Yqh7RZ8tJT5NjCByjmAiIhCjhT2BT3JmbjAKBggqhkjOPQQDAwNoADBlAjEA+jxDu3DgLp4gIqv2FOGzA6mDLHc+VMyLOEEiPHXZmK4+8Ny/oiJD/4Ji2M9i5avbAjBiDEnENjZqbkc1y2Z8IpfpEhLeP0E/aw9G0CUhd40c85MItYr/jCQUAD6Iu2UMD1E="},"tlogEntries":[{"logIndex":"3322197309","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420856","inclusionPromise":{"signedEntryTimestamp":"MEUCIQDeVUCdytqLcr7jxG2An9qGDAn1bAejFT0AzE0wW5jm1wIgMF3iy/Av7aDXGzESz8TWOonUyXYaaGUFKpAEhg3WVvg="},"inclusionProof":{"logIndex":"3200293047","rootHash":"qYaq5NFVtAaxvR6ZBpcGLdUFOGLQNPwml4Wrgx6CEOA=","treeSize":"3200293108","hashes":["U3vDv/HV0TWzZdo258B9W03ig7peWJI52pv0tNf15m8=","tIe/Egg+AzqUIY7NqWOfcvwrs9TODj7fdYocD1QC66Y=","pkPNdMd4sm016035DR7afx/Jf4SdAuBL7Rp4brLLqoQ=","MbmNw3gD8REeKipFU6p8Zn1O7WVnaMoglGVIxlRUj1k=","ajzYvLRdnG5btaPEX4nIDF+AkQs96BRjQXMxJdGN698=","H39ZaVpfy6lJMYj/9aZT/KR6cWJDGGSGcB9C0sGHv+s=","X9ofBTgC8BQd2qVqRiOFMVicP5jJ4ptLEtYMn6n3sh8=","e30xjOjJWi9C8t7ElM0z0Xq46LrUsPn9NCifjcwvRZ4=","xd3z9WuAOxKy2hulVe3VffxOh1erqmq4G/TK++OfJEQ=","ZjQgD8f3Dt3UhIl3ca9g7/SsF4dZobbZn7TcZgPWXzI=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200293108\nqYaq5NFVtAaxvR6ZBpcGLdUFOGLQNPwml4Wrgx6CEOA=\n\n— rekor.sigstore.dev wNI9ajBEAh9bj5CtztNAlThpzqMQ4Gx9f13Wh84a9zTOgj2+lPGCAiEAxl6Rwzs65HMtbYHEsvzpfXN5pXjexb+xJYNK1HVt0g4=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI5NzY0NzI1YzNhYTI1MTZlMzdjYzNjZjQ1NDdhZTM5YTBlZjFkNTc0ZWU5NGY0ZWVhNWMyODEwNDM5MzgzOGY5In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUNvN1JMcVFUUWZ3KytvMGprdUFnMFNwRDdlQitYK1VNcEs5S2ZlcjlwZTJBSWdDaXJwdXZzdGJSbURJQU9mVGdPbXBOUU02SlpoUklVNGJSQTczTXdrT0c0PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1WRU5EUW5KUFowRjNTVUpCWjBsVlVEbHhhMUpyVjNGaVRFZDNaMWhwYlVoa1dUaFhiazU0VGtGcmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJWTWxkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkZVeVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZuUkdkVFNrbERRbkZaTm0wMU1XWTRUa2MxWTA0NVFWVXljREJvWjFOdWNVSlljRE1LYTJObk1UWmlRekpJTDNKNFYxbHZMMmwyVjJOa1EyRnlPRTh5TUdVMGVGWkZMMWhGTVVWWVozZFBkWEZ6WVZsNFZqWlBRMEprU1hkbloxaFBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTUNrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NEQkZaWGRDTlVGSVkwRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMlFUaDNRVUZDUVUxQlUwUkNSMEZwUlVFM1psVldlVFp3Y1VORE4wMWlPRkJTYlN0cVVTOXdWREZuTUhWS1FXMDNUQXB5UVZVM2JFd3lMelpZTkVOSlVVTmxaM2xpVjFKeE5UUlpjV2czVWxvNGRFcFVOVTVxUTBKNWFtMUJhVWxvUTJwb1ZESkNWRE5LYldKcVFVdENaMmR4Q21ocmFrOVFVVkZFUVhkT2IwRkVRbXhCYWtWQksycDRSSFV6UkdkTWNEUm5TWEYyTWtaUFIzcEJObTFFVEVoaksxWk5lVXhQUlVWcFVFaFlXbTFMTkNzS09FNTVMMjlwU2tRdk5FcHBNazA1YVRWaGRtSkJha0pwUkVWdVJVNXFXbkZpYTJNeGVUSmFPRWx3Wm5CRmFFeGxVREJGTDJGM09VY3dRMVZvWkRRd1l3bzROVTFKZEZseUwycERVVlZCUkRaSmRUSlZUVVF4UlQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg/zWNT7Ra9t3L5mr+xh6sEET+Orqnya6R0b+oLLgxxQYCFQCv1WCWzvIn6k5BCIM9w+IwSOtENRgPMjAyNjEwMTkxNDQwNTZaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAxOTE0NDA1NlowLwYJKoZIhvcNAQkEMSIEIKBu+F4/osfMkWV8g3quZxG1/M9PANzHBHTnMkO4+cLCMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMF5YTxBrWjXWxBWPj6qgo2nDWCWTSRnZ0RG/CsC36tb4adgDs3rNO2Ao72SCneQAHQIwWtW+dtoZ4Wz/1b3aE76TA54Qs/C4w0cl831Xo/Xy4P1MsabFQbNFDwUdqPmRaHgq"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"l2RyXDqiUW43zDz0VHrjmg7x1XTulPTupcKBBDk4OPk="},"signature":"MEUCIQCo7RLqQTQfw++o0jkuAg0SpD7eB+X+UMpK9Kfer9pe2AIgCirpuvstbRmDIAOfTgOmpNQM6JZhRIU4bRA73MwkOG4="}} \ No newline at end of file diff --git a/build/torch214-cu130-aarch64-linux/symbols.json b/build/torch214-cu130-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch214-cu130-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch214-cu132-aarch64-linux/__init__.py b/build/torch214-cu132-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch214-cu132-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch214-cu132-aarch64-linux/_ops.py b/build/torch214-cu132-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch214-cu132-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch214-cu132-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch214-cu132-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..98cc258d3e27fd2055088113c0e190318810cda6 --- /dev/null +++ b/build/torch214-cu132-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a341decc468d71940f7c9845a9eb9114520040da36f7bdc78d21685c789af508 +size 11224192 diff --git a/build/torch214-cu132-aarch64-linux/layers.py b/build/torch214-cu132-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch214-cu132-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch214-cu132-aarch64-linux/metadata.json b/build/torch214-cu132-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..0bef80e149a5e03e7bc66db14672f4f2eba899bf --- /dev/null +++ b/build/torch214-cu132-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.3", + "11.0", + "12.0", + "12.1+PTX", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "o0HezEaNcZQPfJhFqeuRFFIAQNo2973HjSFoXHia9Qg=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch214-cu132-aarch64-linux/metadata.json.sigstore b/build/torch214-cu132-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..e966e4edc729f49e851f0c663b124a3e63e36f21 --- /dev/null +++ b/build/torch214-cu132-aarch64-linux/metadata.json.sigstore @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHKzCCBrKgAwIBAgIUUTCCPN4Mc4ayAdoHk24b6GH09EEwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MDU3WhcNMjYxMDE5MTQ1MDU3WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEN5Bs3BikQUOtmj8lSGr9u8BiIudTdFgV3RRFTKqOKbykuJpzKnnJMrmfSqAdVv6spJgqX5B2R9J8UOQKtqPUt6OCBdEwggXNMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJvGrAAABAMARzBFAiBHonI2I8egYltz8BOY497FkhBy4PviH9hFZjoSFTzOHgIhAInH+8kjnfDZbDxiRNkrGriXis+Jw1NTp0yvOjNWUncnMAoGCCqGSM49BAMDA2cAMGQCMBzOIGYKTd8I7MqUphUOw0YyhRBjG/S98TlGde6lYpwSyrixGnheeijnqkxllevjNQIwO5rCOsbjNhVYePMHS1eF7VLmcPLHOgGfQk6cx+FdFhVY08fSNJTCg+fmgzCd16Mu"},"tlogEntries":[{"logIndex":"3322197668","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420857","inclusionPromise":{"signedEntryTimestamp":"MEUCIQC+NV5F3ip5qfSm1+2VkZ9EE7nza1gd2fGYoSNMmblNOQIgYvYQWwy4TMSKER6ATKG8GHGblpQ4K3pyCXKTq7h52V4="},"inclusionProof":{"logIndex":"3200293406","rootHash":"9pMEndvf4Ww0A87HAg3JLDrqXQwFEzXQY7Q0/0ZF/6A=","treeSize":"3200293830","hashes":["yrZ16KDw5pXzsqXwBF8AUufIqj0YE+Ez60rOvtDi5SU=","meUWGMHt3CO7WaHmb1HgpZyQL6N7Wg+SOJ97obw/s9Q=","7bhm5gIfZ4xM1H+R8Z2eoS7GvCnKaaHJqT6FlZt3xGI=","Hy7N+q7Qw2Wnl0ZrTPNQ+IeRb1XmTiTApzxt1Lfeqnc=","W1po4uu9kHoDKX8E1970QT+R2GSmeN60bR7Kkx9UsNs=","OxEqxkQSXec25csyUsLJ1yP87Q2Y33UER+w08cXSrWo=","qxn8rmF8GOTEnA40tQXbU5dcJDcDiJo6nRX3o7GeFoA=","euM1IW5Z6UJtJO+gOfLDaoBU2HxDNhxaE7StfRtdtd0=","rR1acfsxxYrbcLrW2yKfixmuZhoIRGJuLa06mfUnytc=","87Wk79zVMNOLzRpyrZ2EQ9scsYnVvs3Rz/EozQKEHgM=","xd3z9WuAOxKy2hulVe3VffxOh1erqmq4G/TK++OfJEQ=","ZjQgD8f3Dt3UhIl3ca9g7/SsF4dZobbZn7TcZgPWXzI=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200293830\n9pMEndvf4Ww0A87HAg3JLDrqXQwFEzXQY7Q0/0ZF/6A=\n\n— rekor.sigstore.dev wNI9ajBFAiBAmkOWeqAdzqDX5ddkasmQXb041AlIHZW0trnMOMACpAIhAKBv6AVBXNx4PQxu6nPcIoDBYsJObErPnITieH0v47eW\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJjMzA0ZDU4MGRiODkwMGEzYWFhOWJlMzNmNjliYWVhOWQ2MjU0ZjEyYWUwMzA0YTFmOWFhZjE4MDY0N2U4OWNkIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRm5mTUFoVmNhWDhQVkVaUnVlQXFDMWVZdmFTYy9QMGFQekdjTTdnUDY2T0FpQVkxb2VHS2JadGVmb3VZU2JYWGJ3aHI2OUNHbEo4SGZBMk9maDJaNGJRVmc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KTFowRjNTVUpCWjBsVlZWUkRRMUJPTkUxak5HRjVRV1J2U0dzeU5HSTJSMGd3T1VWRmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVVJWTTFkb1kwNU5hbGw0VFVSRk5VMVVVVEZOUkZVelYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZPTlVKek0wSnBhMUZWVDNSdGFqaHNVMGR5T1hVNFFtbEpkV1JVWkVablZqTlNVa1lLVkV0eFQwdGllV3QxU25CNlMyNXVTazF5YldaVGNVRmtWblkyYzNCS1ozRllOVUl5VWpsS09GVlBVVXQwY1ZCVmREWlBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMlIzSkJRVUZDUVUxQlVucENSa0ZwUWtodmJra3lTVGhsWjFsc2RIbzRRazlaTkRrM1JtdG9RbmswVUhacFNEbG9SZ3BhYW05VFJsUjZUMGhuU1doQlNXNUlLemhyYW01bVJGcGlSSGhwVWs1cmNrZHlhVmhwY3l0S2R6Rk9WSEF3ZVhaUGFrNVhWVzVqYmsxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKalFVMUhVVU5OUW5wUFNVZFpTMVJrT0VrM1RYRlZjR2hWVDNjd1dYbG9Va0pxUnk5VE9UaFViRWRrWlRac1dYQjNVM2x5YVhnS1IyNW9aV1ZwYW01eGEzaHNiR1YyYWs1UlNYZFBOWEpEVDNOaWFrNW9WbGxsVUUxSVV6RmxSamRXVEcxalVFeElUMmRIWmxGck5tTjRLMFprUm1oV1dRb3dPR1pUVGtwVVEyY3JabTFuZWtOa01UWk5kUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQggkckNZm4eEjU9ppha4rMvUPTrNJQck+gzXt/0Tin9UsCFQDxf3C28fAG7/AIPoYdT8e/4b+T/RgPMjAyNjEwMTkxNDQwNTdaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAxOTE0NDA1N1owLwYJKoZIhvcNAQkEMSIEIO33g81zIEV8r+qVrWR/Edh18CzUUEDKc0QPTm+eEd0vMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMGvAL6R/C7lanAZno07vdWxojjAJBGQYIsVKkX7oQPv0vnOB1CIcdVb50a10sAubbAIwaxFTA8FLLZxRSnctzYms19scso3b3H9zwjBZ9bliSGfu0k/ZmYuv9DIyaKnJoIkY"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"wwTVgNuJAKOqqb4z9puuqdYlTxKuAwSh+arxgGR+ic0="},"signature":"MEQCIFnfMAhVcaX8PVEZRueAqC1eYvaSc/P0aPzGcM7gP66OAiAY1oeGKbZtefouYSbXXbwhr69CGlJ8HfA2Ofh2Z4bQVg=="}} \ No newline at end of file diff --git a/build/torch214-cu132-aarch64-linux/symbols.json b/build/torch214-cu132-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch214-cu132-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch215-cu130-aarch64-linux/__init__.py b/build/torch215-cu130-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch215-cu130-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch215-cu130-aarch64-linux/_ops.py b/build/torch215-cu130-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch215-cu130-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch215-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch215-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..90f15612e7b93f111819c593983a6ce11b84103a --- /dev/null +++ b/build/torch215-cu130-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54431867599387c901a0c96383aea4ae1d1e85a9bc7108ad51fd0889b1eee5c5 +size 10957424 diff --git a/build/torch215-cu130-aarch64-linux/layers.py b/build/torch215-cu130-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch215-cu130-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch215-cu130-aarch64-linux/metadata.json b/build/torch215-cu130-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..2c4f87e5ea8b420c974e6afc19f1f29342525c32 --- /dev/null +++ b/build/torch215-cu130-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.3", + "11.0", + "12.0", + "12.1+PTX", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "VEMYZ1mTh8kBoMljg66krh0eham8cQitUf0IibHu5cU=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch215-cu130-aarch64-linux/metadata.json.sigstore b/build/torch215-cu130-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..459af6432c2521201c9cbc8c50efb6a9ff7d8875 --- /dev/null +++ b/build/torch215-cu130-aarch64-linux/metadata.json.sigstore @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHLTCCBrKgAwIBAgIURGTZMWEX7OpfyXpj6OFAWOYm1tswCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MTAxWhcNMjYxMDE5MTQ1MTAxWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEajEnuzzQJRanFpIeQq+QayidCpp8cqkTe6Or3VjCJUudOAOW6TsKfC02/lxFY6VHKjliJlGvXNAD/u3V+w0mDaOCBdEwggXNMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGKBgorBgEEAdZ5AgQCBHwEegB4AHYA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJvWdgAABAMARzBFAiEAkJt80NhdAhvJ4psx1A+k/RIKdnqANSIxEFjIL5fvIncCIAZfsYmRhI0EBt7mGCBCZdWHW+PqOgMHGdQCe+MO2oh4MAoGCCqGSM49BAMDA2kAMGYCMQCC4ev0JYSIcg+YNRk6KsZV9SxreNKSlU9YZW58/oGqgvuYGKgj91aq4FyMQrN/evwCMQC9Jy+lpUD+zvo/EBhgQ7W8LQRh9r8kz4RBvGSz3dZ8V95NSsw/13e4jildEAZBV5k="},"tlogEntries":[{"logIndex":"3322198736","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420861","inclusionPromise":{"signedEntryTimestamp":"MEUCIQDPjKX2SPruidd5oejmNxZptwh+CsHfLCy+n5NCUnFdRQIgAxwc+v564wNJbuK1TGMnmY/n8FAJfLK8uRTD8sBqCQk="},"inclusionProof":{"logIndex":"3200294474","rootHash":"TybRLAIZYhj+/CwQCtOT4qVr6E8N4p9MoItBpNZ+RFQ=","treeSize":"3200295279","hashes":["ZnFO1mcKOKr8FNUKccgeuZ72EPQRJ9yWo8Sg39BpLcA=","6CkL/I+vX/KwDEYjdYT/r4ysXN8CKT/bkB6dfo2A1Qc=","S8kBfhpcxNU3hYtFan21VgXaQtr3atBIbK8HZoR7Pbo=","4ed1kKwlTJaFppR7Wwl7x1FuAGoDiyv9IqXYqGytTmM=","XLiSdD0Jlm8c3Ltt1ieYVJz8nZutQCXXXZMYaVoJSug=","qqKk4iqt0bfEaC4/fiZJgUNDWOCIgvp2dI2VQRu8hAo=","LFNTrgT/vK+gXtvmPVilUeKMXXiBkEqd3d81WegD5iU=","D88YVFEhjs77OoHIO7YGnRkvc8wwHFCSd/KLmJGxv6g=","ny9BS25Y2vMInhcdkh2e3NEA4hutg41xahU0Zx/dthY=","vrDWpFlOenJFokzO91q/A1UGOT9zc/WdqFjqCLvTZsY=","brePzc0hdxX+g/kAJNN9oCTJp5Wpkw2S2sm51G/+tLU=","xd3z9WuAOxKy2hulVe3VffxOh1erqmq4G/TK++OfJEQ=","ZjQgD8f3Dt3UhIl3ca9g7/SsF4dZobbZn7TcZgPWXzI=","HQgTf/h30E8nwxCVepEUHXdZ/hmzSJaVtBdETT3W444=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200295279\nTybRLAIZYhj+/CwQCtOT4qVr6E8N4p9MoItBpNZ+RFQ=\n\n— rekor.sigstore.dev wNI9ajBFAiEAqY19Ax88yir3Mt6hZ2pWL6ckaDCOvic70RKWbAACusoCIDlg9DhGBmy8kqyrLJKfUq2YCRNSwbi7DczaNyj/htLo\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIyOTAwYzJiMjdhNzI2YjU4ODEzNGIwODQ5Y2UzYmY0OGIxYjdjZDIzNDM3NmU3ZDAyNjA0M2Y3OGFlNjgzYjNjIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJR3NjSCtLZ1IrYTJabXpuZm5hajRacjd4NnVsQ1VXT0FENG02aVZwTGtuU0FpQXg5ZFZnQWpVVzhrSlg1YUlzUzFCdXV4ODdaTkNTQ1JsdkxrT1FvcHVnQXc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1WRU5EUW5KTFowRjNTVUpCWjBsVlVrZFVXazFYUlZnM1QzQm1lVmh3YWpaUFJrRlhUMWx0TVhSemQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVlJCZUZkb1kwNU5hbGw0VFVSRk5VMVVVVEZOVkVGNFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZoYWtWdWRYcDZVVXBTWVc1R2NFbGxVWEVyVVdGNWFXUkRjSEE0WTNGclZHVTJUM0lLTTFacVEwcFZkV1JQUVU5WE5sUnpTMlpETURJdmJIaEdXVFpXU0V0cWJHbEtiRWQyV0U1QlJDOTFNMVlyZHpCdFJHRlBRMEprUlhkbloxaE9UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkTENrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NIZEZaV2RDTkVGSVdVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMlYyUm5RVUZDUVUxQlVucENSa0ZwUlVGclNuUTRNRTVvWkVGb2RrbzBjSE40TVVFcmF5OVNTVXRrYm5GQlRsTkplQXBGUm1wSlREVm1ka2x1WTBOSlFWcG1jMWx0VW1oSk1FVkNkRGR0UjBOQ1ExcGtWMGhYSzFCeFQyZE5TRWRrVVVObEswMVBNbTlvTkUxQmIwZERRM0ZIQ2xOTk5EbENRVTFFUVRKclFVMUhXVU5OVVVORE5HVjJNRXBaVTBsalp5dFpUbEpyTmt0eldsWTVVM2h5WlU1TFUyeFZPVmxhVnpVNEwyOUhjV2QyZFZrS1IwdG5hamt4WVhFMFJubE5VWEpPTDJWMmQwTk5VVU01U25rcmJIQlZSQ3Q2ZG04dlJVSm9aMUUzVnpoTVVWSm9PWEk0YTNvMFVrSjJSMU42TTJSYU9BcFdPVFZPVTNOM0x6RXpaVFJxYVd4a1JVRmFRbFkxYXowS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgG7nw3c4f9wxaXPy1K3/Sre/WaSkZExUjtFzQzLaMK2wCFAa+b0iSXCsKcLVpGcNqIDBDxexTGA8yMDI2MTAxOTE0NDEwMVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTQ0MTAxWjAvBgkqhkiG9w0BCQQxIgQgn8z1stkvIXrJL67r8fJdC/63UmPW6iq94cAFBwaroikwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxAMvghpC0pyLMq/YpsgLTUZIsFlXNuQY/MtSOwYAiogNkyILfmzE7IPF762HfT942EQIxAITAKkXO7VU4aR1CcNv2KcHKgSjWKFj1eQokvj8zLtBhq7zlXzkF98zbWZ/JUMo7zw=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"KQDCsnpya1iBNLCEnOO/SLG3zSNDdufQJgQ/eK5oOzw="},"signature":"MEQCIGscH+KgR+a2Zmznfnaj4Zr7x6ulCUWOAD4m6iVpLknSAiAx9dVgAjUW8kJX5aIsS1Buux87ZNCSCRlvLkOQopugAw=="}} \ No newline at end of file diff --git a/build/torch215-cu130-aarch64-linux/symbols.json b/build/torch215-cu130-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch215-cu130-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch215-cu132-aarch64-linux/__init__.py b/build/torch215-cu132-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch215-cu132-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch215-cu132-aarch64-linux/_ops.py b/build/torch215-cu132-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch215-cu132-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch215-cu132-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch215-cu132-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..af1f2dc399b43f2d8c5527466248ef3cfe620b05 --- /dev/null +++ b/build/torch215-cu132-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3840a79f43b8759a589f001aeb1a936d00bf887e9abf66de5f7989cf6b027c0 +size 11224192 diff --git a/build/torch215-cu132-aarch64-linux/layers.py b/build/torch215-cu132-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch215-cu132-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch215-cu132-aarch64-linux/metadata.json b/build/torch215-cu132-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..caa7c8743be15a9e65c4f89a026f2eeabef26d6e --- /dev/null +++ b/build/torch215-cu132-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.3", + "11.0", + "12.0", + "12.1+PTX", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "04QKefQ7h1mlifABrrGpNtAL+Ifpq/Zt5feYnPawJ8A=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch215-cu132-aarch64-linux/metadata.json.sigstore b/build/torch215-cu132-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..f2abfcf754802402d94154c04d15a2d999e34e21 --- /dev/null +++ b/build/torch215-cu132-aarch64-linux/metadata.json.sigstore @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHLDCCBrGgAwIBAgIUK+ASO/dZSOBD1dqSeRl1l9rRo0IwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MTA2WhcNMjYxMDE5MTQ1MTA2WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqY8ttowj9yzGLlnPcX8PMnDh7N5G8ZVvrjkIE9hb8b3N2XyE7SqDgbOPDJnJJX2ReRfYvHuwu0N4EmzlJyHhFaOCBdAwggXMMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGJBgorBgEEAdZ5AgQCBHsEeQB3AHUA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJvq7wAABAMARjBEAiB4uXgjoDYsmJOC37lxkn2Tah+TBRdyLzkoCbCUnaNUHwIgbbxkoCYTvDVIhWSndLomy8Xj6BDAMtXRtcmupovo0FQwCgYIKoZIzj0EAwMDaQAwZgIxAPYLYd+PngiLlFHk+52JXWC8FKX+r4XxYAlu5OE3pTT7FmYZQ9QJiEZWxu1ZDYuHOAIxAMia/mSIO8knA4vrb2sPRwPSEwYtAAoGXalw38VNSZkzU3xKyJ6j3P7UFfMrfwXcxw=="},"tlogEntries":[{"logIndex":"3322200175","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420867","inclusionPromise":{"signedEntryTimestamp":"MEQCICUpegdi0wUDBlEkvtq8XgeorUYm68vakvvd4MEBjiAlAiAUhyhpdE/TIQlKXqHi4PcIABtNQ+c6Jsehla4NKIvmOw=="},"inclusionProof":{"logIndex":"3200295913","rootHash":"HcAola0T72CCZ5Iie0wtQOC6J/ZoWV3EzoR1XnOU0M4=","treeSize":"3200296664","hashes":["Z+Azsa6oO3Vj8yHqFDuoROGos5lbz+/X+J4MjxuNIYw=","hFHGM7SJK3trByX2j9U5rf+GiH3EZ0do4c3N6eKzDwI=","az9RJkHrDpkragvPfG2v/jdlfGxrHg5GlhgqeQBWqIs=","u+8x2hSVd5XVvuRTKW24UH9dDOazMtA39vP+E2WakvU=","GzQonHmddYLT6T0HdsfJMTRBrQx61GTbI/PYZFJpzKg=","zAI+/c7r5H61eFnr6RtqTMYGX1ryO1HqENjXbCXKud8=","dh8Pwg4tVx9v90ZEIpkM6RkIRtETPVCEqh2Dj52CUZQ=","zbFlLze27wWu3XE0S7Xu0wxMjWt+/ysrQ9ZP4DdqOEg=","POLFXRqQJgR4KWMbqY0Tk/855wM5l1YCuVTqIT8HzlI=","K/XUnncmzFVXIdqwK776plm7EXVErmhbUAq0uA1BwII=","is396X7BHCToja8NjYn83ffGunx7CkeiZDCRmlOU3eg=","LlrN4e8dslaxWeB4fnILMQxH1NuS12sbUq4HM1K7KrM=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200296664\nHcAola0T72CCZ5Iie0wtQOC6J/ZoWV3EzoR1XnOU0M4=\n\n— rekor.sigstore.dev wNI9ajBFAiEArNk8PgtKkKRz7pBj9bsqZ9w5FZGzbCFeleaI6kmejhkCIAwVKHON0Vzi2+4bpuI7+eenvMliJ7EJ/Mobsy+ofoxI\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJiNjFiNzNkYTUwN2I4YjVjMzFiNjBkOTQzNDdlNzEzNjE5NjUxZjY5NTJjZmEzYmI1NzZlYjg4YTg3N2ViZGZlIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQy9MeXJRTStNemIweWZxb2dZcXRKRHVzL21jRnJvODhQU0lPcWh1MVV2VUFpRUF3dlZCV0FMeHQ3RWtNUk5wUlV1SDd4ang0RU1GUzlxSkt0amlJMUNDTlJ3PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaE1SRU5EUW5KSFowRjNTVUpCWjBsVlN5dEJVMDh2WkZwVFQwSkVNV1J4VTJWU2JERnNPWEpTYnpCSmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVlJCTWxkb1kwNU5hbGw0VFVSRk5VMVVVVEZOVkVFeVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ4V1RoMGRHOTNhamw1ZWtkTWJHNVFZMWc0VUUxdVJHZzNUalZIT0ZwV2RuSnFhMGtLUlRsb1lqaGlNMDR5V0hsRk4xTnhSR2RpVDFCRVNtNUtTbGd5VW1WU1psbDJTSFYzZFRCT05FVnRlbXhLZVVob1JtRlBRMEprUVhkbloxaE5UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkS0NrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NITkZaVkZDTTBGSVZVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMmNUZDNRVUZDUVUxQlVtcENSVUZwUWpSMVdHZHFiMFJaYzIxS1QwTXpOMng0YTI0eVZHRm9LMVJDVW1SNVRIcHJid3BEWWtOVmJtRk9WVWgzU1dkaVluaHJiME5aVkhaRVZrbG9WMU51WkV4dmJYazRXR28yUWtSQlRYUllVblJqYlhWd2IzWnZNRVpSZDBObldVbExiMXBKQ25wcU1FVkJkMDFFWVZGQmQxcG5TWGhCVUZsTVdXUXJVRzVuYVV4c1JraHJLelV5U2xoWFF6aEdTMWdyY2pSWWVGbEJiSFUxVDBVemNGUlVOMFp0V1ZvS1VUbFJTbWxGV2xkNGRURmFSRmwxU0U5QlNYaEJUV2xoTDIxVFNVODRhMjVCTkhaeVlqSnpVRkozVUZORmQxbDBRVUZ2UjFoaGJIY3pPRlpPVTFwcmVncFZNM2hMZVVvMmFqTlFOMVZHWmsxeVpuZFlZM2gzUFQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg+2aiCKmek9bmIUOSsibNwSwsXn8DsBz4aUgnuR9WN1YCFDIgcO0+X7k4LhW4icmkSOh8s/dOGA8yMDI2MTAxOTE0NDEwNlowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTQ0MTA2WjAvBgkqhkiG9w0BCQQxIgQgfROrWafYpp/MmDhu1W6zzv41X+zBX5WD7DR7tg+owHowgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIxAI4s3avdWXq6QcAMjOal1flrjVdkOsJctf3DHK4oI/3tjIB7OGmwfFKPw0ekJuvLvwIwXTl2UQ55vUyiPReAJnqUysc1URsbkWEwhyjlweee6ALNfYwg82of2jVC4VGCVXIe"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"thtz2lB7i1wxtg2UNH5xNhllH2lSz6O7V264iod+vf4="},"signature":"MEUCIC/LyrQM+Mzb0yfqogYqtJDus/mcFro88PSIOqhu1UvUAiEAwvVBWALxt7EkMRNpRUuH7xjx4EMFS9qJKtjiI1CCNRw="}} \ No newline at end of file diff --git a/build/torch215-cu132-aarch64-linux/symbols.json b/build/torch215-cu132-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch215-cu132-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +} diff --git a/build/torch215-cu134-aarch64-linux/__init__.py b/build/torch215-cu134-aarch64-linux/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d4ae5eb764bfd4529302f6ebd55a63cfc4290248 --- /dev/null +++ b/build/torch215-cu134-aarch64-linux/__init__.py @@ -0,0 +1,57 @@ +import torch + +from . import layers +from ._ops import ops + + +def apply_rotary( + x1: torch.Tensor, + x2: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + out1: torch.Tensor, + out2: torch.Tensor, + conj: bool, +) -> None: + ops.apply_rotary(x1, x2, cos, sin, out1, out2, conj) + + +def apply_rotary_transformers( + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, +) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + apply_rotary(q1, q2, cos, sin, q1, q2, False) + apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated + + +# Add torch compile support for functions +apply_rotary_transformers.can_torch_compile = True + + +# Keeping `apply_rotary` and `apply_rotary_transformers` for BC +__all__ = ["apply_rotary", "apply_rotary_transformers", "layers"] diff --git a/build/torch215-cu134-aarch64-linux/_ops.py b/build/torch215-cu134-aarch64-linux/_ops.py new file mode 100644 index 0000000000000000000000000000000000000000..4e9d695ead35d31082b675c39d2a8bc2bb2e203b --- /dev/null +++ b/build/torch215-cu134-aarch64-linux/_ops.py @@ -0,0 +1,9 @@ +import torch +from . import _rotary_cuda_fe2bb66 +ops = torch.ops._rotary_cuda_fe2bb66 + +def add_op_namespace_prefix(op_name: str): + """ + Prefix op by namespace. + """ + return f"_rotary_cuda_fe2bb66::{op_name}" diff --git a/build/torch215-cu134-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so b/build/torch215-cu134-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..2bda3e5dc8855832befcb746d80baa9d51a0432e --- /dev/null +++ b/build/torch215-cu134-aarch64-linux/_rotary_cuda_fe2bb66.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bf6b366bc168ec01e99e061cb033b9ed6659a4f64ac8d7ec43f58359bc03022 +size 11092056 diff --git a/build/torch215-cu134-aarch64-linux/layers.py b/build/torch215-cu134-aarch64-linux/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ac7d829334e10090a3190775b8ae51f739501512 --- /dev/null +++ b/build/torch215-cu134-aarch64-linux/layers.py @@ -0,0 +1,41 @@ +import torch +import torch.nn as nn + +from ._ops import ops + + +class apply_rotary_transformers(nn.Module): + can_torch_compile = True + + def forward( + self, + q: torch.Tensor, + k: torch.Tensor, + cos: torch.Tensor, + sin: torch.Tensor, + unsqueeze_dim: int = 1, + ) -> tuple[torch.Tensor, torch.Tensor]: + """ + Rotary kernel implementation wrapper + Adapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + + q_rotated = q.clone() + k_rotated = k.clone() + + # Get half dimension for rotation + half_dim = q.shape[-1] // 2 + q1 = q_rotated[..., :half_dim] + q2 = q_rotated[..., half_dim:] + k1 = k_rotated[..., :half_dim] + k2 = k_rotated[..., half_dim:] + if cos.shape[-1] != half_dim: + # Trim cos/sin to match half_dim + cos = cos[..., :half_dim] + sin = sin[..., :half_dim] + + ops.apply_rotary(q1, q2, cos, sin, q1, q2, False) + ops.apply_rotary(k1, k2, cos, sin, k1, k2, False) + return q_rotated, k_rotated diff --git a/build/torch215-cu134-aarch64-linux/metadata.json b/build/torch215-cu134-aarch64-linux/metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..9b7f9344d52a79dc4a832e8e3b887472f6be558e --- /dev/null +++ b/build/torch215-cu134-aarch64-linux/metadata.json @@ -0,0 +1,46 @@ +{ + "name": "rotary", + "id": "_rotary_cuda_fe2bb66", + "version": 2, + "kernels-minver": "0.14.0", + "license": "BSD-3-Clause", + "python-depends": [], + "kernel-depends": [], + "backend": { + "type": "cuda", + "archs": [ + "10.0", + "10.3", + "11.0", + "12.0", + "12.1+PTX", + "7.5", + "8.0", + "8.6", + "8.7", + "8.9", + "9.0" + ] + }, + "digest": { + "algorithm": "sha256", + "files": { + "__init__.py": "qlvCb0Z6KMkcCxgjDRxjD1ofWaJ/Lqx0cTFlqrncWyE=", + "_ops.py": "EoWScriRucWeQpTCVjU8Plvxj4hCleb78Xs7ZS54SEo=", + "_rotary_cuda_fe2bb66.abi3.so": "O/azZrwWjsAemeBhywM7ntZlmk9krI1+xD9YNZvAMCI=", + "layers.py": "c8ZzUlsVi1lOGhM67JSViZdKBSbIKItQxmWkXPiTEy4=", + "symbols.json": "zKJ3WtDUryzwwEOaYEkFFuht8M+29N2RldN2OP/+GuM=" + } + }, + "provenance": { + "kernel-builder": { + "version": "0.18.0-dev0", + "commit": "d054906a13710b811b96697b4635f03020842733", + "dirty": false + }, + "kernel": { + "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed", + "dirty": false + } + } +} \ No newline at end of file diff --git a/build/torch215-cu134-aarch64-linux/metadata.json.sigstore b/build/torch215-cu134-aarch64-linux/metadata.json.sigstore new file mode 100644 index 0000000000000000000000000000000000000000..f7076f96d81267d28158d9411cf3cefe49c09b38 --- /dev/null +++ b/build/torch215-cu134-aarch64-linux/metadata.json.sigstore @@ -0,0 +1 @@ +{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHKzCCBrGgAwIBAgIUAyRhmne49uBqR1tdEs1/VXv0/YgwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTQ0MTExWhcNMjYxMDE5MTQ1MTExWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkoMK9yoStv1UxckA8RW77lCVsk/0R8QdRwnt01pK67lCbBmUkRahIagcXAkM4LMd+XkJtaL7O+69aHh3v4sdr6OCBdAwggXMMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBrBgNVHREBAf8EYTBfhl1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOQYKKwYBBAGDvzABAQQraHR0cHM6Ly90b2tlbi5hY3Rpb25zLmdpdGh1YnVzZXJjb250ZW50LmNvbTAfBgorBgEEAYO/MAECBBF3b3JrZmxvd19kaXNwYXRjaDA2BgorBgEEAYO/MAEDBChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBMGCisGAQQBg78wAQQEBUJ1aWxkMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wbQYKKwYBBAGDvzABCQRfDF1odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABCgQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMBsGCisGAQQBg78wAQsEDQwLc2VsZi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMG0GCisGAQQBg78wARIEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wARMEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAhBgorBgEEAYO/MAEUBBMMEXdvcmtmbG93X2Rpc3BhdGNoMGQGCisGAQQBg78wARUEVgxUaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5L2FjdGlvbnMvcnVucy8zOTIzOTY0ODU2MS9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMEYGCisGAQQBg78wARgEOAw2cmVwbzpodWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTpyZWY6cmVmcy9oZWFkcy9tYWluMIGJBgorBgEEAdZ5AgQCBHsEeQB3AHUA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGhVJv+yQAABAMARjBEAiBMwFy0iCeJCkI/WKVKrjt2EGGtqcEdPSf1W84jwlz+KgIgAXHlH0CDxsQTgcMxB76ZwM3T2dCLAtmT2BVb78CPRAgwCgYIKoZIzj0EAwMDaAAwZQIxANQIB3MLhGiguFhsx/9lwFIYECtfqWkAh2kKM0Pzq8KguPll2276PdxBFXIQ5lC42gIwe6J5LlBr5N1HWHbXfyJfBX6LHwdIHinNL8pnVvqQp54+rkmqhLrG5JcqOYaIL7sX"},"tlogEntries":[{"logIndex":"3322201361","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792420872","inclusionPromise":{"signedEntryTimestamp":"MEYCIQDqdTRhCILyIeqsBdNNgLBcmbkNQEPxlvEjM1fQsxe5mgIhAL47e+37htXqiv1l5STzISkISCqoreTwveVFXaM6rfel"},"inclusionProof":{"logIndex":"3200297099","rootHash":"LyuKfzUGb/9cB3ejZNhiUZvejaCRRDro9CIfxkaqRlg=","treeSize":"3200297608","hashes":["nDMXERM+YfJLvCGWr3vrosWv0eCtxJnGWQqtGvVctkQ=","jt0D/WajFED8AhKRIBH/lqPkBWwv0nxZPuh7q5gfVkI=","eduFPXtWsmXbthIkae6u8W9Ox33HdgAy8sYmGftXBoM=","yIsgkJI8XT3+CxThNAGl45GV/Il31N8FcIeykOCDYX0=","9/VZuLkAEOhYRTAecsB2T/UEY9zNkHMtXxoSH2LVeWw=","5Ii7j+wB3Kxq2D4ND/sLEUq/WiBClpfgOOPZ7Guf+zU=","U6spqswVKyz8UKaeg0y/A8+Alk+E7MUB0gHm7pKxdeo=","jbaCXGCk45RtnIiinV9fAMM8UwYmc3EVwe291gsH9WQ=","N7EkwMjafv6nDIdUqgERb61F2RoTYoROHEIXfMW5DeE=","6xc3+HdoubYPJq6rtWqADeado9PvYr0TFcxutCJM5WM=","TrK1A+aXAWJdJNDVJFhe/qe6JBXs5A2nqZJAcuATImU=","LlrN4e8dslaxWeB4fnILMQxH1NuS12sbUq4HM1K7KrM=","ZOrbzX2JyUEvPAEOTVIWXxPaIt7hyRMttU33cvPUUeU=","7WFpoaiQCzLwM3o2YI5Ngo8J7JD0OfyCCQtmXhWxVes=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3200297608\nLyuKfzUGb/9cB3ejZNhiUZvejaCRRDro9CIfxkaqRlg=\n\n— rekor.sigstore.dev wNI9ajBEAiAkNypFNtnQLHVr9UNKdvPu8nMzeqW1Mg14JppRZBItigIge/Sou3KsbD6MvaviLj9L1xHPcLjKcfEogeY5dzQ9uJ4=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJjNWNjNDhhMmJkOTE3YmZkYTRiMDA1YjMzYmViZTU0YjQ3NzU1MDY5YjVlZWJhMDNhOTRiOTQxYmExYTRkNjA1In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJSFl3T1dwdnE0SDRzdHJsNkxwNmU2YzFhR25MMUhVc3h6dmJ3R0VMMEtBMUFpQkFSNnJqbVdwdHBmYWJOdjM5djZWV3Fua1JPbXhNV2JSbWFzaTN5dldRTVE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaExla05EUW5KSFowRjNTVUpCWjBsVlFYbFNhRzF1WlRRNWRVSnhVakYwWkVWek1TOVdXSFl3TDFsbmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZGRXdUVlJGZUZkb1kwNU5hbGw0VFVSRk5VMVVVVEZOVkVWNFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZyYjAxTE9YbHZVM1IyTVZWNFkydEJPRkpYTnpkc1ExWnpheTh3VWpoUlpGSjNiblFLTURGd1N6WTNiRU5pUW0xVmExSmhhRWxoWjJOWVFXdE5ORXhOWkN0WWEwcDBZVXczVHlzMk9XRklhRE4yTkhOa2NqWlBRMEprUVhkbloxaE5UVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuSkNaMDVXU0ZKRlFrRm1PRVZaVkVKbWFHd3hiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjFaVmRHZEdKRlFubGFWMXA2VERKb2JGbFhVbnBNTWpGb1lWYzBkMDlSV1V0TGQxbENRa0ZIUkhaNlFVSkJVVkZ5Q21GSVVqQmpTRTAyVEhrNU1HSXlkR3hpYVRWb1dUTlNjR0l5TlhwTWJXUndaRWRvTVZsdVZucGFXRXBxWWpJMU1GcFhOVEJNYlU1MllsUkJaa0puYjNJS1FtZEZSVUZaVHk5TlFVVkRRa0pHTTJJelNuSmFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkJNa0puYjNKQ1owVkZRVmxQTDAxQlJVUkNRMmh0V2xSS2FRcFphbGt5V20xV2JFNXRUWGxaVkdNeldsZE9hbHBxUVRSWlZFRXhUVVJvYTFsNlZUTk9SRWswV2tSUk5FOUhWbXROUWsxSFEybHpSMEZSVVVKbk56aDNDa0ZSVVVWQ1ZVb3hZVmQ0YTAxRGMwZERhWE5IUVZGUlFtYzNPSGRCVVZWRlNGZG9NVm95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFFLWWxoV2RXRllValZOUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJOMEpuYjNKQ1owVkZRVmxQTHdwTlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMVdWZE9NR0ZYT1hWamVUVnVZVmhTYjJSWFNqRmpNbFo1V1RJNWRXUkhWblZrUXpWcUNtSXlNSGRpVVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWmtSR01XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZG1FeVZubGliVlp6WTNreGFtSXlNWFJrVnpWd1pFaHJka3h0WkhCa1IyZ3hXV2s1TTJJelNuSmFiWGgyWkROTmRsbHVWbkJpUjFGMVpWZEdkQXBpUlVKNVdsZGFla3d5YUd4WlYxSjZUREl4YUdGWE5IZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1EyZFJjVVJEYUcxYVZFcHBXV3BaTWxwdFZteE9iVTE1Q2xsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ2MwZERhWE5IUVZGUlFtYzNPSGRCVVhORlJGRjNUR015Vm5NS1dta3hiMkl6VGpCYVYxRjNVVUZaUzB0M1dVSkNRVWRFZG5wQlFrUkJVWGxFUkVKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2JncGFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzZFBRVmxMUzNkWlFrSkJSMFIyZWtGQ1JGRlJjVVJEYUcxYVZFcHBDbGxxV1RKYWJWWnNUbTFOZVZsVVl6TmFWMDVxV21wQk5GbFVRVEZOUkdocldYcFZNMDVFU1RSYVJGRTBUMGRXYTAxQ09FZERhWE5IUVZGUlFtYzNPSGNLUVZFMFJVVlJkMUJqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxQ2IwZERhWE5IUVZGUlFtYzNPSGRCVVRoRlJFRjNTMDFVUVROTlZGRXpUbFJWZVFwUFZFRjFRbWR2Y2tKblJVVkJXVTh2VFVGRlVVSkRRVTFJYldnd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemx2WkZka2JtRlhOVzVhYlVacUNscFVRVmxDWjI5eVFtZEZSVUZaVHk5TlFVVlNRa0Z2VFVORVNURk9la2wzVG5wUmVrMUhNRWREYVhOSFFWRlJRbWMzT0hkQlVrbEZXSGQ0WkdGSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTW1neFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRIazFiZ3BoV0ZKdlpGZEpkbVF5T1hsaE1scHpZak5rZWt3eVNqRmhWM2hyVEc1c2FHSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlhYlZWNVdXMUpNazV0V214YVZGcHFUVzFGTTA0eVZtcFpNbGwzVDBkRmQwNVVRVFJhUjAweFRucFJlVTlIVVRBS1QwUm9iRnBFUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxSFVVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWWm5lRlZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlV3eVJtcGtSMngyWW01TmRtTnVWblZqZVRoNlQxUkplazlVV1RCUFJGVXlUVk01YUdSSVVteGlXRUl3WTNrNGVFMUNXVWNLUTJselIwRlJVVUpuTnpoM1FWSlpSVU5CZDBkalNGWnBZa2RzYWsxRldVZERhWE5IUVZGUlFtYzNPSGRCVW1kRlQwRjNNbU50Vm5kaWVuQnZaRmRrYmdwaFZ6VnVXbTFHYWxwVE9YSmFXRXAxV2xkNGVreFhUblppVnpFeFltMXNNR1ZVY0hsYVYxazJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOU1VkS0NrSm5iM0pDWjBWRlFXUmFOVUZuVVVOQ1NITkZaVkZDTTBGSVZVRXpWREIzWVhOaVNFVlVTbXBIVWpSamJWZGpNMEZ4U2t0WWNtcGxVRXN6TDJnMGNIa0taME00Y0Rkdk5FRkJRVWRvVmtwMkszbFJRVUZDUVUxQlVtcENSVUZwUWsxM1Jua3dhVU5sU2tOclNTOVhTMVpMY21wME1rVkhSM1J4WTBWa1VGTm1NUXBYT0RScWQyeDZLMHRuU1dkQldFaHNTREJEUkhoelVWUm5ZMDE0UWpjMlduZE5NMVF5WkVOTVFYUnRWREpDVm1JM09FTlFVa0ZuZDBObldVbExiMXBKQ25wcU1FVkJkMDFFWVVGQmQxcFJTWGhCVGxGSlFqTk5UR2hIYVdkMVJtaHplQzg1YkhkR1NWbEZRM1JtY1ZkclFXZ3lhMHROTUZCNmNUaExaM1ZRYkd3S01qSTNObEJrZUVKR1dFbFJOV3hETkRKblNYZGxOa28xVEd4Q2NqVk9NVWhYU0dKWVpubEtaa0pZTmt4SWQyUkpTR2x1VGt3NGNHNVdkbkZSY0RVMEt3cHlhMjF4YUV4eVJ6VktZM0ZQV1dGSlREZHpXQW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg10nVPwmeAooh0loa99H+5jY+grtoGod16Q3tnkSdHwcCFQCKw2YzFKvu5SUPcjoK4I+poDsl1BgPMjAyNjEwMTkxNDQxMTFaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAxOTE0NDExMVowLwYJKoZIhvcNAQkEMSIEIB16DFvUSJCyjgtRbyw9TPz4MIlQSRJwKegvNkmSWL/wMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMQCiKCy4bkYQVPhMX76pOU5bjNdcB5nUL4MiDM7qs0H9AE4VPReOS7r7ZNAPlvYFR2kCMGdCpNRv7a1NkomKyWSP+gt4S4M3zjB/dheqSNUmncK+dg+BYNlaL/PQFj/5DHtbAA=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"xcxIor2Re/2ksAWzO+vlS0d1UGm17roDqUuUG6Gk1gU="},"signature":"MEQCIHYwOWpvq4H4strl6Lp6e6c1aGnL1HUsxzvbwGEL0KA1AiBAR6rjmWptpfabNv39v6VWqnkROmxMWbRmasi3yvWQMQ=="}} \ No newline at end of file diff --git a/build/torch215-cu134-aarch64-linux/symbols.json b/build/torch215-cu134-aarch64-linux/symbols.json new file mode 100644 index 0000000000000000000000000000000000000000..0f0fcc334041d0c5bb198ce5cb30981058ba4b31 --- /dev/null +++ b/build/torch215-cu134-aarch64-linux/symbols.json @@ -0,0 +1,103 @@ +{ + "schema_version": 1, + "module": "_rotary_cuda_fe2bb66", + "functions": [ + { + "name": "apply_rotary", + "qualname": "apply_rotary", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": null, + "signature": { + "parameters": [ + { + "name": "x1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "x2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out1", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "out2", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "conj", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "bool" + } + ], + "return_annotation": "None" + } + }, + { + "name": "apply_rotary_transformers", + "qualname": "apply_rotary_transformers", + "module": "_rotary_cuda_fe2bb66", + "kind": "function", + "doc": "Rotary kernel implementation wrapper\nAdapts rotary kernel implementation to match transformers apply_rotary_pos_emb signature", + "signature": { + "parameters": [ + { + "name": "q", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "k", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "cos", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "sin", + "kind": "POSITIONAL_OR_KEYWORD", + "default": null, + "annotation": "torch.Tensor" + }, + { + "name": "unsqueeze_dim", + "kind": "POSITIONAL_OR_KEYWORD", + "default": "1", + "annotation": "int" + } + ], + "return_annotation": "tuple[torch.Tensor, torch.Tensor]" + } + } + ], + "layers": [] +}