Uploaded using `kernel-builder`.

#5
by kernels-bot - opened
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_5fe9dbb.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_5fe9dbb.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_5fe9dbb.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_5fe9dbb.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_5fe9dbb.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_5fe9dbb.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_5fe9dbb
3
+ ops = torch.ops._topk_metal_5fe9dbb
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_topk_metal_5fe9dbb::{op_name}"
build/torch210-metal-aarch64-darwin/_topk_metal_5fe9dbb.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:240b7f3020b80270e9afe197f9c46f154087ca73b837953ac6620ec134ff59cd
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_5fe9dbb",
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": "vkg/qZctYnVc3oQ/pWCZDxmKyJeKe+wHHfErZSl+Vw8=",
17
+ "_topk_metal_5fe9dbb.abi3.so": "JAt/MCC4AnDpr+GX+cRvFUCHynO4N5U6xmIOwTT/Wc0=",
18
+ "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg=",
19
+ "symbols.json": "oeP/Xy6EaPrjiqdul8zeoqpl6tW2LMncUjRi81TnxrI="
20
+ }
21
+ },
22
+ "provenance": {
23
+ "kernel-builder": {
24
+ "version": "0.18.0-dev0",
25
+ "commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
26
+ "dirty": false
27
+ },
28
+ "kernel": {
29
+ "commit": "5fe9dbb3d45f6f2652958c1f70e5381891fa7aa0",
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":"MIIHQTCCBsigAwIBAgIUDGwByATXnk08o/6mRQpumueNmDowCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDMwMTYwOTUyWhcNMjYxMDMwMTYxOTUyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEY8aI6a/fQOwT3g3osBS9Gm9s9ggm231ToiVqMvOfMeDbdxhj2xEBqxsZ/XrbYf3rPZB8lSDJGNfY2dFy+3EEq6OCBecwggXjMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDCg1ZmU5ZGJiM2Q0NWY2ZjI2NTI5NThjMWY3MGU1MzgxODkxZmE3YWEwMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVmZTlkYmIzZDQ1ZjZmMjY1Mjk1OGMxZjcwZTUzODE4OTFmYTdhYTAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvNDEwODM2ODY4MjQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoY2TIxUAAAQDAEcwRQIhAOuHuI9JtuZ16gU/VCxi1iA+h+S8WTdCC3mjjmqsElubAiBGCL2g5nZ1d+aFheY/Lxz94DjCQD15CFdTUXA9o401pjAKBggqhkjOPQQDAwNnADBkAjBXQ2rFCfafQ7Ykv6khQKNB9S1S482p5xOoXejywOBDduW96fzZ9ddUK154TAR+ZbkCMDZOsuapjikgFMgdOHKUj4yRXTcEs310RqxByXlaNs2jGuHFwVy4lheOfghCFbF1KA=="},"tlogEntries":[{"logIndex":"3597188580","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793376596","inclusionPromise":{"signedEntryTimestamp":"MEUCIBwY2J0iJK/3yqZKWIL6SOOcTh6TqEFwLhHOwKnpvPpaAiEAlTWlf+8w7kLYcoWH/nLzTanMZfYKg6uWH5kWGioT+E0="},"inclusionProof":{"logIndex":"3475284318","rootHash":"MywUHw3eDcRFBB9uKzru8w/0Y3pJTh3MAXTT6wdJS8Q=","treeSize":"3475284742","hashes":["U1bLM4DK+tJbitAJ9wUAzmh8bHK+TGzNPP9NznQykXM=","HGuR77VllJtpKveISNGQjCuHNkDbCJ6ZMAIldIN8zC0=","zHUtyvtCc4Cr4zFNPRlbqrUD6p05S0PzLrh4bxjFAgE=","4DV2KV2MgZiT+5ELscRHKktHF/lwnpPRbEqjAFqkZa4=","M1yRAqcHZEhu32LjqEF97alWmCYpQqtt86bJ/K2nQsw=","LM5soYMjWDXhXewrCL8fanR3yoQqJ7qXEQ9WiqGmMqo=","kpO6E0LmuXvOubP69rV7jVVQyZZDWE0Blfh/x+nCnu0=","fTjjF1R0HQiq+Zbh860WSY1tUld/nRSKdE/GQR2g1lk=","cz11lW0Z0i48HnhYaz/n9vvPxr/KPa5tc+P3M/xyXPY=","vDxjyosKxuM4jMfjHkYqlwTv/ycBtjI9N57ab2H5Tck=","FM36TTeg554lriH3CQSlnciZJEONZZ5U9v2CvXotJQQ=","h5VrGDgepEIgtJuhPvWmuJKEVx8q8xCLApgI8ngr2Rg=","NlD7kf7zliz6XZMopFEPBDQTFkC1k0B/M414sWSVjjg=","na7MCafKydTMg7pLg31hVCvG2iNeSrYEtRLJwhh7wng=","e3OaWwzL1tEWYXiUzGpH+1v9CiFPwweyfRzIh3Z+uO4=","b+938HIdfjdD/+LgIs3AVRE3Wc65/1NSSAL4OJ5FUXE=","kQz/4ND7LdhfAQn+idNsO+ZFC32sfkYRlhjWF5W+sPc=","zGfeoWKmrZlXMOvyi3R2GDbGpmI1skJW/wLTXCCgF0o=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3475284742\nMywUHw3eDcRFBB9uKzru8w/0Y3pJTh3MAXTT6wdJS8Q=\n\n— rekor.sigstore.dev wNI9ajBEAiAdEGmn+PtZ2vVVDDid67zJ1/gQP/PkPl6rVWaGOX5ghQIgQsxjqAs4ngTImdTvzLKqrZ0sLcxMP+B4CqDAc2+l1FY=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI3M2UxZTI4ZTlkYzJjMjBhNWFjMzA2ZTA2NWJiMGNhNjY0NDI5ZjdiNmM3OTUyM2FiZWY5NmVjZTY2ZDYwNDQ4In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUNpbGszME1MRlJrQmh6aXFkRGRPWjBXZnFzcEpweTNXWEgxNHlNUVluWGdRSWhBT2Z4VkRtTjNJTDBkUUVjV0RKVUJtTHM2MExpc3NQTmd0UjI5cnliTW9GTyIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJWRU5EUW5OcFowRjNTVUpCWjBsVlJFZDNRbmxCVkZodWF6QTRieTgyYlZKUmNIVnRkV1ZPYlVSdmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFVFhkTlZGbDNUMVJWZVZkb1kwNU5hbGw0VFVSTmQwMVVXWGhQVkZWNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZaT0dGSk5tRXZabEZQZDFRelp6TnZjMEpUT1VkdE9YTTVaMmR0TWpNeFZHOXBWbkVLVFhaUFprMWxSR0prZUdocU1uaEZRbkY0YzFvdldISmlXV1l6Y2xCYVFqaHNVMFJLUjA1bVdUSmtSbmtyTTBWRmNUWlBRMEpsWTNkbloxaHFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cE9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOU9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmN4V20xVk5WcEhTbWxOTWxFd1RsZFpNbHBxU1RKT1ZFazFUbFJvYWsxWFdUTk5SMVV4VFhwbmVFOUVhM2dLV20xRk0xbFhSWGROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2JWcFViR3RaYlVsNldrUlJNVnBxV20wS1RXcFpNVTFxYXpGUFIwMTRXbXBqZDFwVVZYcFBSRVUwVDFSR2JWbFVaR2haVkVGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrNUVSWGNLVDBSTk1rOUVXVFJOYWxGMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBaMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPRUpJYjBGbFFVSXlRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05Wk1sUkplRlZCUVVGUlJFRkZZM2RTVVVsb1FVOTFTQXAxU1RsS2RIVmFNVFpuVlM5V1EzaHBNV2xCSzJnclV6aFhWR1JEUXpOdGFtcHRjWE5GYkhWaVFXbENSME5NTW1jMWJsb3haQ3RoUm1obFdTOU1lSG81Q2pSRWFrTlJSREUxUTBaa1ZGVllRVGx2TkRBeGNHcEJTMEpuWjNGb2EycFBVRkZSUkVGM1RtNUJSRUpyUVdwQ1dGRXlja1pEWm1GbVVUZFphM1kyYTJnS1VVdE9RamxUTVZNME9ESndOWGhQYjFobGFubDNUMEpFWkhWWE9UWm1lbG81WkdSVlN6RTFORlJCVWl0YVltdERUVVJhVDNOMVlYQnFhV3RuUmsxblpBcFBTRXRWYWpSNVVsaFVZMFZ6TXpFd1VuRjRRbmxZYkdGT2N6SnFSM1ZJUm5kV2VUUnNhR1ZQWm1kb1EwWmlSakZMUVQwOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgEPIkvQ5tHYn6mZIxdHVhVyk074tYd9bf05B6JUVusWsCFQC26BLAy31chN5N0y22iA+2OwZqvBgPMjAyNjEwMzAxNjA5NTJaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAzMDE2MDk1MlowLwYJKoZIhvcNAQkEMSIEICRVz5P3uSmWCIClCEgp3VvuOe3SgrZZp6Y1pSw++RM3MIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMQCGny0Ag2ZzXfnuW2adr5HXpstB6zuK3V4WkfbGuDpy8kNtGOCBxNgvSqHVzjEYo+UCMAVpzxyg2a4BY7RS1DG7FOWiRJCrzoo6URsnS3F99LCT82CDcP3nW2mxwokC4YkOvA=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"c+Hijp3CwgpawwbgZbsMpmRCn3tseVI6vvluzmbWBEg="},"signature":"MEYCIQCilk30MLFRkBhziqdDdOZ0WfqspJpy3WXH14yMQYnXgQIhAOfxVDmN3IL0dQEcWDJUBmLs60LissPNgtR29rybMoFO"}}
build/torch210-metal-aarch64-darwin/symbols.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_topk_metal_5fe9dbb",
4
+ "functions": [
5
+ {
6
+ "name": "top_k",
7
+ "qualname": "top_k",
8
+ "module": "_topk_metal_5fe9dbb",
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_5fe9dbb
3
+ ops = torch.ops._topk_metal_5fe9dbb
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_topk_metal_5fe9dbb::{op_name}"
build/torch211-metal-aarch64-darwin/_topk_metal_5fe9dbb.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4457db14fcc31dde4cdc260a50e74e41515c8aefbaad5a392888ced4d7cd2d0b
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_5fe9dbb",
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": "vkg/qZctYnVc3oQ/pWCZDxmKyJeKe+wHHfErZSl+Vw8=",
17
+ "_topk_metal_5fe9dbb.abi3.so": "RFfbFPzDHd5M3CYKUOdOQVFciu+6rVo5KIjO1NfNLQs=",
18
+ "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg=",
19
+ "symbols.json": "oeP/Xy6EaPrjiqdul8zeoqpl6tW2LMncUjRi81TnxrI="
20
+ }
21
+ },
22
+ "provenance": {
23
+ "kernel-builder": {
24
+ "version": "0.18.0-dev0",
25
+ "commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
26
+ "dirty": false
27
+ },
28
+ "kernel": {
29
+ "commit": "5fe9dbb3d45f6f2652958c1f70e5381891fa7aa0",
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":"MIIHQTCCBsegAwIBAgIUXsp2U1PKh+ts+Dp1yT7zMHyjxikwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDMwMTYxMDE5WhcNMjYxMDMwMTYyMDE5WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEipXrgr0bheCFXa+AnyW8cB2qB+NI4VY+YOyqR+ZDTLpHZ921HNU+oPfXpzlAfbvT6SNEf3RD9OXsgWVCeucUZ6OCBeYwggXiMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDCg1ZmU5ZGJiM2Q0NWY2ZjI2NTI5NThjMWY3MGU1MzgxODkxZmE3YWEwMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVmZTlkYmIzZDQ1ZjZmMjY1Mjk1OGMxZjcwZTUzODE4OTFmYTdhYTAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvNDEwODM2ODY4MjQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoY2TjKEAAAQDAEYwRAIgBIyzd6bP7V0V+0AC/lUgXlyV3q2o1sOe4AQG59QHhVACIHFw2iLZseZBGVgw1+TDF7m5q9JkYiVDQNXcursi3IHRMAoGCCqGSM49BAMDA2gAMGUCMDwavLOzt7aXnVhDM5+d6k0x1ACAOxT8NWT+Lme4afxZzbPxQWJm1VAF5tnk4oTeiwIxAJPVnp9ntkVH5iFViGUz2SzVgeOMpfuXd0WVHed3n7hopu4l2lfg3kImrpJQeAY1PA=="},"tlogEntries":[{"logIndex":"3597199223","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793376624","inclusionPromise":{"signedEntryTimestamp":"MEUCIQDeSSm3nhqUFLr8jZyt4LYk6mNlX3YwKwHjnf8d7eK6GAIgKJp64c8VpYnO+eYpEnibbRcLtB0SASVTSuw+feLWtOM="},"inclusionProof":{"logIndex":"3475294961","rootHash":"4NbifFbrUUifYmdlgY5+xUAAUmy3hytKGvicgsM/3iE=","treeSize":"3475295313","hashes":["R6F7cKNSArzQgPVy1qD+rYaL4p7o3EjOm2NQ+yuPwMg=","zfbLHYFIhCuNNdfXZyXhxHQqAcQHaL7JVo8Dvvut67k=","UUtz9vGLCea12kxAs2ttRYUY/Kmk8p+aTrqiI0GBnX0=","/kgv4xA6fG9m3AfvEVKtKsFHgpNipjZVLoNRFhsIJL8=","kufMMWc1lFTmNtJOdl+vErmTpGbF/3MSb9S/AtSUgwM=","KK29+53PWT0xsciv7FpxbUW1btZSlziWBFr1m0Hom9A=","nxbriR+HmmCidmTF+FXNSGGdlR9PVu+fB+civLgdXAk=","EUtDsLSNpNHkPaqYFQQ0VoI2Ebhi1Qpf3HZ8+bidCP8=","IAGyfPRLS6NGn6Xw+VUYPWN/2oMyycfVdQ8bAROKQVA=","e+F1QGfzjs8NBHCLywy0nTQvZE9IITXNsoeNY3o3Y7M=","hEuOupwNXXNsioHaH+0u6Vh0NSS8HkgnlTIj/++ccGY=","sBCijzIq7Li8NuTEpG9zcyJqdykMjHmsFn48HSVOsyU=","SPQqUK0dIaXq3Q4Tu3IYWaG+LH58ihQygVZpDPOnx58=","h5VrGDgepEIgtJuhPvWmuJKEVx8q8xCLApgI8ngr2Rg=","NlD7kf7zliz6XZMopFEPBDQTFkC1k0B/M414sWSVjjg=","na7MCafKydTMg7pLg31hVCvG2iNeSrYEtRLJwhh7wng=","e3OaWwzL1tEWYXiUzGpH+1v9CiFPwweyfRzIh3Z+uO4=","b+938HIdfjdD/+LgIs3AVRE3Wc65/1NSSAL4OJ5FUXE=","kQz/4ND7LdhfAQn+idNsO+ZFC32sfkYRlhjWF5W+sPc=","zGfeoWKmrZlXMOvyi3R2GDbGpmI1skJW/wLTXCCgF0o=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3475295313\n4NbifFbrUUifYmdlgY5+xUAAUmy3hytKGvicgsM/3iE=\n\n— rekor.sigstore.dev wNI9ajBEAiB6yW/+zLLaQFwezy8evo8dGIB+a1T/HW9yeB5A1B466AIgV8LAVgbHNJptCRK7zfoM07FnLnUsqG8j6BUyqJtakuE=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI4MDFiYzQ0MGUyNThkOGY4NWI2YWMxZTk1ZGRmOGU0MzQ4OThlNDUyMTAzMjA3ZTI0NTA4OGU1YWI5Mzk1ZGEzIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQlRVb2YwV2locUYzWTFjbTFrRk9GUW5rbjYzZVpKUGVQa0UvN3dUaWtBYkFpRUEwUDkyeEFGVHVlTi9ZU2Y3OEEwdFJ6NkNkNWdvL2xEbFQrSVZaWGtjN3NRPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJWRU5EUW5ObFowRjNTVUpCWjBsVldITndNbFV4VUV0b0szUnpLMFJ3TVhsVU4zcE5TSGxxZUdscmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFVFhkTlZGbDRUVVJGTlZkb1kwNU5hbGw0VFVSTmQwMVVXWGxOUkVVMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZwY0ZoeVozSXdZbWhsUTBaWVlTdEJibmxYT0dOQ01uRkNLMDVKTkZaWksxbFBlWEVLVWl0YVJGUk1jRWhhT1RJeFNFNVZLMjlRWmxod2VteEJabUoyVkRaVFRrVm1NMUpFT1U5WWMyZFhWa05sZFdOVldqWlBRMEpsV1hkbloxaHBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cE9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOU9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmN4V20xVk5WcEhTbWxOTWxFd1RsZFpNbHBxU1RKT1ZFazFUbFJvYWsxWFdUTk5SMVV4VFhwbmVFOUVhM2dLV20xRk0xbFhSWGROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2JWcFViR3RaYlVsNldrUlJNVnBxV20wS1RXcFpNVTFxYXpGUFIwMTRXbXBqZDFwVVZYcFBSRVUwVDFSR2JWbFVaR2haVkVGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrNUVSWGNLVDBSTk1rOUVXVFJOYWxGMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBVVmxMUzNkWlFrSkJTRmRsVVVsRlFXZFNOMEpJYTBGa2QwSXhRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05Wk1sUnFTMFZCUVVGUlJFRkZXWGRTUVVsblFrbDVlZ3BrTm1KUU4xWXdWaXN3UVVNdmJGVm5XR3g1VmpOeE1tOHhjMDlsTkVGUlJ6VTVVVWhvVmtGRFNVaEdkekpwVEZwelpWcENSMVpuZHpFclZFUkdOMjAxQ25FNVNtdFphVlpFVVU1WVkzVnljMmt6U1VoU1RVRnZSME5EY1VkVFRUUTVRa0ZOUkVFeVowRk5SMVZEVFVSM1lYWk1UM3AwTjJGWWJsWm9SRTAxSzJRS05tc3dlREZCUTBGUGVGUTRUbGRVSzB4dFpUUmhabmhhZW1KUWVGRlhTbTB4VmtGR05YUnVhelJ2VkdWcGQwbDRRVXBRVm01d09XNTBhMVpJTldsR1ZncHBSMVY2TWxONlZtZGxUMDF3Wm5WWVpEQlhWa2hsWkROdU4yaHZjSFUwYkRKc1ptY3phMGx0Y25CS1VXVkJXVEZRUVQwOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgXLjxB010jUCyQDwBHF+y2dsyZp48r2W2qnmnunTbER0CFQDOD0xTZFNez6RAX0G6U8LQVczx3xgPMjAyNjEwMzAxNjEwMTlaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAzMDE2MTAxOVowLwYJKoZIhvcNAQkEMSIEIG9nF4ymG41vK4+MJ2xRPe4rdEg68H5rcqYBtJSuKBZ8MIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQDfHvCHvQWakqYrsxqc3XUe/TPdxaYcRQi2KhKPbA4oQcR7s6pl127RJUOZTho1DPMCMQCanik64V9pWydDNsj36UX66NqZQGfjxELU6QOucdB68WVrOn0eUF97rYWImtnP5AY="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"gBvEQOJY2PhbasHpXd+OQ0iY5FIQMgfiRQiOWrk5XaM="},"signature":"MEUCIBTUof0WihqF3Y1cm1kFOFQnkn63eZJPePkE/7wTikAbAiEA0P92xAFTueN/YSf78A0tRz6Cd5go/lDlT+IVZXkc7sQ="}}
build/torch211-metal-aarch64-darwin/symbols.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_topk_metal_5fe9dbb",
4
+ "functions": [
5
+ {
6
+ "name": "top_k",
7
+ "qualname": "top_k",
8
+ "module": "_topk_metal_5fe9dbb",
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_5fe9dbb
3
+ ops = torch.ops._topk_metal_5fe9dbb
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
+ return f"_topk_metal_5fe9dbb::{op_name}"
build/torch212-metal-aarch64-darwin/{_topk_metal_4487601.abi3.so → _topk_metal_5fe9dbb.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:900527fa1433a6de7d43fb2e72dc107a481564e362680294ef79eac8d1fc0c24
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_5fe9dbb",
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": "vkg/qZctYnVc3oQ/pWCZDxmKyJeKe+wHHfErZSl+Vw8=",
17
+ "_topk_metal_5fe9dbb.abi3.so": "kAUn+hQzpt59Q/suctwQekgVZONiaAKU73nqyNH8DCQ=",
18
+ "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg=",
19
+ "symbols.json": "oeP/Xy6EaPrjiqdul8zeoqpl6tW2LMncUjRi81TnxrI="
20
  }
21
  },
22
  "provenance": {
23
  "kernel-builder": {
24
+ "version": "0.18.0-dev0",
25
+ "commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
26
  "dirty": false
27
  },
28
  "kernel": {
29
+ "commit": "5fe9dbb3d45f6f2652958c1f70e5381891fa7aa0",
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":"MIIHQjCCBsigAwIBAgIUGyjOQAQyPx7gQPy7LJSsBFbJZnUwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDMwMTYxMDMyWhcNMjYxMDMwMTYyMDMyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpbKWvPvyrUguy4ShuokqhI00GZsK2RBN+a1gshFU38QMYQ1OznVOGEABaxKSUDvOBUFSLj20K8IwXgCSeIZCIKOCBecwggXjMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDCg1ZmU5ZGJiM2Q0NWY2ZjI2NTI5NThjMWY3MGU1MzgxODkxZmE3YWEwMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVmZTlkYmIzZDQ1ZjZmMjY1Mjk1OGMxZjcwZTUzODE4OTFmYTdhYTAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvNDEwODM2ODY4MjQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoY2TwLsAAAQDAEcwRQIhAPtsHKAvWuYXJSB4f3OnIEB1nhEor84hauIvJbzQP+BeAiBlXCWWWslyy8opCaX3FFzOgpw7lEKoPdKF7xMfh6SM7zAKBggqhkjOPQQDAwNoADBlAjBT1rZPniEInaMc2ZcOtu2+B8CGWFVMalvvylghLxJ6SdWXYvVMQf0RWKIl+LYUc0MCMQCHVAxZc+sT2CRrBfKge5WnrAtqSiTtKTZuXADZf2SV5w6PE+e2kuoR7+9YURqmLt4="},"tlogEntries":[{"logIndex":"3597202207","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793376634","inclusionPromise":{"signedEntryTimestamp":"MEUCIQDh1r3KrdQhOGE9rozKyVKWmxEKvBa7Y+bUoXbSGvCU8gIgFNwiSFVVdYT8yKppcAMpNM9M8+9SSirS0RHxpvQzT4A="},"inclusionProof":{"logIndex":"3475297945","rootHash":"FTq3VB0Nf0cdM1E+Tg/RE0lJq46y/SfuUTTh/E+i/lo=","treeSize":"3475298582","hashes":["ggWI7lcSgbW0vNS2LoSV3Q6KpW/12t06GtnQjBAHPeQ=","bWanYLyeY2blBJVrYqkHhWkUcKrOVP5sA8QZ+KIZF40=","Ld22r9UcmPcRtgOCblxUlg/bRL5FOr5GWD+rljdXsBQ=","/dVMk6scqoLWGiNQfNb+7uxWRFVdbe7vzr3NhDWRLOA=","ADE0Y35mRaHTmes1xsg5T00uLV3JZG0Sv/H2cox6kmE=","mdOMbkljbGB1Qbsv1Aa46D4VOmYG1eRhzpGp8EK23KY=","nWN3IIbA5FpEzqW7Rla7UJYRRHDlGA3ciM8JqP4Gemg=","6tIv7YqlZNJCQb+pw8/NBZ0jo1mTyZK9YmW7g1RRky4=","Z4FQtu6IGtsdIX5YidPMSLZBDv4VDDaymW3WZyqgcwQ=","lGYFBcNvyBmAFxLaGGRyqMMgmhWGLGSLR6p5qcgxV8s=","tYbYL7+vTPECxE55ffmtBnJzxnVhod2ciD5z/Z7eytI=","uzAqATDiB4wMsVbDJslee4ZjxHtxKjjuq4QmwWYxtbw=","Ksmd0AAc2+ypCtFEpebNUZ+n9S0yOALriF/rBkCHIpw=","SPQqUK0dIaXq3Q4Tu3IYWaG+LH58ihQygVZpDPOnx58=","h5VrGDgepEIgtJuhPvWmuJKEVx8q8xCLApgI8ngr2Rg=","NlD7kf7zliz6XZMopFEPBDQTFkC1k0B/M414sWSVjjg=","na7MCafKydTMg7pLg31hVCvG2iNeSrYEtRLJwhh7wng=","e3OaWwzL1tEWYXiUzGpH+1v9CiFPwweyfRzIh3Z+uO4=","b+938HIdfjdD/+LgIs3AVRE3Wc65/1NSSAL4OJ5FUXE=","kQz/4ND7LdhfAQn+idNsO+ZFC32sfkYRlhjWF5W+sPc=","zGfeoWKmrZlXMOvyi3R2GDbGpmI1skJW/wLTXCCgF0o=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3475298582\nFTq3VB0Nf0cdM1E+Tg/RE0lJq46y/SfuUTTh/E+i/lo=\n\n— rekor.sigstore.dev wNI9ajBFAiEAt6WquHfVFC6JLUBt30CJgYShW23JEuqQ4DD7zfcz0jMCICp+he6w7Xr2vpVnyavBiGu3ZBgDUnRpNjEcPFcGq0wW\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI3NTJkYjFhM2MxMjc0ZWY3MTY0MmYxY2JiZDgwMDJjNzdkNzUxNWY3ZTIwYTM1NjUxMjY1ZjBjNmFhNmMyODE2In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJR1dhcm9saGp6MGRKVHkzSDBlUGNrREZ6WWNTcS9FNnVXaFVLN2RxRW5rUUFpQjkzUy9rU2JRbmlVVWVlZTkzMnhQY3E3bkgrdnZIOWdQWk9UVnd1bzN0TXc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJha05EUW5OcFowRjNTVUpCWjBsVlIzbHFUMUZCVVhsUWVEZG5VVkI1TjB4S1UzTkNSbUpLV201VmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFVFhkTlZGbDRUVVJOZVZkb1kwNU5hbGw0VFVSTmQwMVVXWGxOUkUxNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ3WWt0WGRsQjJlWEpWWjNWNU5GTm9kVzlyY1doSk1EQkhXbk5MTWxKQ1RpdGhNV2NLYzJoR1ZUTTRVVTFaVVRGUGVtNVdUMGRGUVVKaGVFdFRWVVIyVDBKVlJsTk1hakl3U3poSmQxaG5RMU5sU1ZwRFNVdFBRMEpsWTNkbloxaHFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cE9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOU9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmN4V20xVk5WcEhTbWxOTWxFd1RsZFpNbHBxU1RKT1ZFazFUbFJvYWsxWFdUTk5SMVV4VFhwbmVFOUVhM2dLV20xRk0xbFhSWGROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2JWcFViR3RaYlVsNldrUlJNVnBxV20wS1RXcFpNVTFxYXpGUFIwMTRXbXBqZDFwVVZYcFBSRVUwVDFSR2JWbFVaR2haVkVGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrNUVSWGNLVDBSTk1rOUVXVFJOYWxGMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBaMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPRUpJYjBGbFFVSXlRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05Wk1sUjNUSE5CUVVGUlJFRkZZM2RTVVVsb1FWQjBjd3BJUzBGMlYzVlpXRXBUUWpSbU0wOXVTVVZDTVc1b1JXOXlPRFJvWVhWSmRrcGllbEZRSzBKbFFXbENiRmhEVjFkWGMyeDVlVGh2Y0VOaFdETkdSbnBQQ21kd2R6ZHNSVXR2VUdSTFJqZDRUV1pvTmxOTk4zcEJTMEpuWjNGb2EycFBVRkZSUkVGM1RtOUJSRUpzUVdwQ1ZERnlXbEJ1YVVWSmJtRk5ZekphWTA4S2RIVXlLMEk0UTBkWFJsWk5ZV3gyZG5sc1oyaE1lRW8yVTJSWFdGbDJWazFSWmpCU1YwdEpiQ3RNV1ZWak1FMURUVkZEU0ZaQmVGcGpLM05VTWtOU2NncENaa3RuWlRWWGJuSkJkSEZUYVZSMFMxUmFkVmhCUkZwbU1sTldOWGMyVUVVclpUSnJkVzlTTnlzNVdWVlNjVzFNZERROUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgZuOsw9OYSWnCoLT3YSmKvAA/FmulGrZdhnDTrOsK0CMCFFezfS5OVmX+LkGYPPTUv3SqJSMgGA8yMDI2MTAzMDE2MTAzM1owAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDMwMTYxMDMzWjAvBgkqhkiG9w0BCQQxIgQgMflTfZInFLLZKsoogwGM3HmqwRSSIYp4D181hqI+IpcwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxAKbQj0Z98+Rn9f1+EsSkuZEH24L3+CDSL7l4Mdhr+CgEnk66Xc6TFBE13M8Iuc/hXgIxAJQ77MT3X30iptEKiDzpyBaOqHqaKwVVeA605B65MwMUrMRmEGxnW/z4yCpIVmigqQ=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"dS2xo8EnTvcWQvHLvYACx311FffiCjVlEmXwxqpsKBY="},"signature":"MEQCIGWarolhjz0dJTy3H0ePckDFzYcSq/E6uWhUK7dqEnkQAiB93S/kSbQniUUeee932xPcq7nH+vvH9gPZOTVwuo3tMw=="}}
build/torch212-metal-aarch64-darwin/symbols.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_topk_metal_5fe9dbb",
4
+ "functions": [
5
+ {
6
+ "name": "top_k",
7
+ "qualname": "top_k",
8
+ "module": "_topk_metal_5fe9dbb",
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_5fe9dbb
3
+ ops = torch.ops._topk_metal_5fe9dbb
4
 
5
  def add_op_namespace_prefix(op_name: str):
6
  """
7
  Prefix op by namespace.
8
  """
9
+ return f"_topk_metal_5fe9dbb::{op_name}"
build/torch213-metal-aarch64-darwin/{_topk_metal_4487601.abi3.so → _topk_metal_5fe9dbb.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:fbc87ed37096460adafa91581ce1aa72ccd8a822b129291a0dd13db4518d6f55
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_5fe9dbb",
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": "vkg/qZctYnVc3oQ/pWCZDxmKyJeKe+wHHfErZSl+Vw8=",
17
+ "_topk_metal_5fe9dbb.abi3.so": "+8h+03CWRgra+pFYHOGqcszYqCKxKSkaDdE9tFGNb1U=",
18
+ "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg=",
19
+ "symbols.json": "oeP/Xy6EaPrjiqdul8zeoqpl6tW2LMncUjRi81TnxrI="
20
  }
21
  },
22
  "provenance": {
23
  "kernel-builder": {
24
+ "version": "0.18.0-dev0",
25
+ "commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
26
  "dirty": false
27
  },
28
  "kernel": {
29
+ "commit": "5fe9dbb3d45f6f2652958c1f70e5381891fa7aa0",
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":"MIIHQzCCBsmgAwIBAgIUSxJlSH8ENMyQ2QWNuT0YYmu+lNswCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDMwMTYxMDQyWhcNMjYxMDMwMTYyMDQyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZYnnSV5XQnEmVNpLEc1cxVY1Ml6PzpHwIeg59kZ5VZbw2TgSx+dT1ZWyw9aMxxF81bIFVC3POnyJxh6LhIiIB6OCBegwggXkMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDCg1ZmU5ZGJiM2Q0NWY2ZjI2NTI5NThjMWY3MGU1MzgxODkxZmE3YWEwMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVmZTlkYmIzZDQ1ZjZmMjY1Mjk1OGMxZjcwZTUzODE4OTFmYTdhYTAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvNDEwODM2ODY4MjQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiwYKKwYBBAHWeQIEAgR9BHsAeQB3AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoY2T5DsAAAQDAEgwRgIhAL0xPeE0KsM4JtksECN1njMnZV4cf4ONJ1w5tPWuuU0PAiEAx8Ka2GRUn4Hb+qjKgwSCCTFEQXHMkdPADQY8Noag99AwCgYIKoZIzj0EAwMDaAAwZQIxAPg4ShPW4yW1tuvbJmvW7aYex8464IO2YOlKoXcjj6R9F5wiRPeSE/4G37ND4heTpwIwZDD11irx96FD8Uts2Jk30SOCU6ZcUBR8v84rm7WDb0ZWO/O+vG/t1KYSik5BYVvB"},"tlogEntries":[{"logIndex":"3597204911","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793376646","inclusionPromise":{"signedEntryTimestamp":"MEQCIFDdGr/g9HXu2rfr65yz19GzDEnaG8ayyJZLBq8MPx5qAiA2XRlalnFC8en6kBcnSyBBsNUZsYRArsuBP6EWKQkmGw=="},"inclusionProof":{"logIndex":"3475300649","rootHash":"wJJ9/+e1oN5XkVNJ7/UNEOv+re9qiijqAAQkGMfaCsI=","treeSize":"3475300912","hashes":["OfNqwPoOn25FVjf8Yr8K3BkszFrqI202+0Qm+zRM5NE=","9YblTi9gwjX29rUDPCbnAnhfqkOaBuCCrGmTUYgujEE=","xULn2haEcWoC/Pauv+B6MoLCI8y9DlGUJLmKsLNsgXQ=","xM6HAeYEepwcHFz6gNZwodh7LTVB04pjGuvEA/QZQIk=","RrDKheWkw0B6gW47Nt12Xp/xBCB0fZGAaLXdpEZIxwg=","hBW9mivEiiYx7Q4SKYuwWCipGrZTE2AXt7g4nwOOu94=","gN1aMV+Vrd/XD7Lwe2EeY1VKfByn6YodPw9PnEs2J3M=","dOCNKaosYJ4g9KwiVyst9djY+sZ8PANmo97YSJT28eE=","UWH7eAHQrKMpd/0RXGe+QOYJBmHsTIY6SbaWuahL/ZU=","+xkuhQUs2Ws3GCsB/m5TbL300RqcIi2aCJg1284Ul9k=","oIhHZrMVtNA52uVl/wilEbxvxNMQYee/qEErTXk+4Qs=","SPQqUK0dIaXq3Q4Tu3IYWaG+LH58ihQygVZpDPOnx58=","h5VrGDgepEIgtJuhPvWmuJKEVx8q8xCLApgI8ngr2Rg=","NlD7kf7zliz6XZMopFEPBDQTFkC1k0B/M414sWSVjjg=","na7MCafKydTMg7pLg31hVCvG2iNeSrYEtRLJwhh7wng=","e3OaWwzL1tEWYXiUzGpH+1v9CiFPwweyfRzIh3Z+uO4=","b+938HIdfjdD/+LgIs3AVRE3Wc65/1NSSAL4OJ5FUXE=","kQz/4ND7LdhfAQn+idNsO+ZFC32sfkYRlhjWF5W+sPc=","zGfeoWKmrZlXMOvyi3R2GDbGpmI1skJW/wLTXCCgF0o=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3475300912\nwJJ9/+e1oN5XkVNJ7/UNEOv+re9qiijqAAQkGMfaCsI=\n\n— rekor.sigstore.dev wNI9ajBGAiEAwgjwJhM+2eKEs5xVEtdwHlv9i06gtdUZ7MaPbwkq0/wCIQCqHps6ydMzQdjJ3R6BTBg8+Tmy8AanoCM8G3mPwELSzg==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIzNTE5NTVhYjNlNmJjZjU0ZmI1ODEwNTI2ZDhkM2FhZjUyZGY0MWQ1NzU3MTg0MTM4YWZhOTExZGNjZjE1MWZhIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJSDlraGZPVGk3bFdCVGZLd1NIZ3JoTmlTeUVMKzRadEtaOWRsY0I0cnJNcUFpRUE3UUlSK3lraHZSdk1pWG9tMS96dTBrcnJoRkw5ck5oTERjTUZYN1dtd21RPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJla05EUW5OdFowRjNTVUpCWjBsVlUzaEtiRk5JT0VWT1RYbFJNbEZYVG5WVU1GbFpiWFVyYkU1emQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFVFhkTlZGbDRUVVJSZVZkb1kwNU5hbGw0VFVSTmQwMVVXWGxOUkZGNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZhV1c1dVUxWTFXRkZ1UlcxV1RuQk1SV014WTNoV1dURk5iRFpRZW5CSWQwbGxaelVLT1d0YU5WWmFZbmN5VkdkVGVDdGtWREZhVjNsM09XRk5lSGhHT0RGaVNVWldRek5RVDI1NVNuaG9Oa3hvU1dsSlFqWlBRMEpsWjNkbloxaHJUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cE9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOU9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmN4V20xVk5WcEhTbWxOTWxFd1RsZFpNbHBxU1RKT1ZFazFUbFJvYWsxWFdUTk5SMVV4VFhwbmVFOUVhM2dLV20xRk0xbFhSWGROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2JWcFViR3RaYlVsNldrUlJNVnBxV20wS1RXcFpNVTFxYXpGUFIwMTRXbXBqZDFwVVZYcFBSRVUwVDFSR2JWbFVaR2haVkVGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrNUVSWGNLVDBSTk1rOUVXVFJOYWxGMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBkMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPVUpJYzBGbFVVSXpRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05Wk1sUTFSSE5CUVVGUlJFRkZaM2RTWjBsb1FVd3dlQXBRWlVVd1MzTk5ORXAwYTNORlEwNHhibXBOYmxwV05HTm1ORTlPU2pGM05YUlFWM1YxVlRCUVFXbEZRWGc0UzJFeVIxSlZialJJWWl0eGFrdG5kMU5EQ2tOVVJrVlJXRWhOYTJSUVFVUlJXVGhPYjJGbk9UbEJkME5uV1VsTGIxcEplbW93UlVGM1RVUmhRVUYzV2xGSmVFRlFaelJUYUZCWE5IbFhNWFIxZG1JS1NtMTJWemRoV1dWNE9EUTJORWxQTWxsUGJFdHZXR05xYWpaU09VWTFkMmxTVUdWVFJTODBSek0zVGtRMGFHVlVjSGRKZDFwRVJERXhhWEo0T1RaR1JBbzRWWFJ6TWtwck16QlRUME5WTmxwalZVSlNPSFk0TkhKdE4xZEVZakJhVjA4dlR5dDJSeTkwTVV0WlUybHJOVUpaVm5aQ0NpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgAewctt77pfCruVBQxoc4iVorYjiO1exyXAghnQQK+WgCFQDxZDSjx8gfkYX6cABSvLD9cbRqhBgPMjAyNjEwMzAxNjEwNDJaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAzMDE2MTA0MlowLwYJKoZIhvcNAQkEMSIEIJF8PcHNyWfFRmRoe7Xi4J7Q2en0Nc2Woma1g0fOGVwMMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCME+3CVpZvQc5jlBmYvFPSNKQpv7boMaqO0++aGkPoNlbQWZoQvOxRC6CjiEWRABFeAIxALfOPfeWDdTSk5L+fGtl+xt/MTecJZE9ckHni5jXQTHV4IVVEv35AJtlspQm1+bKrg=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"NRlVqz5rz1T7WBBSbY06r1LfQdV1cYQTivqRHczxUfo="},"signature":"MEUCIH9khfOTi7lWBTfKwSHgrhNiSyEL+4ZtKZ9dlcB4rrMqAiEA7QIR+ykhvRvMiXom1/zu0krrhFL9rNhLDcMFX7WmwmQ="}}
build/torch213-metal-aarch64-darwin/symbols.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_topk_metal_5fe9dbb",
4
+ "functions": [
5
+ {
6
+ "name": "top_k",
7
+ "qualname": "top_k",
8
+ "module": "_topk_metal_5fe9dbb",
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_5fe9dbb
3
+ ops = torch.ops._topk_metal_5fe9dbb
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_topk_metal_5fe9dbb::{op_name}"
build/torch214-metal-aarch64-darwin/_topk_metal_5fe9dbb.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:07c1c0f8053aeedeb7766a4970fd5edad53bd2fc7d62ac841b1213b8223c1425
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_5fe9dbb",
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": "vkg/qZctYnVc3oQ/pWCZDxmKyJeKe+wHHfErZSl+Vw8=",
17
+ "_topk_metal_5fe9dbb.abi3.so": "B8HA+AU67t63dmpJcP1e2tU70vx9YqyEGxITuCI8FCU=",
18
+ "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg=",
19
+ "symbols.json": "oeP/Xy6EaPrjiqdul8zeoqpl6tW2LMncUjRi81TnxrI="
20
+ }
21
+ },
22
+ "provenance": {
23
+ "kernel-builder": {
24
+ "version": "0.18.0-dev0",
25
+ "commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
26
+ "dirty": false
27
+ },
28
+ "kernel": {
29
+ "commit": "5fe9dbb3d45f6f2652958c1f70e5381891fa7aa0",
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":"MIIHQjCCBsegAwIBAgIUAQCgbdVcUHSi/rsbKqG8wKGUi5gwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDMwMTYxMDAzWhcNMjYxMDMwMTYyMDAzWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYCfiz+ZpsZ/VMHvGZrsHTe4vVTLvXYSzszlbmOv1fZevJfNhw/kA2AoJrZjNN+kGY1Qhx1Z9DxFIzW9sEsJ9C6OCBeYwggXiMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDCg1ZmU5ZGJiM2Q0NWY2ZjI2NTI5NThjMWY3MGU1MzgxODkxZmE3YWEwMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVmZTlkYmIzZDQ1ZjZmMjY1Mjk1OGMxZjcwZTUzODE4OTFmYTdhYTAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvNDEwODM2ODY4MjQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoY2TTrAAAAQDAEYwRAIgTa6u3tM838Ld8QAr6+TfTZaSFIAU9ssZ0Y/qbWrWq9ICIG+Du2e5xotS+D2NnOOGJAU450A7E1aVCXqlCO1chCOtMAoGCCqGSM49BAMDA2kAMGYCMQDlVMoZCquYmVD+R7+FiVt4Oexq3gFV/qiPpX96z0+NwHcPiU84RWLkC7vioRlyPlsCMQDeosP0pfjDDzf9eubu4msXRuZlU52mdumuV/fEfy0OlKhFt+m5CaDjBX639WmST00="},"tlogEntries":[{"logIndex":"3597192864","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793376607","inclusionPromise":{"signedEntryTimestamp":"MEUCIQCBGJTxqzVU8vihIvm4oyy21qm864OvPUAMggXNNE1lmwIgbYsHWVekceeT1TRwTWywx6yi0d9SI3ODDVs3vLXMlw8="},"inclusionProof":{"logIndex":"3475288602","rootHash":"muXvwDev5gs62+K+5jeZ7mUkzHxOWY5zArWp0qM8Ku8=","treeSize":"3475291313","hashes":["tKl5p7Tbiqt/queguLjVpQquO6td3n9jRZT6ynVYLEw=","RHv+v3mnc/rdlzTF7ocS7asgzxEsv/vA6MXaOyjqhjo=","3iGSlqjz6npQwBgO0EwgOWIo5Kfstt1xyJAHoP1SV3M=","2AB2ABJUnjIyVLqSVp811o5REZvv/mP2QE+jFv44OO0=","YUzfoXrcidGUQwWHiLItUjc2aRBdNC4m+meoJvHQQnU=","Qb9aGwkL5qHdPtUFTvnAGIIktQ0t9tMXmZksxTCY1uU=","5PDJwfF9mz+QLoSbsAc4fcxJqt2Cp5mhAUQrB21eIII=","8DLdApU4MXlI6MGccs6jMBE9ji+sWDjCfn7/WXxRwmA=","qm2ylSSY3+sNT38puv7/O8/RZW2vohKicbGAuRN7OPk=","wOCYHHj+U0EmGGPTsGnkdk9tsIYAfq+ZFE7atA6OjV8=","9QsMIrem+HT2edlnRiAheX9IF39ec1oMi9hiv7ebcM8=","DBrfNCe+dZXGY5KJGSJxvg3+AZv+fzJnT/RULElmPLQ=","o+RSbA7wEzFaSOSZ53ElZv5i95OV4GHSFQyRV8IPqxE=","FM36TTeg554lriH3CQSlnciZJEONZZ5U9v2CvXotJQQ=","h5VrGDgepEIgtJuhPvWmuJKEVx8q8xCLApgI8ngr2Rg=","NlD7kf7zliz6XZMopFEPBDQTFkC1k0B/M414sWSVjjg=","na7MCafKydTMg7pLg31hVCvG2iNeSrYEtRLJwhh7wng=","e3OaWwzL1tEWYXiUzGpH+1v9CiFPwweyfRzIh3Z+uO4=","b+938HIdfjdD/+LgIs3AVRE3Wc65/1NSSAL4OJ5FUXE=","kQz/4ND7LdhfAQn+idNsO+ZFC32sfkYRlhjWF5W+sPc=","zGfeoWKmrZlXMOvyi3R2GDbGpmI1skJW/wLTXCCgF0o=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3475291313\nmuXvwDev5gs62+K+5jeZ7mUkzHxOWY5zArWp0qM8Ku8=\n\n— rekor.sigstore.dev wNI9ajBFAiEAvvHZTsH3BYcpsl/cgaZm/62C3S7pyXsowMu3iAh538gCID5HOptTccWfpdr4C/Uh6gqiEYsTNZ94gCMnt6EH+h2l\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI3NGYxMmFlMjJhNjUwNzU3NjAyNWI3MWI4ZGVmOGUwNzQyNDc1OGI5YmY5YmJkNDc2Y2I0MTRiODE4OTY5Y2NmIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUNqMXRISjJweFBnN1BFUFJBNmdRV0Qva1hOZXBwakVuYVJMOWJaekt2TXVnSWhBTHFzWkNsWTJnYi8yRElieWFIbE82WTRFSHNtVDRaQTViUW5VdEJWYmJqdiIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJha05EUW5ObFowRjNTVUpCWjBsVlFWRkRaMkprVm1OVlNGTnBMM0p6WWt0eFJ6aDNTMGRWYVRWbmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFVFhkTlZGbDRUVVJCZWxkb1kwNU5hbGw0VFVSTmQwMVVXWGxOUkVGNlYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZaUTJacGVpdGFjSE5hTDFaTlNIWkhXbkp6U0ZSbE5IWldWRXgyV0ZsVGVuTjZiR0lLYlU5Mk1XWmFaWFpLWms1b2R5OXJRVEpCYjBweVdtcE9UaXRyUjFreFVXaDRNVm81UkhoR1NYcFhPWE5GYzBvNVF6WlBRMEpsV1hkbloxaHBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cE9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOU9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmN4V20xVk5WcEhTbWxOTWxFd1RsZFpNbHBxU1RKT1ZFazFUbFJvYWsxWFdUTk5SMVV4VFhwbmVFOUVhM2dLV20xRk0xbFhSWGROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2JWcFViR3RaYlVsNldrUlJNVnBxV20wS1RXcFpNVTFxYXpGUFIwMTRXbXBqZDFwVVZYcFBSRVUwVDFSR2JWbFVaR2haVkVGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrNUVSWGNLVDBSTk1rOUVXVFJOYWxGMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBVVmxMUzNkWlFrSkJTRmRsVVVsRlFXZFNOMEpJYTBGa2QwSXhRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05Wk1sUlVja0ZCUVVGUlJFRkZXWGRTUVVsblZHRTJkUW96ZEUwNE16aE1aRGhSUVhJMksxUm1WRnBoVTBaSlFWVTVjM05hTUZrdmNXSlhjbGR4T1VsRFNVY3JSSFV5WlRWNGIzUlRLMFF5VG01UFQwZEtRVlUwQ2pVd1FUZEZNV0ZXUTFoeGJFTlBNV05vUTA5MFRVRnZSME5EY1VkVFRUUTVRa0ZOUkVFeWEwRk5SMWxEVFZGRWJGWk5iMXBEY1hWWmJWWkVLMUkzSzBZS2FWWjBORTlsZUhFelowWldMM0ZwVUhCWU9UWjZNQ3RPZDBoalVHbFZPRFJTVjB4clF6ZDJhVzlTYkhsUWJITkRUVkZFWlc5elVEQndabXBFUkhwbU9RcGxkV0oxTkcxeldGSjFXbXhWTlRKdFpIVnRkVll2WmtWbWVUQlBiRXRvUm5RcmJUVkRZVVJxUWxnMk16bFhiVk5VTURBOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgy5ZIqgAiqxR9xu4W4I6xU0fXIi51oNIZe8Krl1m+zuQCFDiqBF3yofiVmRakk5g1xfPWkgGkGA8yMDI2MTAzMDE2MTAwM1owAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDMwMTYxMDAzWjAvBgkqhkiG9w0BCQQxIgQg6qBRxIBmcpWLPuD92q/6nyS65AXcKnJkv86AkKVmKccwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxANuDDGSx0lsF03bhozSwcD6gUytPikY9IWGJXEU4TbQwPyiocJeRWnXWplK1hGVXjAIxAOz24I1LfW3XA8hkBMP67NFtLhuGkweVOM2y8wAbtCnxYPTRffmZdwHESAGujjyoWA=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"dPEq4iplB1dgJbcbje+OB0JHWLm/m71HbLQUuBiWnM8="},"signature":"MEYCIQCj1tHJ2pxPg7PEPRA6gQWD/kXNeppjEnaRL9bZzKvMugIhALqsZClY2gb/2DIbyaHlO6Y4EHsmT4ZA5bQnUtBVbbjv"}}
build/torch214-metal-aarch64-darwin/symbols.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_topk_metal_5fe9dbb",
4
+ "functions": [
5
+ {
6
+ "name": "top_k",
7
+ "qualname": "top_k",
8
+ "module": "_topk_metal_5fe9dbb",
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_5fe9dbb
3
+ ops = torch.ops._topk_metal_5fe9dbb
4
+
5
+ def add_op_namespace_prefix(op_name: str):
6
+ """
7
+ Prefix op by namespace.
8
+ """
9
+ return f"_topk_metal_5fe9dbb::{op_name}"
build/torch215-metal-aarch64-darwin/_topk_metal_5fe9dbb.abi3.so ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f970eed9f0adea2a3676c1f74199f77e369b639cb31373b195a7f986c2937679
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_5fe9dbb",
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": "vkg/qZctYnVc3oQ/pWCZDxmKyJeKe+wHHfErZSl+Vw8=",
17
+ "_topk_metal_5fe9dbb.abi3.so": "+XDu2fCt6io2dsH3QZn3fjabY5yzE3Oxlaf5hsKTdnk=",
18
+ "layers.py": "DP5wFLC5D7eeoDBuFY9Eoi36CPOjreKcQJk1AF+eRHg=",
19
+ "symbols.json": "oeP/Xy6EaPrjiqdul8zeoqpl6tW2LMncUjRi81TnxrI="
20
+ }
21
+ },
22
+ "provenance": {
23
+ "kernel-builder": {
24
+ "version": "0.18.0-dev0",
25
+ "commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
26
+ "dirty": false
27
+ },
28
+ "kernel": {
29
+ "commit": "5fe9dbb3d45f6f2652958c1f70e5381891fa7aa0",
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":"MIIHQjCCBsmgAwIBAgIUPJ8psMypy6OUoYQShZUwwDFI8QwwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDMwMTYwOTQ2WhcNMjYxMDMwMTYxOTQ2WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERiSrpyX17hSBUO49syJUg0pmGKQKzxzbpctorOFCrAwPltoBFukBN9Yg4bc6NKe29cslWMDdMr0G6ShwL+6kXqOCBegwggXkMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDCg1ZmU5ZGJiM2Q0NWY2ZjI2NTI5NThjMWY3MGU1MzgxODkxZmE3YWEwMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVmZTlkYmIzZDQ1ZjZmMjY1Mjk1OGMxZjcwZTUzODE4OTFmYTdhYTAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvNDEwODM2ODY4MjQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiwYKKwYBBAHWeQIEAgR9BHsAeQB3AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoY2TCToAAAQDAEgwRgIhAJtMz0Nf01LMjJpU57F4eYOTdEl77NPaMjLvFdng34pjAiEA/rgNO3HqmKELM4k3QbmgL7CRxcnEvSc0bFNAv3nmd6UwCgYIKoZIzj0EAwMDZwAwZAIwA2gYMMD+e+hbLMbZvoak9+Go0r+ODtZPMteTeScNsTZwUjuOAAyk6AuKIWccUdqbAjBFeRcpxTsAFmPuWyhdY+Uz/LLzGroFjI/HNyX1SA3rwEDZVtGVKjIrh9S+WObguz8="},"tlogEntries":[{"logIndex":"3597185438","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793376586","inclusionPromise":{"signedEntryTimestamp":"MEQCIC18bxbLq3TMlaVQ7Xh7a/xd6AuH001qlzWvS+qwryAPAiB04Ad7Hc40vZToUideBILVDJN0bZlkRt1N542NAVkuuQ=="},"inclusionProof":{"logIndex":"3475281176","rootHash":"I5xdh4hGr0l8cWRzc+If9lK+dR9E7jVFo4QPkseMfCk=","treeSize":"3475281650","hashes":["cH7O5tLImBW3BAI6aAN4g8cTkVGDfBmTrApYsXawwhA=","PPv4KGqkN/mv2gIZlShLzQPWMy9DwNdH7TdWwtM9FIY=","N3Ubv+bDV5uKZjVUj4OP8W5GI8f2RABcFO/qQD5VBvY=","a36mpgm64NXolmA58AUwySPFn+2kXPqkIpJXSrY26Yo=","0g1+2SkCpwN/aXdYqofU/8iQuZgvFD2HA9eea1LQmS0=","ca+3bnBGzIL1DVKo1KRmS2cHNe+idvM5nJF389fts5g=","FUkjN6DD536esFHpMhY1AkTr2UAP2Q/COZCLZT5/VbU=","/gP7OKYThQm4J8WqZV/Mr7hBKCSOGn6choWKIrkcNFM=","ETM9ndAhf4eiOgxSIlcn/n8XViwvFZ+yJayP7tWd9kA=","RpsDcOwG+vtSLx6/EINV+tX7Z/D0jS7vO3iv94dW6q4=","g3sPr6yER1S6y/tf4jwcmktQxHHz6GY7kt2dIdkI+Js=","9Rp9RV2R8ioQ3gzSk7yeiy0CyhduKQttg4G7LefaMtY=","h5VrGDgepEIgtJuhPvWmuJKEVx8q8xCLApgI8ngr2Rg=","NlD7kf7zliz6XZMopFEPBDQTFkC1k0B/M414sWSVjjg=","na7MCafKydTMg7pLg31hVCvG2iNeSrYEtRLJwhh7wng=","e3OaWwzL1tEWYXiUzGpH+1v9CiFPwweyfRzIh3Z+uO4=","b+938HIdfjdD/+LgIs3AVRE3Wc65/1NSSAL4OJ5FUXE=","kQz/4ND7LdhfAQn+idNsO+ZFC32sfkYRlhjWF5W+sPc=","zGfeoWKmrZlXMOvyi3R2GDbGpmI1skJW/wLTXCCgF0o=","1DaDKzrCNNBhmSdY5vFjz+NpAmxmYfYEgBCdPLrMP1A=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3475281650\nI5xdh4hGr0l8cWRzc+If9lK+dR9E7jVFo4QPkseMfCk=\n\n— rekor.sigstore.dev wNI9ajBFAiBOGSy4eGva9QyuHHd5cBywDebpsvtsIHcWUvN2G/QTGQIhAPNl5qIKuFdVvLxAMNoujrqxciHT3ohjg+xESIHKDvx5\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIzMjliNDRiYjlhODEyZDRiYWI5MDBlYTg4NWVlOWZmNDg2NjEwYzBlZDE1YTUxMmZhNmE2YTRjYmJmNzJmZjUzIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUURrSVBsZ2hmRHdRWVE1QjJGTVdNSWtFZVdIVWxwRiszUkh3RFg2ZWtpRDh3SWdSMzJSbUJaYUFlRWs5MlRlVjVVSmplVXIxVG5Obzc3MUZVUmxnYkJpYXg0PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJha05EUW5OdFowRjNTVUpCWjBsVlVFbzRjSE5OZVhCNU5rOVZiMWxSVTJoYVZYZDNSRVpKT0ZGM2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFVFhkTlZGbDNUMVJSTWxkb1kwNU5hbGw0VFVSTmQwMVVXWGhQVkZFeVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZTYVZOeWNIbFlNVGRvVTBKVlR6UTVjM2xLVldjd2NHMUhTMUZMZW5oNlluQmpkRzhLY2s5R1EzSkJkMUJzZEc5Q1JuVnJRazQ1V1djMFltTTJUa3RsTWpsamMyeFhUVVJrVFhJd1J6WlRhSGRNS3pacldIRlBRMEpsWjNkbloxaHJUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cE9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOU9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmN4V20xVk5WcEhTbWxOTWxFd1RsZFpNbHBxU1RKT1ZFazFUbFJvYWsxWFdUTk5SMVV4VFhwbmVFOUVhM2dLV20xRk0xbFhSWGROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2JWcFViR3RaYlVsNldrUlJNVnBxV20wS1RXcFpNVTFxYXpGUFIwMTRXbXBqZDFwVVZYcFBSRVUwVDFSR2JWbFVaR2haVkVGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrNUVSWGNLVDBSTk1rOUVXVFJOYWxGMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBkMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPVUpJYzBGbFVVSXpRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05Wk1sUkRWRzlCUVVGUlJFRkZaM2RTWjBsb1FVcDBUUXA2TUU1bU1ERk1UV3BLY0ZVMU4wWTBaVmxQVkdSRmJEYzNUbEJoVFdwTWRrWmtibWN6TkhCcVFXbEZRUzl5WjA1UE0waHhiVXRGVEUwMGF6TlJZbTFuQ2t3M1ExSjRZMjVGZGxOak1HSkdUa0YyTTI1dFpEWlZkME5uV1VsTGIxcEplbW93UlVGM1RVUmFkMEYzV2tGSmQwRXlaMWxOVFVRclpTdG9Za3hOWWxvS2RtOWhhemtyUjI4d2NpdFBSSFJhVUUxMFpWUmxVMk5PYzFSYWQxVnFkVTlCUVhsck5rRjFTMGxYWTJOVlpIRmlRV3BDUm1WU1kzQjRWSE5CUm0xUWRRcFhlV2hrV1N0VmVpOU1USHBIY205R2Fra3ZTRTU1V0RGVFFUTnlkMFZFV2xaMFIxWkxha2x5YURsVEsxZFBZbWQxZWpnOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgDq/D6ShBzEfg8A8fnw41W4pLTCRSo+dhOIyroiEuz0cCFQCkvUIds/x4+j0OcZewe/nMYQqExxgPMjAyNjEwMzAxNjA5NDZaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAzMDE2MDk0NlowLwYJKoZIhvcNAQkEMSIEILLNP0J3IUuD5J96VjQ2LEK8JIcxC8Dt4PDq/0SO1SrrMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQC2h0Ihl1k7dOgK3irgUr5C8+ylzZ9Mb1rdf8KzVunp2RJBBH6RZEufygfOm2pa5vsCMQCN+gpeCvycJWDOVi0h90ypzM85/pYtWtkwYZ7TdVPaR7LtCBa5oeneKrs1RWaRoIw="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"MptEu5qBLUurkA6ohe6f9IZhDA7RWlEvpqaky79y/1M="},"signature":"MEUCIQDkIPlghfDwQYQ5B2FMWMIkEeWHUlpF+3RHwDX6ekiD8wIgR32RmBZaAeEk92TeV5UJjeUr1TnNo771FURlgbBiax4="}}
build/torch215-metal-aarch64-darwin/symbols.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "module": "_topk_metal_5fe9dbb",
4
+ "functions": [
5
+ {
6
+ "name": "top_k",
7
+ "qualname": "top_k",
8
+ "module": "_topk_metal_5fe9dbb",
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
+ }