Uploaded using `kernel-builder`.

#3
Files changed (39) hide show
  1. README.md +2 -2
  2. build/torch210-metal-aarch64-darwin/__init__.py +40 -0
  3. build/torch210-metal-aarch64-darwin/_ops.py +9 -0
  4. build/torch210-metal-aarch64-darwin/_topk_metal_fe2bb66.abi3.so +3 -0
  5. build/torch210-metal-aarch64-darwin/layers.py +39 -0
  6. build/torch210-metal-aarch64-darwin/metadata.json +33 -0
  7. build/torch210-metal-aarch64-darwin/metadata.json.sigstore +1 -0
  8. build/torch210-metal-aarch64-darwin/symbols.json +37 -0
  9. build/torch211-metal-aarch64-darwin/__init__.py +40 -0
  10. build/torch211-metal-aarch64-darwin/_ops.py +9 -0
  11. build/torch211-metal-aarch64-darwin/_topk_metal_fe2bb66.abi3.so +3 -0
  12. build/torch211-metal-aarch64-darwin/layers.py +39 -0
  13. build/torch211-metal-aarch64-darwin/metadata.json +33 -0
  14. build/torch211-metal-aarch64-darwin/metadata.json.sigstore +1 -0
  15. build/torch211-metal-aarch64-darwin/symbols.json +37 -0
  16. build/torch212-metal-aarch64-darwin/_ops.py +3 -3
  17. build/torch212-metal-aarch64-darwin/{_topk_metal_4487601.abi3.so → _topk_metal_fe2bb66.abi3.so} +1 -1
  18. build/torch212-metal-aarch64-darwin/metadata.json +10 -7
  19. build/torch212-metal-aarch64-darwin/metadata.json.sigstore +1 -1
  20. build/torch212-metal-aarch64-darwin/symbols.json +37 -0
  21. build/torch213-metal-aarch64-darwin/_ops.py +3 -3
  22. build/torch213-metal-aarch64-darwin/{_topk_metal_4487601.abi3.so → _topk_metal_fe2bb66.abi3.so} +1 -1
  23. build/torch213-metal-aarch64-darwin/metadata.json +10 -7
  24. build/torch213-metal-aarch64-darwin/metadata.json.sigstore +1 -1
  25. build/torch213-metal-aarch64-darwin/symbols.json +37 -0
  26. build/torch214-metal-aarch64-darwin/__init__.py +40 -0
  27. build/torch214-metal-aarch64-darwin/_ops.py +9 -0
  28. build/torch214-metal-aarch64-darwin/_topk_metal_fe2bb66.abi3.so +3 -0
  29. build/torch214-metal-aarch64-darwin/layers.py +39 -0
  30. build/torch214-metal-aarch64-darwin/metadata.json +33 -0
  31. build/torch214-metal-aarch64-darwin/metadata.json.sigstore +1 -0
  32. build/torch214-metal-aarch64-darwin/symbols.json +37 -0
  33. build/torch215-metal-aarch64-darwin/__init__.py +40 -0
  34. build/torch215-metal-aarch64-darwin/_ops.py +9 -0
  35. build/torch215-metal-aarch64-darwin/_topk_metal_fe2bb66.abi3.so +3 -0
  36. build/torch215-metal-aarch64-darwin/layers.py +39 -0
  37. build/torch215-metal-aarch64-darwin/metadata.json +33 -0
  38. build/torch215-metal-aarch64-darwin/metadata.json.sigstore +1 -0
  39. build/torch215-metal-aarch64-darwin/symbols.json +37 -0
README.md CHANGED
@@ -3,7 +3,7 @@ library_name: kernels
3
  license: mit
4
  ---
5
 
6
- This is the repository card of kernels-community/topk that has been pushed on the Hub. It was built to be used with the [`kernels` library](https://github.com/huggingface/kernels). This card was automatically generated.
7
 
8
  ## How to use
9
 
@@ -11,7 +11,7 @@ This is the repository card of kernels-community/topk that has been pushed on th
11
  # make sure `kernels` is installed: `pip install -U kernels`
12
  from kernels import get_kernel
13
 
14
- kernel_module = get_kernel("kernels-community/topk", version=1)
15
  SoftmaxTopKRouter = kernel_module.SoftmaxTopKRouter
16
 
17
  SoftmaxTopKRouter(...)
 
3
  license: mit
4
  ---
5
 
6
+ This is the repository card of transformers-community/topk that has been pushed on the Hub. It was built to be used with the [`kernels` library](https://github.com/huggingface/kernels). This card was automatically generated.
7
 
8
  ## How to use
9
 
 
11
  # make sure `kernels` is installed: `pip install -U kernels`
12
  from kernels import get_kernel
13
 
14
+ kernel_module = get_kernel("transformers-community/topk", version=1)
15
  SoftmaxTopKRouter = kernel_module.SoftmaxTopKRouter
16
 
17
  SoftmaxTopKRouter(...)
build/torch210-metal-aarch64-darwin/__init__.py ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Top-k over a small row, as a torch op.
2
+
3
+ For a MoE router. torch's MPS `topk` is a full sort, and so is ggml's -- `GGML_OP_TOP_K` dispatches
4
+ `kernel_argsort_f32_i32_desc` -- which is why this is written rather than ported: selecting the
5
+ largest 8 of 256 logits does not need the row ordered. 26us against 71us, once per layer per token.
6
+ """
7
+
8
+ import os
9
+ from pathlib import Path
10
+
11
+ import torch
12
+
13
+
14
+ # A local (non-nix) build leaves the metallib on disk beside this module instead of embedding it, and
15
+ # `dispatch.mm` looks it up through this variable when nothing is embedded. Set before the extension
16
+ # is imported, and never over an existing value, so an explicit choice still wins.
17
+ _METALLIB = Path(__file__).parent / "ggml-metal.metallib"
18
+ if _METALLIB.is_file():
19
+ os.environ.setdefault("TOPK_METALLIB", str(_METALLIB))
20
+
21
+ from ._ops import add_op_namespace_prefix, ops # noqa: E402
22
+ from .layers import SoftmaxTopKRouter # noqa: E402,F401
23
+
24
+
25
+ def top_k(logits: torch.Tensor, k: int, softmax: bool = False):
26
+ """`(values, indices)` of the largest `k` per row of a 2D f32 tensor.
27
+
28
+ `indices` is int32, which is what an expert-routed matmul wants, so routing them onward costs no
29
+ cast. With `softmax`, `values` is softmaxed over the selected k.
30
+ """
31
+ return ops.top_k(logits, k, softmax)
32
+
33
+
34
+ @torch.library.register_fake(add_op_namespace_prefix("top_k"))
35
+ def _top_k_fake(logits, k, softmax):
36
+ rows = logits.shape[0]
37
+ return [logits.new_empty((rows, k)), logits.new_empty((rows, k), dtype=torch.int32)]
38
+
39
+
40
+ __all__ = ["SoftmaxTopKRouter", "top_k"]
build/torch210-metal-aarch64-darwin/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _topk_metal_fe2bb66
3
+ ops = torch.ops._topk_metal_fe2bb66
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_topk_metal_fe2bb66::{op_name}"
build/torch210-metal-aarch64-darwin/_topk_metal_fe2bb66.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:696ca60a2f35db6d84db00ba9d83250161435b3e10a003a2a3346b6ae636565c
3
+ size 131064
build/torch210-metal-aarch64-darwin/layers.py ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Layer-level entry points, for `kernels`' layer mapping.
2
+
3
+ `transformers` marks the layers a kernel may replace with `@use_kernel_forward_from_hub("<name>")`, and a
4
+ kernel repository supplies a class of that name whose `forward` is grafted onto the real module. The module
5
+ keeps its own parameters and constructor -- the class here is stateless, which `kernels` enforces: no
6
+ `__init__`, no members besides `forward`, and a signature matching the layer being replaced.
7
+
8
+ Named `SoftmaxTopKRouter` rather than `TopKRouter` because the rewrite below is only valid for routers
9
+ that score with a softmax. One that scores with a sigmoid returns the same shapes and would graft
10
+ cleanly onto this, then be quietly wrong.
11
+ """
12
+
13
+ import torch
14
+ import torch.nn as nn
15
+ import torch.nn.functional as F
16
+
17
+ from ._ops import ops
18
+
19
+
20
+ class SoftmaxTopKRouter(nn.Module):
21
+ """A softmax router's top-k, in two dispatches instead of four.
22
+
23
+ The model softmaxes over every expert, takes the top `k`, then renormalizes those `k`. Softmax is
24
+ monotonic, so the top `k` probabilities belong to the top `k` logits, and renormalizing them is a
25
+ softmax over just those logits -- `exp(x_i) / sum_{j in topk} exp(x_j)` either way. So the whole
26
+ tail is skipped: select first, then softmax the `k` that survived, which the kernel does in the
27
+ same pass.
28
+
29
+ Worth it because a MoE decode step is dispatch-bound rather than arithmetic-bound: this is 40
30
+ layers x 2 fewer operations, and the top-k itself stops being a full sort.
31
+
32
+ `indices` comes back int32, which is what an expert-routed matmul wants.
33
+ """
34
+
35
+ def forward(self, hidden_states: torch.Tensor):
36
+ hidden_states = hidden_states.reshape(-1, self.hidden_dim)
37
+ router_logits = F.linear(hidden_states, self.weight)
38
+ scores, indices = ops.top_k(router_logits, self.top_k, True)
39
+ return router_logits, scores.to(router_logits.dtype), indices
build/torch210-metal-aarch64-darwin/metadata.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "topk",
3
+ "id": "_topk_metal_fe2bb66",
4
+ "version": 1,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "MIT",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "metal"
11
+ },
12
+ "digest": {
13
+ "algorithm": "sha256",
14
+ "files": {
15
+ "__init__.py": "cm0ZJnxWpFzy3M3RrxrS6q9T1otdIBa+Npd7kteAZbg=",
16
+ "_ops.py": "r7EEKA36ZAicnt9YXZ1CZ8k5OkzXbWUk3oowDZI1L6A=",
17
+ "_topk_metal_fe2bb66.abi3.so": "aWymCi81222E2wC6nYMlAWFDWz4QoAOiozRrauY2Vlw=",
18
+ "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg=",
19
+ "symbols.json": "gLRlxKtWt92J4oVk9FQdvL89CipliDHfkh6yTVY1WZ0="
20
+ }
21
+ },
22
+ "provenance": {
23
+ "kernel-builder": {
24
+ "version": "0.18.0-dev0",
25
+ "commit": "d054906a13710b811b96697b4635f03020842733",
26
+ "dirty": false
27
+ },
28
+ "kernel": {
29
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
30
+ "dirty": false
31
+ }
32
+ }
33
+ }
build/torch210-metal-aarch64-darwin/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHQTCCBsigAwIBAgIUL3ApRUzZW2NHWjxj7J8Vbdk+PdQwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTEwNjU1WhcNMjYxMDE5MTExNjU1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE33gED6XiOcumK9goLHSI7Z2twmM3Keapl2IXfSoFYM//Av6/LA3t4iZoZr//ZTWDPqZU5vAD9V80QtdkIKgG6KOCBecwggXjMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGZlMmJiNjZmZWU2YzJhNzdlY2NmMDhhMDUwOGRjNTc0MjhkNDg4ZWQwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzkyMzk2NzU3ODUvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoVPX0nMAAAQDAEcwRQIhAPQRwJm9BlpgaDAJi270QjYJYb0DCNxLi1ZkO4jZ/XO9AiBEsVtKxXjG/8+decKPo4pl5OJVn9ZT9FYw+Pm87GRiCDAKBggqhkjOPQQDAwNnADBkAjAKOGzXnmVHGekrTxSSFO4A5LRDP/KcIsHJE5rXRFN0pxKzU+aqlTTbU5tVc/eK8ZICMBWelAJgLgZ6YO/hTO+toPjxiF9wohU0HRmUvRMDs7DW9iNbwojcYR5trlyLZEmJXQ=="},"tlogEntries":[{"logIndex":"3320115746","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792408015","inclusionPromise":{"signedEntryTimestamp":"MEUCID7vH0gxZ/OxPICQsOUbLUZr96ja78a+QrWz357qt6dCAiEAlr4H8fXLp/eDUrc5o951ofI/fCP4sNNcYSA4+DYb0GI="},"inclusionProof":{"logIndex":"3198211484","rootHash":"gRccghdEhb8xXaSRlsZAblLVfy6rm+MKnkOUEZxzZ8w=","treeSize":"3198211485","hashes":["gW9jUV0Fe8Jp1U57cEiAkNeJ2VpEpeL5Fig3UDm5KCM=","lfSf/6xxSUcy3vqEQWG2+DKnZa1WYkjjIlYh49YklVo=","8hVEdD6MXFgkGAtm2HNMKtmKAbOUoxMRgfumFCEuKzQ=","ECYzvfCoyHukeLrGCXqe5iCBYkv0lOIit5fx+ql4GCc=","y0BpPrMW+5doJQr1GTJoL730xI7z8ggwEnp1wjxJG1Q=","NvhAA1+LqtXvaowiFXcolXI/TyFO3CsufLfJu3VJv2k=","PJRsVvScXNHmqQge+wrG01cIyckZNEkkYLfYRFm0H14=","f4MktXqhBPk7ruDBxwgqTvXa7eCNzak9cUObXS0eTxI=","OlLDeTiZ1vIMDel4vGDtbNVnrFnzDe1MFV5rBN5Ep4o=","uCZQe757l2sS1c05Y7TzOwEm+X8MeGLIUCkEOmFVOz4=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3198211485\ngRccghdEhb8xXaSRlsZAblLVfy6rm+MKnkOUEZxzZ8w=\n\n— rekor.sigstore.dev wNI9ajBFAiA0kR9MEfZTtPCRWD0ABQAtjnCbcF+MXskTom7qP7BBTwIhAONdrBtLNARcAyXPaPvcX+OS9PyMAHJgqsNav7KrhyEg\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIyZmU0ZTUyNDljZDlhYTZiNDU1NmM0ODk0ZWZlN2MxY2VmYmY3NjZiZDVjMzFlNTYzZjI1ODNiMWNmY2U1MzliIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUQvenhDVE1NZm9OTkN2UE53eHJvU2t3K1RCam5wSmRyQlZ2ekZWVEhrRkJnSWdNc0JSa2dHMG56eEtTK2pYZzE5aDlXNWhSa2QrS1A4eWxVWWlyRkhGVW13PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJWRU5EUW5OcFowRjNTVUpCWjBsVlRETkJjRkpWZWxwWE1rNUlWMnA0YWpkS09GWmlaR3NyVUdSUmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZFVjNUbXBWTVZkb1kwNU5hbGw0VFVSRk5VMVVSWGhPYWxVeFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVV6TTJkRlJEWllhVTlqZFcxTE9XZHZURWhUU1RkYU1uUjNiVTB6UzJWaGNHd3lTVmdLWmxOdlJsbE5MeTlCZGpZdlRFRXpkRFJwV205YWNpOHZXbFJYUkZCeFdsVTFka0ZFT1ZZNE1GRjBaR3RKUzJkSE5rdFBRMEpsWTNkbloxaHFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cGFiVlY1V1cxSk1rNXRXbXhhVkZwcVRXMUZNMDR5Vm1wWk1sbDNUMGRGZDA1VVFUUmFSMDB4VG5wUmVVOUhVVEJQUkdoc1drUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOWFiVlY1V1cxSk1rNXRXbXhhVkZwcVRXMUZNMDR5Vm1wWk1sbDNUMGRGZDA1VVFUUmFSMDB4VG5wUmVVOUhVVEJQUkdoc1drUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmh0V2xSS2FWbHFXVEphYlZac1RtMU5lVmxVWXpOYVYwNXFXbXBCTkZsVVFURk5SR2hyV1hwVk0wNUVTVFFLV2tSUk5FOUhWbXROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBkYWJFMXRTbWxPYWxwdFdsZFZNbGw2U21nS1RucGtiRmt5VG0xTlJHaG9UVVJWZDA5SFVtcE9WR013VFdwb2EwNUVaelJhVjFGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrMTZhM2tLVFhwck1rNTZWVE5QUkZWMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBaMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPRUpJYjBGbFFVSXlRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05V1VGZ3diazFCUVVGUlJFRkZZM2RTVVVsb1FWQlJVZ3AzU20wNVFteHdaMkZFUVVwcE1qY3dVV3BaU2xsaU1FUkRUbmhNYVRGYWEwODBhbG92V0U4NVFXbENSWE5XZEV0NFdHcEhMemdyWkdWalMxQnZOSEJzQ2pWUFNsWnVPVnBVT1VaWmR5dFFiVGczUjFKcFEwUkJTMEpuWjNGb2EycFBVRkZSUkVGM1RtNUJSRUpyUVdwQlMwOUhlbGh1YlZaSVIyVnJjbFI0VTFNS1JrODBRVFZNVWtSUUwwdGpTWE5JU2tVMWNsaFNSazR3Y0hoTGVsVXJZWEZzVkZSaVZUVjBWbU12WlVzNFdrbERUVUpYWld4QlNtZE1aMW8yV1U4dmFBcFVUeXQwYjFCcWVHbEdPWGR2YUZVd1NGSnRWWFpTVFVSek4wUlhPV2xPWW5kdmFtTlpValYwY214NVRGcEZiVXBZVVQwOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg+9XineQ6YETjQY6AWfoHq4iEdj0dtyuPcg18Jv+L32gCFF5jePbviC36G3+gQq25EVBv6m/EGA8yMDI2MTAxOTExMDY1NVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTEwNjU1WjAvBgkqhkiG9w0BCQQxIgQgwoCl3yga7tvI/DldD7xw0i3mLQGwEBrl3HjEVqn4LLcwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxAJRi49gyp+ZPFOR+PEW0fSF/csenkQPZfbKmhONCMW3+jJK1HaLUUNZA3U2Z14iv/gIxAN1m8TwxLP6OaWe5veVZV/yoOA/KiN9PVbS1HatCOg6uOI9Wa+t5czfWxOvLqgP+IA=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"L+TlJJzZqmtFVsSJTv58HO+/dmvVwx5WPyWDsc/OU5s="},"signature":"MEUCIQD/zxCTMMfoNNCvPNwxroSkw+TBjnpJdrBVvzFVTHkFBgIgMsBRkgG0nzxKS+jXg19h9W5hRkd+KP8ylUYirFHFUmw="}}
build/torch210-metal-aarch64-darwin/symbols.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_topk_metal_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "top_k",
7
+ "qualname": "top_k",
8
+ "module": "_topk_metal_fe2bb66",
9
+ "kind": "function",
10
+ "doc": "`(values, indices)` of the largest `k` per row of a 2D f32 tensor.\n\n`indices` is int32, which is what an expert-routed matmul wants, so routing them onward costs no\ncast. With `softmax`, `values` is softmaxed over the selected k.",
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "logits",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "k",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "int"
24
+ },
25
+ {
26
+ "name": "softmax",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": "False",
29
+ "annotation": "bool"
30
+ }
31
+ ],
32
+ "return_annotation": null
33
+ }
34
+ }
35
+ ],
36
+ "layers": []
37
+ }
build/torch211-metal-aarch64-darwin/__init__.py ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Top-k over a small row, as a torch op.
2
+
3
+ For a MoE router. torch's MPS `topk` is a full sort, and so is ggml's -- `GGML_OP_TOP_K` dispatches
4
+ `kernel_argsort_f32_i32_desc` -- which is why this is written rather than ported: selecting the
5
+ largest 8 of 256 logits does not need the row ordered. 26us against 71us, once per layer per token.
6
+ """
7
+
8
+ import os
9
+ from pathlib import Path
10
+
11
+ import torch
12
+
13
+
14
+ # A local (non-nix) build leaves the metallib on disk beside this module instead of embedding it, and
15
+ # `dispatch.mm` looks it up through this variable when nothing is embedded. Set before the extension
16
+ # is imported, and never over an existing value, so an explicit choice still wins.
17
+ _METALLIB = Path(__file__).parent / "ggml-metal.metallib"
18
+ if _METALLIB.is_file():
19
+ os.environ.setdefault("TOPK_METALLIB", str(_METALLIB))
20
+
21
+ from ._ops import add_op_namespace_prefix, ops # noqa: E402
22
+ from .layers import SoftmaxTopKRouter # noqa: E402,F401
23
+
24
+
25
+ def top_k(logits: torch.Tensor, k: int, softmax: bool = False):
26
+ """`(values, indices)` of the largest `k` per row of a 2D f32 tensor.
27
+
28
+ `indices` is int32, which is what an expert-routed matmul wants, so routing them onward costs no
29
+ cast. With `softmax`, `values` is softmaxed over the selected k.
30
+ """
31
+ return ops.top_k(logits, k, softmax)
32
+
33
+
34
+ @torch.library.register_fake(add_op_namespace_prefix("top_k"))
35
+ def _top_k_fake(logits, k, softmax):
36
+ rows = logits.shape[0]
37
+ return [logits.new_empty((rows, k)), logits.new_empty((rows, k), dtype=torch.int32)]
38
+
39
+
40
+ __all__ = ["SoftmaxTopKRouter", "top_k"]
build/torch211-metal-aarch64-darwin/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _topk_metal_fe2bb66
3
+ ops = torch.ops._topk_metal_fe2bb66
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_topk_metal_fe2bb66::{op_name}"
build/torch211-metal-aarch64-darwin/_topk_metal_fe2bb66.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4e3da2f94976a36f95248b4ea71531da0016805bacf214c6c68bd87ac9d36cfb
3
+ size 131064
build/torch211-metal-aarch64-darwin/layers.py ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Layer-level entry points, for `kernels`' layer mapping.
2
+
3
+ `transformers` marks the layers a kernel may replace with `@use_kernel_forward_from_hub("<name>")`, and a
4
+ kernel repository supplies a class of that name whose `forward` is grafted onto the real module. The module
5
+ keeps its own parameters and constructor -- the class here is stateless, which `kernels` enforces: no
6
+ `__init__`, no members besides `forward`, and a signature matching the layer being replaced.
7
+
8
+ Named `SoftmaxTopKRouter` rather than `TopKRouter` because the rewrite below is only valid for routers
9
+ that score with a softmax. One that scores with a sigmoid returns the same shapes and would graft
10
+ cleanly onto this, then be quietly wrong.
11
+ """
12
+
13
+ import torch
14
+ import torch.nn as nn
15
+ import torch.nn.functional as F
16
+
17
+ from ._ops import ops
18
+
19
+
20
+ class SoftmaxTopKRouter(nn.Module):
21
+ """A softmax router's top-k, in two dispatches instead of four.
22
+
23
+ The model softmaxes over every expert, takes the top `k`, then renormalizes those `k`. Softmax is
24
+ monotonic, so the top `k` probabilities belong to the top `k` logits, and renormalizing them is a
25
+ softmax over just those logits -- `exp(x_i) / sum_{j in topk} exp(x_j)` either way. So the whole
26
+ tail is skipped: select first, then softmax the `k` that survived, which the kernel does in the
27
+ same pass.
28
+
29
+ Worth it because a MoE decode step is dispatch-bound rather than arithmetic-bound: this is 40
30
+ layers x 2 fewer operations, and the top-k itself stops being a full sort.
31
+
32
+ `indices` comes back int32, which is what an expert-routed matmul wants.
33
+ """
34
+
35
+ def forward(self, hidden_states: torch.Tensor):
36
+ hidden_states = hidden_states.reshape(-1, self.hidden_dim)
37
+ router_logits = F.linear(hidden_states, self.weight)
38
+ scores, indices = ops.top_k(router_logits, self.top_k, True)
39
+ return router_logits, scores.to(router_logits.dtype), indices
build/torch211-metal-aarch64-darwin/metadata.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "topk",
3
+ "id": "_topk_metal_fe2bb66",
4
+ "version": 1,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "MIT",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "metal"
11
+ },
12
+ "digest": {
13
+ "algorithm": "sha256",
14
+ "files": {
15
+ "__init__.py": "cm0ZJnxWpFzy3M3RrxrS6q9T1otdIBa+Npd7kteAZbg=",
16
+ "_ops.py": "r7EEKA36ZAicnt9YXZ1CZ8k5OkzXbWUk3oowDZI1L6A=",
17
+ "_topk_metal_fe2bb66.abi3.so": "Tj2i+Ul2o2+VJItOpxUx2gAWgFus8hTGxovYesnTbPs=",
18
+ "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg=",
19
+ "symbols.json": "gLRlxKtWt92J4oVk9FQdvL89CipliDHfkh6yTVY1WZ0="
20
+ }
21
+ },
22
+ "provenance": {
23
+ "kernel-builder": {
24
+ "version": "0.18.0-dev0",
25
+ "commit": "d054906a13710b811b96697b4635f03020842733",
26
+ "dirty": false
27
+ },
28
+ "kernel": {
29
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
30
+ "dirty": false
31
+ }
32
+ }
33
+ }
build/torch211-metal-aarch64-darwin/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHRDCCBsmgAwIBAgIUeeefOosPRyDB6LGQmKdIDHPrWPkwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTEwNjU3WhcNMjYxMDE5MTExNjU3WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyNibXEUo2vIMLmv3YZFKvdLvCBy4rFw0NpGF5F5iu506EWFNhKgOA+Q05Hwdzw7Dv4JJFs8Bsxc3o3YFAPxlwKOCBegwggXkMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGZlMmJiNjZmZWU2YzJhNzdlY2NmMDhhMDUwOGRjNTc0MjhkNDg4ZWQwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzkyMzk2NzU3ODUvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiwYKKwYBBAHWeQIEAgR9BHsAeQB3AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoVPX20QAAAQDAEgwRgIhALLgruR89km4Wj/HxwD7FiBynVlM5kSF5L2IqE14q8xXAiEAyNboWO1ZusNuOL9pkHRPIKsZT4SLBuGqrjCVZZ1+vhUwCgYIKoZIzj0EAwMDaQAwZgIxAP/Ck71m7gEDthDhK0uUhjFhjbD0ZixSVN7n48kP0GxdlhUonmJIlqJ1MLfeE4TrmgIxAKcPW2+OezSWvljwO29aH7AMwmU+R1wHVprCVlkmhl8ZYSg4fBJOj723osH5759gnw=="},"tlogEntries":[{"logIndex":"3320115770","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792408018","inclusionPromise":{"signedEntryTimestamp":"MEUCIAQ7YLkdDA3zQAXxYDvXMce4ocEJikEISPAYXNfGm4HtAiEA3/s1BQwFWtA5L0g+9pT2wh+JS3uaJ3IOs4j6z2ZzA+c="},"inclusionProof":{"logIndex":"3198211508","rootHash":"aZVsVo1LmaWmuCXHZE4BswXyAxDvWEX61rOg0+bGhDw=","treeSize":"3198211510","hashes":["RHX/dkS1KDg7/32t8DZEUws8WAxElj7Zj04BixFRUCI=","lTS8W7Tsb5n3ynpjsUIkGu6c/4gu/A44ilz5HNVSZAA=","cMlUaO04DgA5GDbd0SRo8jiWdrJnxN9pd2kS0jvQ8Bg=","fJyPbvthTvpV2cG+OG+GTWsfSkKQT+rpc7u/UwYW4ms=","ECYzvfCoyHukeLrGCXqe5iCBYkv0lOIit5fx+ql4GCc=","y0BpPrMW+5doJQr1GTJoL730xI7z8ggwEnp1wjxJG1Q=","NvhAA1+LqtXvaowiFXcolXI/TyFO3CsufLfJu3VJv2k=","PJRsVvScXNHmqQge+wrG01cIyckZNEkkYLfYRFm0H14=","f4MktXqhBPk7ruDBxwgqTvXa7eCNzak9cUObXS0eTxI=","OlLDeTiZ1vIMDel4vGDtbNVnrFnzDe1MFV5rBN5Ep4o=","uCZQe757l2sS1c05Y7TzOwEm+X8MeGLIUCkEOmFVOz4=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3198211510\naZVsVo1LmaWmuCXHZE4BswXyAxDvWEX61rOg0+bGhDw=\n\n— rekor.sigstore.dev wNI9ajBEAiACFCIGmIddoNm2+0lTqqWKGekZ11glcec90hk9daKeZgIgB+D+PxCR1sBsxRLnzi34KocPzu+6KpWDFmAVRsm4twI=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIzNmNkYzM3ZTY5YTI2NmYxOWYxMDNiZjUxN2FmZGFhMDhlYjkxMzE4M2IyZDRkNzI2ZTM4YWQ4YmI3MDBmNmI4In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRm1KdEVORTgxN1dQR2ZWSXluTTNyYytKUU9NbEhhYmp1SmZscGd3MWtsVEFpQmZ1eFZLajRXbEJXN2ZPNHN5SStnVnB2OVlzclRNSGg1YkFpR2UxcXNFZUE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFNSRU5EUW5OdFowRjNTVUpCWjBsVlpXVmxaazl2YzFCU2VVUkNOa3hIVVcxTFpFbEVTRkJ5VjFCcmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZFVjNUbXBWTTFkb1kwNU5hbGw0VFVSRk5VMVVSWGhPYWxVelYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVY1VG1saVdFVlZiekoyU1UxTWJYWXpXVnBHUzNaa1RIWkRRbmswY2taM01FNXdSMFlLTlVZMWFYVTFNRFpGVjBaT2FFdG5UMEVyVVRBMVNIZGtlbmMzUkhZMFNrcEdjemhDYzNoak0yOHpXVVpCVUhoc2QwdFBRMEpsWjNkbloxaHJUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cGFiVlY1V1cxSk1rNXRXbXhhVkZwcVRXMUZNMDR5Vm1wWk1sbDNUMGRGZDA1VVFUUmFSMDB4VG5wUmVVOUhVVEJQUkdoc1drUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOWFiVlY1V1cxSk1rNXRXbXhhVkZwcVRXMUZNMDR5Vm1wWk1sbDNUMGRGZDA1VVFUUmFSMDB4VG5wUmVVOUhVVEJQUkdoc1drUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmh0V2xSS2FWbHFXVEphYlZac1RtMU5lVmxVWXpOYVYwNXFXbXBCTkZsVVFURk5SR2hyV1hwVk0wNUVTVFFLV2tSUk5FOUhWbXROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBkYWJFMXRTbWxPYWxwdFdsZFZNbGw2U21nS1RucGtiRmt5VG0xTlJHaG9UVVJWZDA5SFVtcE9WR013VFdwb2EwNUVaelJhVjFGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrMTZhM2tLVFhwck1rNTZWVE5QUkZWMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBkMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPVUpJYzBGbFVVSXpRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05V1VGZ3lNRkZCUVVGUlJFRkZaM2RTWjBsb1FVeE1ad3B5ZFZJNE9XdHRORmRxTDBoNGQwUTNSbWxDZVc1V2JFMDFhMU5HTlV3eVNYRkZNVFJ4T0hoWVFXbEZRWGxPWW05WFR6RmFkWE5PZFU5TU9YQnJTRkpRQ2tsTGMxcFVORk5NUW5WSGNYSnFRMVphV2pFcmRtaFZkME5uV1VsTGIxcEplbW93UlVGM1RVUmhVVUYzV21kSmVFRlFMME5yTnpGdE4yZEZSSFJvUkdnS1N6QjFWV2hxUm1ocVlrUXdXbWw0VTFaT04yNDBPR3RRTUVkNFpHeG9WVzl1YlVwSmJIRktNVTFNWm1WRk5GUnliV2RKZUVGTFkxQlhNaXRQWlhwVFZ3cDJiR3AzVHpJNVlVZzNRVTEzYlZVclVqRjNTRlp3Y2tOV2JHdHRhR3c0V2xsVFp6Um1Ra3BQYWpjeU0yOXpTRFUzTlRsbmJuYzlQUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg4ffv0WamfDLXgEP4ANJWidhMAYXocgLlPrKzGC31zdACFBFbfo+objg+ZnLuLAZRmJg4qlA+GA8yMDI2MTAxOTExMDY1N1owAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTEwNjU3WjAvBgkqhkiG9w0BCQQxIgQg6C5Lb/cvBthZ+sAepnB2EZglX6u/DKN/sytofcW4jpYwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwaNNimPzA6EHjLttUDe4diUcKG88YmG+ABX5mz1uM4+MfpiUS4fki2usahxo9Jca2AjEA5J/cw9Qh7q5U2a7brNzHMNojxHACQTe70CjVY02Cts4mDyMnsgghuo1i6q/+e0AK"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"Ns3DfmmiZvGfEDv1F6/aoI65Exg7LU1ybjiti7cA9rg="},"signature":"MEQCIFmJtENE817WPGfVIynM3rc+JQOMlHabjuJflpgw1klTAiBfuxVKj4WlBW7fO4syI+gVpv9YsrTMHh5bAiGe1qsEeA=="}}
build/torch211-metal-aarch64-darwin/symbols.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_topk_metal_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "top_k",
7
+ "qualname": "top_k",
8
+ "module": "_topk_metal_fe2bb66",
9
+ "kind": "function",
10
+ "doc": "`(values, indices)` of the largest `k` per row of a 2D f32 tensor.\n\n`indices` is int32, which is what an expert-routed matmul wants, so routing them onward costs no\ncast. With `softmax`, `values` is softmaxed over the selected k.",
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "logits",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "k",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "int"
24
+ },
25
+ {
26
+ "name": "softmax",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": "False",
29
+ "annotation": "bool"
30
+ }
31
+ ],
32
+ "return_annotation": null
33
+ }
34
+ }
35
+ ],
36
+ "layers": []
37
+ }
build/torch212-metal-aarch64-darwin/_ops.py CHANGED
@@ -1,9 +1,9 @@
1
  import torch
2
- from . import _topk_metal_4487601
3
- ops = torch.ops._topk_metal_4487601
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
- return f"_topk_metal_4487601::{op_name}"
 
1
  import torch
2
+ from . import _topk_metal_fe2bb66
3
+ ops = torch.ops._topk_metal_fe2bb66
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
+ return f"_topk_metal_fe2bb66::{op_name}"
build/torch212-metal-aarch64-darwin/{_topk_metal_4487601.abi3.so → _topk_metal_fe2bb66.abi3.so} RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a9e327acb62a9ed5e1084d661b2f7973c4c3e7cb054969cae09a9970c2da69cf
3
  size 131048
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:55adf3a80eb5ab24278c4eaa1770921b96b781ff6de297ebe5f51817ea38b58c
3
  size 131048
build/torch212-metal-aarch64-darwin/metadata.json CHANGED
@@ -1,9 +1,11 @@
1
  {
2
  "name": "topk",
3
- "id": "_topk_metal_4487601",
4
  "version": 1,
 
5
  "license": "MIT",
6
  "python-depends": [],
 
7
  "backend": {
8
  "type": "metal"
9
  },
@@ -11,19 +13,20 @@
11
  "algorithm": "sha256",
12
  "files": {
13
  "__init__.py": "cm0ZJnxWpFzy3M3RrxrS6q9T1otdIBa+Npd7kteAZbg=",
14
- "_ops.py": "xOrvDo3rSlmyE6weyDUe2mXbazecsg33sIwuxnCmCLs=",
15
- "_topk_metal_4487601.abi3.so": "qeMnrLYqntXhCE1mGy95c8TD58sFSWnK4JqZcMLaac8=",
16
- "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg="
 
17
  }
18
  },
19
  "provenance": {
20
  "kernel-builder": {
21
- "version": "0.17.0-dev0",
22
- "sha": "81f55ea30fd8f819dcf93a3c934dd584c895bd2f",
23
  "dirty": false
24
  },
25
  "kernel": {
26
- "sha": "4487601ae67f471ea56211a638840511bae93589",
27
  "dirty": false
28
  }
29
  }
 
1
  {
2
  "name": "topk",
3
+ "id": "_topk_metal_fe2bb66",
4
  "version": 1,
5
+ "kernels-minver": "0.14.0",
6
  "license": "MIT",
7
  "python-depends": [],
8
+ "kernel-depends": [],
9
  "backend": {
10
  "type": "metal"
11
  },
 
13
  "algorithm": "sha256",
14
  "files": {
15
  "__init__.py": "cm0ZJnxWpFzy3M3RrxrS6q9T1otdIBa+Npd7kteAZbg=",
16
+ "_ops.py": "r7EEKA36ZAicnt9YXZ1CZ8k5OkzXbWUk3oowDZI1L6A=",
17
+ "_topk_metal_fe2bb66.abi3.so": "Va3zqA61qyQnjE6qF3CSG5a3gf9t4pfr5fUYF+o4tYw=",
18
+ "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg=",
19
+ "symbols.json": "gLRlxKtWt92J4oVk9FQdvL89CipliDHfkh6yTVY1WZ0="
20
  }
21
  },
22
  "provenance": {
23
  "kernel-builder": {
24
+ "version": "0.18.0-dev0",
25
+ "commit": "d054906a13710b811b96697b4635f03020842733",
26
  "dirty": false
27
  },
28
  "kernel": {
29
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
30
  "dirty": false
31
  }
32
  }
build/torch212-metal-aarch64-darwin/metadata.json.sigstore CHANGED
@@ -1 +1 @@
1
- {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHYTCCBuagAwIBAgIUC+UMTY33OVbyun+EcTri4Sf391kwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwOTE2MDkyMDIwWhcNMjYwOTE2MDkzMDIwWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQZ69QvUxhlbzPAyALWM8ngSkRG3MUDH2Xx8/IVGAFzNtNtkB0DN3CAUMDv0gx9geAMXnANl6n0eBFuSGxj82UKOCBgUwggYBMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQU7KyptHc1KKLL+T8/Mg41xDjZz4YwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wbwYDVR0RAQH/BGUwY4ZhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMB8GCisGAQQBg78wAQIEEXdvcmtmbG93X2Rpc3BhdGNoMDYGCisGAQQBg78wAQMEKDQ0ODc2MDFhZTY3ZjQ3MWVhNTYyMTFhNjM4ODQwNTExYmFlOTM1ODkwGwYKKwYBBAGDvzABBAQNQnVpbGQgKG1hY09TKTArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMHEGCisGAQQBg78wAQkEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAEKBCoMKDQ0ODc2MDFhZTY3ZjQ3MWVhNTYyMTFhNjM4ODQwNTExYmFlOTM1ODkwHQYKKwYBBAGDvzABCwQPDA1naXRodWItaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoNDQ4NzYwMWFlNjdmNDcxZWE1NjIxMWE2Mzg4NDA1MTFiYWU5MzU4OTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBxBgorBgEEAYO/MAESBGMMYWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC1tYWMueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABEwQqDCg0NDg3NjAxYWU2N2Y0NzFlYTU2MjExYTYzODg0MDUxMWJhZTkzNTg5MCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwZAYKKwYBBAGDvzABFQRWDFRodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvYWN0aW9ucy9ydW5zLzM1MDc2MzQ0MDgwL2F0dGVtcHRzLzEwFgYKKwYBBAGDvzABFgQIDAZwdWJsaWMwRgYKKwYBBAGDvzABGAQ4DDZyZXBvOmh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5OnJlZjpyZWZzL2hlYWRzL21haW4wgYkGCisGAQQB1nkCBAIEewR5AHcAdQDdPTBqxscRMmMZHhyZZzcCokpeuN48rf+HinKALynujgAAAaCphGBIAAAEAwBGMEQCIGXdA9+JOYdWXWWzA102Viq0oBrlGNsx9lXYh5RVJ3HEAiAYA015Z52zXATJLeT2J4CHqZo34C2gdjfZW6ANrpLpiTAKBggqhkjOPQQDAwNpADBmAjEAjtaDVk5yK95u68H5NPYcilJqCmKVJTCQVQ61/9WyBVLUpbADjwAzBEArHZA0v13GAjEAonLMGXujh289ka37nmSqSH4Zi4Zfe3Hx/1d5E+uHIJKvBZM44ljFKekwhwXect5S"},"tlogEntries":[{"logIndex":"2858534858","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1789550420","inclusionPromise":{"signedEntryTimestamp":"MEUCIBQ6qQUNwSUv40P0ywOYOEGVsdV1KIH0bnU6ngho3vxnAiEAwG1GvLfOW7RCOpSC8tbyLmPvxrm93diruvVsPwhroOk="},"inclusionProof":{"logIndex":"2736630596","rootHash":"i8eqEa2ipwjCWjwEeQUt2ernUq+2BJ8KcARz/ykr8ts=","treeSize":"2736630650","hashes":["HMV7GbOh76tRIovCTo3mfJmacLa1Kw65Uk9nnL+iMec=","ZD2sMMsIR3LyaSMuWJ/Z6KoKsVzw7SXr3wmtkptA5TI=","bedZOED/E7RZ8fH7ecGOfXedAo1IL6QDjVH5Md6tO/w=","ZIwGYpLia7yUy3Ef7NVGueNL3H5qd2pwQLO4bvpiWcw=","61RBiKNkPP7NXGCw88QyFXeY3cBAZmo0LYIIGIiXuA0=","q6NlzJ23iyAeSLseZzPZpW6Xv7j5jr7iiIhDzc/OFLg=","HNVLyUxO1Pq25Kut68jqr9ZD4z2WrawTGKsnPznTxqQ=","bynYIBi7dSBfbR++cVAYLRpoO/53Yg4rXk4ROJOz7d8=","0zc0dWa92D1MH6PHIpwNcewTnHOTb2SMg2Ro15phOdk=","jieVHnPwrABDERyDSVypvCEFTVMWxOFS+70jWdEitBs=","vUFRP2i+7bffYhjCablFlqxeZu4U4kxyX4BK2ibab68=","C26HqwjiAPfvEvotAiupwz8y9X64HBDcePER0PhTqxk=","XIMTmr1TC9yrTE6CkpwHXaSeYiYoh7WDOvOioMYo1dM=","n+hxEhyY8wOf+95n5A1RtNWPjG3kTLmhzLyAzxUY9xA=","imrIvZj6JTyKLlSm0Orl7ea26tZp+b9u+qI7QmzJJEM=","bUR40APIlDp+hSRs9Sn61sQzjB3I1nWW/EVYUSplyQk=","gGfwuhE97xnhmxu6exffPtS05ABS4/ldyg66sFcxSRE=","jhevWFOJ2cWU6SvzMnAe08zHGcVquRlP7gAed39+wI4=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2736630650\ni8eqEa2ipwjCWjwEeQUt2ernUq+2BJ8KcARz/ykr8ts=\n\n— rekor.sigstore.dev wNI9ajBFAiEApFCZakZVJ3qtLQeZoSfJ3EjlZ61khGqTP3lVAFJkhBwCIHlvmnLpzX0NoOXwqUcqMUiFb8WHcn+UjWJtfRt3s6Fs\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIzMTZkZjU5MzQ0MTM1MWFkZDFhNDYxYTc4MGY2MDFlZjEyNmRhMmM5OTRlODVmM2JhNzI5ZTMxMDFiM2I1ZDE1In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUURNU2xTdnBqaEJ4RFZNajh3OVlyQnhHOHBoZ0lYVi8yMnM4UGJCSm1JN0JnSWdHU1cvN2pYck84OW02TjdFaVNSdEllTXhyQkFRN0RoQ3NrbmdINEE1V2NzPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFpWRU5EUW5WaFowRjNTVUpCWjBsVlF5dFZUVlJaTXpOUFZtSjVkVzRyUldOVWNtazBVMll6T1RGcmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVUlRKTlJHdDVUVVJKZDFkb1kwNU5hbGwzVDFSRk1rMUVhM3BOUkVsM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZSV2pZNVVYWlZlR2hzWW5wUVFYbEJURmROT0c1blUydFNSek5OVlVSSU1saDRPQzhLU1ZaSFFVWjZUblJPZEd0Q01FUk9NME5CVlUxRWRqQm5lRGxuWlVGTldHNUJUbXcyYmpCbFFrWjFVMGQ0YWpneVZVdFBRMEpuVlhkbloxbENUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlUzUzNsd0NuUklZekZMUzB4TUsxUTRMMDFuTkRGNFJHcGFlalJaZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJKM1dVUldVakJTUVZGSUwwSkhWWGRaTkZwb1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4WE1XaFplVFUxQ2xsWE1YTlJTRXBzV201TmRtRkhWbWhhU0UxMllsZEdjR0pxUVRWQ1oyOXlRbWRGUlVGWlR5OU5RVVZDUWtOMGIyUklVbmRqZW05MlRETlNkbUV5Vm5VS1RHMUdhbVJIYkhaaWJrMTFXakpzTUdGSVZtbGtXRTVzWTIxT2RtSnVVbXhpYmxGMVdUSTVkRTFDT0VkRGFYTkhRVkZSUW1jM09IZEJVVWxGUlZoa2RncGpiWFJ0WWtjNU0xZ3lVbkJqTTBKb1pFZE9iMDFFV1VkRGFYTkhRVkZSUW1jM09IZEJVVTFGUzBSUk1FOUVZekpOUkVab1dsUlpNMXBxVVROTlYxWm9DazVVV1hsTlZFWm9UbXBOTkU5RVVYZE9WRVY0V1cxR2JFOVVUVEZQUkd0M1IzZFpTMHQzV1VKQ1FVZEVkbnBCUWtKQlVVNVJibFp3WWtkUlowdEhNV2dLV1RBNVZFdFVRWEpDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0l4YjJSWFpHNWhWelZ1V20xR2FscFRPWEphV0VwMVdsZDRla3hYVG5aaVZ6RXhZbTFzTUFwbFZFRmtRbWR2Y2tKblJVVkJXVTh2VFVGRlIwSkJPWGxhVjFwNlRESm9iRmxYVW5wTU1qRm9ZVmMwZDA5M1dVdExkMWxDUWtGSFJIWjZRVUpEUVZGMENrUkRkRzlrU0ZKM1kzcHZka3d6VW5aaE1sWjFURzFHYW1SSGJIWmliazExV2pKc01HRklWbWxrV0U1c1kyMU9kbUp1VW14aWJsRjFXVEk1ZEUxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZGclJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJVdENRMjlOUzBSUk1FOUVZekpOUkVab1dsUlpNMXBxVVRNS1RWZFdhRTVVV1hsTlZFWm9UbXBOTkU5RVVYZE9WRVY0V1cxR2JFOVVUVEZQUkd0M1NGRlpTMHQzV1VKQ1FVZEVkbnBCUWtOM1VWQkVRVEZ1WVZoU2J3cGtWMGwwWVVjNWVtUkhWbXROUlVGSFEybHpSMEZSVVVKbk56aDNRVkYzUlUxbmQzZGhTRkl3WTBoTk5reDVPVzVoV0ZKdlpGZEpkVmt5T1hSTU1tZ3hDbG95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFJpV0ZaMVlWaFNOVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVEJGUzJkM2IwNUVVVFFLVG5wWmQwMVhSbXhPYW1SdFRrUmplRnBYUlRGT2FrbDRUVmRGTWsxNlp6Uk9SRUV4VFZSR2FWbFhWVFZOZWxVMFQxUkJaa0puYjNKQ1owVkZRVmxQTHdwTlFVVlBRa0pGVFVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJZVUpuYjNKQ1owVkZRVmxQTDAxQlJWQkNRWGROUTJwRmQwNTZSVEJPZWxVeENrMXFhM2RNWjFsTFMzZFpRa0pCUjBSMmVrRkNSVUZSWjBSQ05XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZDBkQldVdExkMWxDUWtGSFJIWjZRVUpGVVZGTFJFRm5lVTVVWTNsTlJHTXdUWHBDZUVKbmIzSkNaMFZGUVZsUEwwMUJSVk5DUjAxTldWZG9NQXBrU0VKNlQyazRkbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemgxQ2xveWJEQmhTRlpwVEROa2RtTnRkRzFpUnprelkzazVhV1JYYkhOYVF6RjBXVmROZFdWWFJuUmlSVUo1V2xkYWVrd3lhR3haVjFKNlRESXhhR0ZYTkhjS1QwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWM1VYRkVRMmN3VGtSbk0wNXFRWGhaVjFVeVRqSlpNRTU2Um14WlZGVXlUV3BGZUZsVVdYcFBSR2N3VFVSVmVBcE5WMHBvV2xScmVrNVVaelZOUTBWSFEybHpSMEZSVVVKbk56aDNRVkpSUlVWM2QxSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkYVFWbExDa3QzV1VKQ1FVZEVkbnBCUWtaUlVsZEVSbEp2WkVoU2QyTjZiM1pNTW1Sd1pFZG9NVmxwTldwaU1qQjJZVWhXYmxveWJIVmFNbHBvV1RKVmRtRXlWbmtLWW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNaWlYwNHdZVmM1ZFdONU9YbGtWelY2VEhwTk1VMUVZekpOZWxFd1RVUm5kMHd5UmpCa1IxWjBZMGhTZWdwTWVrVjNSbWRaUzB0M1dVSkNRVWRFZG5wQlFrWm5VVWxFUVZwM1pGZEtjMkZYVFhkU1oxbExTM2RaUWtKQlIwUjJla0ZDUjBGUk5FUkVXbmxhV0VKMkNrOXRhREZhTW1Sd1ltMWtiVmxYVG14TU1uUnNZMjAxYkdKSVRYUlpNamwwWWxoV2RXRllValZQYmtwc1dtcHdlVnBYV25wTU1taHNXVmRTZWt3eU1XZ0tZVmMwZDJkWmEwZERhWE5IUVZGUlFqRnVhME5DUVVsRlpYZFNOVUZJWTBGa1VVUmtVRlJDY1hoelkxSk5iVTFhU0doNVdscDZZME52YTNCbGRVNDBPQXB5Wml0SWFXNUxRVXg1Ym5WcVowRkJRV0ZEY0doSFFrbEJRVUZGUVhkQ1IwMUZVVU5KUjFoa1FUa3JTazlaWkZkWVYxZDZRVEV3TWxacGNUQnZRbkpzQ2tkT2MzZzViRmhaYURWU1Zrb3pTRVZCYVVGWlFUQXhOVm8xTW5wWVFWUktUR1ZVTWtvMFEwaHhXbTh6TkVNeVoyUnFabHBYTmtGT2NuQk1jR2xVUVVzS1FtZG5jV2hyYWs5UVVWRkVRWGRPY0VGRVFtMUJha1ZCYW5SaFJGWnJOWGxMT1RWMU5qaElOVTVRV1dOcGJFcHhRMjFMVmtwVVExRldVVFl4THpsWGVRcENWa3hWY0dKQlJHcDNRWHBDUlVGeVNGcEJNSFl4TTBkQmFrVkJiMjVNVFVkWWRXcG9Namc1YTJFek4yNXRVM0ZUU0RSYWFUUmFabVV6U0hndk1XUTFDa1VyZFVoSlNrdDJRbHBOTkRSc2FrWkxaV3QzYUhkWVpXTjBOVk1LTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgBcaVxawr7rIRskfkxmWc8nllLXSI1z7Pt9sCPeYhw28CFHVnGKtEgXOWF8Q9mWLi8pi8zPWGGA8yMDI2MDkxNjA5MjAyMFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwOTE2MDkyMDIwWjAvBgkqhkiG9w0BCQQxIgQgllV1BteFXSetssyeujOeALGCUbSLcxsHsD5cyeNYk20wgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwFt5dwKSkya4USn+w73+i1hwRW5AKT2Vtqlmsg6sgnUIK8OsO4Dro53yT65CB4xvcAjEAunYLDtXZxTMhERaNpFUkW4X7ww8bwscNa+urXVishvh5V/pUGtlDauPBEMGUElbt"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"MW31k0QTUa3RpGGngPYB7xJtosmU6F87pynjEBs7XRU="},"signature":"MEUCIQDMSlSvpjhBxDVMj8w9YrBxG8phgIXV/22s8PbBJmI7BgIgGSW/7jXrO89m6N7EiSRtIeMxrBAQ7DhCskngH4A5Wcs="}}
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHRDCCBsmgAwIBAgIUdh/g43mTfEOmqxoyGqTTPM839HkwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTEwNjU4WhcNMjYxMDE5MTExNjU4WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdJQbm2gyydvRmRUC2lNl83cu61JGb4H5R91PGVIl5ZHgTqIy0GiInZq3CRwTR9boLiiZIm3GuF7zvrmuxxIimKOCBegwggXkMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGZlMmJiNjZmZWU2YzJhNzdlY2NmMDhhMDUwOGRjNTc0MjhkNDg4ZWQwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzkyMzk2NzU3ODUvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiwYKKwYBBAHWeQIEAgR9BHsAeQB3AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoVPX39QAAAQDAEgwRgIhAIOLrjlHufn/e3anH3/C6papl4koFGlqVipjg6SBij6rAiEAtggz7hdGyBetJx7OjOhMFHjx3LIrK8hepjln5MMlqkIwCgYIKoZIzj0EAwMDaQAwZgIxAJQyr8bCoTnGZklAl16sqh+A1ZI3A0+1L8Z3KcAto8DNUMhBH+Cr7XiZeeZiqSOCiwIxAPS2HNky4YyYxmEdeDU3tSq5OKQxK+4+c9YNvhFpGtxOgEFlaxNb35BLeBr2bw4eEw=="},"tlogEntries":[{"logIndex":"3320115787","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792408019","inclusionPromise":{"signedEntryTimestamp":"MEUCIHM29+0V0qxEPPXYjb63xIJbAs3uyonDBW4R8WcQ8H3lAiEA+3M3TZfJxXrEmkgcu+SfBj6ADYDCpyUjs9anbctzbIA="},"inclusionProof":{"logIndex":"3198211525","rootHash":"rstTRmWTo6puxy1Ni8ex4n1lbERUXVlOobqivt1xgWU=","treeSize":"3198211526","hashes":["Zb+gdtm+ZwKEm4z0wlxFN8hwJAI+XwKfYY8gIwsn6kA=","rUe/4es5rlLZA6MfaDm+0nLyAqZ+/m02AbwhygBG1io=","MkNeZZoGgBU8o3bviz1P2P1dGu2q8RIgkPKJVHC9MKM=","ECYzvfCoyHukeLrGCXqe5iCBYkv0lOIit5fx+ql4GCc=","y0BpPrMW+5doJQr1GTJoL730xI7z8ggwEnp1wjxJG1Q=","NvhAA1+LqtXvaowiFXcolXI/TyFO3CsufLfJu3VJv2k=","PJRsVvScXNHmqQge+wrG01cIyckZNEkkYLfYRFm0H14=","f4MktXqhBPk7ruDBxwgqTvXa7eCNzak9cUObXS0eTxI=","OlLDeTiZ1vIMDel4vGDtbNVnrFnzDe1MFV5rBN5Ep4o=","uCZQe757l2sS1c05Y7TzOwEm+X8MeGLIUCkEOmFVOz4=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3198211526\nrstTRmWTo6puxy1Ni8ex4n1lbERUXVlOobqivt1xgWU=\n\n— rekor.sigstore.dev wNI9ajBGAiEAqgm2oPK8p1Z7FQZoiT4Ju30o6tLfjE4tJ1o/Wn6aS9ICIQCAhOlYjHehHjxMGJlkN6FuzZnPFD9ZuwF+Ouu20dly9w==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIzZjVjNmUzMjZjN2NlZDczNjMwMWQzNjAyYTkwMjdjODk4ZWVkY2ViMmFjNTIzZGUxOTk3N2MxYTkxOGRhOTIxIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUURHMWc2NXBFWjRIbXZVRmNZTkFaS2VGM2hUVzg0ZC8zZ0FSN3VNamhBL0t3SWhBS0pLY0VoYTdGNFVydWgvQlZ3dkRzZlhKY3YyV2dUdm9RbnhLNzZHempEdSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFNSRU5EUW5OdFowRjNTVUpCWjBsVlpHZ3ZaelF6YlZSbVJVOXRjWGh2ZVVkeFZGUlFUVGd6T1VocmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZFVjNUbXBWTkZkb1kwNU5hbGw0VFVSRk5VMVVSWGhPYWxVMFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZrU2xGaWJUSm5lWGxrZGxKdFVsVkRNbXhPYkRnelkzVTJNVXBIWWpSSU5WSTVNVkFLUjFaSmJEVmFTR2RVY1VsNU1FZHBTVzVhY1RORFVuZFVVamxpYjB4cGFWcEpiVE5IZFVZM2VuWnliWFY0ZUVscGJVdFBRMEpsWjNkbloxaHJUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cGFiVlY1V1cxSk1rNXRXbXhhVkZwcVRXMUZNMDR5Vm1wWk1sbDNUMGRGZDA1VVFUUmFSMDB4VG5wUmVVOUhVVEJQUkdoc1drUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOWFiVlY1V1cxSk1rNXRXbXhhVkZwcVRXMUZNMDR5Vm1wWk1sbDNUMGRGZDA1VVFUUmFSMDB4VG5wUmVVOUhVVEJQUkdoc1drUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmh0V2xSS2FWbHFXVEphYlZac1RtMU5lVmxVWXpOYVYwNXFXbXBCTkZsVVFURk5SR2hyV1hwVk0wNUVTVFFLV2tSUk5FOUhWbXROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBkYWJFMXRTbWxPYWxwdFdsZFZNbGw2U21nS1RucGtiRmt5VG0xTlJHaG9UVVJWZDA5SFVtcE9WR013VFdwb2EwNUVaelJhVjFGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrMTZhM2tLVFhwck1rNTZWVE5QUkZWMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBkMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPVUpJYzBGbFVVSXpRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05V1VGZ3pPVkZCUVVGUlJFRkZaM2RTWjBsb1FVbFBUQXB5YW14SWRXWnVMMlV6WVc1SU15OURObkJoY0d3MGEyOUdSMnh4Vm1sd2FtYzJVMEpwYWpaeVFXbEZRWFJuWjNvM2FHUkhlVUpsZEVwNE4wOXFUMmhOQ2taSWFuZ3pURWx5U3pob1pYQnFiRzQxVFUxc2NXdEpkME5uV1VsTGIxcEplbW93UlVGM1RVUmhVVUYzV21kSmVFRktVWGx5T0dKRGIxUnVSMXByYkVFS2JERTJjM0ZvSzBFeFdra3pRVEFyTVV3NFdqTkxZMEYwYnpoRVRsVk5hRUpJSzBOeU4xaHBXbVZsV21seFUwOURhWGRKZUVGUVV6SklUbXQ1TkZsNVdRcDRiVVZrWlVSVk0zUlRjVFZQUzFGNFN5czBLMk01V1U1MmFFWndSM1I0VDJkRlJteGhlRTVpTXpWQ1RHVkNjakppZHpSbFJYYzlQUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgnM71EU+sumgg1QPyhebfKnegVCoMsPufzw9Q2BiM+hMCFQCrdGvlvWGToDSrZ9VeQHTiEAERCxgPMjAyNjEwMTkxMTA2NTlaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAxOTExMDY1OVowLwYJKoZIhvcNAQkEMSIEIH5Rq/+qcEApVKsi9SAPDJ2RgnR2/NJEV+gcczGIFqX1MIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMQDYVHOoSDTy+f7ORKtihyp6O5UyNcPfLIo3nXRdN0WqdrWXpRjF8KGFgRdDXXTn9sACMCIXsmL7BaZodi0JsfkHKh3aZd4VfCdaqER2fK0+KEKMrKX/Q7uIUszyfIt1Mu67BA=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"P1xuMmx87XNjAdNgKpAnyJju3OsqxSPeGZd8GpGNqSE="},"signature":"MEYCIQDG1g65pEZ4HmvUFcYNAZKeF3hTW84d/3gAR7uMjhA/KwIhAKJKcEha7F4Uruh/BVwvDsfXJcv2WgTvoQnxK76GzjDu"}}
build/torch212-metal-aarch64-darwin/symbols.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_topk_metal_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "top_k",
7
+ "qualname": "top_k",
8
+ "module": "_topk_metal_fe2bb66",
9
+ "kind": "function",
10
+ "doc": "`(values, indices)` of the largest `k` per row of a 2D f32 tensor.\n\n`indices` is int32, which is what an expert-routed matmul wants, so routing them onward costs no\ncast. With `softmax`, `values` is softmaxed over the selected k.",
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "logits",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "k",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "int"
24
+ },
25
+ {
26
+ "name": "softmax",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": "False",
29
+ "annotation": "bool"
30
+ }
31
+ ],
32
+ "return_annotation": null
33
+ }
34
+ }
35
+ ],
36
+ "layers": []
37
+ }
build/torch213-metal-aarch64-darwin/_ops.py CHANGED
@@ -1,9 +1,9 @@
1
  import torch
2
- from . import _topk_metal_4487601
3
- ops = torch.ops._topk_metal_4487601
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
- return f"_topk_metal_4487601::{op_name}"
 
1
  import torch
2
+ from . import _topk_metal_fe2bb66
3
+ ops = torch.ops._topk_metal_fe2bb66
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
+ return f"_topk_metal_fe2bb66::{op_name}"
build/torch213-metal-aarch64-darwin/{_topk_metal_4487601.abi3.so → _topk_metal_fe2bb66.abi3.so} RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:171fe791f562319f7c37f5c758902eefbb79641e2b81c1b19769a067569e5a9d
3
  size 131048
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7bce19b17a7995b2aed5d13e9c96e4cb22c4766f38fcdc989835ff7bf3330aaa
3
  size 131048
build/torch213-metal-aarch64-darwin/metadata.json CHANGED
@@ -1,9 +1,11 @@
1
  {
2
  "name": "topk",
3
- "id": "_topk_metal_4487601",
4
  "version": 1,
 
5
  "license": "MIT",
6
  "python-depends": [],
 
7
  "backend": {
8
  "type": "metal"
9
  },
@@ -11,19 +13,20 @@
11
  "algorithm": "sha256",
12
  "files": {
13
  "__init__.py": "cm0ZJnxWpFzy3M3RrxrS6q9T1otdIBa+Npd7kteAZbg=",
14
- "_ops.py": "xOrvDo3rSlmyE6weyDUe2mXbazecsg33sIwuxnCmCLs=",
15
- "_topk_metal_4487601.abi3.so": "Fx/nkfViMZ98N/XHWJAu77t5ZB4rgcGxl2mgZ1aeWp0=",
16
- "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg="
 
17
  }
18
  },
19
  "provenance": {
20
  "kernel-builder": {
21
- "version": "0.17.0-dev0",
22
- "sha": "81f55ea30fd8f819dcf93a3c934dd584c895bd2f",
23
  "dirty": false
24
  },
25
  "kernel": {
26
- "sha": "4487601ae67f471ea56211a638840511bae93589",
27
  "dirty": false
28
  }
29
  }
 
1
  {
2
  "name": "topk",
3
+ "id": "_topk_metal_fe2bb66",
4
  "version": 1,
5
+ "kernels-minver": "0.14.0",
6
  "license": "MIT",
7
  "python-depends": [],
8
+ "kernel-depends": [],
9
  "backend": {
10
  "type": "metal"
11
  },
 
13
  "algorithm": "sha256",
14
  "files": {
15
  "__init__.py": "cm0ZJnxWpFzy3M3RrxrS6q9T1otdIBa+Npd7kteAZbg=",
16
+ "_ops.py": "r7EEKA36ZAicnt9YXZ1CZ8k5OkzXbWUk3oowDZI1L6A=",
17
+ "_topk_metal_fe2bb66.abi3.so": "e84ZsXp5lbKu1dE+nJbkyyLEdm84/NyYmDX/e/MzCqo=",
18
+ "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg=",
19
+ "symbols.json": "gLRlxKtWt92J4oVk9FQdvL89CipliDHfkh6yTVY1WZ0="
20
  }
21
  },
22
  "provenance": {
23
  "kernel-builder": {
24
+ "version": "0.18.0-dev0",
25
+ "commit": "d054906a13710b811b96697b4635f03020842733",
26
  "dirty": false
27
  },
28
  "kernel": {
29
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
30
  "dirty": false
31
  }
32
  }
build/torch213-metal-aarch64-darwin/metadata.json.sigstore CHANGED
@@ -1 +1 @@
1
- {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHYjCCBuigAwIBAgIUYkDzOc6lXnCOO/Irac139OJp3bEwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwOTE2MDkyMDIxWhcNMjYwOTE2MDkzMDIxWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAgMkHUFGfHbFP9LT46QvtV3fEkJdu2UXCcHHnaXwXWHtgIjhgnSLGhjk6+AbTQ7u/b7BuyAE1kmTSaRKMLpG1KOCBgcwggYDMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUsLA4EV/aTEJDBhpC4niTBY/be9QwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wbwYDVR0RAQH/BGUwY4ZhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMB8GCisGAQQBg78wAQIEEXdvcmtmbG93X2Rpc3BhdGNoMDYGCisGAQQBg78wAQMEKDQ0ODc2MDFhZTY3ZjQ3MWVhNTYyMTFhNjM4ODQwNTExYmFlOTM1ODkwGwYKKwYBBAGDvzABBAQNQnVpbGQgKG1hY09TKTArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMHEGCisGAQQBg78wAQkEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAEKBCoMKDQ0ODc2MDFhZTY3ZjQ3MWVhNTYyMTFhNjM4ODQwNTExYmFlOTM1ODkwHQYKKwYBBAGDvzABCwQPDA1naXRodWItaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoNDQ4NzYwMWFlNjdmNDcxZWE1NjIxMWE2Mzg4NDA1MTFiYWU5MzU4OTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBxBgorBgEEAYO/MAESBGMMYWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC1tYWMueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABEwQqDCg0NDg3NjAxYWU2N2Y0NzFlYTU2MjExYTYzODg0MDUxMWJhZTkzNTg5MCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwZAYKKwYBBAGDvzABFQRWDFRodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvYWN0aW9ucy9ydW5zLzM1MDc2MzQ0MDgwL2F0dGVtcHRzLzEwFgYKKwYBBAGDvzABFgQIDAZwdWJsaWMwRgYKKwYBBAGDvzABGAQ4DDZyZXBvOmh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5OnJlZjpyZWZzL2hlYWRzL21haW4wgYsGCisGAQQB1nkCBAIEfQR7AHkAdwDdPTBqxscRMmMZHhyZZzcCokpeuN48rf+HinKALynujgAAAaCphGaoAAAEAwBIMEYCIQCUDDCZl4sUezOftQ+v3ET3dMotoJqRnLWNNpztQt8C6AIhAMwAwiiCJxfFxBMgr1XzsqrDbKYPRHhNBdLHp3kLd7++MAoGCCqGSM49BAMDA2gAMGUCMQC7aFKQ5UekkgAdD3nQb+tnEuLfqFbwy6wbH/Uo0xbeVJRcCvssWgfeHHjXXNicDu8CMB11klb1Vx22hSolGXvnBSSZhNlJzye1U+8Ax8sWB9qXmvchtuRaz0TTy3ykQVWuSA=="},"tlogEntries":[{"logIndex":"2858535191","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1789550421","inclusionPromise":{"signedEntryTimestamp":"MEQCIBRkF2tHhBcpp7G/zpIjgEFv4H1WRs79mnZjwQzi+vcCAiBzJFu9PAXmHFKC8o9JDktVT1orHRzHlv3cO40hE3sFcg=="},"inclusionProof":{"logIndex":"2736630929","rootHash":"P8rxQwm9e2dE2c+nD5PRU00n+KtN69m7shO9rq1vVLo=","treeSize":"2736630951","hashes":["6g7bdP8xIKQMtwtePokLAPQuQTaSGJ8ObC9ORKXFidw=","6bSZiS5jyo7hAbRd7YrugMPUK63rn5OAgLZzUbsviig=","ouI+9IXpEjGHWO7kkrOGPZB9BSJYwHHm3LZbucTXAgo=","N7TS+ZRAXAKEkZGlYkqqrNZombBtOyMgxDYpvrW/Ifc=","6ViBrwDUFoAUIjWId9ivK4Ej5q0MhMIl487stjN8uo0=","mrioKZ8ttSRhs3FirSij8cGf8vQ4zhDFFrabJ+JRAbM=","8m0uT5xSySvJlsD1kDLEpwM9GXvd2uiRZgqNhQj8lfE=","XpwyZSu2YdQi7XEHxUkLLL0EUlZvcF2L2FhYF2O9nWY=","jieVHnPwrABDERyDSVypvCEFTVMWxOFS+70jWdEitBs=","vUFRP2i+7bffYhjCablFlqxeZu4U4kxyX4BK2ibab68=","C26HqwjiAPfvEvotAiupwz8y9X64HBDcePER0PhTqxk=","XIMTmr1TC9yrTE6CkpwHXaSeYiYoh7WDOvOioMYo1dM=","n+hxEhyY8wOf+95n5A1RtNWPjG3kTLmhzLyAzxUY9xA=","imrIvZj6JTyKLlSm0Orl7ea26tZp+b9u+qI7QmzJJEM=","bUR40APIlDp+hSRs9Sn61sQzjB3I1nWW/EVYUSplyQk=","gGfwuhE97xnhmxu6exffPtS05ABS4/ldyg66sFcxSRE=","jhevWFOJ2cWU6SvzMnAe08zHGcVquRlP7gAed39+wI4=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2736630951\nP8rxQwm9e2dE2c+nD5PRU00n+KtN69m7shO9rq1vVLo=\n\n— rekor.sigstore.dev wNI9ajBGAiEA+Ls/02yrEWAD4kINkuOHUGNCe/p8C5H/rnoln8/+1F8CIQCohTwbl46eXQ1zzBuHulq7x8fHgtA68+YhnarYqKAhRA==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI1NmY3OGZjYzg2MWU1MTVjNWJiZDNjMWNjZmM2YTNlZWM4Y2M0YmZhYjI4NjgyZjVmZTYyMGMzYjlhNDUzMGViIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJREpHSkFKV1RsQ0ZIUXVudE5rdUFmYmNmcDhiVEoxUXQrc1hXV2QzZ0o3MEFpRUExUnlUWnAzcHRLVWFsWFVscW5iSnBUQUo3QVVxMnpEM2Q0ZW1UUlhqNzFJPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFpha05EUW5WcFowRjNTVUpCWjBsVldXdEVlazlqTm14WWJrTlBUeTlKY21Gak1UTTVUMHB3TTJKRmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVUlRKTlJHdDVUVVJKZUZkb1kwNU5hbGwzVDFSRk1rMUVhM3BOUkVsNFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZCWjAxclNGVkdSMlpJWWtaUU9VeFVORFpSZG5SV00yWkZhMHBrZFRKVldFTmpTRWdLYm1GWWQxaFhTSFJuU1dwb1oyNVRURWRvYW1zMkswRmlWRkUzZFM5aU4wSjFlVUZGTVd0dFZGTmhVa3ROVEhCSE1VdFBRMEpuWTNkbloxbEVUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZ6VEVFMENrVldMMkZVUlVwRVFtaHdRelJ1YVZSQ1dTOWlaVGxSZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJKM1dVUldVakJTUVZGSUwwSkhWWGRaTkZwb1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4WE1XaFplVFUxQ2xsWE1YTlJTRXBzV201TmRtRkhWbWhhU0UxMllsZEdjR0pxUVRWQ1oyOXlRbWRGUlVGWlR5OU5RVVZDUWtOMGIyUklVbmRqZW05MlRETlNkbUV5Vm5VS1RHMUdhbVJIYkhaaWJrMTFXakpzTUdGSVZtbGtXRTVzWTIxT2RtSnVVbXhpYmxGMVdUSTVkRTFDT0VkRGFYTkhRVkZSUW1jM09IZEJVVWxGUlZoa2RncGpiWFJ0WWtjNU0xZ3lVbkJqTTBKb1pFZE9iMDFFV1VkRGFYTkhRVkZSUW1jM09IZEJVVTFGUzBSUk1FOUVZekpOUkVab1dsUlpNMXBxVVROTlYxWm9DazVVV1hsTlZFWm9UbXBOTkU5RVVYZE9WRVY0V1cxR2JFOVVUVEZQUkd0M1IzZFpTMHQzV1VKQ1FVZEVkbnBCUWtKQlVVNVJibFp3WWtkUlowdEhNV2dLV1RBNVZFdFVRWEpDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0l4YjJSWFpHNWhWelZ1V20xR2FscFRPWEphV0VwMVdsZDRla3hYVG5aaVZ6RXhZbTFzTUFwbFZFRmtRbWR2Y2tKblJVVkJXVTh2VFVGRlIwSkJPWGxhVjFwNlRESm9iRmxYVW5wTU1qRm9ZVmMwZDA5M1dVdExkMWxDUWtGSFJIWjZRVUpEUVZGMENrUkRkRzlrU0ZKM1kzcHZka3d6VW5aaE1sWjFURzFHYW1SSGJIWmliazExV2pKc01HRklWbWxrV0U1c1kyMU9kbUp1VW14aWJsRjFXVEk1ZEUxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZGclJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJVdENRMjlOUzBSUk1FOUVZekpOUkVab1dsUlpNMXBxVVRNS1RWZFdhRTVVV1hsTlZFWm9UbXBOTkU5RVVYZE9WRVY0V1cxR2JFOVVUVEZQUkd0M1NGRlpTMHQzV1VKQ1FVZEVkbnBCUWtOM1VWQkVRVEZ1WVZoU2J3cGtWMGwwWVVjNWVtUkhWbXROUlVGSFEybHpSMEZSVVVKbk56aDNRVkYzUlUxbmQzZGhTRkl3WTBoTk5reDVPVzVoV0ZKdlpGZEpkVmt5T1hSTU1tZ3hDbG95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFJpV0ZaMVlWaFNOVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVEJGUzJkM2IwNUVVVFFLVG5wWmQwMVhSbXhPYW1SdFRrUmplRnBYUlRGT2FrbDRUVmRGTWsxNlp6Uk9SRUV4VFZSR2FWbFhWVFZOZWxVMFQxUkJaa0puYjNKQ1owVkZRVmxQTHdwTlFVVlBRa0pGVFVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJZVUpuYjNKQ1owVkZRVmxQTDAxQlJWQkNRWGROUTJwRmQwNTZSVEJPZWxVeENrMXFhM2RNWjFsTFMzZFpRa0pCUjBSMmVrRkNSVUZSWjBSQ05XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZDBkQldVdExkMWxDUWtGSFJIWjZRVUpGVVZGTFJFRm5lVTVVWTNsTlJHTXdUWHBDZUVKbmIzSkNaMFZGUVZsUEwwMUJSVk5DUjAxTldWZG9NQXBrU0VKNlQyazRkbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemgxQ2xveWJEQmhTRlpwVEROa2RtTnRkRzFpUnprelkzazVhV1JYYkhOYVF6RjBXVmROZFdWWFJuUmlSVUo1V2xkYWVrd3lhR3haVjFKNlRESXhhR0ZYTkhjS1QwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWM1VYRkVRMmN3VGtSbk0wNXFRWGhaVjFVeVRqSlpNRTU2Um14WlZGVXlUV3BGZUZsVVdYcFBSR2N3VFVSVmVBcE5WMHBvV2xScmVrNVVaelZOUTBWSFEybHpSMEZSVVVKbk56aDNRVkpSUlVWM2QxSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkYVFWbExDa3QzV1VKQ1FVZEVkbnBCUWtaUlVsZEVSbEp2WkVoU2QyTjZiM1pNTW1Sd1pFZG9NVmxwTldwaU1qQjJZVWhXYmxveWJIVmFNbHBvV1RKVmRtRXlWbmtLWW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNaWlYwNHdZVmM1ZFdONU9YbGtWelY2VEhwTk1VMUVZekpOZWxFd1RVUm5kMHd5UmpCa1IxWjBZMGhTZWdwTWVrVjNSbWRaUzB0M1dVSkNRVWRFZG5wQlFrWm5VVWxFUVZwM1pGZEtjMkZYVFhkU1oxbExTM2RaUWtKQlIwUjJla0ZDUjBGUk5FUkVXbmxhV0VKMkNrOXRhREZhTW1Sd1ltMWtiVmxYVG14TU1uUnNZMjAxYkdKSVRYUlpNamwwWWxoV2RXRllValZQYmtwc1dtcHdlVnBYV25wTU1taHNXVmRTZWt3eU1XZ0tZVmMwZDJkWmMwZERhWE5IUVZGUlFqRnVhME5DUVVsRlpsRlNOMEZJYTBGa2QwUmtVRlJDY1hoelkxSk5iVTFhU0doNVdscDZZME52YTNCbGRVNDBPQXB5Wml0SWFXNUxRVXg1Ym5WcVowRkJRV0ZEY0doSFlXOUJRVUZGUVhkQ1NVMUZXVU5KVVVOVlJFUkRXbXcwYzFWbGVrOW1kRkVyZGpORlZETmtUVzkwQ205S2NWSnVURmRPVG5CNmRGRjBPRU0yUVVsb1FVMTNRWGRwYVVOS2VHWkdlRUpOWjNJeFdIcHpjWEpFWWt0WlVGSklhRTVDWkV4SWNETnJUR1EzS3lzS1RVRnZSME5EY1VkVFRUUTVRa0ZOUkVFeVowRk5SMVZEVFZGRE4yRkdTMUUxVldWcmEyZEJaRVF6YmxGaUszUnVSWFZNWm5GR1luZDVObmRpU0M5VmJ3b3dlR0psVmtwU1kwTjJjM05YWjJabFNFaHFXRmhPYVdORWRUaERUVUl4TVd0c1lqRldlREl5YUZOdmJFZFlkbTVDVTFOYWFFNXNTbnA1WlRGVkt6aEJDbmc0YzFkQ09YRlliWFpqYUhSMVVtRjZNRlJVZVRONWExRldWM1ZUUVQwOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgdz0+Jfr6ojzqnzpDlF8syUipU8sJsSQNT1uRhp5mw5ECFBnSTXHrQUOXU19TC8He1ZOM+7jaGA8yMDI2MDkxNjA5MjAyMVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwOTE2MDkyMDIxWjAvBgkqhkiG9w0BCQQxIgQgMo7dUj4YhFuG3vjVzrLHf31hH+TyvfWRSFP54JrXIUswgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIxAJXbsGdDPw3pDhrv7RY/YpOamnNN/c5fh1oNxqg12fzQnbtEgL9ayW2qY7hADRFeqwIwREcbE08KDPq0dsVMRoOj+F4qn8+LJluyPK75MG0R7rEr/hAGbMeQFIA6Ud2/7ngI"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"VvePzIYeUVxbvTwcz8aj7sjMS/qyhoL1/mIMO5pFMOs="},"signature":"MEUCIDJGJAJWTlCFHQuntNkuAfbcfp8bTJ1Qt+sXWWd3gJ70AiEA1RyTZp3ptKUalXUlqnbJpTAJ7AUq2zD3d4emTRXj71I="}}
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHQjCCBsegAwIBAgIUV/LAl0klZTJjxmAa2omo4JIcirwwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTEwNjU5WhcNMjYxMDE5MTExNjU5WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUCwy4cR/L+DtcSvU2D+zDyxTF4yEpKXe6nYafWK6f4k5qD6YMs/Mpn+KJMWtzXkbmW/jTjiPZTrSvMRhSOMgZqOCBeYwggXiMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGZlMmJiNjZmZWU2YzJhNzdlY2NmMDhhMDUwOGRjNTc0MjhkNDg4ZWQwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzkyMzk2NzU3ODUvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoVPX49cAAAQDAEYwRAIgQh4abrw8RVlOhvINjMnzfGKMaB9v0FBJmvAASG7+nIwCIDihCwbouny3MDB9nGh8rY3Tws1PQi1by863nlIPO7/4MAoGCCqGSM49BAMDA2kAMGYCMQCD4brHhC5QsD+HUhdl81zxsP9GKhK/OoK++Z4S2/KfOqnBuUlMtKElDcpUg+v73JQCMQDvB2lvKHx3FS+Cb/3/U4iJ7hIJWE1zCWWHbf5a2lV2ISrfrkJR3xw8MCDTAmdoXtU="},"tlogEntries":[{"logIndex":"3320115802","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792408020","inclusionPromise":{"signedEntryTimestamp":"MEYCIQDl8R7Rf6wUVh7/i7qto01yfJxn9/HL66GnKi9d8s8XdwIhALVSdku7t8KgClgLAc93ZGJtjkE3L4lgIMaTWXQHDM0Z"},"inclusionProof":{"logIndex":"3198211540","rootHash":"LWFUZWzYiVI+JWaQqfxupBBmSq8liB/4AS4IqWPISMQ=","treeSize":"3198211545","hashes":["k5xBZ1XeZhVqTbS11PtGdd5TZFZJL6XE9YSTPZft8Dw=","aDssnGzRMDobyGablRZD2vx58BcEBWYDP11VdR06Vfw=","+zsgUHBH+rkQruNalejmwe4A3hBtkCLb839h5O/xnNs=","LnwCesklhW3R89PMbo43rzS67ohVhWiRba+AkNJRq44=","4j1ZTjHHN/tRhEP03up8G5pe4uDGFQB+b83t3NWI5uk=","MkNeZZoGgBU8o3bviz1P2P1dGu2q8RIgkPKJVHC9MKM=","ECYzvfCoyHukeLrGCXqe5iCBYkv0lOIit5fx+ql4GCc=","y0BpPrMW+5doJQr1GTJoL730xI7z8ggwEnp1wjxJG1Q=","NvhAA1+LqtXvaowiFXcolXI/TyFO3CsufLfJu3VJv2k=","PJRsVvScXNHmqQge+wrG01cIyckZNEkkYLfYRFm0H14=","f4MktXqhBPk7ruDBxwgqTvXa7eCNzak9cUObXS0eTxI=","OlLDeTiZ1vIMDel4vGDtbNVnrFnzDe1MFV5rBN5Ep4o=","uCZQe757l2sS1c05Y7TzOwEm+X8MeGLIUCkEOmFVOz4=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3198211545\nLWFUZWzYiVI+JWaQqfxupBBmSq8liB/4AS4IqWPISMQ=\n\n— rekor.sigstore.dev wNI9ajBEAiA87sa0sSxcvc14UqUp8CCCsLh+qDtSLySRXyKLQkFU7QIgN2J1dJnmxIW1tL7FzkUpMHOYAxBvplA8YTs1DY9EQkc=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI4MmRjNmJlYjAwY2QzNGFmMDY5MmIxMDYxMjhiYmQ0YTkxYjkyMDhhMzQ0MmI5ZDA4NDQ5OWJmYmE2NDkwYTU4In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRVA1eE9McGlSdkhqRXdQNEFBa3VrRWJXK2RqbnRhbGNKbXZKcy9KTnZGS0FpQW5lb2NhVkFvY0Z2aUhjV05vbzlTMWhybXJtdzVrR216OEREbmx5ZURITEE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJha05EUW5ObFowRjNTVUpCWjBsVlZpOU1RV3d3YTJ4YVZFcHFlRzFCWVRKdmJXODBTa2xqYVhKM2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZFVjNUbXBWTlZkb1kwNU5hbGw0VFVSRk5VMVVSWGhPYWxVMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZWUTNkNU5HTlNMMHdyUkhSalUzWlZNa1FyZWtSNWVGUkdOSGxGY0V0WVpUWnVXV0VLWmxkTE5tWTBhelZ4UkRaWlRYTXZUWEJ1SzB0S1RWZDBlbGhyWW0xWEwycFVhbWxRV2xSeVUzWk5VbWhUVDAxblduRlBRMEpsV1hkbloxaHBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cGFiVlY1V1cxSk1rNXRXbXhhVkZwcVRXMUZNMDR5Vm1wWk1sbDNUMGRGZDA1VVFUUmFSMDB4VG5wUmVVOUhVVEJQUkdoc1drUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOWFiVlY1V1cxSk1rNXRXbXhhVkZwcVRXMUZNMDR5Vm1wWk1sbDNUMGRGZDA1VVFUUmFSMDB4VG5wUmVVOUhVVEJQUkdoc1drUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmh0V2xSS2FWbHFXVEphYlZac1RtMU5lVmxVWXpOYVYwNXFXbXBCTkZsVVFURk5SR2hyV1hwVk0wNUVTVFFLV2tSUk5FOUhWbXROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBkYWJFMXRTbWxPYWxwdFdsZFZNbGw2U21nS1RucGtiRmt5VG0xTlJHaG9UVVJWZDA5SFVtcE9WR013VFdwb2EwNUVaelJhVjFGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrMTZhM2tLVFhwck1rNTZWVE5QUkZWMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBVVmxMUzNkWlFrSkJTRmRsVVVsRlFXZFNOMEpJYTBGa2QwSXhRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05V1VGZzBPV05CUVVGUlJFRkZXWGRTUVVsblVXZzBZUXBpY25jNFVsWnNUMmgyU1U1cVRXNTZaa2RMVFdGQ09YWXdSa0pLYlhaQlFWTkhOeXR1U1hkRFNVUnBhRU4zWW05MWJua3pUVVJDT1c1SGFEaHlXVE5VQ25kek1WQlJhVEZpZVRnMk0yNXNTVkJQTnk4MFRVRnZSME5EY1VkVFRUUTVRa0ZOUkVFeWEwRk5SMWxEVFZGRFJEUmlja2hvUXpWUmMwUXJTRlZvWkd3S09ERjZlSE5RT1VkTGFFc3ZUMjlMS3l0YU5GTXlMMHRtVDNGdVFuVlZiRTEwUzBWc1JHTndWV2NyZGpjelNsRkRUVkZFZGtJeWJIWkxTSGd6UmxNclF3cGlMek12VlRScFNqZG9TVXBYUlRGNlExZFhTR0ptTldFeWJGWXlTVk55Wm5KclNsSXplSGM0VFVORVZFRnRaRzlZZEZVOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg3ribQ2Hhlc5HtdMiKzJxpuxlgAby76u231JHq3//n/ICFQCHB8gdaZ+21/j380Mvk4og1xhDLBgPMjAyNjEwMTkxMTA3MDBaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAxOTExMDcwMFowLwYJKoZIhvcNAQkEMSIEIDYgKXZSmV6kYaxzJJnxcsmGi55V4GNS4omTOdGTMz6/MIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMAb+Yzn2nN+1bn6NXB6RPjzk48fr0LSg/BpmiePVCQpnPii6RLdOnQIozJvHTQsG6wIwJcdDhfPHDuJW79BUpk3ox4NdNb89YAwriclDboMsjQvJXP9qdvwjOvSshCAfCzzB"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"gtxr6wDNNK8GkrEGEou9SpG5IIo0QrnQhEmb+6ZJClg="},"signature":"MEQCIEP5xOLpiRvHjEwP4AAkukEbW+djntalcJmvJs/JNvFKAiAneocaVAocFviHcWNoo9S1hrmrmw5kGmz8DDnlyeDHLA=="}}
build/torch213-metal-aarch64-darwin/symbols.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_topk_metal_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "top_k",
7
+ "qualname": "top_k",
8
+ "module": "_topk_metal_fe2bb66",
9
+ "kind": "function",
10
+ "doc": "`(values, indices)` of the largest `k` per row of a 2D f32 tensor.\n\n`indices` is int32, which is what an expert-routed matmul wants, so routing them onward costs no\ncast. With `softmax`, `values` is softmaxed over the selected k.",
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "logits",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "k",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "int"
24
+ },
25
+ {
26
+ "name": "softmax",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": "False",
29
+ "annotation": "bool"
30
+ }
31
+ ],
32
+ "return_annotation": null
33
+ }
34
+ }
35
+ ],
36
+ "layers": []
37
+ }
build/torch214-metal-aarch64-darwin/__init__.py ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Top-k over a small row, as a torch op.
2
+
3
+ For a MoE router. torch's MPS `topk` is a full sort, and so is ggml's -- `GGML_OP_TOP_K` dispatches
4
+ `kernel_argsort_f32_i32_desc` -- which is why this is written rather than ported: selecting the
5
+ largest 8 of 256 logits does not need the row ordered. 26us against 71us, once per layer per token.
6
+ """
7
+
8
+ import os
9
+ from pathlib import Path
10
+
11
+ import torch
12
+
13
+
14
+ # A local (non-nix) build leaves the metallib on disk beside this module instead of embedding it, and
15
+ # `dispatch.mm` looks it up through this variable when nothing is embedded. Set before the extension
16
+ # is imported, and never over an existing value, so an explicit choice still wins.
17
+ _METALLIB = Path(__file__).parent / "ggml-metal.metallib"
18
+ if _METALLIB.is_file():
19
+ os.environ.setdefault("TOPK_METALLIB", str(_METALLIB))
20
+
21
+ from ._ops import add_op_namespace_prefix, ops # noqa: E402
22
+ from .layers import SoftmaxTopKRouter # noqa: E402,F401
23
+
24
+
25
+ def top_k(logits: torch.Tensor, k: int, softmax: bool = False):
26
+ """`(values, indices)` of the largest `k` per row of a 2D f32 tensor.
27
+
28
+ `indices` is int32, which is what an expert-routed matmul wants, so routing them onward costs no
29
+ cast. With `softmax`, `values` is softmaxed over the selected k.
30
+ """
31
+ return ops.top_k(logits, k, softmax)
32
+
33
+
34
+ @torch.library.register_fake(add_op_namespace_prefix("top_k"))
35
+ def _top_k_fake(logits, k, softmax):
36
+ rows = logits.shape[0]
37
+ return [logits.new_empty((rows, k)), logits.new_empty((rows, k), dtype=torch.int32)]
38
+
39
+
40
+ __all__ = ["SoftmaxTopKRouter", "top_k"]
build/torch214-metal-aarch64-darwin/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _topk_metal_fe2bb66
3
+ ops = torch.ops._topk_metal_fe2bb66
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_topk_metal_fe2bb66::{op_name}"
build/torch214-metal-aarch64-darwin/_topk_metal_fe2bb66.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f4d45978cc77608da1dd50a3dd1a799c9be7b163cf4a5452691767e476bf1ef3
3
+ size 131288
build/torch214-metal-aarch64-darwin/layers.py ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Layer-level entry points, for `kernels`' layer mapping.
2
+
3
+ `transformers` marks the layers a kernel may replace with `@use_kernel_forward_from_hub("<name>")`, and a
4
+ kernel repository supplies a class of that name whose `forward` is grafted onto the real module. The module
5
+ keeps its own parameters and constructor -- the class here is stateless, which `kernels` enforces: no
6
+ `__init__`, no members besides `forward`, and a signature matching the layer being replaced.
7
+
8
+ Named `SoftmaxTopKRouter` rather than `TopKRouter` because the rewrite below is only valid for routers
9
+ that score with a softmax. One that scores with a sigmoid returns the same shapes and would graft
10
+ cleanly onto this, then be quietly wrong.
11
+ """
12
+
13
+ import torch
14
+ import torch.nn as nn
15
+ import torch.nn.functional as F
16
+
17
+ from ._ops import ops
18
+
19
+
20
+ class SoftmaxTopKRouter(nn.Module):
21
+ """A softmax router's top-k, in two dispatches instead of four.
22
+
23
+ The model softmaxes over every expert, takes the top `k`, then renormalizes those `k`. Softmax is
24
+ monotonic, so the top `k` probabilities belong to the top `k` logits, and renormalizing them is a
25
+ softmax over just those logits -- `exp(x_i) / sum_{j in topk} exp(x_j)` either way. So the whole
26
+ tail is skipped: select first, then softmax the `k` that survived, which the kernel does in the
27
+ same pass.
28
+
29
+ Worth it because a MoE decode step is dispatch-bound rather than arithmetic-bound: this is 40
30
+ layers x 2 fewer operations, and the top-k itself stops being a full sort.
31
+
32
+ `indices` comes back int32, which is what an expert-routed matmul wants.
33
+ """
34
+
35
+ def forward(self, hidden_states: torch.Tensor):
36
+ hidden_states = hidden_states.reshape(-1, self.hidden_dim)
37
+ router_logits = F.linear(hidden_states, self.weight)
38
+ scores, indices = ops.top_k(router_logits, self.top_k, True)
39
+ return router_logits, scores.to(router_logits.dtype), indices
build/torch214-metal-aarch64-darwin/metadata.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "topk",
3
+ "id": "_topk_metal_fe2bb66",
4
+ "version": 1,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "MIT",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "metal"
11
+ },
12
+ "digest": {
13
+ "algorithm": "sha256",
14
+ "files": {
15
+ "__init__.py": "cm0ZJnxWpFzy3M3RrxrS6q9T1otdIBa+Npd7kteAZbg=",
16
+ "_ops.py": "r7EEKA36ZAicnt9YXZ1CZ8k5OkzXbWUk3oowDZI1L6A=",
17
+ "_topk_metal_fe2bb66.abi3.so": "9NRZeMx3YI2h3VCj3Rp5nJvnsWPPSlRSaRdn5Ha/HvM=",
18
+ "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg=",
19
+ "symbols.json": "gLRlxKtWt92J4oVk9FQdvL89CipliDHfkh6yTVY1WZ0="
20
+ }
21
+ },
22
+ "provenance": {
23
+ "kernel-builder": {
24
+ "version": "0.18.0-dev0",
25
+ "commit": "d054906a13710b811b96697b4635f03020842733",
26
+ "dirty": false
27
+ },
28
+ "kernel": {
29
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
30
+ "dirty": false
31
+ }
32
+ }
33
+ }
build/torch214-metal-aarch64-darwin/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHQDCCBsegAwIBAgIUdPGDbBCQPUmzQm2OKjzFGtZmQBMwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTEwNjU2WhcNMjYxMDE5MTExNjU2WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/NLSCGGMk7BjDqQg7VyKsOdpMJeozvchEPHUEt6cTfwAw6mQb3PFuA28p88Q+WAt2Fb/WClvIEgrDGktjAct1qOCBeYwggXiMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGZlMmJiNjZmZWU2YzJhNzdlY2NmMDhhMDUwOGRjNTc0MjhkNDg4ZWQwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzkyMzk2NzU3ODUvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoVPX1yEAAAQDAEYwRAIgf0Km8jPXxxyN12JUZQc0c1sto3K+DE+kaoyi1/05Qn4CIEdPFIwodJEGsqQwq08Igtn4uoNEfyF8e5pHVDtHZs9EMAoGCCqGSM49BAMDA2cAMGQCMHm1VWRsNdWWA+W5L9X/XaAboi3TaBT+PX+d8YcJb9A1kT47Ml9DXf1nJziBHsVJDAIwWIyjWsf6sqj/LQvbvEDp7qkVOq+Th8TaImTV9ELOSWv9dPrHdx1ho/dIEAkQ713R"},"tlogEntries":[{"logIndex":"3320115760","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792408016","inclusionPromise":{"signedEntryTimestamp":"MEQCIBi7d72B7JSHXvFZQ1/bXx5ekJL/hlNjNpECP1AcmPOkAiBMKnPLpPqJ6UkzCzTSXqGALmdlrVAkpZsDdgN6yLq/6g=="},"inclusionProof":{"logIndex":"3198211498","rootHash":"Na3IdxUcCc8zzFbKALhe5MW1JAYDw9Q6Ws8rvyJA+j4=","treeSize":"3198211499","hashes":["XteThU39kH0aTqKz2+NCZWVRJgOTysonoNV3AdNg6Ks=","LFz5LjfVaiIHUk98KweWd1iZ6ZFkx6KwNGRdaqplVIo=","fJyPbvthTvpV2cG+OG+GTWsfSkKQT+rpc7u/UwYW4ms=","ECYzvfCoyHukeLrGCXqe5iCBYkv0lOIit5fx+ql4GCc=","y0BpPrMW+5doJQr1GTJoL730xI7z8ggwEnp1wjxJG1Q=","NvhAA1+LqtXvaowiFXcolXI/TyFO3CsufLfJu3VJv2k=","PJRsVvScXNHmqQge+wrG01cIyckZNEkkYLfYRFm0H14=","f4MktXqhBPk7ruDBxwgqTvXa7eCNzak9cUObXS0eTxI=","OlLDeTiZ1vIMDel4vGDtbNVnrFnzDe1MFV5rBN5Ep4o=","uCZQe757l2sS1c05Y7TzOwEm+X8MeGLIUCkEOmFVOz4=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3198211499\nNa3IdxUcCc8zzFbKALhe5MW1JAYDw9Q6Ws8rvyJA+j4=\n\n— rekor.sigstore.dev wNI9ajBEAiArhvtIVpkeuDdKcOSKwfLAys4yhuKlTg+J2a4XBQFVhwIgIUCDR5EMVub9+RIrxi7O26nrgIyDA4r0DJXb7XvGrq8=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI0YjA4NTcxYzI2OTJlMmEwOGJjZDAxNWY2ODhjZmNhMzBjZGFkNGYzZmZhNWE3OTU4NzZhN2U2NTEyNzE5ZTI3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJR3ZLZkQyRGhNMXpzeHNsMzlXOVJXb0pORDVxVVJmNXZnMWxlUlVvQThOWUFpRUE1OHJ1N2ZwcG9CRUpWWjY0UjFsTzZRL1VHY0JlYW5LNlp0ZTlhd3Vnd3V3PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJSRU5EUW5ObFowRjNTVUpCWjBsVlpGQkhSR0pDUTFGUVZXMTZVVzB5VDB0cWVrWkhkRnB0VVVKTmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZFVjNUbXBWTWxkb1kwNU5hbGw0VFVSRk5VMVVSWGhPYWxVeVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVV2VGt4VFEwZEhUV3MzUW1wRWNWRm5OMVo1UzNOUFpIQk5TbVZ2ZW5aamFFVlFTRlVLUlhRMlkxUm1kMEYzTm0xUllqTlFSblZCTWpod09EaFJLMWRCZERKR1lpOVhRMngyU1VWbmNrUkhhM1JxUVdOME1YRlBRMEpsV1hkbloxaHBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cGFiVlY1V1cxSk1rNXRXbXhhVkZwcVRXMUZNMDR5Vm1wWk1sbDNUMGRGZDA1VVFUUmFSMDB4VG5wUmVVOUhVVEJQUkdoc1drUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOWFiVlY1V1cxSk1rNXRXbXhhVkZwcVRXMUZNMDR5Vm1wWk1sbDNUMGRGZDA1VVFUUmFSMDB4VG5wUmVVOUhVVEJQUkdoc1drUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmh0V2xSS2FWbHFXVEphYlZac1RtMU5lVmxVWXpOYVYwNXFXbXBCTkZsVVFURk5SR2hyV1hwVk0wNUVTVFFLV2tSUk5FOUhWbXROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBkYWJFMXRTbWxPYWxwdFdsZFZNbGw2U21nS1RucGtiRmt5VG0xTlJHaG9UVVJWZDA5SFVtcE9WR013VFdwb2EwNUVaelJhVjFGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrMTZhM2tLVFhwck1rNTZWVE5QUkZWMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBVVmxMUzNkWlFrSkJTRmRsVVVsRlFXZFNOMEpJYTBGa2QwSXhRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05V1VGZ3hlVVZCUVVGUlJFRkZXWGRTUVVsblpqQkxiUW80YWxCWWVIaDVUakV5U2xWYVVXTXdZekZ6ZEc4elN5dEVSU3RyWVc5NWFURXZNRFZSYmpSRFNVVmtVRVpKZDI5a1NrVkhjM0ZSZDNFd09FbG5kRzQwQ25WdlRrVm1lVVk0WlRWd1NGWkVkRWhhY3psRlRVRnZSME5EY1VkVFRUUTVRa0ZOUkVFeVkwRk5SMUZEVFVodE1WWlhVbk5PWkZkWFFTdFhOVXc1V0M4S1dHRkJZbTlwTTFSaFFsUXJVRmdyWkRoWlkwcGlPVUV4YTFRME4wMXNPVVJZWmpGdVNucHBRa2h6VmtwRVFVbDNWMGw1YWxkelpqWnpjV292VEZGMllncDJSVVJ3TjNGclZrOXhLMVJvT0ZSaFNXMVVWamxGVEU5VFYzWTVaRkJ5U0dSNE1XaHZMMlJKUlVGclVUY3hNMUlLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgB2Qg3RqnqOA/vA5GiAdpCGEvFjc5aoG413AfKxK+3ZgCFGHCOfO3L0z0Boxe7TLlv4HvR/IxGA8yMDI2MTAxOTExMDY1NlowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTEwNjU2WjAvBgkqhkiG9w0BCQQxIgQg+/LBNkrAFifCYLPyNmghNvm8RMyI6xZs1s0oUiH/W5swgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwUsZan3u32PW7Cc/SuOLthcuqxfYmkisJbOw0u1fvBMpxOssP/qFrkUq3WbPbO5h4AjEArqPLsDJRVrpom+6aMwkHllfFytXDqVxxFIBANNNCTBCJ/M6Sa5YAxKKOqV5dlbdA"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"SwhXHCaS4qCLzQFfaIz8owza1PP/paeVh2p+ZRJxnic="},"signature":"MEUCIGvKfD2DhM1zsxsl39W9RWoJND5qURf5vg1leRUoA8NYAiEA58ru7fppoBEJVZ64R1lO6Q/UGcBeanK6Zte9awugwuw="}}
build/torch214-metal-aarch64-darwin/symbols.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_topk_metal_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "top_k",
7
+ "qualname": "top_k",
8
+ "module": "_topk_metal_fe2bb66",
9
+ "kind": "function",
10
+ "doc": "`(values, indices)` of the largest `k` per row of a 2D f32 tensor.\n\n`indices` is int32, which is what an expert-routed matmul wants, so routing them onward costs no\ncast. With `softmax`, `values` is softmaxed over the selected k.",
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "logits",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "k",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "int"
24
+ },
25
+ {
26
+ "name": "softmax",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": "False",
29
+ "annotation": "bool"
30
+ }
31
+ ],
32
+ "return_annotation": null
33
+ }
34
+ }
35
+ ],
36
+ "layers": []
37
+ }
build/torch215-metal-aarch64-darwin/__init__.py ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Top-k over a small row, as a torch op.
2
+
3
+ For a MoE router. torch's MPS `topk` is a full sort, and so is ggml's -- `GGML_OP_TOP_K` dispatches
4
+ `kernel_argsort_f32_i32_desc` -- which is why this is written rather than ported: selecting the
5
+ largest 8 of 256 logits does not need the row ordered. 26us against 71us, once per layer per token.
6
+ """
7
+
8
+ import os
9
+ from pathlib import Path
10
+
11
+ import torch
12
+
13
+
14
+ # A local (non-nix) build leaves the metallib on disk beside this module instead of embedding it, and
15
+ # `dispatch.mm` looks it up through this variable when nothing is embedded. Set before the extension
16
+ # is imported, and never over an existing value, so an explicit choice still wins.
17
+ _METALLIB = Path(__file__).parent / "ggml-metal.metallib"
18
+ if _METALLIB.is_file():
19
+ os.environ.setdefault("TOPK_METALLIB", str(_METALLIB))
20
+
21
+ from ._ops import add_op_namespace_prefix, ops # noqa: E402
22
+ from .layers import SoftmaxTopKRouter # noqa: E402,F401
23
+
24
+
25
+ def top_k(logits: torch.Tensor, k: int, softmax: bool = False):
26
+ """`(values, indices)` of the largest `k` per row of a 2D f32 tensor.
27
+
28
+ `indices` is int32, which is what an expert-routed matmul wants, so routing them onward costs no
29
+ cast. With `softmax`, `values` is softmaxed over the selected k.
30
+ """
31
+ return ops.top_k(logits, k, softmax)
32
+
33
+
34
+ @torch.library.register_fake(add_op_namespace_prefix("top_k"))
35
+ def _top_k_fake(logits, k, softmax):
36
+ rows = logits.shape[0]
37
+ return [logits.new_empty((rows, k)), logits.new_empty((rows, k), dtype=torch.int32)]
38
+
39
+
40
+ __all__ = ["SoftmaxTopKRouter", "top_k"]
build/torch215-metal-aarch64-darwin/_ops.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from . import _topk_metal_fe2bb66
3
+ ops = torch.ops._topk_metal_fe2bb66
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_topk_metal_fe2bb66::{op_name}"
build/torch215-metal-aarch64-darwin/_topk_metal_fe2bb66.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4d905be0262d63215edcff84567924e50aa861f9c9e1bc5d89dab638a94d8125
3
+ size 131288
build/torch215-metal-aarch64-darwin/layers.py ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Layer-level entry points, for `kernels`' layer mapping.
2
+
3
+ `transformers` marks the layers a kernel may replace with `@use_kernel_forward_from_hub("<name>")`, and a
4
+ kernel repository supplies a class of that name whose `forward` is grafted onto the real module. The module
5
+ keeps its own parameters and constructor -- the class here is stateless, which `kernels` enforces: no
6
+ `__init__`, no members besides `forward`, and a signature matching the layer being replaced.
7
+
8
+ Named `SoftmaxTopKRouter` rather than `TopKRouter` because the rewrite below is only valid for routers
9
+ that score with a softmax. One that scores with a sigmoid returns the same shapes and would graft
10
+ cleanly onto this, then be quietly wrong.
11
+ """
12
+
13
+ import torch
14
+ import torch.nn as nn
15
+ import torch.nn.functional as F
16
+
17
+ from ._ops import ops
18
+
19
+
20
+ class SoftmaxTopKRouter(nn.Module):
21
+ """A softmax router's top-k, in two dispatches instead of four.
22
+
23
+ The model softmaxes over every expert, takes the top `k`, then renormalizes those `k`. Softmax is
24
+ monotonic, so the top `k` probabilities belong to the top `k` logits, and renormalizing them is a
25
+ softmax over just those logits -- `exp(x_i) / sum_{j in topk} exp(x_j)` either way. So the whole
26
+ tail is skipped: select first, then softmax the `k` that survived, which the kernel does in the
27
+ same pass.
28
+
29
+ Worth it because a MoE decode step is dispatch-bound rather than arithmetic-bound: this is 40
30
+ layers x 2 fewer operations, and the top-k itself stops being a full sort.
31
+
32
+ `indices` comes back int32, which is what an expert-routed matmul wants.
33
+ """
34
+
35
+ def forward(self, hidden_states: torch.Tensor):
36
+ hidden_states = hidden_states.reshape(-1, self.hidden_dim)
37
+ router_logits = F.linear(hidden_states, self.weight)
38
+ scores, indices = ops.top_k(router_logits, self.top_k, True)
39
+ return router_logits, scores.to(router_logits.dtype), indices
build/torch215-metal-aarch64-darwin/metadata.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "topk",
3
+ "id": "_topk_metal_fe2bb66",
4
+ "version": 1,
5
+ "kernels-minver": "0.14.0",
6
+ "license": "MIT",
7
+ "python-depends": [],
8
+ "kernel-depends": [],
9
+ "backend": {
10
+ "type": "metal"
11
+ },
12
+ "digest": {
13
+ "algorithm": "sha256",
14
+ "files": {
15
+ "__init__.py": "cm0ZJnxWpFzy3M3RrxrS6q9T1otdIBa+Npd7kteAZbg=",
16
+ "_ops.py": "r7EEKA36ZAicnt9YXZ1CZ8k5OkzXbWUk3oowDZI1L6A=",
17
+ "_topk_metal_fe2bb66.abi3.so": "TZBb4CYtYyFe3P+EVnkk5QqoYfnJ4bxdidq2OKlNgSU=",
18
+ "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg=",
19
+ "symbols.json": "gLRlxKtWt92J4oVk9FQdvL89CipliDHfkh6yTVY1WZ0="
20
+ }
21
+ },
22
+ "provenance": {
23
+ "kernel-builder": {
24
+ "version": "0.18.0-dev0",
25
+ "commit": "d054906a13710b811b96697b4635f03020842733",
26
+ "dirty": false
27
+ },
28
+ "kernel": {
29
+ "commit": "fe2bb66fee6c2a77eccf08a0508dc57428d488ed",
30
+ "dirty": false
31
+ }
32
+ }
33
+ }
build/torch215-metal-aarch64-darwin/metadata.json.sigstore ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHQzCCBsmgAwIBAgIUF0itvhGfgpvIhLvepl+QZRgU39EwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDE5MTEwNjU0WhcNMjYxMDE5MTExNjU0WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEjW1nIsFphuOzkSqK4qa2+TszC38+ncvWLWSrcS0CP3+NCyJD0QvWW3WRBYf4RRUJ4kJ+/XO2h2crkpPT26LKgKOCBegwggXkMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoZmUyYmI2NmZlZTZjMmE3N2VjY2YwOGEwNTA4ZGM1NzQyOGQ0ODhlZDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDChmZTJiYjY2ZmVlNmMyYTc3ZWNjZjA4YTA1MDhkYzU3NDI4ZDQ4OGVkMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKGZlMmJiNjZmZWU2YzJhNzdlY2NmMDhhMDUwOGRjNTc0MjhkNDg4ZWQwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzkyMzk2NzU3ODUvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiwYKKwYBBAHWeQIEAgR9BHsAeQB3AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoVPXzVQAAAQDAEgwRgIhAO1PkWxB1hrtdFuJkF7SsgqIB5BBxDfZOq9m0QfT2tLrAiEApgeZCwT20UsFT8bzh/NyvU1Ruqm+22nZcZeSTW9JBKkwCgYIKoZIzj0EAwMDaAAwZQIwWXa1Ur2BeaoqwAnSHqbdfVSXaScsEI6Sbthn9lS8dO4Nt4RwIJcrDWO+xvAICM53AjEAixshkbMdcZ3PjYvi6v0uyCH0BbZ4TZbH4eY7bsB3qIuvZ00fW2p0nz48ME4cHbPN"},"tlogEntries":[{"logIndex":"3320115722","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1792408014","inclusionPromise":{"signedEntryTimestamp":"MEQCIHwcn5ECcA28gjR0iBJjakfZjxXYlU+QGA4niVSAMjI3AiBkECWx/Vh2sLKKeSW/mxWvodY40QYU2l/EDHMlHZR4lQ=="},"inclusionProof":{"logIndex":"3198211460","rootHash":"M6566aHp8lGlBdzrAVTfRKPpJRM1JqlNB9FQVLpHa5I=","treeSize":"3198211464","hashes":["qMzG4SiOMIPe/hgORcNIRSEOewG4JM0fD3Dd7IbP3g4=","d4QJLCgFD8CdA69nUTfmN8+Ibso4nbV7jXYpAbl4R+A=","BzNey3iRmfR0lRaLVM5wd/uYGSy3qeq1xmyXSocJXE4=","ECYzvfCoyHukeLrGCXqe5iCBYkv0lOIit5fx+ql4GCc=","y0BpPrMW+5doJQr1GTJoL730xI7z8ggwEnp1wjxJG1Q=","NvhAA1+LqtXvaowiFXcolXI/TyFO3CsufLfJu3VJv2k=","PJRsVvScXNHmqQge+wrG01cIyckZNEkkYLfYRFm0H14=","f4MktXqhBPk7ruDBxwgqTvXa7eCNzak9cUObXS0eTxI=","OlLDeTiZ1vIMDel4vGDtbNVnrFnzDe1MFV5rBN5Ep4o=","uCZQe757l2sS1c05Y7TzOwEm+X8MeGLIUCkEOmFVOz4=","nyQV/+cWQUG5Hb2PKjQQNkQIJmz2qzAZKBQlkHGIknM=","G+nk7mgE5h6dUmv2UY7NDJrY3WvrZY31raaO1AETt+o=","qlTWNDzERnTBQVcHHXXVPjiUP0SsikGxfcxVlgqVFDo=","gg9GNApNke3+zNhl4tsWtmIycCFrOMCB3lys6XuSQNQ=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3198211464\nM6566aHp8lGlBdzrAVTfRKPpJRM1JqlNB9FQVLpHa5I=\n\n— rekor.sigstore.dev wNI9ajBFAiEAlXGSknEweEAhdcRhRjdEGFZbN3wLhTeIWiGNoDctVeMCIE1DKqgbjSuarW5oB83MG2lzH9hZ2WNKrwsxTg9Bu5Wb\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJjMGYxNmIzNGNhZDUzOTFkODcxM2FkOWYxZGEyZDJlYjFhYmMyODUzYjM2ZDZlOWQ3NDAxMzdlZTdhZGJjOGVjIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUR3NWZIL0FvRk14TjVKdXJNM1FRV1pja096U1dvVDBycUJ6TkNMWVB4Q2VRSWhBS0NTNmNtNk42UmdnSkhNQkg3RXpmR09ISmdlS0N4RjNiM3RCYTRITTZ4LyIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJla05EUW5OdFowRjNTVUpCWjBsVlJqQnBkSFpvUjJabmNIWkphRXgyWlhCc0sxRmFVbWRWTXpsRmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUlRWTlZFVjNUbXBWTUZkb1kwNU5hbGw0VFVSRk5VMVVSWGhPYWxVd1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZxVnpGdVNYTkdjR2gxVDNwclUzRkxOSEZoTWl0VWMzcERNemdyYm1OMlYweFhVM0lLWTFNd1ExQXpLMDVEZVVwRU1GRjJWMWN6VjFKQ1dXWTBVbEpWU2pSclNpc3ZXRTh5YURKamNtdHdVRlF5Tmt4TFowdFBRMEpsWjNkbloxaHJUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cGFiVlY1V1cxSk1rNXRXbXhhVkZwcVRXMUZNMDR5Vm1wWk1sbDNUMGRGZDA1VVFUUmFSMDB4VG5wUmVVOUhVVEJQUkdoc1drUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOWFiVlY1V1cxSk1rNXRXbXhhVkZwcVRXMUZNMDR5Vm1wWk1sbDNUMGRGZDA1VVFUUmFSMDB4VG5wUmVVOUhVVEJQUkdoc1drUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmh0V2xSS2FWbHFXVEphYlZac1RtMU5lVmxVWXpOYVYwNXFXbXBCTkZsVVFURk5SR2hyV1hwVk0wNUVTVFFLV2tSUk5FOUhWbXROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBkYWJFMXRTbWxPYWxwdFdsZFZNbGw2U21nS1RucGtiRmt5VG0xTlJHaG9UVVJWZDA5SFVtcE9WR013VFdwb2EwNUVaelJhVjFGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrMTZhM2tLVFhwck1rNTZWVE5QUkZWMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBkMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPVUpJYzBGbFVVSXpRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05V1VGaDZWbEZCUVVGUlJFRkZaM2RTWjBsb1FVOHhVQXByVjNoQ01XaHlkR1JHZFVwclJqZFRjMmR4U1VJMVFrSjRSR1phVDNFNWJUQlJabFF5ZEV4eVFXbEZRWEJuWlZwRGQxUXlNRlZ6UmxRNFlucG9MMDU1Q25aVk1WSjFjVzByTWpKdVdtTmFaVk5VVnpsS1FrdHJkME5uV1VsTGIxcEplbW93UlVGM1RVUmhRVUYzV2xGSmQxZFlZVEZWY2pKQ1pXRnZjWGRCYmxNS1NIRmlaR1pXVTFoaFUyTnpSVWsyVTJKMGFHNDViRk00WkU4MFRuUTBVbmRKU21OeVJGZFBLM2gyUVVsRFRUVXpRV3BGUVdsNGMyaHJZazFrWTFvelVBcHFXWFpwTm5Zd2RYbERTREJDWWxvMFZGcGlTRFJsV1RkaWMwSXpjVWwxZGxvd01HWlhNbkF3Ym5vME9FMUZOR05JWWxCT0NpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgnpMoh0fMX9y/ZZXPzounocmIRzWeo8eZiwCskVLGyh0CFCFSSmVNh1WcnW6hO8/XU/DChmiPGA8yMDI2MTAxOTExMDY1NFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDE5MTEwNjU0WjAvBgkqhkiG9w0BCQQxIgQgqtDU9UODQXFpBPcnDz+rf9c8+uq/sWvqkHv8i8MToIAwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwFKCq6QINAOC6j0s9a4GBQ0kgl40MvBKw9LGCAXiCGreMnDpHRZvP7QaSWj1h7ugeAjEA2i0r7vnqv5n6Wy9E4N+1+/34cBvGsCiis/EWC7CLEss69E2veouWDoqctyEK+BaS"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"wPFrNMrVOR2HE62fHaLS6xq8KFOzbW6ddAE37nrbyOw="},"signature":"MEYCIQDw5fH/AoFMxN5JurM3QQWZckOzSWoT0rqBzNCLYPxCeQIhAKCS6cm6N6RggJHMBH7EzfGOHJgeKCxF3b3tBa4HM6x/"}}
build/torch215-metal-aarch64-darwin/symbols.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_topk_metal_fe2bb66",
4
+ "functions": [
5
+ {
6
+ "name": "top_k",
7
+ "qualname": "top_k",
8
+ "module": "_topk_metal_fe2bb66",
9
+ "kind": "function",
10
+ "doc": "`(values, indices)` of the largest `k` per row of a 2D f32 tensor.\n\n`indices` is int32, which is what an expert-routed matmul wants, so routing them onward costs no\ncast. With `softmax`, `values` is softmaxed over the selected k.",
11
+ "signature": {
12
+ "parameters": [
13
+ {
14
+ "name": "logits",
15
+ "kind": "POSITIONAL_OR_KEYWORD",
16
+ "default": null,
17
+ "annotation": "torch.Tensor"
18
+ },
19
+ {
20
+ "name": "k",
21
+ "kind": "POSITIONAL_OR_KEYWORD",
22
+ "default": null,
23
+ "annotation": "int"
24
+ },
25
+ {
26
+ "name": "softmax",
27
+ "kind": "POSITIONAL_OR_KEYWORD",
28
+ "default": "False",
29
+ "annotation": "bool"
30
+ }
31
+ ],
32
+ "return_annotation": null
33
+ }
34
+ }
35
+ ],
36
+ "layers": []
37
+ }