Kernels:
Trusted publisher
Uploaded using `kernel-builder`.
#6
by kernels-bot - opened
- README.md +30 -0
- build/torch210-metal-aarch64-darwin/__init__.py +98 -0
- build/torch210-metal-aarch64-darwin/_ggml_quantization_metal_5fe9dbb.abi3.so +3 -0
- build/torch210-metal-aarch64-darwin/_ops.py +9 -0
- build/torch210-metal-aarch64-darwin/metadata.json +32 -0
- build/torch210-metal-aarch64-darwin/metadata.json.sigstore +1 -0
- build/torch210-metal-aarch64-darwin/symbols.json +169 -0
- build/torch211-metal-aarch64-darwin/__init__.py +98 -0
- build/torch211-metal-aarch64-darwin/_ggml_quantization_metal_5fe9dbb.abi3.so +3 -0
- build/torch211-metal-aarch64-darwin/_ops.py +9 -0
- build/torch211-metal-aarch64-darwin/metadata.json +32 -0
- build/torch211-metal-aarch64-darwin/metadata.json.sigstore +1 -0
- build/torch211-metal-aarch64-darwin/symbols.json +169 -0
- build/torch212-metal-aarch64-darwin/{_ggml_quantization_metal_63f3c1e.abi3.so → _ggml_quantization_metal_5fe9dbb.abi3.so} +1 -1
- build/torch212-metal-aarch64-darwin/_ops.py +3 -3
- build/torch212-metal-aarch64-darwin/metadata.json +9 -6
- build/torch212-metal-aarch64-darwin/metadata.json.sigstore +1 -1
- build/torch212-metal-aarch64-darwin/symbols.json +169 -0
- build/torch213-metal-aarch64-darwin/{_ggml_quantization_metal_63f3c1e.abi3.so → _ggml_quantization_metal_5fe9dbb.abi3.so} +1 -1
- build/torch213-metal-aarch64-darwin/_ops.py +3 -3
- build/torch213-metal-aarch64-darwin/metadata.json +9 -6
- build/torch213-metal-aarch64-darwin/metadata.json.sigstore +1 -1
- build/torch213-metal-aarch64-darwin/symbols.json +169 -0
- build/torch214-metal-aarch64-darwin/__init__.py +98 -0
- build/torch214-metal-aarch64-darwin/_ggml_quantization_metal_5fe9dbb.abi3.so +3 -0
- build/torch214-metal-aarch64-darwin/_ops.py +9 -0
- build/torch214-metal-aarch64-darwin/metadata.json +32 -0
- build/torch214-metal-aarch64-darwin/metadata.json.sigstore +1 -0
- build/torch214-metal-aarch64-darwin/symbols.json +169 -0
- build/torch215-metal-aarch64-darwin/__init__.py +98 -0
- build/torch215-metal-aarch64-darwin/_ggml_quantization_metal_5fe9dbb.abi3.so +3 -0
- build/torch215-metal-aarch64-darwin/_ops.py +9 -0
- build/torch215-metal-aarch64-darwin/metadata.json +32 -0
- build/torch215-metal-aarch64-darwin/metadata.json.sigstore +1 -0
- build/torch215-metal-aarch64-darwin/symbols.json +169 -0
README.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
library_name: kernels
|
| 3 |
+
license: mit
|
| 4 |
+
---
|
| 5 |
+
|
| 6 |
+
This is the repository card of ggml-org/ggml-quantization 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 |
+
|
| 10 |
+
```python
|
| 11 |
+
# make sure `kernels` is installed: `pip install -U kernels`
|
| 12 |
+
from kernels import get_kernel
|
| 13 |
+
|
| 14 |
+
kernel_module = get_kernel("ggml-org/ggml-quantization", version=1)
|
| 15 |
+
GEMV_TYPES = kernel_module.GEMV_TYPES
|
| 16 |
+
|
| 17 |
+
GEMV_TYPES(...)
|
| 18 |
+
```
|
| 19 |
+
|
| 20 |
+
## Available functions
|
| 21 |
+
- `GEMV_TYPES`
|
| 22 |
+
- `MAX_GEMV_ROWS`
|
| 23 |
+
- `dequantize`
|
| 24 |
+
- `get_rows`
|
| 25 |
+
- `mul_mat_id`
|
| 26 |
+
- `mul_mat_vec`
|
| 27 |
+
|
| 28 |
+
## Benchmarks
|
| 29 |
+
|
| 30 |
+
No benchmark available yet.
|
build/torch210-metal-aarch64-darwin/__init__.py
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Compute directly on the packed blocks of a GGUF checkpoint.
|
| 2 |
+
|
| 3 |
+
A GGUF weight is stored as blocks of 32 or 256 values sharing a scale. These kernels read that
|
| 4 |
+
layout as it is, so a quantized model can be loaded and run without ever materializing a dense
|
| 5 |
+
copy — which is the whole memory saving.
|
| 6 |
+
|
| 7 |
+
Ported from llama.cpp's ggml-cuda; `vendor/UPSTREAM` pins the revision. The ops are named for what
|
| 8 |
+
they do rather than for a backend: each backend registers its own implementation of the same
|
| 9 |
+
schema, so calls dispatch on the tensor's device.
|
| 10 |
+
"""
|
| 11 |
+
|
| 12 |
+
import torch
|
| 13 |
+
|
| 14 |
+
from ._ops import add_op_namespace_prefix, ops
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
__all__ = ["GEMV_TYPES", "MAX_GEMV_ROWS", "dequantize", "get_rows", "mul_mat_id", "mul_mat_vec"]
|
| 18 |
+
|
| 19 |
+
# Upstream's MMVQ_MAX_BATCH_SIZE: `mul_mat_vec` has no implementation beyond this many rows, so a
|
| 20 |
+
# caller with more (prefill) dequantizes and uses an ordinary matmul.
|
| 21 |
+
MAX_GEMV_ROWS = 8
|
| 22 |
+
|
| 23 |
+
# ggml type ids `mul_mat_vec` implements, as this build reports them -- it is backend-specific, and
|
| 24 |
+
# a type routed into a gemv that has no kernel for it is a fault, not a fallback. CUDA covers
|
| 25 |
+
# Q4_0/Q4_1/Q5_0/Q5_1/Q8_0, the K quants, the IQ quants, MXFP4/NVFP4 and Q1_0/Q2_0; Metal is the
|
| 26 |
+
# same minus NVFP4/Q1_0/Q2_0, which its metallib has no kernels for. `dequantize` covers more, so
|
| 27 |
+
# check this before choosing the fused path.
|
| 28 |
+
try:
|
| 29 |
+
GEMV_TYPES = frozenset(ops.gemv_types())
|
| 30 |
+
except AttributeError:
|
| 31 |
+
# A build published before `gemv_types` existed; those are CUDA-only, so its list is theirs.
|
| 32 |
+
GEMV_TYPES = frozenset({2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 29, 39, 40, 41, 42})
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
def get_rows(
|
| 36 |
+
blocks: torch.Tensor, indices: torch.Tensor, ggml_type: int, cols: int, dtype: torch.dtype
|
| 37 |
+
) -> torch.Tensor:
|
| 38 |
+
"""The rows `indices` names, unpacked: `(rows, bytes_per_row)` uint8 -> `(len(indices), cols)`.
|
| 39 |
+
|
| 40 |
+
ggml's `get_rows`, which dequantizes as it gathers -- so reading a few rows out of a large table
|
| 41 |
+
never touches the rest.
|
| 42 |
+
"""
|
| 43 |
+
return ops.get_rows(blocks, indices, ggml_type, cols, dtype)
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
def dequantize(
|
| 47 |
+
blocks: torch.Tensor, ggml_type: int, rows: int, cols: int, dtype: torch.dtype
|
| 48 |
+
) -> torch.Tensor:
|
| 49 |
+
"""`(rows, bytes_per_row)` uint8 blocks -> `(rows, cols)` values of `dtype`."""
|
| 50 |
+
return ops.dequantize(blocks, ggml_type, rows, cols, dtype)
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def mul_mat_vec(
|
| 54 |
+
blocks: torch.Tensor, x: torch.Tensor, ggml_type: int, out_features: int
|
| 55 |
+
) -> torch.Tensor:
|
| 56 |
+
"""Fused dequantize-gemv: `x @ blocks.T` without unpacking `blocks`.
|
| 57 |
+
|
| 58 |
+
`x` is `(rows, in_features)` and `rows` must be at most `MAX_GEMV_ROWS`. The result is f32
|
| 59 |
+
whatever `x`'s dtype was, since the kernel writes an f32 destination; cast it at the call site,
|
| 60 |
+
where the cast can be fused into whatever consumes it.
|
| 61 |
+
"""
|
| 62 |
+
return ops.mul_mat_vec(blocks, x, ggml_type, out_features)
|
| 63 |
+
|
| 64 |
+
|
| 65 |
+
def mul_mat_id(
|
| 66 |
+
blocks: torch.Tensor, x: torch.Tensor, ids: torch.Tensor, ggml_type: int, out_features: int
|
| 67 |
+
) -> torch.Tensor:
|
| 68 |
+
"""One dispatch for a bank of routed experts: ggml's `mul_mv_id`.
|
| 69 |
+
|
| 70 |
+
`blocks` is `(n_experts, out_features, bytes_per_row)`, `x` is `(n_tokens, in_features)`, and
|
| 71 |
+
`ids` is `(n_tokens, n_used)` naming the expert each of a token's slots picked. The result is
|
| 72 |
+
`(n_tokens, n_used, out_features)` f32, one row per slot.
|
| 73 |
+
|
| 74 |
+
The alternative is a gemv per expert per layer, whose arithmetic is dwarfed by the dispatch
|
| 75 |
+
around it -- which is most of what a MoE decode step costs.
|
| 76 |
+
"""
|
| 77 |
+
return ops.mul_mat_id(blocks, x, ids, ggml_type, out_features)
|
| 78 |
+
|
| 79 |
+
|
| 80 |
+
# Without these, torch.compile cannot trace the ops and breaks the graph at every call.
|
| 81 |
+
@torch.library.register_fake(add_op_namespace_prefix("get_rows"))
|
| 82 |
+
def _get_rows_fake(blocks, indices, ggml_type, cols, dtype):
|
| 83 |
+
return blocks.new_empty((indices.numel(), cols), dtype=dtype)
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
@torch.library.register_fake(add_op_namespace_prefix("dequantize"))
|
| 87 |
+
def _dequantize_fake(blocks, ggml_type, rows, cols, dtype):
|
| 88 |
+
return blocks.new_empty((rows, cols), dtype=dtype)
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
@torch.library.register_fake(add_op_namespace_prefix("mul_mat_vec"))
|
| 92 |
+
def _mul_mat_vec_fake(blocks, x, ggml_type, out_features):
|
| 93 |
+
return x.new_empty((x.shape[0], out_features), dtype=torch.float32)
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
@torch.library.register_fake(add_op_namespace_prefix("mul_mat_id"))
|
| 97 |
+
def _mul_mat_id_fake(blocks, x, ids, ggml_type, out_features):
|
| 98 |
+
return x.new_empty((x.shape[0], ids.shape[1], out_features), dtype=torch.float32)
|
build/torch210-metal-aarch64-darwin/_ggml_quantization_metal_5fe9dbb.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7877545f3a9b7cb20c6993b5d131b6fb15cd9e5d050ed5a1abfaa3c06148d09d
|
| 3 |
+
size 3347640
|
build/torch210-metal-aarch64-darwin/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _ggml_quantization_metal_5fe9dbb
|
| 3 |
+
ops = torch.ops._ggml_quantization_metal_5fe9dbb
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_ggml_quantization_metal_5fe9dbb::{op_name}"
|
build/torch210-metal-aarch64-darwin/metadata.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "ggml-quantization",
|
| 3 |
+
"id": "_ggml_quantization_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": "iPXgZXBgY3CzpNUSjmCovMVNPLBol1KBaNoTzkXp5mM=",
|
| 16 |
+
"_ggml_quantization_metal_5fe9dbb.abi3.so": "eHdUXzqbfLIMaZO10TG2+xXNnl0FDtWhq/qjwGFI0J0=",
|
| 17 |
+
"_ops.py": "qmH/NXUzgO/6qdqeM09eLgLtwnGkpAZE0/uZdqhhcmM=",
|
| 18 |
+
"symbols.json": "57o77zfqRijHYonknIl7gcyfqmAxIpDhWTt9Df/lO5s="
|
| 19 |
+
}
|
| 20 |
+
},
|
| 21 |
+
"provenance": {
|
| 22 |
+
"kernel-builder": {
|
| 23 |
+
"version": "0.18.0-dev0",
|
| 24 |
+
"commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
|
| 25 |
+
"dirty": false
|
| 26 |
+
},
|
| 27 |
+
"kernel": {
|
| 28 |
+
"commit": "5fe9dbb3d45f6f2652958c1f70e5381891fa7aa0",
|
| 29 |
+
"dirty": false
|
| 30 |
+
}
|
| 31 |
+
}
|
| 32 |
+
}
|
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":"MIIHQTCCBsigAwIBAgIUfLQLCCPd8RjVjoTCj1zJAef2ynkwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDMwMTYwODQzWhcNMjYxMDMwMTYxODQzWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElfVDaCejFVs6I7Kp9mihWbtLdCkL6nfOSvt9nG3NWMppfyW54MRk07U6+VK2FZFqNvFKwa0Ku/3Qm9QsIRCfcKOCBecwggXjMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDCg1ZmU5ZGJiM2Q0NWY2ZjI2NTI5NThjMWY3MGU1MzgxODkxZmE3YWEwMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVmZTlkYmIzZDQ1ZjZmMjY1Mjk1OGMxZjcwZTUzODE4OTFmYTdhYTAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvNDEwODM1MzY2NzQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoY2SE7UAAAQDAEcwRQIgDLbeFKJNK2RZGPklQiCjrKGNz56piSwyLiEWn7nnYLwCIQCDjK9pJlB9hs5+3BtQSWe+Nx+uEOtED5POCGt2uSJC/zAKBggqhkjOPQQDAwNnADBkAjA9z/WBimUMeudb+9lGVnGf+ab05ivdexk5Ih5hEtcZKwXNNVG3dkfsv0NBVNC9SZICMG2aY6KrtCqyjcvOJS+Ia2eAIqgMH31YhlJQ3bMuROlAQW7wgiUrXZAslle3a+vXpg=="},"tlogEntries":[{"logIndex":"3597164779","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793376523","inclusionPromise":{"signedEntryTimestamp":"MEUCIHsOZT0Ooo9Z3/MuFBLV04WPF8tiCWrXfJ3hWtnIlQZlAiEAgwIGNIeiBHQgRP3FT9viDpcjw9Yt5PuFj8XrMPjpnYQ="},"inclusionProof":{"logIndex":"3475260517","rootHash":"Ec8zFy/pAgMn88lWcxrN/WPMHk05cKNggI9rdlfJI+s=","treeSize":"3475260603","hashes":["uCRgXuWqL31pwUVXOYtYbXueDpzkxG+G/tAkKmE7Ah8=","aZumkDTzjc+UF4XqBzDtrTp2BtCbvyfMj65oLiXpwLA=","3yoOk4JIPfhFcbVLFKl3FMP1DBi4jDQ/uY/UKd+uoF0=","053wbEms6crA/FoNeKcd0+wqp9tpFP6JLrnNZyj0T2E=","q8+jrfhS1M1qR0kInnVFNdHhbW38rK6cHX0xDz89sAg=","nZ1p16f7cfP8krN93uHwzwXb/Ns80+0B0i1gNzCQ3GY=","yIzTt42b00pc72u4LBQDXL3ioV5bSbJ7BLOyIA/FneU=","q1voAXXSK4yvwCRs5oGBSDyBJxLwwp1Lbi//7VOs33M=","VAro2wMlpWF+9MRBrHOVT7bxxZMuVR9C+meAe7GXCBs=","ong7CR13YjLVwNWMRUBqrhvuVDcbhobTuZtWM4Qduj4=","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\n3475260603\nEc8zFy/pAgMn88lWcxrN/WPMHk05cKNggI9rdlfJI+s=\n\n— rekor.sigstore.dev wNI9ajBEAiBD0gvn6i2GWdUA6P/htHmCnEiAtdvT0OYdVtcuasfYMQIgFoCKxRtoe59TJ4D5HeA5o0R9hAOTerZN7oStE9kerro=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI5NDRjNGI2YjAzNjYwZTIwYzBkOWEyOTgwNDBiMWViMTQ2YjQzMjg5N2E5NmE4ZDI3ZDVlOWQxMTRmMzE2MTNlIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJR01OWkc3SEU3MnRVN1NpYS85dDBLQm15UEUvckM5bVNLYzkwSWtad1BBR0FpQjlyYWQwNUsyNlBsMVQ1RWZ3b05WaDRHQ25DaTNWdGNRMk8zNjVmTFhpTGc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJWRU5EUW5OcFowRjNTVUpCWjBsVlpreFJURU5EVUdRNFVtcFdhbTlVUTJveGVrcEJaV1l5ZVc1cmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFVFhkTlZGbDNUMFJSZWxkb1kwNU5hbGw0VFVSTmQwMVVXWGhQUkZGNlYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZzWmxaRVlVTmxha1pXY3paSk4wdHdPVzFwYUZkaWRFeGtRMnRNTm01bVQxTjJkRGtLYmtjelRsZE5jSEJtZVZjMU5FMVNhekEzVlRZclZrc3lSbHBHY1U1MlJrdDNZVEJMZFM4elVXMDVVWE5KVWtObVkwdFBRMEpsWTNkbloxaHFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cE9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOU9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmN4V20xVk5WcEhTbWxOTWxFd1RsZFpNbHBxU1RKT1ZFazFUbFJvYWsxWFdUTk5SMVV4VFhwbmVFOUVhM2dLV20xRk0xbFhSWGROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2JWcFViR3RaYlVsNldrUlJNVnBxV20wS1RXcFpNVTFxYXpGUFIwMTRXbXBqZDFwVVZYcFBSRVUwVDFSR2JWbFVaR2haVkVGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrNUVSWGNLVDBSTk1VMTZXVEpPZWxGMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBaMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPRUpJYjBGbFFVSXlRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05Wk1sTkZOMVZCUVVGUlJFRkZZM2RTVVVsblJFeGlaUXBHUzBwT1N6SlNXa2RRYTJ4UmFVTnFja3RIVG5vMU5uQnBVM2Q1VEdsRlYyNDNibTVaVEhkRFNWRkRSR3BMT1hCS2JFSTVhSE0xS3pOQ2RGRlRWMlVyQ2s1NEszVkZUM1JGUkRWUVQwTkhkREoxVTBwREwzcEJTMEpuWjNGb2EycFBVRkZSUkVGM1RtNUJSRUpyUVdwQk9Yb3ZWMEpwYlZWTlpYVmtZaXM1YkVjS1ZtNUhaaXRoWWpBMWFYWmtaWGhyTlVsb05XaEZkR05hUzNkWVRrNVdSek5rYTJaemRqQk9RbFpPUXpsVFdrbERUVWN5WVZrMlMzSjBRM0Y1YW1OMlR3cEtVeXRKWVRKbFFVbHhaMDFJTXpGWmFHeEtVVE5pVFhWU1QyeEJVVmMzZDJkcFZYSllXa0Z6Ykd4bE0yRXJkbGh3WnowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgNloXDeKnN2pWg182yfE0o+J2oe6AAg7pzaP/NVxFBX8CFErMDm7Y8OkTIfeM8Eef4/G4GpTcGA8yMDI2MTAzMDE2MDg0M1owAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDMwMTYwODQzWjAvBgkqhkiG9w0BCQQxIgQgMreLp/ZtBodh+cABVr8NBEHtrblJrM2Zbspqmev0aOcwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIxAJOHkutQfvky4lFV/YDdkvWMrkd42kBTqbpcKgcalqK7dvnD4Vvkofbq3CvK5Jiv3wIwNY/RG+1yt+cp/vgTZrGt17qlvZmYAgms94ITJt9AHiHMvXXJkGquW6dratnGbfge"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"lExLawNmDiDA2aKYBAsesUa0Mol6lqjSfV6dEU8xYT4="},"signature":"MEQCIGMNZG7HE72tU7Sia/9t0KBmyPE/rC9mSKc90IkZwPAGAiB9rad05K26Pl1T5EfwoNVh4GCnCi3VtcQ2O365fLXiLg=="}}
|
build/torch210-metal-aarch64-darwin/symbols.json
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 4 |
+
"functions": [
|
| 5 |
+
{
|
| 6 |
+
"name": "dequantize",
|
| 7 |
+
"qualname": "dequantize",
|
| 8 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 9 |
+
"kind": "function",
|
| 10 |
+
"doc": "`(rows, bytes_per_row)` uint8 blocks -> `(rows, cols)` values of `dtype`.",
|
| 11 |
+
"signature": {
|
| 12 |
+
"parameters": [
|
| 13 |
+
{
|
| 14 |
+
"name": "blocks",
|
| 15 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 16 |
+
"default": null,
|
| 17 |
+
"annotation": "torch.Tensor"
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"name": "ggml_type",
|
| 21 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 22 |
+
"default": null,
|
| 23 |
+
"annotation": "int"
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"name": "rows",
|
| 27 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 28 |
+
"default": null,
|
| 29 |
+
"annotation": "int"
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"name": "cols",
|
| 33 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 34 |
+
"default": null,
|
| 35 |
+
"annotation": "int"
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"name": "dtype",
|
| 39 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 40 |
+
"default": null,
|
| 41 |
+
"annotation": "torch.dtype"
|
| 42 |
+
}
|
| 43 |
+
],
|
| 44 |
+
"return_annotation": "torch.Tensor"
|
| 45 |
+
}
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"name": "get_rows",
|
| 49 |
+
"qualname": "get_rows",
|
| 50 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 51 |
+
"kind": "function",
|
| 52 |
+
"doc": "The rows `indices` names, unpacked: `(rows, bytes_per_row)` uint8 -> `(len(indices), cols)`.\n\nggml's `get_rows`, which dequantizes as it gathers -- so reading a few rows out of a large table\nnever touches the rest.",
|
| 53 |
+
"signature": {
|
| 54 |
+
"parameters": [
|
| 55 |
+
{
|
| 56 |
+
"name": "blocks",
|
| 57 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 58 |
+
"default": null,
|
| 59 |
+
"annotation": "torch.Tensor"
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"name": "indices",
|
| 63 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 64 |
+
"default": null,
|
| 65 |
+
"annotation": "torch.Tensor"
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"name": "ggml_type",
|
| 69 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 70 |
+
"default": null,
|
| 71 |
+
"annotation": "int"
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"name": "cols",
|
| 75 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 76 |
+
"default": null,
|
| 77 |
+
"annotation": "int"
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"name": "dtype",
|
| 81 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 82 |
+
"default": null,
|
| 83 |
+
"annotation": "torch.dtype"
|
| 84 |
+
}
|
| 85 |
+
],
|
| 86 |
+
"return_annotation": "torch.Tensor"
|
| 87 |
+
}
|
| 88 |
+
},
|
| 89 |
+
{
|
| 90 |
+
"name": "mul_mat_id",
|
| 91 |
+
"qualname": "mul_mat_id",
|
| 92 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 93 |
+
"kind": "function",
|
| 94 |
+
"doc": "One dispatch for a bank of routed experts: ggml's `mul_mv_id`.\n\n`blocks` is `(n_experts, out_features, bytes_per_row)`, `x` is `(n_tokens, in_features)`, and\n`ids` is `(n_tokens, n_used)` naming the expert each of a token's slots picked. The result is\n`(n_tokens, n_used, out_features)` f32, one row per slot.\n\nThe alternative is a gemv per expert per layer, whose arithmetic is dwarfed by the dispatch\naround it -- which is most of what a MoE decode step costs.",
|
| 95 |
+
"signature": {
|
| 96 |
+
"parameters": [
|
| 97 |
+
{
|
| 98 |
+
"name": "blocks",
|
| 99 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 100 |
+
"default": null,
|
| 101 |
+
"annotation": "torch.Tensor"
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
"name": "x",
|
| 105 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 106 |
+
"default": null,
|
| 107 |
+
"annotation": "torch.Tensor"
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"name": "ids",
|
| 111 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 112 |
+
"default": null,
|
| 113 |
+
"annotation": "torch.Tensor"
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"name": "ggml_type",
|
| 117 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 118 |
+
"default": null,
|
| 119 |
+
"annotation": "int"
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"name": "out_features",
|
| 123 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 124 |
+
"default": null,
|
| 125 |
+
"annotation": "int"
|
| 126 |
+
}
|
| 127 |
+
],
|
| 128 |
+
"return_annotation": "torch.Tensor"
|
| 129 |
+
}
|
| 130 |
+
},
|
| 131 |
+
{
|
| 132 |
+
"name": "mul_mat_vec",
|
| 133 |
+
"qualname": "mul_mat_vec",
|
| 134 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 135 |
+
"kind": "function",
|
| 136 |
+
"doc": "Fused dequantize-gemv: `x @ blocks.T` without unpacking `blocks`.\n\n`x` is `(rows, in_features)` and `rows` must be at most `MAX_GEMV_ROWS`. The result is f32\nwhatever `x`'s dtype was, since the kernel writes an f32 destination; cast it at the call site,\nwhere the cast can be fused into whatever consumes it.",
|
| 137 |
+
"signature": {
|
| 138 |
+
"parameters": [
|
| 139 |
+
{
|
| 140 |
+
"name": "blocks",
|
| 141 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 142 |
+
"default": null,
|
| 143 |
+
"annotation": "torch.Tensor"
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"name": "x",
|
| 147 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 148 |
+
"default": null,
|
| 149 |
+
"annotation": "torch.Tensor"
|
| 150 |
+
},
|
| 151 |
+
{
|
| 152 |
+
"name": "ggml_type",
|
| 153 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 154 |
+
"default": null,
|
| 155 |
+
"annotation": "int"
|
| 156 |
+
},
|
| 157 |
+
{
|
| 158 |
+
"name": "out_features",
|
| 159 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 160 |
+
"default": null,
|
| 161 |
+
"annotation": "int"
|
| 162 |
+
}
|
| 163 |
+
],
|
| 164 |
+
"return_annotation": "torch.Tensor"
|
| 165 |
+
}
|
| 166 |
+
}
|
| 167 |
+
],
|
| 168 |
+
"layers": []
|
| 169 |
+
}
|
build/torch211-metal-aarch64-darwin/__init__.py
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Compute directly on the packed blocks of a GGUF checkpoint.
|
| 2 |
+
|
| 3 |
+
A GGUF weight is stored as blocks of 32 or 256 values sharing a scale. These kernels read that
|
| 4 |
+
layout as it is, so a quantized model can be loaded and run without ever materializing a dense
|
| 5 |
+
copy — which is the whole memory saving.
|
| 6 |
+
|
| 7 |
+
Ported from llama.cpp's ggml-cuda; `vendor/UPSTREAM` pins the revision. The ops are named for what
|
| 8 |
+
they do rather than for a backend: each backend registers its own implementation of the same
|
| 9 |
+
schema, so calls dispatch on the tensor's device.
|
| 10 |
+
"""
|
| 11 |
+
|
| 12 |
+
import torch
|
| 13 |
+
|
| 14 |
+
from ._ops import add_op_namespace_prefix, ops
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
__all__ = ["GEMV_TYPES", "MAX_GEMV_ROWS", "dequantize", "get_rows", "mul_mat_id", "mul_mat_vec"]
|
| 18 |
+
|
| 19 |
+
# Upstream's MMVQ_MAX_BATCH_SIZE: `mul_mat_vec` has no implementation beyond this many rows, so a
|
| 20 |
+
# caller with more (prefill) dequantizes and uses an ordinary matmul.
|
| 21 |
+
MAX_GEMV_ROWS = 8
|
| 22 |
+
|
| 23 |
+
# ggml type ids `mul_mat_vec` implements, as this build reports them -- it is backend-specific, and
|
| 24 |
+
# a type routed into a gemv that has no kernel for it is a fault, not a fallback. CUDA covers
|
| 25 |
+
# Q4_0/Q4_1/Q5_0/Q5_1/Q8_0, the K quants, the IQ quants, MXFP4/NVFP4 and Q1_0/Q2_0; Metal is the
|
| 26 |
+
# same minus NVFP4/Q1_0/Q2_0, which its metallib has no kernels for. `dequantize` covers more, so
|
| 27 |
+
# check this before choosing the fused path.
|
| 28 |
+
try:
|
| 29 |
+
GEMV_TYPES = frozenset(ops.gemv_types())
|
| 30 |
+
except AttributeError:
|
| 31 |
+
# A build published before `gemv_types` existed; those are CUDA-only, so its list is theirs.
|
| 32 |
+
GEMV_TYPES = frozenset({2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 29, 39, 40, 41, 42})
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
def get_rows(
|
| 36 |
+
blocks: torch.Tensor, indices: torch.Tensor, ggml_type: int, cols: int, dtype: torch.dtype
|
| 37 |
+
) -> torch.Tensor:
|
| 38 |
+
"""The rows `indices` names, unpacked: `(rows, bytes_per_row)` uint8 -> `(len(indices), cols)`.
|
| 39 |
+
|
| 40 |
+
ggml's `get_rows`, which dequantizes as it gathers -- so reading a few rows out of a large table
|
| 41 |
+
never touches the rest.
|
| 42 |
+
"""
|
| 43 |
+
return ops.get_rows(blocks, indices, ggml_type, cols, dtype)
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
def dequantize(
|
| 47 |
+
blocks: torch.Tensor, ggml_type: int, rows: int, cols: int, dtype: torch.dtype
|
| 48 |
+
) -> torch.Tensor:
|
| 49 |
+
"""`(rows, bytes_per_row)` uint8 blocks -> `(rows, cols)` values of `dtype`."""
|
| 50 |
+
return ops.dequantize(blocks, ggml_type, rows, cols, dtype)
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def mul_mat_vec(
|
| 54 |
+
blocks: torch.Tensor, x: torch.Tensor, ggml_type: int, out_features: int
|
| 55 |
+
) -> torch.Tensor:
|
| 56 |
+
"""Fused dequantize-gemv: `x @ blocks.T` without unpacking `blocks`.
|
| 57 |
+
|
| 58 |
+
`x` is `(rows, in_features)` and `rows` must be at most `MAX_GEMV_ROWS`. The result is f32
|
| 59 |
+
whatever `x`'s dtype was, since the kernel writes an f32 destination; cast it at the call site,
|
| 60 |
+
where the cast can be fused into whatever consumes it.
|
| 61 |
+
"""
|
| 62 |
+
return ops.mul_mat_vec(blocks, x, ggml_type, out_features)
|
| 63 |
+
|
| 64 |
+
|
| 65 |
+
def mul_mat_id(
|
| 66 |
+
blocks: torch.Tensor, x: torch.Tensor, ids: torch.Tensor, ggml_type: int, out_features: int
|
| 67 |
+
) -> torch.Tensor:
|
| 68 |
+
"""One dispatch for a bank of routed experts: ggml's `mul_mv_id`.
|
| 69 |
+
|
| 70 |
+
`blocks` is `(n_experts, out_features, bytes_per_row)`, `x` is `(n_tokens, in_features)`, and
|
| 71 |
+
`ids` is `(n_tokens, n_used)` naming the expert each of a token's slots picked. The result is
|
| 72 |
+
`(n_tokens, n_used, out_features)` f32, one row per slot.
|
| 73 |
+
|
| 74 |
+
The alternative is a gemv per expert per layer, whose arithmetic is dwarfed by the dispatch
|
| 75 |
+
around it -- which is most of what a MoE decode step costs.
|
| 76 |
+
"""
|
| 77 |
+
return ops.mul_mat_id(blocks, x, ids, ggml_type, out_features)
|
| 78 |
+
|
| 79 |
+
|
| 80 |
+
# Without these, torch.compile cannot trace the ops and breaks the graph at every call.
|
| 81 |
+
@torch.library.register_fake(add_op_namespace_prefix("get_rows"))
|
| 82 |
+
def _get_rows_fake(blocks, indices, ggml_type, cols, dtype):
|
| 83 |
+
return blocks.new_empty((indices.numel(), cols), dtype=dtype)
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
@torch.library.register_fake(add_op_namespace_prefix("dequantize"))
|
| 87 |
+
def _dequantize_fake(blocks, ggml_type, rows, cols, dtype):
|
| 88 |
+
return blocks.new_empty((rows, cols), dtype=dtype)
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
@torch.library.register_fake(add_op_namespace_prefix("mul_mat_vec"))
|
| 92 |
+
def _mul_mat_vec_fake(blocks, x, ggml_type, out_features):
|
| 93 |
+
return x.new_empty((x.shape[0], out_features), dtype=torch.float32)
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
@torch.library.register_fake(add_op_namespace_prefix("mul_mat_id"))
|
| 97 |
+
def _mul_mat_id_fake(blocks, x, ids, ggml_type, out_features):
|
| 98 |
+
return x.new_empty((x.shape[0], ids.shape[1], out_features), dtype=torch.float32)
|
build/torch211-metal-aarch64-darwin/_ggml_quantization_metal_5fe9dbb.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4b3cbb68129b897d3a2fc8ec5fddebd730c33dd1f04f362413030d35da2a5937
|
| 3 |
+
size 3347640
|
build/torch211-metal-aarch64-darwin/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _ggml_quantization_metal_5fe9dbb
|
| 3 |
+
ops = torch.ops._ggml_quantization_metal_5fe9dbb
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_ggml_quantization_metal_5fe9dbb::{op_name}"
|
build/torch211-metal-aarch64-darwin/metadata.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "ggml-quantization",
|
| 3 |
+
"id": "_ggml_quantization_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": "iPXgZXBgY3CzpNUSjmCovMVNPLBol1KBaNoTzkXp5mM=",
|
| 16 |
+
"_ggml_quantization_metal_5fe9dbb.abi3.so": "Szy7aBKbiX06L8jsX93r1zDDPdHwTzYkEwMNNdoqWTc=",
|
| 17 |
+
"_ops.py": "qmH/NXUzgO/6qdqeM09eLgLtwnGkpAZE0/uZdqhhcmM=",
|
| 18 |
+
"symbols.json": "57o77zfqRijHYonknIl7gcyfqmAxIpDhWTt9Df/lO5s="
|
| 19 |
+
}
|
| 20 |
+
},
|
| 21 |
+
"provenance": {
|
| 22 |
+
"kernel-builder": {
|
| 23 |
+
"version": "0.18.0-dev0",
|
| 24 |
+
"commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
|
| 25 |
+
"dirty": false
|
| 26 |
+
},
|
| 27 |
+
"kernel": {
|
| 28 |
+
"commit": "5fe9dbb3d45f6f2652958c1f70e5381891fa7aa0",
|
| 29 |
+
"dirty": false
|
| 30 |
+
}
|
| 31 |
+
}
|
| 32 |
+
}
|
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":"MIIHQzCCBsigAwIBAgIUQK47Tv4/jM3nZBFkPOFupNDUD+IwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDMwMTYwODU1WhcNMjYxMDMwMTYxODU1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEp5KBuiWuBvNCgEWDnrSbGtsrfG2D7mzMff3nQdhEl2SjNUzt2DNbxjXqHiaBqCGKes6waxfTrgtaFGT4nUGND6OCBecwggXjMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDCg1ZmU5ZGJiM2Q0NWY2ZjI2NTI5NThjMWY3MGU1MzgxODkxZmE3YWEwMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVmZTlkYmIzZDQ1ZjZmMjY1Mjk1OGMxZjcwZTUzODE4OTFmYTdhYTAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvNDEwODM1MzY2NzQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoY2SRMcAAAQDAEcwRQIhAKdOfhUj7b8mNzxxmyXsqzpxWIvrZyQzHFs3LGq1/AiJAiAUeo9vUC0azoMmOrgN+nU+bvvEzbgfnj1oM+PYP8TxjjAKBggqhkjOPQQDAwNpADBmAjEA69YHAJn34c7Fwrd20yRjQck6xUonOxxLP6kBqwerNsHnkeQGfW80Q8t2OXJfO9F0AjEAgz57I7OiMgMwurkNOK61fuPOG9n7IvqLxtG/5JoYGxFRZppKeP/iNwSxT4xlc6Jj"},"tlogEntries":[{"logIndex":"3597168490","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793376536","inclusionPromise":{"signedEntryTimestamp":"MEUCIH2KrFt7rJnSswig1WO2X2umBHpcFI6nzy8pwpXvo/dVAiEAso2ilHcdn7Je4VZ0zu8SvsKjyW1CyAgps7dlp8BfoDU="},"inclusionProof":{"logIndex":"3475264228","rootHash":"gDPrtEOjJofsL3xO+mErfPON8xcaxtQyIfcbsCI+eio=","treeSize":"3475264242","hashes":["PWyAP7xrWBw74a+rRrEY2y6IjTVciuA87lwN2CxZtQY=","ltah+wcQDHodmWesB26PZ5ZQme6dRY7ke7ui746GM3I=","1w56PQ5BLnkFM0x0dkSGd1mHpjolRIgd/3TCvtTGp+o=","AxhMkrrW+f0engE9p/+lFXqkl/xEu7MJ9kiZZ8Yh+4U=","M4u6OpE640W8QJlX0GYnrskDT1T7/9H5cV6fl2BECXw=","i3s0nTqVz1t98zlz0uA8L7/KCV4zt4Y28tZXMSaZaoA=","2rDzM890yX+aBXFSZR5J+1svlriliD7hZD3KUDn8hK4=","JoWQ6CAZ2LIepVKnkU0nTBGZOQXhJxbzXCEG7E1IwSY=","xdcyoFKhkWvKTlmyezgpEalfPv99YlMvd0SGXF04GsQ=","dEh2BPC7n4g5eAdzrDBOJBC4I9U2jRDpaugiN8DzwlQ=","ong7CR13YjLVwNWMRUBqrhvuVDcbhobTuZtWM4Qduj4=","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\n3475264242\ngDPrtEOjJofsL3xO+mErfPON8xcaxtQyIfcbsCI+eio=\n\n— rekor.sigstore.dev wNI9ajBEAiBgLTipDx9T3t10yYuG9SrC0XV83erWw+0wE1kokwY7iQIgQW6aM3I7ZjGNisIWwhyyjFg8GSy3UqPdubu1A/wNsgk=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJjNDRhYjQ4ODQyZjE4MDZkNTI2YTY0MGZhMTA4ZGJjMjZmY2QwY2U3MDc3NzJhNWUxZTJjODVlOGQ2MTVkMzg2In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRVRqS2s0VTJtL1lML0NmcDdGWmZVWjNYVkMrb3lFMDhoZXgzeTNwQmw0dEFpQThsV1FKUm10MFdPZk40dDY2YWJ0WlVldE1oYnAyV2dpY24vRWdyTG9WRkE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJla05EUW5OcFowRjNTVUpCWjBsVlVVczBOMVIyTkM5cVRUTnVXa0pHYTFCUFJuVndUa1JWUkN0SmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFVFhkTlZGbDNUMFJWTVZkb1kwNU5hbGw0VFVSTmQwMVVXWGhQUkZVeFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ3TlV0Q2RXbFhkVUoyVGtOblJWZEVibkpUWWtkMGMzSm1SekpFTjIxNlRXWm1NMjRLVVdSb1JXd3lVMnBPVlhwME1rUk9ZbmhxV0hGSWFXRkNjVU5IUzJWek5uZGhlR1pVY21kMFlVWkhWRFJ1VlVkT1JEWlBRMEpsWTNkbloxaHFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cE9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOU9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmN4V20xVk5WcEhTbWxOTWxFd1RsZFpNbHBxU1RKT1ZFazFUbFJvYWsxWFdUTk5SMVV4VFhwbmVFOUVhM2dLV20xRk0xbFhSWGROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2JWcFViR3RaYlVsNldrUlJNVnBxV20wS1RXcFpNVTFxYXpGUFIwMTRXbXBqZDFwVVZYcFBSRVUwVDFSR2JWbFVaR2haVkVGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrNUVSWGNLVDBSTk1VMTZXVEpPZWxGMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBaMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPRUpJYjBGbFFVSXlRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05Wk1sTlNUV05CUVVGUlJFRkZZM2RTVVVsb1FVdGtUd3BtYUZWcU4ySTRiVTU2ZUhodGVWaHpjWHB3ZUZkSmRuSmFlVkY2U0Vaek0weEhjVEV2UVdsS1FXbEJWV1Z2T1haVlF6QmhlbTlOYlU5eVowNHJibFVyQ21KMmRrVjZZbWRtYm1veGIwMHJVRmxRT0ZSNGFtcEJTMEpuWjNGb2EycFBVRkZSUkVGM1RuQkJSRUp0UVdwRlFUWTVXVWhCU200ek5HTTNSbmR5WkRJS01IbFNhbEZqYXpaNFZXOXVUM2g0VEZBMmEwSnhkMlZ5VG5OSWJtdGxVVWRtVnpnd1VUaDBNazlZU21aUE9VWXdRV3BGUVdkNk5UZEpOMDlwVFdkTmR3cDFjbXRPVDBzMk1XWjFVRTlIT1c0M1NYWnhUSGgwUnk4MVNtOVpSM2hHVWxwd2NFdGxVQzlwVG5kVGVGUTBlR3hqTmtwcUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg/rBL07o1uIskHs5NC5AVFNCvyOVtZZu6221GkkyZmpgCFQD3Gic+VZmP1LMASldUEuUvW7h0+hgPMjAyNjEwMzAxNjA4NTVaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAzMDE2MDg1NVowLwYJKoZIhvcNAQkEMSIEIKmvoGNbmvTi9avuHxtFeGJTuPzoe/TC6SBGDqWD82TgMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQC6fHNPugZG3Nf4Qv/OPKvNghWN+khKwlv9vdNf0tg1lAP3kC0gNCZvZbELOz9NIe4CMQDn2nf6LM9/ZE6RxE46zyPnztXPPlgSPbzpJcjS43fzF36ZRtVyZtF9TqTaEwRklc4="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"xEq0iELxgG1SamQPoQjbwm/NDOcHdypeHiyF6NYV04Y="},"signature":"MEQCIETjKk4U2m/YL/Cfp7FZfUZ3XVC+oyE08hex3y3pBl4tAiA8lWQJRmt0WOfN4t66abtZUetMhbp2Wgicn/EgrLoVFA=="}}
|
build/torch211-metal-aarch64-darwin/symbols.json
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 4 |
+
"functions": [
|
| 5 |
+
{
|
| 6 |
+
"name": "dequantize",
|
| 7 |
+
"qualname": "dequantize",
|
| 8 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 9 |
+
"kind": "function",
|
| 10 |
+
"doc": "`(rows, bytes_per_row)` uint8 blocks -> `(rows, cols)` values of `dtype`.",
|
| 11 |
+
"signature": {
|
| 12 |
+
"parameters": [
|
| 13 |
+
{
|
| 14 |
+
"name": "blocks",
|
| 15 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 16 |
+
"default": null,
|
| 17 |
+
"annotation": "torch.Tensor"
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"name": "ggml_type",
|
| 21 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 22 |
+
"default": null,
|
| 23 |
+
"annotation": "int"
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"name": "rows",
|
| 27 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 28 |
+
"default": null,
|
| 29 |
+
"annotation": "int"
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"name": "cols",
|
| 33 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 34 |
+
"default": null,
|
| 35 |
+
"annotation": "int"
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"name": "dtype",
|
| 39 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 40 |
+
"default": null,
|
| 41 |
+
"annotation": "torch.dtype"
|
| 42 |
+
}
|
| 43 |
+
],
|
| 44 |
+
"return_annotation": "torch.Tensor"
|
| 45 |
+
}
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"name": "get_rows",
|
| 49 |
+
"qualname": "get_rows",
|
| 50 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 51 |
+
"kind": "function",
|
| 52 |
+
"doc": "The rows `indices` names, unpacked: `(rows, bytes_per_row)` uint8 -> `(len(indices), cols)`.\n\nggml's `get_rows`, which dequantizes as it gathers -- so reading a few rows out of a large table\nnever touches the rest.",
|
| 53 |
+
"signature": {
|
| 54 |
+
"parameters": [
|
| 55 |
+
{
|
| 56 |
+
"name": "blocks",
|
| 57 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 58 |
+
"default": null,
|
| 59 |
+
"annotation": "torch.Tensor"
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"name": "indices",
|
| 63 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 64 |
+
"default": null,
|
| 65 |
+
"annotation": "torch.Tensor"
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"name": "ggml_type",
|
| 69 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 70 |
+
"default": null,
|
| 71 |
+
"annotation": "int"
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"name": "cols",
|
| 75 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 76 |
+
"default": null,
|
| 77 |
+
"annotation": "int"
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"name": "dtype",
|
| 81 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 82 |
+
"default": null,
|
| 83 |
+
"annotation": "torch.dtype"
|
| 84 |
+
}
|
| 85 |
+
],
|
| 86 |
+
"return_annotation": "torch.Tensor"
|
| 87 |
+
}
|
| 88 |
+
},
|
| 89 |
+
{
|
| 90 |
+
"name": "mul_mat_id",
|
| 91 |
+
"qualname": "mul_mat_id",
|
| 92 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 93 |
+
"kind": "function",
|
| 94 |
+
"doc": "One dispatch for a bank of routed experts: ggml's `mul_mv_id`.\n\n`blocks` is `(n_experts, out_features, bytes_per_row)`, `x` is `(n_tokens, in_features)`, and\n`ids` is `(n_tokens, n_used)` naming the expert each of a token's slots picked. The result is\n`(n_tokens, n_used, out_features)` f32, one row per slot.\n\nThe alternative is a gemv per expert per layer, whose arithmetic is dwarfed by the dispatch\naround it -- which is most of what a MoE decode step costs.",
|
| 95 |
+
"signature": {
|
| 96 |
+
"parameters": [
|
| 97 |
+
{
|
| 98 |
+
"name": "blocks",
|
| 99 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 100 |
+
"default": null,
|
| 101 |
+
"annotation": "torch.Tensor"
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
"name": "x",
|
| 105 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 106 |
+
"default": null,
|
| 107 |
+
"annotation": "torch.Tensor"
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"name": "ids",
|
| 111 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 112 |
+
"default": null,
|
| 113 |
+
"annotation": "torch.Tensor"
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"name": "ggml_type",
|
| 117 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 118 |
+
"default": null,
|
| 119 |
+
"annotation": "int"
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"name": "out_features",
|
| 123 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 124 |
+
"default": null,
|
| 125 |
+
"annotation": "int"
|
| 126 |
+
}
|
| 127 |
+
],
|
| 128 |
+
"return_annotation": "torch.Tensor"
|
| 129 |
+
}
|
| 130 |
+
},
|
| 131 |
+
{
|
| 132 |
+
"name": "mul_mat_vec",
|
| 133 |
+
"qualname": "mul_mat_vec",
|
| 134 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 135 |
+
"kind": "function",
|
| 136 |
+
"doc": "Fused dequantize-gemv: `x @ blocks.T` without unpacking `blocks`.\n\n`x` is `(rows, in_features)` and `rows` must be at most `MAX_GEMV_ROWS`. The result is f32\nwhatever `x`'s dtype was, since the kernel writes an f32 destination; cast it at the call site,\nwhere the cast can be fused into whatever consumes it.",
|
| 137 |
+
"signature": {
|
| 138 |
+
"parameters": [
|
| 139 |
+
{
|
| 140 |
+
"name": "blocks",
|
| 141 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 142 |
+
"default": null,
|
| 143 |
+
"annotation": "torch.Tensor"
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"name": "x",
|
| 147 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 148 |
+
"default": null,
|
| 149 |
+
"annotation": "torch.Tensor"
|
| 150 |
+
},
|
| 151 |
+
{
|
| 152 |
+
"name": "ggml_type",
|
| 153 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 154 |
+
"default": null,
|
| 155 |
+
"annotation": "int"
|
| 156 |
+
},
|
| 157 |
+
{
|
| 158 |
+
"name": "out_features",
|
| 159 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 160 |
+
"default": null,
|
| 161 |
+
"annotation": "int"
|
| 162 |
+
}
|
| 163 |
+
],
|
| 164 |
+
"return_annotation": "torch.Tensor"
|
| 165 |
+
}
|
| 166 |
+
}
|
| 167 |
+
],
|
| 168 |
+
"layers": []
|
| 169 |
+
}
|
build/torch212-metal-aarch64-darwin/{_ggml_quantization_metal_63f3c1e.abi3.so → _ggml_quantization_metal_5fe9dbb.abi3.so}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 3347416
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:240959bdd4acc9ab809d8203ecf174dc41529b01ee03d1a9faf9610c7332b928
|
| 3 |
size 3347416
|
build/torch212-metal-aarch64-darwin/_ops.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
import torch
|
| 2 |
-
from . import
|
| 3 |
-
ops = torch.ops.
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
-
return f"
|
|
|
|
| 1 |
import torch
|
| 2 |
+
from . import _ggml_quantization_metal_5fe9dbb
|
| 3 |
+
ops = torch.ops._ggml_quantization_metal_5fe9dbb
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
+
return f"_ggml_quantization_metal_5fe9dbb::{op_name}"
|
build/torch212-metal-aarch64-darwin/metadata.json
CHANGED
|
@@ -1,9 +1,11 @@
|
|
| 1 |
{
|
| 2 |
"name": "ggml-quantization",
|
| 3 |
-
"id": "
|
| 4 |
"version": 1,
|
|
|
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
|
|
| 7 |
"backend": {
|
| 8 |
"type": "metal"
|
| 9 |
},
|
|
@@ -11,18 +13,19 @@
|
|
| 11 |
"algorithm": "sha256",
|
| 12 |
"files": {
|
| 13 |
"__init__.py": "iPXgZXBgY3CzpNUSjmCovMVNPLBol1KBaNoTzkXp5mM=",
|
| 14 |
-
"
|
| 15 |
-
"_ops.py": "
|
|
|
|
| 16 |
}
|
| 17 |
},
|
| 18 |
"provenance": {
|
| 19 |
"kernel-builder": {
|
| 20 |
-
"version": "0.
|
| 21 |
-
"
|
| 22 |
"dirty": false
|
| 23 |
},
|
| 24 |
"kernel": {
|
| 25 |
-
"
|
| 26 |
"dirty": false
|
| 27 |
}
|
| 28 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"name": "ggml-quantization",
|
| 3 |
+
"id": "_ggml_quantization_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": "iPXgZXBgY3CzpNUSjmCovMVNPLBol1KBaNoTzkXp5mM=",
|
| 16 |
+
"_ggml_quantization_metal_5fe9dbb.abi3.so": "JAlZvdSsyauAnYID7PF03EFSmwHuA9Gp+vlhDHMyuSg=",
|
| 17 |
+
"_ops.py": "qmH/NXUzgO/6qdqeM09eLgLtwnGkpAZE0/uZdqhhcmM=",
|
| 18 |
+
"symbols.json": "57o77zfqRijHYonknIl7gcyfqmAxIpDhWTt9Df/lO5s="
|
| 19 |
}
|
| 20 |
},
|
| 21 |
"provenance": {
|
| 22 |
"kernel-builder": {
|
| 23 |
+
"version": "0.18.0-dev0",
|
| 24 |
+
"commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
|
| 25 |
"dirty": false
|
| 26 |
},
|
| 27 |
"kernel": {
|
| 28 |
+
"commit": "5fe9dbb3d45f6f2652958c1f70e5381891fa7aa0",
|
| 29 |
"dirty": false
|
| 30 |
}
|
| 31 |
}
|
build/torch212-metal-aarch64-darwin/metadata.json.sigstore
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHYjCCBuigAwIBAgIUQXr3qWLlkvNgZ5oCjIr9HFD5YzowCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwOTAyMTE1NTM4WhcNMjYwOTAyMTIwNTM4WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELPJO+fGPjBvjhgPourSaofgGuNq7t4lxHeyH89x2B6McQm5YNV19pH2cj3bUZM5eeTLrw7noDsys+KHQhal36KOCBgcwggYDMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUukEyraXwCmbwZTVcJWGdLTm7C8wwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wbwYDVR0RAQH/BGUwY4ZhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMB8GCisGAQQBg78wAQIEEXdvcmtmbG93X2Rpc3BhdGNoMDYGCisGAQQBg78wAQMEKDYzZjNjMWVhM2Y5ZWIxYmE2MWI0YTg4YmQ5M2FhYTg2YTg0ZjU1ZWEwGwYKKwYBBAGDvzABBAQNQnVpbGQgKG1hY09TKTArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMHEGCisGAQQBg78wAQkEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAEKBCoMKDYzZjNjMWVhM2Y5ZWIxYmE2MWI0YTg4YmQ5M2FhYTg2YTg0ZjU1ZWEwHQYKKwYBBAGDvzABCwQPDA1naXRodWItaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoNjNmM2MxZWEzZjllYjFiYTYxYjRhODhiZDkzYWFhODZhODRmNTVlYTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBxBgorBgEEAYO/MAESBGMMYWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC1tYWMueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABEwQqDCg2M2YzYzFlYTNmOWViMWJhNjFiNGE4OGJkOTNhYWE4NmE4NGY1NWVhMCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwZAYKKwYBBAGDvzABFQRWDFRodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvYWN0aW9ucy9ydW5zLzMzNjI0ODc1MDE2L2F0dGVtcHRzLzEwFgYKKwYBBAGDvzABFgQIDAZwdWJsaWMwRgYKKwYBBAGDvzABGAQ4DDZyZXBvOmh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5OnJlZjpyZWZzL2hlYWRzL21haW4wgYsGCisGAQQB1nkCBAIEfQR7AHkAdwDdPTBqxscRMmMZHhyZZzcCokpeuN48rf+HinKALynujgAAAaBh+YfPAAAEAwBIMEYCIQDQyK7X2XKAJoEWPEiU82bsPwkuB7mgRj0XIBQqIuHrSQIhALiT0fjvaiH1IJ0p+4plFH4PjnildREnt/VedmE5CRPBMAoGCCqGSM49BAMDA2gAMGUCMQCgR5Z7G0v8fYDEoqSC6NARuD6ErLjUj/rMWpsiv8izBjhMAG4Ys78TH8fqFUZvKA8CMGwE4zuJV6vj4vvsF++2e5rl04rsJKzlEOpp1LB0IPuVLJJi5tre7zQu5g1+vk+bnA=="},"tlogEntries":[{"logIndex":"2685308347","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1788350138","inclusionPromise":{"signedEntryTimestamp":"MEUCIQCeukhGjzuXb+V9F6Lr4J4re/aF7x8sLiOzrp5Mq67a1QIgNGOVLfWTv+gtE1MrzoM7tYmK3lSPofrseDPjgJ1sGSY="},"inclusionProof":{"logIndex":"2563404085","rootHash":"Yw9Kn0q+nQVf2cuMQmOqmEaY8EW8n06DQij5asxKjB0=","treeSize":"2563404094","hashes":["i+GhLf5HyqgbPxJFV0GfSNnbesbf22PC5MVtIUFbUHY=","ViyKVuv/dOtSgW6MZJj7gtx3EeRpFMSzX2FgHrCyXZg=","IsbWJXsVgWvJiIA8rjkp+r2Dp7faiuOFkImJ6NL64ag=","AGnN1ZO3629gQ1gpcU+Y/63sxn/UaZ09YrnqnzWsVVw=","pKmPCnDXe0+wm5aqFxAI4sPud0ihKy7W+3X6E5RvUKs=","RVSwGqFrgqLA+QVr9gTnk9li2haKE3xpLvjzoUvYOSk=","PLcJyFMz+PX4iElWppigcChwVTSvWQKm0jAsw90GQ2U=","yx1C8qORgQZyEAY/S3IweAzoPmtYm93g7ouqo0XujJQ=","7qHI9xRdbuuSQzIEYjspvGUklwG3oQUfXM2gwWzda2o=","F+YuHc8O3xlVfXj9owStrUJMnQTwY/NpQ4opoGW8gKc=","H2EWTqHaPzZyLGzFNdm1vZITRk/1WU8HnEukaJgoG2E=","oHcOV2H5nfxCFsD3J616h87Eiz+X30EjHngkLoDqRJQ=","HiSowX/eHl/VU2Q+A0EfICMiguqx41ThMqJf2HY+o9M=","itRV5Rvo1MAx7h7FsTOgBX8gRAnu5MLfPmZWuLwhlhA=","eXSLrLqKSxRTixSP/k4YimriB2lufao6trqTrsxxlyg=","SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2563404094\nYw9Kn0q+nQVf2cuMQmOqmEaY8EW8n06DQij5asxKjB0=\n\n— rekor.sigstore.dev wNI9ajBFAiBFIs7b3+Kzd7xNy6Vj52XFpaa+V7+q4woJfE1gHlPmEAIhAIv1Hscfp7Zt5TPXfNoIZuXkj0p1LNDWeERR9zjYwYvt\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIwNzQwMTdiZmQ4MDkxMDZhMjZhM2M3NThjODZlODBiMDA5NTI2ODQ5NmJmNzBiMGEwZTdhNDQwNDA2YTYzNjUxIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJSFRlUkN5WGdXVDhPSHY2bjNoT1ZzVmU4N0V6Z3kzLzdOUk5JT2xKZGdaMkFpQm1uM0pWMHhPd2YvYStBTXNBa2RpSVUyclZGWSs5UEVkMFhSOHdIdTlZeEE9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFpha05EUW5WcFowRjNTVUpCWjBsVlVWaHlNM0ZYVEd4cmRrNW5XalZ2UTJwSmNqbElSa1ExV1hwdmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVUVhsTlZFVXhUbFJOTkZkb1kwNU5hbGwzVDFSQmVVMVVTWGRPVkUwMFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZNVUVwUEsyWkhVR3BDZG1wb1oxQnZkWEpUWVc5bVowZDFUbkUzZERSc2VFaGxlVWdLT0RsNE1rSTJUV05SYlRWWlRsWXhPWEJJTW1OcU0ySlZXazAxWldWVVRISjNOMjV2UkhONWN5dExTRkZvWVd3ek5rdFBRMEpuWTNkbloxbEVUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlYxYTBWNUNuSmhXSGREYldKM1dsUldZMHBYUjJSTVZHMDNRemgzZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJKM1dVUldVakJTUVZGSUwwSkhWWGRaTkZwb1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4WE1XaFplVFUxQ2xsWE1YTlJTRXBzV201TmRtRkhWbWhhU0UxMllsZEdjR0pxUVRWQ1oyOXlRbWRGUlVGWlR5OU5RVVZDUWtOMGIyUklVbmRqZW05MlRETlNkbUV5Vm5VS1RHMUdhbVJIYkhaaWJrMTFXakpzTUdGSVZtbGtXRTVzWTIxT2RtSnVVbXhpYmxGMVdUSTVkRTFDT0VkRGFYTkhRVkZSUW1jM09IZEJVVWxGUlZoa2RncGpiWFJ0WWtjNU0xZ3lVbkJqTTBKb1pFZE9iMDFFV1VkRGFYTkhRVkZSUW1jM09IZEJVVTFGUzBSWmVscHFUbXBOVjFab1RUSlpOVnBYU1hoWmJVVXlDazFYU1RCWlZHYzBXVzFSTlUweVJtaFpWR2N5V1ZSbk1GcHFWVEZhVjBWM1IzZFpTMHQzV1VKQ1FVZEVkbnBCUWtKQlVVNVJibFp3WWtkUlowdEhNV2dLV1RBNVZFdFVRWEpDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0l4YjJSWFpHNWhWelZ1V20xR2FscFRPWEphV0VwMVdsZDRla3hYVG5aaVZ6RXhZbTFzTUFwbFZFRmtRbWR2Y2tKblJVVkJXVTh2VFVGRlIwSkJPWGxhVjFwNlRESm9iRmxYVW5wTU1qRm9ZVmMwZDA5M1dVdExkMWxDUWtGSFJIWjZRVUpEUVZGMENrUkRkRzlrU0ZKM1kzcHZka3d6VW5aaE1sWjFURzFHYW1SSGJIWmliazExV2pKc01HRklWbWxrV0U1c1kyMU9kbUp1VW14aWJsRjFXVEk1ZEUxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZGclJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJVdENRMjlOUzBSWmVscHFUbXBOVjFab1RUSlpOVnBYU1hnS1dXMUZNazFYU1RCWlZHYzBXVzFSTlUweVJtaFpWR2N5V1ZSbk1GcHFWVEZhVjBWM1NGRlpTMHQzV1VKQ1FVZEVkbnBCUWtOM1VWQkVRVEZ1WVZoU2J3cGtWMGwwWVVjNWVtUkhWbXROUlVGSFEybHpSMEZSVVVKbk56aDNRVkYzUlUxbmQzZGhTRkl3WTBoTk5reDVPVzVoV0ZKdlpGZEpkVmt5T1hSTU1tZ3hDbG95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFJpV0ZaMVlWaFNOVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVEJGUzJkM2IwNXFUbTBLVFRKTmVGcFhSWHBhYW14c1dXcEdhVmxVV1hoWmFsSm9UMFJvYVZwRWEzcFpWMFpvVDBSYWFFOUVVbTFPVkZac1dWUkJaa0puYjNKQ1owVkZRVmxQTHdwTlFVVlBRa0pGVFVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJZVUpuYjNKQ1owVkZRVmxQTDAxQlJWQkNRWGROUTJwRmQwNTZSVEJPZWxVeENrMXFhM2RNWjFsTFMzZFpRa0pCUjBSMmVrRkNSVUZSWjBSQ05XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZDBkQldVdExkMWxDUWtGSFJIWjZRVUpGVVZGTFJFRm5lVTVVWTNsTlJHTXdUWHBDZUVKbmIzSkNaMFZGUVZsUEwwMUJSVk5DUjAxTldWZG9NQXBrU0VKNlQyazRkbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemgxQ2xveWJEQmhTRlpwVEROa2RtTnRkRzFpUnprelkzazVhV1JYYkhOYVF6RjBXVmROZFdWWFJuUmlSVUo1V2xkYWVrd3lhR3haVjFKNlRESXhhR0ZYTkhjS1QwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWM1VYRkVRMmN5VFRKWmVsbDZSbXhaVkU1dFQxZFdhVTFYU21oT2FrWnBUa2RGTkU5SFNtdFBWRTVvV1ZkRk5BcE9iVVUwVGtkWk1VNVhWbWhOUTBWSFEybHpSMEZSVVVKbk56aDNRVkpSUlVWM2QxSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkYVFWbExDa3QzV1VKQ1FVZEVkbnBCUWtaUlVsZEVSbEp2WkVoU2QyTjZiM1pNTW1Sd1pFZG9NVmxwTldwaU1qQjJZVWhXYmxveWJIVmFNbHBvV1RKVmRtRXlWbmtLWW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNaWlYwNHdZVmM1ZFdONU9YbGtWelY2VEhwTmVrNXFTVEJQUkdNeFRVUkZNa3d5UmpCa1IxWjBZMGhTZWdwTWVrVjNSbWRaUzB0M1dVSkNRVWRFZG5wQlFrWm5VVWxFUVZwM1pGZEtjMkZYVFhkU1oxbExTM2RaUWtKQlIwUjJla0ZDUjBGUk5FUkVXbmxhV0VKMkNrOXRhREZhTW1Sd1ltMWtiVmxYVG14TU1uUnNZMjAxYkdKSVRYUlpNamwwWWxoV2RXRllValZQYmtwc1dtcHdlVnBYV25wTU1taHNXVmRTZWt3eU1XZ0tZVmMwZDJkWmMwZERhWE5IUVZGUlFqRnVhME5DUVVsRlpsRlNOMEZJYTBGa2QwUmtVRlJDY1hoelkxSk5iVTFhU0doNVdscDZZME52YTNCbGRVNDBPQXB5Wml0SWFXNUxRVXg1Ym5WcVowRkJRV0ZDYUN0WlpsQkJRVUZGUVhkQ1NVMUZXVU5KVVVSUmVVczNXREpZUzBGS2IwVlhVRVZwVlRneVluTlFkMnQxQ2tJM2JXZFNhakJZU1VKUmNVbDFTSEpUVVVsb1FVeHBWREJtYW5aaGFVZ3hTVW93Y0NzMGNHeEdTRFJRYW01cGJHUlNSVzUwTDFabFpHMUZOVU5TVUVJS1RVRnZSME5EY1VkVFRUUTVRa0ZOUkVFeVowRk5SMVZEVFZGRFoxSTFXamRITUhZNFpsbEVSVzl4VTBNMlRrRlNkVVEyUlhKTWFsVnFMM0pOVjNCemFRcDJPR2w2UW1wb1RVRkhORmx6TnpoVVNEaG1jVVpWV25aTFFUaERUVWQzUlRSNmRVcFdOblpxTkhaMmMwWXJLekpsTlhKc01EUnljMHBMZW14RlQzQndDakZNUWpCSlVIVldURXBLYVRWMGNtVTNlbEYxTldjeEszWnJLMkp1UVQwOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgR0To2Ev67fMbng7zhxNPRE0px1JskZPyKl248kSsC48CFQDDGgK5S7O24hDhORh5dHiDxWcIYBgPMjAyNjA5MDIxMTU1MzhaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkwMjExNTUzOFowLwYJKoZIhvcNAQkEMSIEIEvMCLwKUNcI5bhcltde8tQJbHAYFisHWV0VcmjxKwhQMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMF6jlzoBJBK0Vq/XeIpb6l0kZkR75wZIakVyJZuBiSugZ4tR5fJ1OWuxZZfbHNufWwIwEUjDVbIY+jzanNMrZju0gAHUgOv61sgR8HDRo9y9bRwt9406dTsa5IaX567LhS81"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"B0AXv9gJEGomo8dYyG6AsAlSaElr9wsKDnpEBAamNlE="},"signature":"MEQCIHTeRCyXgWT8OHv6n3hOVsVe87Ezgy3/7NRNIOlJdgZ2AiBmn3JV0xOwf/a+AMsAkdiIU2rVFY+9PEd0XR8wHu9YxA=="}}
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHQjCCBsigAwIBAgIUSIF8MmZQPubb9zVI+toCcbXuxKYwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDMwMTYwOTAwWhcNMjYxMDMwMTYxOTAwWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtQYchfSLzcZ3tCLZC2mggL7SHAUx08hJJAFOznOYquQ4iygWTanlJ7BjRKZ8O3pw2P2H0rWDJEVrMTQBVCCWMKOCBecwggXjMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDCg1ZmU5ZGJiM2Q0NWY2ZjI2NTI5NThjMWY3MGU1MzgxODkxZmE3YWEwMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVmZTlkYmIzZDQ1ZjZmMjY1Mjk1OGMxZjcwZTUzODE4OTFmYTdhYTAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvNDEwODM1MzY2NzQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoY2SWLcAAAQDAEcwRQIgFDB9iRjkT8iJTrbvo6Yt9eyjiG7KWOL9xDNnQuotE00CIQDmebg5C2oVfmQ2DVH62up9u/HYHXfWvnFE6epEtCHg2jAKBggqhkjOPQQDAwNoADBlAjEAiMJzjThZ6mCulvHAwLhtgO18rdRoBTCLpIvsctNGoOn2fHc79GJQA1j4CzIya85+AjAWKpCO3C2dZoHJjizqphb06n2e5aXV8vyBDF1JrPUkBwP8SahUlDy9LSrfaiD1cIY="},"tlogEntries":[{"logIndex":"3597170700","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793376541","inclusionPromise":{"signedEntryTimestamp":"MEQCIFwL4wGPdL22RGYEWsZ0Qp/CPWsuGYe+OV6e133N9qWcAiAM4/2BsjWZ1c9F1kpNkcO7lN+tPDveZJqSRcJNwGgwQQ=="},"inclusionProof":{"logIndex":"3475266438","rootHash":"ZpalUaimqhYY9kYhzkBnv8D4RgkS8bPBDfiplmYN73o=","treeSize":"3475266561","hashes":["z3yivXXzyqiZl1oANdX9stHl6NaMrZV0vq6m4LPbivM=","pFfSPuKPMMmhYgndiymd4aF5uBLG4/U2weOiVeLecQ4=","AmKQnHN5+SortnhxeZPHZOi2zAcKbfjodo1vPCks1VY=","ofG/3OEA6pGyfW52LfCOaKBlIr6NcFwIduRQ1TvkFZ8=","PSv4CQQd/t5/KvTkI58GrlPq2dAAlIoUYERgQ73vKqU=","yQ6j0f/omELTIdh5aWgFymw62Coc9+IJBFNkiNg4MNs=","eRrq4hPWlXFSy39d6T4AUzNbB/vSmlwKdATNk0a7vcQ=","/3G6rL4qIZa56vMCdLFFO11nugkvw714i6UWTpZBvRs=","ENrkeWtVyDZPDC7jlIdchBfUV05DeAehTaZIttZDxd8=","pNfyW70icafY26PuGGpXP/fkGjL4deiKOW0lNVjHZcw=","BCID9KBaQkvI7sacS9HVdz1AXpYhaOJCb5Ef8QnTf0s=","hkqIqcWuOkxO3BZhY+Zxdp7IyBNDIAOlisSEryooofg=","dEh2BPC7n4g5eAdzrDBOJBC4I9U2jRDpaugiN8DzwlQ=","ong7CR13YjLVwNWMRUBqrhvuVDcbhobTuZtWM4Qduj4=","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\n3475266561\nZpalUaimqhYY9kYhzkBnv8D4RgkS8bPBDfiplmYN73o=\n\n— rekor.sigstore.dev wNI9ajBFAiA025kWGuAY4KYxKoWQ8Z1Tx3cGFFNv74UZJRBLJjjAOgIhAM1sRPWvzVrlwppzhBqAS3SlEuTFTCUjQ9xR+WWcvdaw\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIwODBlODM4N2FiMjJhZTJkMzU1NzA2ODE2MmZmMDM3M2M0MzQ4ZGNiZmJhYzcwMGNlNjY4OTAyNzM2YmUyZTBlIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUURNMHNoOUlQV0pmdU92cDYzWEFsdUg1RjkzamNNdERoTVZmeDBmTllodG1nSWdXNHRFaXhHZjVJZ2Zvd2RGemdTMjd5enNHNlBRSDlBc0QrUURmajlJS0JBPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJha05EUW5OcFowRjNTVUpCWjBsVlUwbEdPRTF0V2xGUWRXSmlPWHBXU1N0MGIwTmpZbGgxZUV0WmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFVFhkTlZGbDNUMVJCZDFkb1kwNU5hbGw0VFVSTmQwMVVXWGhQVkVGM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVYwVVZsamFHWlRUSHBqV2pOMFEweGFRekp0WjJkTU4xTklRVlY0TURob1NrcEJSazhLZW01UFdYRjFVVFJwZVdkWFZHRnViRW8zUW1wU1MxbzRUek53ZHpKUU1rZ3djbGRFU2tWV2NrMVVVVUpXUTBOWFRVdFBRMEpsWTNkbloxaHFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cE9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOU9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmN4V20xVk5WcEhTbWxOTWxFd1RsZFpNbHBxU1RKT1ZFazFUbFJvYWsxWFdUTk5SMVV4VFhwbmVFOUVhM2dLV20xRk0xbFhSWGROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2JWcFViR3RaYlVsNldrUlJNVnBxV20wS1RXcFpNVTFxYXpGUFIwMTRXbXBqZDFwVVZYcFBSRVUwVDFSR2JWbFVaR2haVkVGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrNUVSWGNLVDBSTk1VMTZXVEpPZWxGMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBaMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPRUpJYjBGbFFVSXlRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05Wk1sTlhUR05CUVVGUlJFRkZZM2RTVVVsblJrUkNPUXBwVW1wclZEaHBTbFJ5WW5adk5sbDBPV1Y1YW1sSE4wdFhUMHc1ZUVST2JsRjFiM1JGTURCRFNWRkViV1ZpWnpWRE1tOVdabTFSTWtSV1NEWXlkWEE1Q25VdlNGbElXR1pYZG01R1JUWmxjRVYwUTBobk1tcEJTMEpuWjNGb2EycFBVRkZSUkVGM1RtOUJSRUpzUVdwRlFXbE5TbnBxVkdoYU5tMURkV3gyU0VFS2QweG9kR2RQTVRoeVpGSnZRbFJEVEhCSmRuTmpkRTVIYjA5dU1tWklZemM1UjBwUlFURnFORU42U1hsaE9EVXJRV3BCVjB0d1EwOHpRekprV205SVNncHFhWHB4Y0doaU1EWnVNbVUxWVZoV09IWjVRa1JHTVVweVVGVnJRbmRRT0ZOaGFGVnNSSGs1VEZOeVptRnBSREZqU1ZrOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgJSpNCY5KkxGfai4m/ct2EzM1Xn3Tqi3K7wctrpwppuMCFQDrRfLB2YGCRXGRV0n0uCMoBxarvRgPMjAyNjEwMzAxNjA5MDBaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MTAzMDE2MDkwMFowLwYJKoZIhvcNAQkEMSIEIE64YNPuI8kt/eEhAn9Ffs9Jg3zQqqGaClzjuOsi2pojMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMAkbaFNOLUaU8IihDSYpGOmur9R1hUaHqyi3M3wbOnYVQWjn+Dj89V1Ul7Z8/OaeBgIxAIQSYiMbwIc+f147UXUq+ZMIUZZiveg9EDkMN80sMDthfjDvic242VuQU6IuUUgGwA=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"CA6Dh6siri01VwaBYv8Dc8Q0jcv7rHAM5miQJza+Lg4="},"signature":"MEUCIQDM0sh9IPWJfuOvp63XAluH5F93jcMtDhMVfx0fNYhtmgIgW4tEixGf5IgfowdFzgS27yzsG6PQH9AsD+QDfj9IKBA="}}
|
build/torch212-metal-aarch64-darwin/symbols.json
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 4 |
+
"functions": [
|
| 5 |
+
{
|
| 6 |
+
"name": "dequantize",
|
| 7 |
+
"qualname": "dequantize",
|
| 8 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 9 |
+
"kind": "function",
|
| 10 |
+
"doc": "`(rows, bytes_per_row)` uint8 blocks -> `(rows, cols)` values of `dtype`.",
|
| 11 |
+
"signature": {
|
| 12 |
+
"parameters": [
|
| 13 |
+
{
|
| 14 |
+
"name": "blocks",
|
| 15 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 16 |
+
"default": null,
|
| 17 |
+
"annotation": "torch.Tensor"
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"name": "ggml_type",
|
| 21 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 22 |
+
"default": null,
|
| 23 |
+
"annotation": "int"
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"name": "rows",
|
| 27 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 28 |
+
"default": null,
|
| 29 |
+
"annotation": "int"
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"name": "cols",
|
| 33 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 34 |
+
"default": null,
|
| 35 |
+
"annotation": "int"
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"name": "dtype",
|
| 39 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 40 |
+
"default": null,
|
| 41 |
+
"annotation": "torch.dtype"
|
| 42 |
+
}
|
| 43 |
+
],
|
| 44 |
+
"return_annotation": "torch.Tensor"
|
| 45 |
+
}
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"name": "get_rows",
|
| 49 |
+
"qualname": "get_rows",
|
| 50 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 51 |
+
"kind": "function",
|
| 52 |
+
"doc": "The rows `indices` names, unpacked: `(rows, bytes_per_row)` uint8 -> `(len(indices), cols)`.\n\nggml's `get_rows`, which dequantizes as it gathers -- so reading a few rows out of a large table\nnever touches the rest.",
|
| 53 |
+
"signature": {
|
| 54 |
+
"parameters": [
|
| 55 |
+
{
|
| 56 |
+
"name": "blocks",
|
| 57 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 58 |
+
"default": null,
|
| 59 |
+
"annotation": "torch.Tensor"
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"name": "indices",
|
| 63 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 64 |
+
"default": null,
|
| 65 |
+
"annotation": "torch.Tensor"
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"name": "ggml_type",
|
| 69 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 70 |
+
"default": null,
|
| 71 |
+
"annotation": "int"
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"name": "cols",
|
| 75 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 76 |
+
"default": null,
|
| 77 |
+
"annotation": "int"
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"name": "dtype",
|
| 81 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 82 |
+
"default": null,
|
| 83 |
+
"annotation": "torch.dtype"
|
| 84 |
+
}
|
| 85 |
+
],
|
| 86 |
+
"return_annotation": "torch.Tensor"
|
| 87 |
+
}
|
| 88 |
+
},
|
| 89 |
+
{
|
| 90 |
+
"name": "mul_mat_id",
|
| 91 |
+
"qualname": "mul_mat_id",
|
| 92 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 93 |
+
"kind": "function",
|
| 94 |
+
"doc": "One dispatch for a bank of routed experts: ggml's `mul_mv_id`.\n\n`blocks` is `(n_experts, out_features, bytes_per_row)`, `x` is `(n_tokens, in_features)`, and\n`ids` is `(n_tokens, n_used)` naming the expert each of a token's slots picked. The result is\n`(n_tokens, n_used, out_features)` f32, one row per slot.\n\nThe alternative is a gemv per expert per layer, whose arithmetic is dwarfed by the dispatch\naround it -- which is most of what a MoE decode step costs.",
|
| 95 |
+
"signature": {
|
| 96 |
+
"parameters": [
|
| 97 |
+
{
|
| 98 |
+
"name": "blocks",
|
| 99 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 100 |
+
"default": null,
|
| 101 |
+
"annotation": "torch.Tensor"
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
"name": "x",
|
| 105 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 106 |
+
"default": null,
|
| 107 |
+
"annotation": "torch.Tensor"
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"name": "ids",
|
| 111 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 112 |
+
"default": null,
|
| 113 |
+
"annotation": "torch.Tensor"
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"name": "ggml_type",
|
| 117 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 118 |
+
"default": null,
|
| 119 |
+
"annotation": "int"
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"name": "out_features",
|
| 123 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 124 |
+
"default": null,
|
| 125 |
+
"annotation": "int"
|
| 126 |
+
}
|
| 127 |
+
],
|
| 128 |
+
"return_annotation": "torch.Tensor"
|
| 129 |
+
}
|
| 130 |
+
},
|
| 131 |
+
{
|
| 132 |
+
"name": "mul_mat_vec",
|
| 133 |
+
"qualname": "mul_mat_vec",
|
| 134 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 135 |
+
"kind": "function",
|
| 136 |
+
"doc": "Fused dequantize-gemv: `x @ blocks.T` without unpacking `blocks`.\n\n`x` is `(rows, in_features)` and `rows` must be at most `MAX_GEMV_ROWS`. The result is f32\nwhatever `x`'s dtype was, since the kernel writes an f32 destination; cast it at the call site,\nwhere the cast can be fused into whatever consumes it.",
|
| 137 |
+
"signature": {
|
| 138 |
+
"parameters": [
|
| 139 |
+
{
|
| 140 |
+
"name": "blocks",
|
| 141 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 142 |
+
"default": null,
|
| 143 |
+
"annotation": "torch.Tensor"
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"name": "x",
|
| 147 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 148 |
+
"default": null,
|
| 149 |
+
"annotation": "torch.Tensor"
|
| 150 |
+
},
|
| 151 |
+
{
|
| 152 |
+
"name": "ggml_type",
|
| 153 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 154 |
+
"default": null,
|
| 155 |
+
"annotation": "int"
|
| 156 |
+
},
|
| 157 |
+
{
|
| 158 |
+
"name": "out_features",
|
| 159 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 160 |
+
"default": null,
|
| 161 |
+
"annotation": "int"
|
| 162 |
+
}
|
| 163 |
+
],
|
| 164 |
+
"return_annotation": "torch.Tensor"
|
| 165 |
+
}
|
| 166 |
+
}
|
| 167 |
+
],
|
| 168 |
+
"layers": []
|
| 169 |
+
}
|
build/torch213-metal-aarch64-darwin/{_ggml_quantization_metal_63f3c1e.abi3.so → _ggml_quantization_metal_5fe9dbb.abi3.so}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
size 3347416
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b7a6184c31f952dc101049d27cea8ea6152a5223914c05b9a3f8a6c542f25ff9
|
| 3 |
size 3347416
|
build/torch213-metal-aarch64-darwin/_ops.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
| 1 |
import torch
|
| 2 |
-
from . import
|
| 3 |
-
ops = torch.ops.
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
-
return f"
|
|
|
|
| 1 |
import torch
|
| 2 |
+
from . import _ggml_quantization_metal_5fe9dbb
|
| 3 |
+
ops = torch.ops._ggml_quantization_metal_5fe9dbb
|
| 4 |
|
| 5 |
def add_op_namespace_prefix(op_name: str):
|
| 6 |
"""
|
| 7 |
Prefix op by namespace.
|
| 8 |
"""
|
| 9 |
+
return f"_ggml_quantization_metal_5fe9dbb::{op_name}"
|
build/torch213-metal-aarch64-darwin/metadata.json
CHANGED
|
@@ -1,9 +1,11 @@
|
|
| 1 |
{
|
| 2 |
"name": "ggml-quantization",
|
| 3 |
-
"id": "
|
| 4 |
"version": 1,
|
|
|
|
| 5 |
"license": "MIT",
|
| 6 |
"python-depends": [],
|
|
|
|
| 7 |
"backend": {
|
| 8 |
"type": "metal"
|
| 9 |
},
|
|
@@ -11,18 +13,19 @@
|
|
| 11 |
"algorithm": "sha256",
|
| 12 |
"files": {
|
| 13 |
"__init__.py": "iPXgZXBgY3CzpNUSjmCovMVNPLBol1KBaNoTzkXp5mM=",
|
| 14 |
-
"
|
| 15 |
-
"_ops.py": "
|
|
|
|
| 16 |
}
|
| 17 |
},
|
| 18 |
"provenance": {
|
| 19 |
"kernel-builder": {
|
| 20 |
-
"version": "0.
|
| 21 |
-
"
|
| 22 |
"dirty": false
|
| 23 |
},
|
| 24 |
"kernel": {
|
| 25 |
-
"
|
| 26 |
"dirty": false
|
| 27 |
}
|
| 28 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"name": "ggml-quantization",
|
| 3 |
+
"id": "_ggml_quantization_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": "iPXgZXBgY3CzpNUSjmCovMVNPLBol1KBaNoTzkXp5mM=",
|
| 16 |
+
"_ggml_quantization_metal_5fe9dbb.abi3.so": "t6YYTDH5UtwQEEnSfOqOphUqUiORTAW5o/imxULyX/k=",
|
| 17 |
+
"_ops.py": "qmH/NXUzgO/6qdqeM09eLgLtwnGkpAZE0/uZdqhhcmM=",
|
| 18 |
+
"symbols.json": "57o77zfqRijHYonknIl7gcyfqmAxIpDhWTt9Df/lO5s="
|
| 19 |
}
|
| 20 |
},
|
| 21 |
"provenance": {
|
| 22 |
"kernel-builder": {
|
| 23 |
+
"version": "0.18.0-dev0",
|
| 24 |
+
"commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
|
| 25 |
"dirty": false
|
| 26 |
},
|
| 27 |
"kernel": {
|
| 28 |
+
"commit": "5fe9dbb3d45f6f2652958c1f70e5381891fa7aa0",
|
| 29 |
"dirty": false
|
| 30 |
}
|
| 31 |
}
|
build/torch213-metal-aarch64-darwin/metadata.json.sigstore
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHYDCCBuegAwIBAgIUA8sAqyEQ+d1zWIR1sDcdeHk8ITgwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwOTAyMTE1NTM5WhcNMjYwOTAyMTIwNTM5WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyD+evNcCKEAjAItElDyckX5uZyfAhr/prMLHO0bBVavexnJbiiidskYP6Q1IwvtCRp7UZ4WL3UAxeh/6FDPZZ6OCBgYwggYCMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUfIou181hDwZihGOM5mCKg7CeUGwwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wbwYDVR0RAQH/BGUwY4ZhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMB8GCisGAQQBg78wAQIEEXdvcmtmbG93X2Rpc3BhdGNoMDYGCisGAQQBg78wAQMEKDYzZjNjMWVhM2Y5ZWIxYmE2MWI0YTg4YmQ5M2FhYTg2YTg0ZjU1ZWEwGwYKKwYBBAGDvzABBAQNQnVpbGQgKG1hY09TKTArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMHEGCisGAQQBg78wAQkEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAEKBCoMKDYzZjNjMWVhM2Y5ZWIxYmE2MWI0YTg4YmQ5M2FhYTg2YTg0ZjU1ZWEwHQYKKwYBBAGDvzABCwQPDA1naXRodWItaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoNjNmM2MxZWEzZjllYjFiYTYxYjRhODhiZDkzYWFhODZhODRmNTVlYTAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBxBgorBgEEAYO/MAESBGMMYWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC1tYWMueWFtbEByZWZzL2hlYWRzL21haW4wOAYKKwYBBAGDvzABEwQqDCg2M2YzYzFlYTNmOWViMWJhNjFiNGE4OGJkOTNhYWE4NmE4NGY1NWVhMCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwZAYKKwYBBAGDvzABFQRWDFRodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvYWN0aW9ucy9ydW5zLzMzNjI0ODc1MDE2L2F0dGVtcHRzLzEwFgYKKwYBBAGDvzABFgQIDAZwdWJsaWMwRgYKKwYBBAGDvzABGAQ4DDZyZXBvOmh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5OnJlZjpyZWZzL2hlYWRzL21haW4wgYoGCisGAQQB1nkCBAIEfAR6AHgAdgDdPTBqxscRMmMZHhyZZzcCokpeuN48rf+HinKALynujgAAAaBh+Y1gAAAEAwBHMEUCIBfg15c5eccaeocxgMXI6GBHXqS9mdIvF7ox1I4UmUrTAiEAsdJhOCn1wQOCExqmEdnl7yTWhGzDR7vD6lFFAUyL2LMwCgYIKoZIzj0EAwMDZwAwZAIwKBJZNxW90QcAwDBVVvgynfx+lqXNNIELpssEh/jgpQoZm5pl+7haMgJI8dRNkSOkAjAk3XiK9HvNX9o7hAj4ZXtbAKmFUB3DAEZYtPWtF9fgCzOklAyr5D7IeCTwCDlNkzQ="},"tlogEntries":[{"logIndex":"2685308397","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1788350140","inclusionPromise":{"signedEntryTimestamp":"MEQCIAsetNKbPLA6RI31K7ZgnhEkS2KNKn1AhnSsNwWmffKUAiAu9BkH7zvHIUtrokJOZgxX9atGu0ygUNECmZEC+gRAGA=="},"inclusionProof":{"logIndex":"2563404135","rootHash":"DYBdiHsnsjYqTAQmBs55k/z7N9v0gpw4QXjVK2fYzvk=","treeSize":"2563404141","hashes":["ZK/RFlw3+PGyKRbHSiRgZrwTOd4GMbROs5nYy9B3QDE=","LsJ5V9ZzRpKAXqsius6kWXqBqzW5QGT7X6rSgGD236s=","GGf/tdV93RclZZT6MP/g5DnB80nTv78VEHfVYc9X+Us=","vxBXON0lWFaxdw8wPWmcp61nVYl5M3Yy5M/BoJnvJVE=","DZytdJO5CQEp6d+H6mGVanwoLfha/VuIaUinDUy063o=","2CXIOfDeMiOU4dMcijEg2ej5frR5iF7WdHbtwLsADXc=","PLcJyFMz+PX4iElWppigcChwVTSvWQKm0jAsw90GQ2U=","yx1C8qORgQZyEAY/S3IweAzoPmtYm93g7ouqo0XujJQ=","7qHI9xRdbuuSQzIEYjspvGUklwG3oQUfXM2gwWzda2o=","F+YuHc8O3xlVfXj9owStrUJMnQTwY/NpQ4opoGW8gKc=","H2EWTqHaPzZyLGzFNdm1vZITRk/1WU8HnEukaJgoG2E=","oHcOV2H5nfxCFsD3J616h87Eiz+X30EjHngkLoDqRJQ=","HiSowX/eHl/VU2Q+A0EfICMiguqx41ThMqJf2HY+o9M=","itRV5Rvo1MAx7h7FsTOgBX8gRAnu5MLfPmZWuLwhlhA=","eXSLrLqKSxRTixSP/k4YimriB2lufao6trqTrsxxlyg=","SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2563404141\nDYBdiHsnsjYqTAQmBs55k/z7N9v0gpw4QXjVK2fYzvk=\n\n— rekor.sigstore.dev wNI9ajBFAiBJhuN1JNT2QLfHsimPG8Ec3oL0AIkx8ckS07sWSZp22gIhAIhmwCsub+MT+8QXFmGMZJI/yZLokQMSRFsMTDo2qQhr\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxN2I3ODNmY2QyMmU4YzZlMDIwNWNlMTdmYWNjMzUyZTg1NTI3NmRiNDNkNTUyNDZmMjRiZTU0ZTJmY2JkMDUyIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUM1dnUwNkNCMVJCRTZXN2xOQkFyblk2Q2dkUXk2cTYvRTIvc2M1UFZEUFBBSWhBTGZwdEVRR0ljbGRmT0xjTERCZ3Z6R1ROdVF2SmhuamlRUGEzY0RBcS9DTCIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFpSRU5EUW5WbFowRjNTVUpCWjBsVlFUaHpRWEY1UlZFclpERjZWMGxTTVhORVkyUmxTR3M0U1ZSbmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVUVhsTlZFVXhUbFJOTlZkb1kwNU5hbGwzVDFSQmVVMVVTWGRPVkUwMVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVY1UkN0bGRrNWpRMHRGUVdwQlNYUkZiRVI1WTJ0WU5YVmFlV1pCYUhJdmNISk5URWdLVHpCaVFsWmhkbVY0YmtwaWFXbHBaSE5yV1ZBMlVURkpkM1owUTFKd04xVmFORmRNTTFWQmVHVm9MelpHUkZCYVdqWlBRMEpuV1hkbloxbERUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZtU1c5MUNqRTRNV2hFZDFwcGFFZFBUVFZ0UTB0bk4wTmxWVWQzZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJKM1dVUldVakJTUVZGSUwwSkhWWGRaTkZwb1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4WE1XaFplVFUxQ2xsWE1YTlJTRXBzV201TmRtRkhWbWhhU0UxMllsZEdjR0pxUVRWQ1oyOXlRbWRGUlVGWlR5OU5RVVZDUWtOMGIyUklVbmRqZW05MlRETlNkbUV5Vm5VS1RHMUdhbVJIYkhaaWJrMTFXakpzTUdGSVZtbGtXRTVzWTIxT2RtSnVVbXhpYmxGMVdUSTVkRTFDT0VkRGFYTkhRVkZSUW1jM09IZEJVVWxGUlZoa2RncGpiWFJ0WWtjNU0xZ3lVbkJqTTBKb1pFZE9iMDFFV1VkRGFYTkhRVkZSUW1jM09IZEJVVTFGUzBSWmVscHFUbXBOVjFab1RUSlpOVnBYU1hoWmJVVXlDazFYU1RCWlZHYzBXVzFSTlUweVJtaFpWR2N5V1ZSbk1GcHFWVEZhVjBWM1IzZFpTMHQzV1VKQ1FVZEVkbnBCUWtKQlVVNVJibFp3WWtkUlowdEhNV2dLV1RBNVZFdFVRWEpDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0l4YjJSWFpHNWhWelZ1V20xR2FscFRPWEphV0VwMVdsZDRla3hYVG5aaVZ6RXhZbTFzTUFwbFZFRmtRbWR2Y2tKblJVVkJXVTh2VFVGRlIwSkJPWGxhVjFwNlRESm9iRmxYVW5wTU1qRm9ZVmMwZDA5M1dVdExkMWxDUWtGSFJIWjZRVUpEUVZGMENrUkRkRzlrU0ZKM1kzcHZka3d6VW5aaE1sWjFURzFHYW1SSGJIWmliazExV2pKc01HRklWbWxrV0U1c1kyMU9kbUp1VW14aWJsRjFXVEk1ZEUxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZGclJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJVdENRMjlOUzBSWmVscHFUbXBOVjFab1RUSlpOVnBYU1hnS1dXMUZNazFYU1RCWlZHYzBXVzFSTlUweVJtaFpWR2N5V1ZSbk1GcHFWVEZhVjBWM1NGRlpTMHQzV1VKQ1FVZEVkbnBCUWtOM1VWQkVRVEZ1WVZoU2J3cGtWMGwwWVVjNWVtUkhWbXROUlVGSFEybHpSMEZSVVVKbk56aDNRVkYzUlUxbmQzZGhTRkl3WTBoTk5reDVPVzVoV0ZKdlpGZEpkVmt5T1hSTU1tZ3hDbG95WkhCaWJXUnRXVmRPYkV3eWRHeGpiVFZzWWtoTmRGa3lPWFJpV0ZaMVlWaFNOVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVEJGUzJkM2IwNXFUbTBLVFRKTmVGcFhSWHBhYW14c1dXcEdhVmxVV1hoWmFsSm9UMFJvYVZwRWEzcFpWMFpvVDBSYWFFOUVVbTFPVkZac1dWUkJaa0puYjNKQ1owVkZRVmxQTHdwTlFVVlBRa0pGVFVRelNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJZVUpuYjNKQ1owVkZRVmxQTDAxQlJWQkNRWGROUTJwRmQwNTZSVEJPZWxVeENrMXFhM2RNWjFsTFMzZFpRa0pCUjBSMmVrRkNSVUZSWjBSQ05XOWtTRkozWTNwdmRrd3laSEJrUjJneFdXazFhbUl5TUhaaFNGWnVXakpzZFZveVdtZ0tXVEpWZDBkQldVdExkMWxDUWtGSFJIWjZRVUpGVVZGTFJFRm5lVTVVWTNsTlJHTXdUWHBDZUVKbmIzSkNaMFZGUVZsUEwwMUJSVk5DUjAxTldWZG9NQXBrU0VKNlQyazRkbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemgxQ2xveWJEQmhTRlpwVEROa2RtTnRkRzFpUnprelkzazVhV1JYYkhOYVF6RjBXVmROZFdWWFJuUmlSVUo1V2xkYWVrd3lhR3haVjFKNlRESXhhR0ZYTkhjS1QwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWM1VYRkVRMmN5VFRKWmVsbDZSbXhaVkU1dFQxZFdhVTFYU21oT2FrWnBUa2RGTkU5SFNtdFBWRTVvV1ZkRk5BcE9iVVUwVGtkWk1VNVhWbWhOUTBWSFEybHpSMEZSVVVKbk56aDNRVkpSUlVWM2QxSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkYVFWbExDa3QzV1VKQ1FVZEVkbnBCUWtaUlVsZEVSbEp2WkVoU2QyTjZiM1pNTW1Sd1pFZG9NVmxwTldwaU1qQjJZVWhXYmxveWJIVmFNbHBvV1RKVmRtRXlWbmtLWW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNaWlYwNHdZVmM1ZFdONU9YbGtWelY2VEhwTmVrNXFTVEJQUkdNeFRVUkZNa3d5UmpCa1IxWjBZMGhTZWdwTWVrVjNSbWRaUzB0M1dVSkNRVWRFZG5wQlFrWm5VVWxFUVZwM1pGZEtjMkZYVFhkU1oxbExTM2RaUWtKQlIwUjJla0ZDUjBGUk5FUkVXbmxhV0VKMkNrOXRhREZhTW1Sd1ltMWtiVmxYVG14TU1uUnNZMjAxYkdKSVRYUlpNamwwWWxoV2RXRllValZQYmtwc1dtcHdlVnBYV25wTU1taHNXVmRTZWt3eU1XZ0tZVmMwZDJkWmIwZERhWE5IUVZGUlFqRnVhME5DUVVsRlprRlNOa0ZJWjBGa1owUmtVRlJDY1hoelkxSk5iVTFhU0doNVdscDZZME52YTNCbGRVNDBPQXB5Wml0SWFXNUxRVXg1Ym5WcVowRkJRV0ZDYUN0Wk1XZEJRVUZGUVhkQ1NFMUZWVU5KUW1abk1UVmpOV1ZqWTJGbGIyTjRaMDFZU1RaSFFraFljVk01Q20xa1NYWkdOMjk0TVVrMFZXMVZjbFJCYVVWQmMyUkthRTlEYmpGM1VVOURSWGh4YlVWa2JtdzNlVlJYYUVkNlJGSTNka1EyYkVaR1FWVjVUREpNVFhjS1EyZFpTVXR2V2tsNmFqQkZRWGROUkZwM1FYZGFRVWwzUzBKS1drNTRWemt3VVdOQmQwUkNWbFoyWjNsdVpuZ3JiSEZZVGs1SlJVeHdjM05GYUM5cVp3cHdVVzlhYlRWd2JDczNhR0ZOWjBwSk9HUlNUbXRUVDJ0QmFrRnJNMWhwU3psSWRrNVlPVzgzYUVGcU5GcFlkR0pCUzIxR1ZVSXpSRUZGV2xsMFVGZDBDa1k1Wm1kRGVrOXJiRUY1Y2pWRU4wbGxRMVIzUTBSc1RtdDZVVDBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgIYXbfiWINeZSXjjiskHbXgmvL88876HC603DMx4Q9q0CFQCrtNJPdmF9O2vG8cV474rkByR/thgPMjAyNjA5MDIxMTU1MzlaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkwMjExNTUzOVowLwYJKoZIhvcNAQkEMSIEIKIRhpD/R4r4CGOldoIofDxKJpTRaxT8612K5ADGs7VAMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMQDdBuHEvqRV11MBdhkaCZ52ENv7FeZEfAK2GROLlga1OqeDFgnviuVdyoT9TdJSrA8CMHEbORtv/pqRR9m7tGc5qluxDoPs1r3YHCTbzqY8YfKVQRpNd9J3OOMnvaVfBlWQbA=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"F7eD/NIujG4CBc4X+sw1LoVSdttD1VJG8kvlTi/L0FI="},"signature":"MEYCIQC5vu06CB1RBE6W7lNBArnY6CgdQy6q6/E2/sc5PVDPPAIhALfptEQGIcldfOLcLDBgvzGTNuQvJhnjiQPa3cDAq/CL"}}
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHQTCCBsigAwIBAgIUAp5jcYzg9HszPOdLohd9rX9+WWUwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDMwMTYwOTA1WhcNMjYxMDMwMTYxOTA1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh1GzNEQnCEs440bNCiobotvszG4kfprRAVg2q4qdkZbzL9wMNsR3KOY8m8hxtNoCcZNAhN9xin72zGOTOVRSmqOCBecwggXjMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDCg1ZmU5ZGJiM2Q0NWY2ZjI2NTI5NThjMWY3MGU1MzgxODkxZmE3YWEwMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVmZTlkYmIzZDQ1ZjZmMjY1Mjk1OGMxZjcwZTUzODE4OTFmYTdhYTAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvNDEwODM1MzY2NzQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoY2SaXIAAAQDAEcwRQIhAP4F0SVXEnFSDE2P2mHEhQL84k81ivD/K8K4p9YFAjhZAiBbGww96NZUMN06eZyi0HFg9dIOuAXel+4Crd5eF5TAzjAKBggqhkjOPQQDAwNnADBkAjA4lpUlwWEKVTnNYRbHASgNO4YD3L6ZcgBlpdd1mAue/V+zGq0iVeFzSpNqvzf39dwCMDV+o7dQ6yBJ/ayhUMnD/NsqxdsZpNEPsdDn3qzsRyG03Gz04ZyGWV/YpGG98xFIvw=="},"tlogEntries":[{"logIndex":"3597172511","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793376547","inclusionPromise":{"signedEntryTimestamp":"MEUCICW6I0xtqCVgPXZ1l+DjIms3ryEbqEh7q9W3O67K5S6QAiEAxf1b2+iDIhv0TicNm2hK+Q03P9fENt830xr9KUg+tb0="},"inclusionProof":{"logIndex":"3475268249","rootHash":"JQDQFkwPbK6iONmX4qopGk1q2yWKU+CSCaaAcZ2+elw=","treeSize":"3475269856","hashes":["oXnUT+eFsGZ8Z8ndbvyKIVfF1JaNI51PcYmR49/N8Q0=","ARjiv8ytuh/7KvutqzxI9tJxlLTtEgGBoQMdNG+2fb4=","StJu0ksvNLNGJWKV0zcX5stftgggv0scObapO5DQozM=","bKsVr2Sts/OTKh1gDOqOp5in8ehBAIQ288vnDIuxJag=","xGIShZyNpycEYsX/GGQUZaCDlozFrfgWP+LX2w2ifrw=","h2MUPv3lUzceuqeRUW8JYnY3JPwkEp58kklMw8652sc=","0G6cybcn25uKUM+YkOPPhUc7VvLOx6ck75V/jLhejcQ=","ZqTk/OcsJnB9nXpGxFDNZ4w5qhHrKUPnLuPOHJWockY=","+pqvjlVHA8xXssyv8xa5A2wSVWy8FqDE+s38WSewvTQ=","c28g4HgoPqYRgQq5RnzXE4kDYDsfeqTZGB3d9VjKuC8=","/cClObaFM8XhyfM1f/ZV+y9C39/wzOUAKd8lp0xmA3o=","7UuwemudOD7PWy5yuS9XL8Bk+X/ecL9ubI22g7SXDrs=","2YQyByCnn1l260kd4Di96ulIH/zg/M33AcptKmY/M1E=","ong7CR13YjLVwNWMRUBqrhvuVDcbhobTuZtWM4Qduj4=","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\n3475269856\nJQDQFkwPbK6iONmX4qopGk1q2yWKU+CSCaaAcZ2+elw=\n\n— rekor.sigstore.dev wNI9ajBFAiAeIerkRdmtfzhaA6AX3+TSL1GtS5EoOHrWb17rErFkyAIhAMCfGCxBPl4sVDiETsBdlL7qqhh7p68tMelJEidIwNN2\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIwNWQ4OGNkMmQ4YzgzN2U5ZGVjYWZlMTVlMjBhNjIwN2EwNmY4MWU4N2U3NDc3MWFiZTY0NjIzYTRmZjBmZDJmIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQWpMS0tMcjAyZEdFRmd3Mnlua3dLMHhiMk1tKzJ5SXBNWHBBa3NKUWJYN0FpQTdpclQyQUFqN0xJQUVweTBPTHRZbmIzVlZXUnNZa0xMN29CL0p4UFVYUnc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJWRU5EUW5OcFowRjNTVUpCWjBsVlFYQTFhbU5aZW1jNVNITjZVRTlrVEc5b1pEbHlXRGtyVjFkVmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFVFhkTlZGbDNUMVJCTVZkb1kwNU5hbGw0VFVSTmQwMVVXWGhQVkVFeFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZvTVVkNlRrVlJia05GY3pRME1HSk9RMmx2WW05MGRuTjZSelJyWm5CeVVrRldaeklLY1RSeFpHdGFZbnBNT1hkTlRuTlNNMHRQV1RodE9HaDRkRTV2UTJOYVRrRm9Uamw0YVc0M01ucEhUMVJQVmxKVGJYRlBRMEpsWTNkbloxaHFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cE9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOU9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmN4V20xVk5WcEhTbWxOTWxFd1RsZFpNbHBxU1RKT1ZFazFUbFJvYWsxWFdUTk5SMVV4VFhwbmVFOUVhM2dLV20xRk0xbFhSWGROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2JWcFViR3RaYlVsNldrUlJNVnBxV20wS1RXcFpNVTFxYXpGUFIwMTRXbXBqZDFwVVZYcFBSRVUwVDFSR2JWbFVaR2haVkVGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrNUVSWGNLVDBSTk1VMTZXVEpPZWxGMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBaMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPRUpJYjBGbFFVSXlRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05Wk1sTmhXRWxCUVVGUlJFRkZZM2RTVVVsb1FWQTBSZ293VTFaWVJXNUdVMFJGTWxBeWJVaEZhRkZNT0RSck9ERnBka1F2U3poTE5IQTVXVVpCYW1oYVFXbENZa2QzZHprMlRscFZUVTR3Tm1WYWVXa3dTRVpuQ2psa1NVOTFRVmhsYkNzMFEzSmtOV1ZHTlZSQmVtcEJTMEpuWjNGb2EycFBVRkZSUkVGM1RtNUJSRUpyUVdwQk5HeHdWV3gzVjBWTFZsUnVUbGxTWWtnS1FWTm5UazgwV1VRelREWmFZMmRDYkhCa1pERnRRWFZsTDFZcmVrZHhNR2xXWlVaNlUzQk9jWFo2WmpNNVpIZERUVVJXSzI4M1pGRTJlVUpLTDJGNWFBcFZUVzVFTDA1emNYaGtjMXB3VGtWUWMyUkViak54ZW5OU2VVY3dNMGQ2TURSYWVVZFhWaTlaY0VkSE9UaDRSa2wyZHowOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg1fzFNgtna7raZGKVLAO/+Itet9PxIP54J2x6WLl5qd4CFDEyBIwcPPw+/7d1b+YpCXblzJXRGA8yMDI2MTAzMDE2MDkwNVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDMwMTYwOTA1WjAvBgkqhkiG9w0BCQQxIgQg+v0BAEAr9lLUkysRb/QYG8RmsD7tMCsGd0rg/nC8C1QwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIxAKth9RC7cZysvX+gjHg9VNYa8C4Nt+XIRy4spIlhH9kyvT4KHnTqyMQZsssGZXIcaAIwF3X/U6iymka9OOHfFVY5Kgzx57hELgMPxrb3KIindHuhi5m2qML+aC00bvoKAnAB"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"BdiM0tjIN+neyv4V4gpiB6Bvgeh+dHcavmRiOk/w/S8="},"signature":"MEQCIAjLKKLr02dGEFgw2ynkwK0xb2Mm+2yIpMXpAksJQbX7AiA7irT2AAj7LIAEpy0OLtYnb3VVWRsYkLL7oB/JxPUXRw=="}}
|
build/torch213-metal-aarch64-darwin/symbols.json
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 4 |
+
"functions": [
|
| 5 |
+
{
|
| 6 |
+
"name": "dequantize",
|
| 7 |
+
"qualname": "dequantize",
|
| 8 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 9 |
+
"kind": "function",
|
| 10 |
+
"doc": "`(rows, bytes_per_row)` uint8 blocks -> `(rows, cols)` values of `dtype`.",
|
| 11 |
+
"signature": {
|
| 12 |
+
"parameters": [
|
| 13 |
+
{
|
| 14 |
+
"name": "blocks",
|
| 15 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 16 |
+
"default": null,
|
| 17 |
+
"annotation": "torch.Tensor"
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"name": "ggml_type",
|
| 21 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 22 |
+
"default": null,
|
| 23 |
+
"annotation": "int"
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"name": "rows",
|
| 27 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 28 |
+
"default": null,
|
| 29 |
+
"annotation": "int"
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"name": "cols",
|
| 33 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 34 |
+
"default": null,
|
| 35 |
+
"annotation": "int"
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"name": "dtype",
|
| 39 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 40 |
+
"default": null,
|
| 41 |
+
"annotation": "torch.dtype"
|
| 42 |
+
}
|
| 43 |
+
],
|
| 44 |
+
"return_annotation": "torch.Tensor"
|
| 45 |
+
}
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"name": "get_rows",
|
| 49 |
+
"qualname": "get_rows",
|
| 50 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 51 |
+
"kind": "function",
|
| 52 |
+
"doc": "The rows `indices` names, unpacked: `(rows, bytes_per_row)` uint8 -> `(len(indices), cols)`.\n\nggml's `get_rows`, which dequantizes as it gathers -- so reading a few rows out of a large table\nnever touches the rest.",
|
| 53 |
+
"signature": {
|
| 54 |
+
"parameters": [
|
| 55 |
+
{
|
| 56 |
+
"name": "blocks",
|
| 57 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 58 |
+
"default": null,
|
| 59 |
+
"annotation": "torch.Tensor"
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"name": "indices",
|
| 63 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 64 |
+
"default": null,
|
| 65 |
+
"annotation": "torch.Tensor"
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"name": "ggml_type",
|
| 69 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 70 |
+
"default": null,
|
| 71 |
+
"annotation": "int"
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"name": "cols",
|
| 75 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 76 |
+
"default": null,
|
| 77 |
+
"annotation": "int"
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"name": "dtype",
|
| 81 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 82 |
+
"default": null,
|
| 83 |
+
"annotation": "torch.dtype"
|
| 84 |
+
}
|
| 85 |
+
],
|
| 86 |
+
"return_annotation": "torch.Tensor"
|
| 87 |
+
}
|
| 88 |
+
},
|
| 89 |
+
{
|
| 90 |
+
"name": "mul_mat_id",
|
| 91 |
+
"qualname": "mul_mat_id",
|
| 92 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 93 |
+
"kind": "function",
|
| 94 |
+
"doc": "One dispatch for a bank of routed experts: ggml's `mul_mv_id`.\n\n`blocks` is `(n_experts, out_features, bytes_per_row)`, `x` is `(n_tokens, in_features)`, and\n`ids` is `(n_tokens, n_used)` naming the expert each of a token's slots picked. The result is\n`(n_tokens, n_used, out_features)` f32, one row per slot.\n\nThe alternative is a gemv per expert per layer, whose arithmetic is dwarfed by the dispatch\naround it -- which is most of what a MoE decode step costs.",
|
| 95 |
+
"signature": {
|
| 96 |
+
"parameters": [
|
| 97 |
+
{
|
| 98 |
+
"name": "blocks",
|
| 99 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 100 |
+
"default": null,
|
| 101 |
+
"annotation": "torch.Tensor"
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
"name": "x",
|
| 105 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 106 |
+
"default": null,
|
| 107 |
+
"annotation": "torch.Tensor"
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"name": "ids",
|
| 111 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 112 |
+
"default": null,
|
| 113 |
+
"annotation": "torch.Tensor"
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"name": "ggml_type",
|
| 117 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 118 |
+
"default": null,
|
| 119 |
+
"annotation": "int"
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"name": "out_features",
|
| 123 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 124 |
+
"default": null,
|
| 125 |
+
"annotation": "int"
|
| 126 |
+
}
|
| 127 |
+
],
|
| 128 |
+
"return_annotation": "torch.Tensor"
|
| 129 |
+
}
|
| 130 |
+
},
|
| 131 |
+
{
|
| 132 |
+
"name": "mul_mat_vec",
|
| 133 |
+
"qualname": "mul_mat_vec",
|
| 134 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 135 |
+
"kind": "function",
|
| 136 |
+
"doc": "Fused dequantize-gemv: `x @ blocks.T` without unpacking `blocks`.\n\n`x` is `(rows, in_features)` and `rows` must be at most `MAX_GEMV_ROWS`. The result is f32\nwhatever `x`'s dtype was, since the kernel writes an f32 destination; cast it at the call site,\nwhere the cast can be fused into whatever consumes it.",
|
| 137 |
+
"signature": {
|
| 138 |
+
"parameters": [
|
| 139 |
+
{
|
| 140 |
+
"name": "blocks",
|
| 141 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 142 |
+
"default": null,
|
| 143 |
+
"annotation": "torch.Tensor"
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"name": "x",
|
| 147 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 148 |
+
"default": null,
|
| 149 |
+
"annotation": "torch.Tensor"
|
| 150 |
+
},
|
| 151 |
+
{
|
| 152 |
+
"name": "ggml_type",
|
| 153 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 154 |
+
"default": null,
|
| 155 |
+
"annotation": "int"
|
| 156 |
+
},
|
| 157 |
+
{
|
| 158 |
+
"name": "out_features",
|
| 159 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 160 |
+
"default": null,
|
| 161 |
+
"annotation": "int"
|
| 162 |
+
}
|
| 163 |
+
],
|
| 164 |
+
"return_annotation": "torch.Tensor"
|
| 165 |
+
}
|
| 166 |
+
}
|
| 167 |
+
],
|
| 168 |
+
"layers": []
|
| 169 |
+
}
|
build/torch214-metal-aarch64-darwin/__init__.py
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Compute directly on the packed blocks of a GGUF checkpoint.
|
| 2 |
+
|
| 3 |
+
A GGUF weight is stored as blocks of 32 or 256 values sharing a scale. These kernels read that
|
| 4 |
+
layout as it is, so a quantized model can be loaded and run without ever materializing a dense
|
| 5 |
+
copy — which is the whole memory saving.
|
| 6 |
+
|
| 7 |
+
Ported from llama.cpp's ggml-cuda; `vendor/UPSTREAM` pins the revision. The ops are named for what
|
| 8 |
+
they do rather than for a backend: each backend registers its own implementation of the same
|
| 9 |
+
schema, so calls dispatch on the tensor's device.
|
| 10 |
+
"""
|
| 11 |
+
|
| 12 |
+
import torch
|
| 13 |
+
|
| 14 |
+
from ._ops import add_op_namespace_prefix, ops
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
__all__ = ["GEMV_TYPES", "MAX_GEMV_ROWS", "dequantize", "get_rows", "mul_mat_id", "mul_mat_vec"]
|
| 18 |
+
|
| 19 |
+
# Upstream's MMVQ_MAX_BATCH_SIZE: `mul_mat_vec` has no implementation beyond this many rows, so a
|
| 20 |
+
# caller with more (prefill) dequantizes and uses an ordinary matmul.
|
| 21 |
+
MAX_GEMV_ROWS = 8
|
| 22 |
+
|
| 23 |
+
# ggml type ids `mul_mat_vec` implements, as this build reports them -- it is backend-specific, and
|
| 24 |
+
# a type routed into a gemv that has no kernel for it is a fault, not a fallback. CUDA covers
|
| 25 |
+
# Q4_0/Q4_1/Q5_0/Q5_1/Q8_0, the K quants, the IQ quants, MXFP4/NVFP4 and Q1_0/Q2_0; Metal is the
|
| 26 |
+
# same minus NVFP4/Q1_0/Q2_0, which its metallib has no kernels for. `dequantize` covers more, so
|
| 27 |
+
# check this before choosing the fused path.
|
| 28 |
+
try:
|
| 29 |
+
GEMV_TYPES = frozenset(ops.gemv_types())
|
| 30 |
+
except AttributeError:
|
| 31 |
+
# A build published before `gemv_types` existed; those are CUDA-only, so its list is theirs.
|
| 32 |
+
GEMV_TYPES = frozenset({2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 29, 39, 40, 41, 42})
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
def get_rows(
|
| 36 |
+
blocks: torch.Tensor, indices: torch.Tensor, ggml_type: int, cols: int, dtype: torch.dtype
|
| 37 |
+
) -> torch.Tensor:
|
| 38 |
+
"""The rows `indices` names, unpacked: `(rows, bytes_per_row)` uint8 -> `(len(indices), cols)`.
|
| 39 |
+
|
| 40 |
+
ggml's `get_rows`, which dequantizes as it gathers -- so reading a few rows out of a large table
|
| 41 |
+
never touches the rest.
|
| 42 |
+
"""
|
| 43 |
+
return ops.get_rows(blocks, indices, ggml_type, cols, dtype)
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
def dequantize(
|
| 47 |
+
blocks: torch.Tensor, ggml_type: int, rows: int, cols: int, dtype: torch.dtype
|
| 48 |
+
) -> torch.Tensor:
|
| 49 |
+
"""`(rows, bytes_per_row)` uint8 blocks -> `(rows, cols)` values of `dtype`."""
|
| 50 |
+
return ops.dequantize(blocks, ggml_type, rows, cols, dtype)
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def mul_mat_vec(
|
| 54 |
+
blocks: torch.Tensor, x: torch.Tensor, ggml_type: int, out_features: int
|
| 55 |
+
) -> torch.Tensor:
|
| 56 |
+
"""Fused dequantize-gemv: `x @ blocks.T` without unpacking `blocks`.
|
| 57 |
+
|
| 58 |
+
`x` is `(rows, in_features)` and `rows` must be at most `MAX_GEMV_ROWS`. The result is f32
|
| 59 |
+
whatever `x`'s dtype was, since the kernel writes an f32 destination; cast it at the call site,
|
| 60 |
+
where the cast can be fused into whatever consumes it.
|
| 61 |
+
"""
|
| 62 |
+
return ops.mul_mat_vec(blocks, x, ggml_type, out_features)
|
| 63 |
+
|
| 64 |
+
|
| 65 |
+
def mul_mat_id(
|
| 66 |
+
blocks: torch.Tensor, x: torch.Tensor, ids: torch.Tensor, ggml_type: int, out_features: int
|
| 67 |
+
) -> torch.Tensor:
|
| 68 |
+
"""One dispatch for a bank of routed experts: ggml's `mul_mv_id`.
|
| 69 |
+
|
| 70 |
+
`blocks` is `(n_experts, out_features, bytes_per_row)`, `x` is `(n_tokens, in_features)`, and
|
| 71 |
+
`ids` is `(n_tokens, n_used)` naming the expert each of a token's slots picked. The result is
|
| 72 |
+
`(n_tokens, n_used, out_features)` f32, one row per slot.
|
| 73 |
+
|
| 74 |
+
The alternative is a gemv per expert per layer, whose arithmetic is dwarfed by the dispatch
|
| 75 |
+
around it -- which is most of what a MoE decode step costs.
|
| 76 |
+
"""
|
| 77 |
+
return ops.mul_mat_id(blocks, x, ids, ggml_type, out_features)
|
| 78 |
+
|
| 79 |
+
|
| 80 |
+
# Without these, torch.compile cannot trace the ops and breaks the graph at every call.
|
| 81 |
+
@torch.library.register_fake(add_op_namespace_prefix("get_rows"))
|
| 82 |
+
def _get_rows_fake(blocks, indices, ggml_type, cols, dtype):
|
| 83 |
+
return blocks.new_empty((indices.numel(), cols), dtype=dtype)
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
@torch.library.register_fake(add_op_namespace_prefix("dequantize"))
|
| 87 |
+
def _dequantize_fake(blocks, ggml_type, rows, cols, dtype):
|
| 88 |
+
return blocks.new_empty((rows, cols), dtype=dtype)
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
@torch.library.register_fake(add_op_namespace_prefix("mul_mat_vec"))
|
| 92 |
+
def _mul_mat_vec_fake(blocks, x, ggml_type, out_features):
|
| 93 |
+
return x.new_empty((x.shape[0], out_features), dtype=torch.float32)
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
@torch.library.register_fake(add_op_namespace_prefix("mul_mat_id"))
|
| 97 |
+
def _mul_mat_id_fake(blocks, x, ids, ggml_type, out_features):
|
| 98 |
+
return x.new_empty((x.shape[0], ids.shape[1], out_features), dtype=torch.float32)
|
build/torch214-metal-aarch64-darwin/_ggml_quantization_metal_5fe9dbb.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ea94e9876f9a300a5e3e4e521ce907f0373dc23e6b01182f3b0ea352d1024fb2
|
| 3 |
+
size 3347704
|
build/torch214-metal-aarch64-darwin/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _ggml_quantization_metal_5fe9dbb
|
| 3 |
+
ops = torch.ops._ggml_quantization_metal_5fe9dbb
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_ggml_quantization_metal_5fe9dbb::{op_name}"
|
build/torch214-metal-aarch64-darwin/metadata.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "ggml-quantization",
|
| 3 |
+
"id": "_ggml_quantization_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": "iPXgZXBgY3CzpNUSjmCovMVNPLBol1KBaNoTzkXp5mM=",
|
| 16 |
+
"_ggml_quantization_metal_5fe9dbb.abi3.so": "6pTph2+aMApePk5SHOkH8Dc9wj5rARgvOw6jUtECT7I=",
|
| 17 |
+
"_ops.py": "qmH/NXUzgO/6qdqeM09eLgLtwnGkpAZE0/uZdqhhcmM=",
|
| 18 |
+
"symbols.json": "57o77zfqRijHYonknIl7gcyfqmAxIpDhWTt9Df/lO5s="
|
| 19 |
+
}
|
| 20 |
+
},
|
| 21 |
+
"provenance": {
|
| 22 |
+
"kernel-builder": {
|
| 23 |
+
"version": "0.18.0-dev0",
|
| 24 |
+
"commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
|
| 25 |
+
"dirty": false
|
| 26 |
+
},
|
| 27 |
+
"kernel": {
|
| 28 |
+
"commit": "5fe9dbb3d45f6f2652958c1f70e5381891fa7aa0",
|
| 29 |
+
"dirty": false
|
| 30 |
+
}
|
| 31 |
+
}
|
| 32 |
+
}
|
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":"MIIHQjCCBsigAwIBAgIUDGF692ni1NneTtYGqs3uxOnICQ0wCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDMwMTYwODQ1WhcNMjYxMDMwMTYxODQ1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7+dzkYp7c9MUFThqjAbpQhwpPEt7I7JYtn4W30FOaP7qErAPUD6Lia9w++qJf0BLLSR4UOVr0cHNXYcq4ePRd6OCBecwggXjMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDCg1ZmU5ZGJiM2Q0NWY2ZjI2NTI5NThjMWY3MGU1MzgxODkxZmE3YWEwMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVmZTlkYmIzZDQ1ZjZmMjY1Mjk1OGMxZjcwZTUzODE4OTFmYTdhYTAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvNDEwODM1MzY2NzQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoY2SHEcAAAQDAEcwRQIhAOcBy5j7QiLRFNpxZHFohCF0jgdFqxfAuW4aNWQT9XDGAiBbrfhZEgq3Fqi0Nlwc1HmXum+a17l+bUKmSa8aS0xz8TAKBggqhkjOPQQDAwNoADBlAjEA5aHw3GlCglY8N0hDLZ3yv+OXDdUaLKR8hJYPbahYVEImqHLWN4joA58lU/ZKPFJoAjA7lTTG4nUCYeeuYH5Xk0RAhbNvFYNAXhbjEUt6egeeDY4ura/rP7PRB15R1MoSjIk="},"tlogEntries":[{"logIndex":"3597166119","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793376526","inclusionPromise":{"signedEntryTimestamp":"MEYCIQCrW/O3UHvoVd9aXWeE6AYLCUYb2jPkAcTJlBR6Sfe1cwIhANg3K19PEMfC5RXTI4o/4xkoQDtQ8ovr3hh5L0yvQMBI"},"inclusionProof":{"logIndex":"3475261857","rootHash":"rg06SIvvDcnVUdBp+s71yW8qwgSF3MczFPKrybAitw0=","treeSize":"3475261975","hashes":["bXb//IsDsT8T2Ja/UtOhjKqAFF+8UMcUImtJOs6wFPM=","FmDRjsiG9miJQm05PfGb6AFJAemrOl9YVvEkOFHwnTU=","e4ltg7a9R54s1yAZKjzG5lh6PsI085hndMFfKAviQqQ=","PrzCWPcVKolo1+iUSTGqY9PXc4gn9flQ/9f1ne91tFQ=","j/VO3TCX3LnLKUp9d+ugbD7/weU9NOaNDP7qfxPry2g=","Suf1GX66kPyolBvexVWrMaoPrjzWRmFX1qXdWGCn9ZA=","L36RiFhF9j+Kxy8oOcV6mOpfcHEOjtUpGHLlSUutX24=","X30Td24ryO0NU8SqAyzhWzgavHKe7rLAnHlWC8GY5ow=","px75r6S+LCwQgbP5rK9PkNU9r+8qF8vridXBwTQPj2Q=","JU6lfZ+Z7EGLIV7TF/Gk6fed73K1lby5aCQdkvfl5Ps=","n708DXJlamMGcWj0dr/TjhOKpLDV/94uDcGC11u3WLs=","ong7CR13YjLVwNWMRUBqrhvuVDcbhobTuZtWM4Qduj4=","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\n3475261975\nrg06SIvvDcnVUdBp+s71yW8qwgSF3MczFPKrybAitw0=\n\n— rekor.sigstore.dev wNI9ajBGAiEAgVJwiQQsaWw6LZTL80ATfjwZR/1JOY7hnhBqM4LCASUCIQCK8+vLJIjSZ5N+dR3UkPT3bY9BM47Pk3czf8CfA+RSfA==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIwYTkzYzY4NmQwOGI3ZmY3NjE4MGM3OGI4NTMzNGRlZDcyM2JmZTExMGQyODEyOWFiNGViYWQwNmIxMmVkOWRjIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUNQY09Sck1nbmFUU005bm1NZW81U1MyL0dYckJKd1NWWVNmd0V6dFZMN1VnSWdlY3Vmeks5UkI0aHc1L3FFZWVsMWp5RHpIK0UzcHdYNHB6VXM5bU14NFpnPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJha05EUW5OcFowRjNTVUpCWjBsVlJFZEdOamt5Ym1reFRtNWxWSFJaUjNGek0zVjRUMjVKUTFFd2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFVFhkTlZGbDNUMFJSTVZkb1kwNU5hbGw0VFVSTmQwMVVXWGhQUkZFeFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVUzSzJSNmExbHdOMk01VFZWR1ZHaHhha0ZpY0ZGb2QzQlFSWFEzU1RkS1dYUnVORmNLTXpCR1QyRlFOM0ZGY2tGUVZVUTJUR2xoT1hjckszRktaakJDVEV4VFVqUlZUMVp5TUdOSVRsaFpZM0UwWlZCU1pEWlBRMEpsWTNkbloxaHFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cE9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOU9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmN4V20xVk5WcEhTbWxOTWxFd1RsZFpNbHBxU1RKT1ZFazFUbFJvYWsxWFdUTk5SMVV4VFhwbmVFOUVhM2dLV20xRk0xbFhSWGROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2JWcFViR3RaYlVsNldrUlJNVnBxV20wS1RXcFpNVTFxYXpGUFIwMTRXbXBqZDFwVVZYcFBSRVUwVDFSR2JWbFVaR2haVkVGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrNUVSWGNLVDBSTk1VMTZXVEpPZWxGMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBaMWxMUzNkWlFrSkJTRmRsVVVsRlFXZFNPRUpJYjBGbFFVSXlRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05Wk1sTklSV05CUVVGUlJFRkZZM2RTVVVsb1FVOWpRZ3A1TldvM1VXbE1Va1pPY0hoYVNFWnZhRU5HTUdwblpFWnhlR1pCZFZjMFlVNVhVVlE1V0VSSFFXbENZbkptYUZwRlozRXpSbkZwTUU1c2QyTXhTRzFZQ25WdEsyRXhOMndyWWxWTGJWTmhPR0ZUTUhoNk9GUkJTMEpuWjNGb2EycFBVRkZSUkVGM1RtOUJSRUpzUVdwRlFUVmhTSGN6UjJ4RFoyeFpPRTR3YUVRS1RGb3plWFlyVDFoRVpGVmhURXRTT0doS1dWQmlZV2haVmtWSmJYRklURmRPTkdwdlFUVTRiRlV2V2t0UVJrcHZRV3BCTjJ4VVZFYzBibFZEV1dWbGRRcFpTRFZZYXpCU1FXaGlUblpHV1U1QldHaGlha1ZWZERabFoyVmxSRmswZFhKaEwzSlFOMUJTUWpFMVVqRk5iMU5xU1dzOUNpMHRMUzB0UlU1RUlFTkZVbFJKUmtsRFFWUkZMUzB0TFMwSyJ9fX19"}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyDADAgEAMIICvwYJKoZIhvcNAQcCoIICsDCCAqwCAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQga5nIknWoVD2PErqpzBU2ff2IpLlqvqHWusx9hdWb4i8CFF6dN8NQ4RF90mpHWy2C6mpVH/WOGA8yMDI2MTAzMDE2MDg0NVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdowggHWAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDMwMTYwODQ1WjAvBgkqhkiG9w0BCQQxIgQgXAom19l27lNpiFThiXD93I6e7zgsmgrTB6BrG1uqOPUwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGYwZAIwd319AyiDtsTo7R2UYDQCdZ9eEONDljQqG7E2JWobibvXxzlfBBQtGpqhcvM9mJGaAjByOYOnwUqD7Grmh9BOmhouq4YY4w0dbWHIw7teIx5KQisK6NLZlBgAs1y6Kk+U7t0="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"CpPGhtCLf/dhgMeLhTNN7XI7/hENKBKatOutBrEu2dw="},"signature":"MEUCIQCPcORrMgnaTSM9nmMeo5SS2/GXrBJwSVYSfwEztVL7UgIgecufzK9RB4hw5/qEeel1jyDzH+E3pwX4pzUs9mMx4Zg="}}
|
build/torch214-metal-aarch64-darwin/symbols.json
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 4 |
+
"functions": [
|
| 5 |
+
{
|
| 6 |
+
"name": "dequantize",
|
| 7 |
+
"qualname": "dequantize",
|
| 8 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 9 |
+
"kind": "function",
|
| 10 |
+
"doc": "`(rows, bytes_per_row)` uint8 blocks -> `(rows, cols)` values of `dtype`.",
|
| 11 |
+
"signature": {
|
| 12 |
+
"parameters": [
|
| 13 |
+
{
|
| 14 |
+
"name": "blocks",
|
| 15 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 16 |
+
"default": null,
|
| 17 |
+
"annotation": "torch.Tensor"
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"name": "ggml_type",
|
| 21 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 22 |
+
"default": null,
|
| 23 |
+
"annotation": "int"
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"name": "rows",
|
| 27 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 28 |
+
"default": null,
|
| 29 |
+
"annotation": "int"
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"name": "cols",
|
| 33 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 34 |
+
"default": null,
|
| 35 |
+
"annotation": "int"
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"name": "dtype",
|
| 39 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 40 |
+
"default": null,
|
| 41 |
+
"annotation": "torch.dtype"
|
| 42 |
+
}
|
| 43 |
+
],
|
| 44 |
+
"return_annotation": "torch.Tensor"
|
| 45 |
+
}
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"name": "get_rows",
|
| 49 |
+
"qualname": "get_rows",
|
| 50 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 51 |
+
"kind": "function",
|
| 52 |
+
"doc": "The rows `indices` names, unpacked: `(rows, bytes_per_row)` uint8 -> `(len(indices), cols)`.\n\nggml's `get_rows`, which dequantizes as it gathers -- so reading a few rows out of a large table\nnever touches the rest.",
|
| 53 |
+
"signature": {
|
| 54 |
+
"parameters": [
|
| 55 |
+
{
|
| 56 |
+
"name": "blocks",
|
| 57 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 58 |
+
"default": null,
|
| 59 |
+
"annotation": "torch.Tensor"
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"name": "indices",
|
| 63 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 64 |
+
"default": null,
|
| 65 |
+
"annotation": "torch.Tensor"
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"name": "ggml_type",
|
| 69 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 70 |
+
"default": null,
|
| 71 |
+
"annotation": "int"
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"name": "cols",
|
| 75 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 76 |
+
"default": null,
|
| 77 |
+
"annotation": "int"
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"name": "dtype",
|
| 81 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 82 |
+
"default": null,
|
| 83 |
+
"annotation": "torch.dtype"
|
| 84 |
+
}
|
| 85 |
+
],
|
| 86 |
+
"return_annotation": "torch.Tensor"
|
| 87 |
+
}
|
| 88 |
+
},
|
| 89 |
+
{
|
| 90 |
+
"name": "mul_mat_id",
|
| 91 |
+
"qualname": "mul_mat_id",
|
| 92 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 93 |
+
"kind": "function",
|
| 94 |
+
"doc": "One dispatch for a bank of routed experts: ggml's `mul_mv_id`.\n\n`blocks` is `(n_experts, out_features, bytes_per_row)`, `x` is `(n_tokens, in_features)`, and\n`ids` is `(n_tokens, n_used)` naming the expert each of a token's slots picked. The result is\n`(n_tokens, n_used, out_features)` f32, one row per slot.\n\nThe alternative is a gemv per expert per layer, whose arithmetic is dwarfed by the dispatch\naround it -- which is most of what a MoE decode step costs.",
|
| 95 |
+
"signature": {
|
| 96 |
+
"parameters": [
|
| 97 |
+
{
|
| 98 |
+
"name": "blocks",
|
| 99 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 100 |
+
"default": null,
|
| 101 |
+
"annotation": "torch.Tensor"
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
"name": "x",
|
| 105 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 106 |
+
"default": null,
|
| 107 |
+
"annotation": "torch.Tensor"
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"name": "ids",
|
| 111 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 112 |
+
"default": null,
|
| 113 |
+
"annotation": "torch.Tensor"
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"name": "ggml_type",
|
| 117 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 118 |
+
"default": null,
|
| 119 |
+
"annotation": "int"
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"name": "out_features",
|
| 123 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 124 |
+
"default": null,
|
| 125 |
+
"annotation": "int"
|
| 126 |
+
}
|
| 127 |
+
],
|
| 128 |
+
"return_annotation": "torch.Tensor"
|
| 129 |
+
}
|
| 130 |
+
},
|
| 131 |
+
{
|
| 132 |
+
"name": "mul_mat_vec",
|
| 133 |
+
"qualname": "mul_mat_vec",
|
| 134 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 135 |
+
"kind": "function",
|
| 136 |
+
"doc": "Fused dequantize-gemv: `x @ blocks.T` without unpacking `blocks`.\n\n`x` is `(rows, in_features)` and `rows` must be at most `MAX_GEMV_ROWS`. The result is f32\nwhatever `x`'s dtype was, since the kernel writes an f32 destination; cast it at the call site,\nwhere the cast can be fused into whatever consumes it.",
|
| 137 |
+
"signature": {
|
| 138 |
+
"parameters": [
|
| 139 |
+
{
|
| 140 |
+
"name": "blocks",
|
| 141 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 142 |
+
"default": null,
|
| 143 |
+
"annotation": "torch.Tensor"
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"name": "x",
|
| 147 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 148 |
+
"default": null,
|
| 149 |
+
"annotation": "torch.Tensor"
|
| 150 |
+
},
|
| 151 |
+
{
|
| 152 |
+
"name": "ggml_type",
|
| 153 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 154 |
+
"default": null,
|
| 155 |
+
"annotation": "int"
|
| 156 |
+
},
|
| 157 |
+
{
|
| 158 |
+
"name": "out_features",
|
| 159 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 160 |
+
"default": null,
|
| 161 |
+
"annotation": "int"
|
| 162 |
+
}
|
| 163 |
+
],
|
| 164 |
+
"return_annotation": "torch.Tensor"
|
| 165 |
+
}
|
| 166 |
+
}
|
| 167 |
+
],
|
| 168 |
+
"layers": []
|
| 169 |
+
}
|
build/torch215-metal-aarch64-darwin/__init__.py
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Compute directly on the packed blocks of a GGUF checkpoint.
|
| 2 |
+
|
| 3 |
+
A GGUF weight is stored as blocks of 32 or 256 values sharing a scale. These kernels read that
|
| 4 |
+
layout as it is, so a quantized model can be loaded and run without ever materializing a dense
|
| 5 |
+
copy — which is the whole memory saving.
|
| 6 |
+
|
| 7 |
+
Ported from llama.cpp's ggml-cuda; `vendor/UPSTREAM` pins the revision. The ops are named for what
|
| 8 |
+
they do rather than for a backend: each backend registers its own implementation of the same
|
| 9 |
+
schema, so calls dispatch on the tensor's device.
|
| 10 |
+
"""
|
| 11 |
+
|
| 12 |
+
import torch
|
| 13 |
+
|
| 14 |
+
from ._ops import add_op_namespace_prefix, ops
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
__all__ = ["GEMV_TYPES", "MAX_GEMV_ROWS", "dequantize", "get_rows", "mul_mat_id", "mul_mat_vec"]
|
| 18 |
+
|
| 19 |
+
# Upstream's MMVQ_MAX_BATCH_SIZE: `mul_mat_vec` has no implementation beyond this many rows, so a
|
| 20 |
+
# caller with more (prefill) dequantizes and uses an ordinary matmul.
|
| 21 |
+
MAX_GEMV_ROWS = 8
|
| 22 |
+
|
| 23 |
+
# ggml type ids `mul_mat_vec` implements, as this build reports them -- it is backend-specific, and
|
| 24 |
+
# a type routed into a gemv that has no kernel for it is a fault, not a fallback. CUDA covers
|
| 25 |
+
# Q4_0/Q4_1/Q5_0/Q5_1/Q8_0, the K quants, the IQ quants, MXFP4/NVFP4 and Q1_0/Q2_0; Metal is the
|
| 26 |
+
# same minus NVFP4/Q1_0/Q2_0, which its metallib has no kernels for. `dequantize` covers more, so
|
| 27 |
+
# check this before choosing the fused path.
|
| 28 |
+
try:
|
| 29 |
+
GEMV_TYPES = frozenset(ops.gemv_types())
|
| 30 |
+
except AttributeError:
|
| 31 |
+
# A build published before `gemv_types` existed; those are CUDA-only, so its list is theirs.
|
| 32 |
+
GEMV_TYPES = frozenset({2, 3, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 29, 39, 40, 41, 42})
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
def get_rows(
|
| 36 |
+
blocks: torch.Tensor, indices: torch.Tensor, ggml_type: int, cols: int, dtype: torch.dtype
|
| 37 |
+
) -> torch.Tensor:
|
| 38 |
+
"""The rows `indices` names, unpacked: `(rows, bytes_per_row)` uint8 -> `(len(indices), cols)`.
|
| 39 |
+
|
| 40 |
+
ggml's `get_rows`, which dequantizes as it gathers -- so reading a few rows out of a large table
|
| 41 |
+
never touches the rest.
|
| 42 |
+
"""
|
| 43 |
+
return ops.get_rows(blocks, indices, ggml_type, cols, dtype)
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
def dequantize(
|
| 47 |
+
blocks: torch.Tensor, ggml_type: int, rows: int, cols: int, dtype: torch.dtype
|
| 48 |
+
) -> torch.Tensor:
|
| 49 |
+
"""`(rows, bytes_per_row)` uint8 blocks -> `(rows, cols)` values of `dtype`."""
|
| 50 |
+
return ops.dequantize(blocks, ggml_type, rows, cols, dtype)
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def mul_mat_vec(
|
| 54 |
+
blocks: torch.Tensor, x: torch.Tensor, ggml_type: int, out_features: int
|
| 55 |
+
) -> torch.Tensor:
|
| 56 |
+
"""Fused dequantize-gemv: `x @ blocks.T` without unpacking `blocks`.
|
| 57 |
+
|
| 58 |
+
`x` is `(rows, in_features)` and `rows` must be at most `MAX_GEMV_ROWS`. The result is f32
|
| 59 |
+
whatever `x`'s dtype was, since the kernel writes an f32 destination; cast it at the call site,
|
| 60 |
+
where the cast can be fused into whatever consumes it.
|
| 61 |
+
"""
|
| 62 |
+
return ops.mul_mat_vec(blocks, x, ggml_type, out_features)
|
| 63 |
+
|
| 64 |
+
|
| 65 |
+
def mul_mat_id(
|
| 66 |
+
blocks: torch.Tensor, x: torch.Tensor, ids: torch.Tensor, ggml_type: int, out_features: int
|
| 67 |
+
) -> torch.Tensor:
|
| 68 |
+
"""One dispatch for a bank of routed experts: ggml's `mul_mv_id`.
|
| 69 |
+
|
| 70 |
+
`blocks` is `(n_experts, out_features, bytes_per_row)`, `x` is `(n_tokens, in_features)`, and
|
| 71 |
+
`ids` is `(n_tokens, n_used)` naming the expert each of a token's slots picked. The result is
|
| 72 |
+
`(n_tokens, n_used, out_features)` f32, one row per slot.
|
| 73 |
+
|
| 74 |
+
The alternative is a gemv per expert per layer, whose arithmetic is dwarfed by the dispatch
|
| 75 |
+
around it -- which is most of what a MoE decode step costs.
|
| 76 |
+
"""
|
| 77 |
+
return ops.mul_mat_id(blocks, x, ids, ggml_type, out_features)
|
| 78 |
+
|
| 79 |
+
|
| 80 |
+
# Without these, torch.compile cannot trace the ops and breaks the graph at every call.
|
| 81 |
+
@torch.library.register_fake(add_op_namespace_prefix("get_rows"))
|
| 82 |
+
def _get_rows_fake(blocks, indices, ggml_type, cols, dtype):
|
| 83 |
+
return blocks.new_empty((indices.numel(), cols), dtype=dtype)
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
@torch.library.register_fake(add_op_namespace_prefix("dequantize"))
|
| 87 |
+
def _dequantize_fake(blocks, ggml_type, rows, cols, dtype):
|
| 88 |
+
return blocks.new_empty((rows, cols), dtype=dtype)
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
@torch.library.register_fake(add_op_namespace_prefix("mul_mat_vec"))
|
| 92 |
+
def _mul_mat_vec_fake(blocks, x, ggml_type, out_features):
|
| 93 |
+
return x.new_empty((x.shape[0], out_features), dtype=torch.float32)
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
@torch.library.register_fake(add_op_namespace_prefix("mul_mat_id"))
|
| 97 |
+
def _mul_mat_id_fake(blocks, x, ids, ggml_type, out_features):
|
| 98 |
+
return x.new_empty((x.shape[0], ids.shape[1], out_features), dtype=torch.float32)
|
build/torch215-metal-aarch64-darwin/_ggml_quantization_metal_5fe9dbb.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:194290cca40f1d12367cf08d9f35049cc96b3e2f1db42229223e051215632145
|
| 3 |
+
size 3347704
|
build/torch215-metal-aarch64-darwin/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _ggml_quantization_metal_5fe9dbb
|
| 3 |
+
ops = torch.ops._ggml_quantization_metal_5fe9dbb
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_ggml_quantization_metal_5fe9dbb::{op_name}"
|
build/torch215-metal-aarch64-darwin/metadata.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "ggml-quantization",
|
| 3 |
+
"id": "_ggml_quantization_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": "iPXgZXBgY3CzpNUSjmCovMVNPLBol1KBaNoTzkXp5mM=",
|
| 16 |
+
"_ggml_quantization_metal_5fe9dbb.abi3.so": "GUKQzKQPHRI2fPCNnzUEnMlrPi8dtCIpIj4FEhVjIUU=",
|
| 17 |
+
"_ops.py": "qmH/NXUzgO/6qdqeM09eLgLtwnGkpAZE0/uZdqhhcmM=",
|
| 18 |
+
"symbols.json": "57o77zfqRijHYonknIl7gcyfqmAxIpDhWTt9Df/lO5s="
|
| 19 |
+
}
|
| 20 |
+
},
|
| 21 |
+
"provenance": {
|
| 22 |
+
"kernel-builder": {
|
| 23 |
+
"version": "0.18.0-dev0",
|
| 24 |
+
"commit": "21bdf69d97a289b9c581a0c60f63deed131647d5",
|
| 25 |
+
"dirty": false
|
| 26 |
+
},
|
| 27 |
+
"kernel": {
|
| 28 |
+
"commit": "5fe9dbb3d45f6f2652958c1f70e5381891fa7aa0",
|
| 29 |
+
"dirty": false
|
| 30 |
+
}
|
| 31 |
+
}
|
| 32 |
+
}
|
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":"MIIHQDCCBsegAwIBAgIUEKBVCedx+UUawr+r/ql7L5l0rhkwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYxMDMwMTYwODQxWhcNMjYxMDMwMTYxODQxWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEydHBea3aVzLngFIhIOXQbwx92aKi5Xfyctz3cgZxm/PWPoaTJE8ithsv/vbectmCIQ5zkSZK7AbkueSaikkVDaOCBeYwggXiMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBTf0+nPViQRlvmo2OkoVaLGLhhkPzBvBgNVHREBAf8EZTBjhmFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAbBgorBgEEAYO/MAEEBA1CdWlsZCAobWFjT1MpMCsGCisGAQQBg78wAQUEHWh1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MB0GCisGAQQBg78wAQYED3JlZnMvaGVhZHMvbWFpbjA7BgorBgEEAYO/MAEIBC0MK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wcQYKKwYBBAGDvzABCQRjDGFodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkvLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQtbWFjLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNWZlOWRiYjNkNDVmNmYyNjUyOTU4YzFmNzBlNTM4MTg5MWZhN2FhMDAdBgorBgEEAYO/MAELBA8MDWdpdGh1Yi1ob3N0ZWQwQAYKKwYBBAGDvzABDAQyDDBodHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHkwOAYKKwYBBAGDvzABDQQqDCg1ZmU5ZGJiM2Q0NWY2ZjI2NTI5NThjMWY3MGU1MzgxODkxZmE3YWEwMB8GCisGAQQBg78wAQ4EEQwPcmVmcy9oZWFkcy9tYWluMBoGCisGAQQBg78wAQ8EDAwKMTA3MTQ3NTUyOTAuBgorBgEEAYO/MAEQBCAMHmh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZTAYBgorBgEEAYO/MAERBAoMCDI1NzIwNzQzMHEGCisGAQQBg78wARIEYwxhaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLW1hYy55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDVmZTlkYmIzZDQ1ZjZmMjY1Mjk1OGMxZjcwZTUzODE4OTFmYTdhYTAwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvNDEwODM1MzY2NzQvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoY2SDccAAAQDAEYwRAIgatFNB+fqiXdi4yYcerAqc0Y8sYATmNiN2Yd3ZFJo1koCIGWNnh1gvuLGnXfnNuGK87p+6ivBaCNuTVVqsLLOVysuMAoGCCqGSM49BAMDA2cAMGQCMCV8nYagYA0YkR5RPqsjR9f+y2dAJaz0hmNgEUGNzppNigWLibxfuc5DmA7hXtvkkAIwQ7vBzypT0ZDxlP5k8b3fNkR03xd+321x9/BZ/AR2lmvB94M5F4P23sYQizEKz10H"},"tlogEntries":[{"logIndex":"3597164562","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1793376522","inclusionPromise":{"signedEntryTimestamp":"MEYCIQC3z1Dwqw3ZHOb0dTG56bnv3dsYqmWi05Z76HFUvNT9nwIhAPO1XkrPjMWEaMDCERh5iui7oiyyF/YzkpinWAhomrSX"},"inclusionProof":{"logIndex":"3475260300","rootHash":"gTHwbf7Z4m1LqyOPEqhmNkiTRKYZcSYAL+GSJdYXIAk=","treeSize":"3475260318","hashes":["7NHKHh0PHpdIH6SF4BGZc3mk5/IdZFG8MW6m7GpKww4=","SNtiMp+M/7Lm9C+QusVstcaymSUGzcrYE/CK2f1jSE8=","YGSqnokmlaLgObnSdj2EhoijQr/pXSNqtwuqLrW/QK8=","nVyyJrsNv8n/DHJpt1uHCy104MiEN7fTq0TukxkA0Aw=","qAm0d+EJ+ShtFs/3gMQykK/TgH36+kJLf8WOmHc3DqQ=","+IksX6qyCFiW+yprrYt9XzPtqfl27f4tk2c1WrhFVDM=","SaIYB32C8GNrmbbf2GmxSNSoXBVNeQaABch65QBDCfg=","+0IWeT9Xsa/vUwdzRVEmkalslRZz9TZW87MlCwVrMHM=","ong7CR13YjLVwNWMRUBqrhvuVDcbhobTuZtWM4Qduj4=","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\n3475260318\ngTHwbf7Z4m1LqyOPEqhmNkiTRKYZcSYAL+GSJdYXIAk=\n\n— rekor.sigstore.dev wNI9ajBFAiAbjm+LnLlb8/95tUXYhDfuLza+8u1JUecm6N/LMghDzQIhAPTMKhjgYd+VgU+TCokG0R3ZzWPVWXqiZcqzka05C9At\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxZjUxZjA1ZDI2MjQ3OGZmNDFhN2RmZGFhNTQzYTZhNzc2N2Q0M2Q1NjlhNjQzZGM3NzU2YTA0MTM4NGM5MTQ2In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQVJBVVU4bC9FelhrRitUWXE1bmZzWHJtM3F4TFMvM3F2S28yMDNmYm1FNUFpRUExaWRTL3huNElDOU0vTnhJMGxqVHd6SVhvdURlL1haMm1sbW90YTRvZWprPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFJSRU5EUW5ObFowRjNTVUpCWjBsVlJVdENWa05sWkhnclZWVmhkM0lyY2k5eGJEZE1OV3d3Y21ocmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFVFhkTlZGbDNUMFJSZUZkb1kwNU5hbGw0VFVSTmQwMVVXWGhQUkZGNFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVY1WkVoQ1pXRXpZVlo2VEc1blJrbG9TVTlZVVdKM2VEa3lZVXRwTlZobWVXTjBlak1LWTJkYWVHMHZVRmRRYjJGVVNrVTRhWFJvYzNZdmRtSmxZM1J0UTBsUk5YcHJVMXBMTjBGaWEzVmxVMkZwYTJ0V1JHRlBRMEpsV1hkbloxaHBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFuWkNaMDVXU0ZKRlFrRm1PRVZhVkVKcWFHMUdiMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFZakl4ZEdSWE5YQmtTR3QyVEcxa2NHUkhhREZaYVRrellqTktjZ3BhYlhoMlpETk5kbGx1Vm5CaVIxRjBZbGRHYWt4dWJHaGlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVkRmxYYkhWTlJHdEhRMmx6UjBGUlVVSm5OemgzQ2tGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpCaFZ6bDFZM2sxYm1GWVVtOWtWMG94WXpKV2VWa3lPWFZrUjFaMVpFTTFhbUl5TUhjS1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWMySXpaR1phUjJ4NlkwZEdNRmt5WjNkT1oxbExTM2RaUWtKQlIwUjJla0ZDUVhkUmJ3cE9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJZa0puYjNKQ1owVkZDa0ZaVHk5TlFVVkZRa0V4UTJSWGJITmFRMEZ2WWxkR2FsUXhUWEJOUTNOSFEybHpSMEZSVVVKbk56aDNRVkZWUlVoWGFERmFNbVJ3WW0xa2JWbFhUbXdLVERKMGJHTnROV3hpU0UxMFdUSTVkR0pZVm5WaFdGSTFUVUl3UjBOcGMwZEJVVkZDWnpjNGQwRlJXVVZFTTBwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0FwaWFrRTNRbWR2Y2tKblJVVkJXVTh2VFVGRlNVSkRNRTFMTW1nd1pFaENlazlwT0haa1J6bHlXbGMwZFZsWFRqQmhWemwxWTNrMWJtRllVbTlrVjBveENtTXlWbmxaTWpsMVpFZFdkV1JETldwaU1qQjNZMUZaUzB0M1dVSkNRVWRFZG5wQlFrTlJVbXBFUjBadlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5Xb0tZakl3ZG1GSVZtNWFNbXgxV2pKYWFGa3lWWFpoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkZ3BrTTAxMldXNVdjR0pIVVhSaVYwWnFURzVzYUdKWGVFRmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFFWjBkRGFYTkhRVkZSUW1jM09IZEJVVzlGQ2t0bmQyOU9WMXBzVDFkU2FWbHFUbXRPUkZadFRtMVplVTVxVlhsUFZGVTBXWHBHYlU1NlFteE9WRTAwVFZSbk5VMVhXbWhPTWtab1RVUkJaRUpuYjNJS1FtZEZSVUZaVHk5TlFVVk1Ra0U0VFVSWFpIQmtSMmd4V1dreGIySXpUakJhVjFGM1VVRlpTMHQzV1VKQ1FVZEVkbnBCUWtSQlVYbEVSRUp2WkVoU2R3cGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjR1JJYTNkUFFWbExDa3QzV1VKQ1FVZEVkbnBCUWtSUlVYRkVRMmN4V20xVk5WcEhTbWxOTWxFd1RsZFpNbHBxU1RKT1ZFazFUbFJvYWsxWFdUTk5SMVV4VFhwbmVFOUVhM2dLV20xRk0xbFhSWGROUWpoSFEybHpSMEZSVVVKbk56aDNRVkUwUlVWUmQxQmpiVlp0WTNrNWIxcFhSbXRqZVRsMFdWZHNkVTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRUV6VFZSUk0wNVVWWGxQVkVGMVFtZHZja0puUlVWQldVOHZUVUZGVVVKRFFVMUliV2d3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTViMlJYWkc1aFZ6VnVXbTFHYWxwVVFWbENaMjl5UW1kRlJVRlpUeTlOUVVWU1FrRnZUVU5FU1RGT2VrbDNUbnBSZWsxSVJVY0tRMmx6UjBGUlVVSm5OemgzUVZKSlJWbDNlR2hoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiQXBqYlRWc1lraE5kRmt5T1hSaVdGWjFZVmhTTlV4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d5U2pGaFYzaHJURmN4YUZsNU5UVlpWekZ6Q2xGSVNteGFiazEyWVVkV2FGcElUWFppVjBad1ltcEJORUpuYjNKQ1owVkZRVmxQTDAxQlJWUkNRMjlOUzBSV2JWcFViR3RaYlVsNldrUlJNVnBxV20wS1RXcFpNVTFxYXpGUFIwMTRXbXBqZDFwVVZYcFBSRVUwVDFSR2JWbFVaR2haVkVGM1NWRlpTMHQzV1VKQ1FVZEVkbnBCUWtaQlVWUkVRa1l6WWpOS2NncGFiWGgyWkRFNWEyRllUbmRaV0ZKcVlVUkNhMEpuYjNKQ1owVkZRVmxQTDAxQlJWWkNSbGxOVmtkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJDbUpUT1c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MllsY3hNV0p0YkRCbFV6bG9XVE5TY0dJeU5YcE1NMG94WW01TmRrNUVSWGNLVDBSTk1VMTZXVEpPZWxGMldWaFNNRnBYTVhka1NFMTJUVlJCVjBKbmIzSkNaMFZGUVZsUEwwMUJSVmRDUVdkTlFtNUNNVmx0ZUhCWmVrSkhRbWR2Y2dwQ1owVkZRVmxQTDAxQlJWbENSR2ROVG01S2JHTkhPRFpoU0ZadVdqSnNkVm95V21oWk1sVjJZVEpXZVdKdFZuTmplVEZxWWpJeGRHUlhOWEJrU0dzMkNtTnRWbTFQYmtwc1dtNU5kbUZIVm1oYVNFMTJZbGRHY0dKcVEwSnBVVmxMUzNkWlFrSkJTRmRsVVVsRlFXZFNOMEpJYTBGa2QwSXhRVTR3T1UxSGNrY0tlSGhGZVZsNGEyVklTbXh1VG5kTGFWTnNOalF6YW5sMEx6UmxTMk52UVhaTFpUWlBRVUZCUW05Wk1sTkVZMk5CUVVGUlJFRkZXWGRTUVVsbllYUkdUZ3BDSzJaeGFWaGthVFI1V1dObGNrRnhZekJaT0hOWlFWUnRUbWxPTWxsa00xcEdTbTh4YTI5RFNVZFhUbTVvTVdkMmRVeEhibGhtYms1MVIwczROM0FyQ2pacGRrSmhRMDUxVkZaV2NYTk1URTlXZVhOMVRVRnZSME5EY1VkVFRUUTVRa0ZOUkVFeVkwRk5SMUZEVFVOV09HNVpZV2RaUVRCWmExSTFVbEJ4YzJvS1VqbG1LM2t5WkVGS1lYb3dhRzFPWjBWVlIwNTZjSEJPYVdkWFRHbGllR1oxWXpWRWJVRTNhRmgwZG10clFVbDNVVGQyUW5wNWNGUXdXa1I0YkZBMWF3bzRZak5tVG10U01ETjRaQ3N6TWpGNE9TOUNXaTlCVWpKc2JYWkNPVFJOTlVZMFVESXpjMWxSYVhwRlMzb3hNRWdLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQge+6iURDKywBV0+FQ+evBX3ohZ8rYNKzTQNqxhR66vIsCFA9Wb94YqDl6IxlfaMj4i/bLy0+NGA8yMDI2MTAzMDE2MDg0MVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYxMDMwMTYwODQxWjAvBgkqhkiG9w0BCQQxIgQgr5guszMPUVrdCG/yuHr9KSO9R34dwiaMrfmqFDf6+bwwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIxAJSU70EZuheoXUN6C13QRM5UlsZb04HDuV3arUjlkCRhpgonmFcwP4lFiLeHcX9IQgIwYVz4N4b1uDAwAaOXBKO7yez4x88clnGgjB8tn8pmnd1caKeXS/14rPLIpAizrdPX"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"H1HwXSYkeP9Bp9/apUOmp3Z9Q9VppkPcd1agQThMkUY="},"signature":"MEUCIARAUU8l/EzXkF+TYq5nfsXrm3qxLS/3qvKo203fbmE5AiEA1idS/xn4IC9M/NxI0ljTwzIXouDe/XZ2mlmota4oejk="}}
|
build/torch215-metal-aarch64-darwin/symbols.json
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 4 |
+
"functions": [
|
| 5 |
+
{
|
| 6 |
+
"name": "dequantize",
|
| 7 |
+
"qualname": "dequantize",
|
| 8 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 9 |
+
"kind": "function",
|
| 10 |
+
"doc": "`(rows, bytes_per_row)` uint8 blocks -> `(rows, cols)` values of `dtype`.",
|
| 11 |
+
"signature": {
|
| 12 |
+
"parameters": [
|
| 13 |
+
{
|
| 14 |
+
"name": "blocks",
|
| 15 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 16 |
+
"default": null,
|
| 17 |
+
"annotation": "torch.Tensor"
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"name": "ggml_type",
|
| 21 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 22 |
+
"default": null,
|
| 23 |
+
"annotation": "int"
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"name": "rows",
|
| 27 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 28 |
+
"default": null,
|
| 29 |
+
"annotation": "int"
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"name": "cols",
|
| 33 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 34 |
+
"default": null,
|
| 35 |
+
"annotation": "int"
|
| 36 |
+
},
|
| 37 |
+
{
|
| 38 |
+
"name": "dtype",
|
| 39 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 40 |
+
"default": null,
|
| 41 |
+
"annotation": "torch.dtype"
|
| 42 |
+
}
|
| 43 |
+
],
|
| 44 |
+
"return_annotation": "torch.Tensor"
|
| 45 |
+
}
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"name": "get_rows",
|
| 49 |
+
"qualname": "get_rows",
|
| 50 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 51 |
+
"kind": "function",
|
| 52 |
+
"doc": "The rows `indices` names, unpacked: `(rows, bytes_per_row)` uint8 -> `(len(indices), cols)`.\n\nggml's `get_rows`, which dequantizes as it gathers -- so reading a few rows out of a large table\nnever touches the rest.",
|
| 53 |
+
"signature": {
|
| 54 |
+
"parameters": [
|
| 55 |
+
{
|
| 56 |
+
"name": "blocks",
|
| 57 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 58 |
+
"default": null,
|
| 59 |
+
"annotation": "torch.Tensor"
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"name": "indices",
|
| 63 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 64 |
+
"default": null,
|
| 65 |
+
"annotation": "torch.Tensor"
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"name": "ggml_type",
|
| 69 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 70 |
+
"default": null,
|
| 71 |
+
"annotation": "int"
|
| 72 |
+
},
|
| 73 |
+
{
|
| 74 |
+
"name": "cols",
|
| 75 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 76 |
+
"default": null,
|
| 77 |
+
"annotation": "int"
|
| 78 |
+
},
|
| 79 |
+
{
|
| 80 |
+
"name": "dtype",
|
| 81 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 82 |
+
"default": null,
|
| 83 |
+
"annotation": "torch.dtype"
|
| 84 |
+
}
|
| 85 |
+
],
|
| 86 |
+
"return_annotation": "torch.Tensor"
|
| 87 |
+
}
|
| 88 |
+
},
|
| 89 |
+
{
|
| 90 |
+
"name": "mul_mat_id",
|
| 91 |
+
"qualname": "mul_mat_id",
|
| 92 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 93 |
+
"kind": "function",
|
| 94 |
+
"doc": "One dispatch for a bank of routed experts: ggml's `mul_mv_id`.\n\n`blocks` is `(n_experts, out_features, bytes_per_row)`, `x` is `(n_tokens, in_features)`, and\n`ids` is `(n_tokens, n_used)` naming the expert each of a token's slots picked. The result is\n`(n_tokens, n_used, out_features)` f32, one row per slot.\n\nThe alternative is a gemv per expert per layer, whose arithmetic is dwarfed by the dispatch\naround it -- which is most of what a MoE decode step costs.",
|
| 95 |
+
"signature": {
|
| 96 |
+
"parameters": [
|
| 97 |
+
{
|
| 98 |
+
"name": "blocks",
|
| 99 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 100 |
+
"default": null,
|
| 101 |
+
"annotation": "torch.Tensor"
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
"name": "x",
|
| 105 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 106 |
+
"default": null,
|
| 107 |
+
"annotation": "torch.Tensor"
|
| 108 |
+
},
|
| 109 |
+
{
|
| 110 |
+
"name": "ids",
|
| 111 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 112 |
+
"default": null,
|
| 113 |
+
"annotation": "torch.Tensor"
|
| 114 |
+
},
|
| 115 |
+
{
|
| 116 |
+
"name": "ggml_type",
|
| 117 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 118 |
+
"default": null,
|
| 119 |
+
"annotation": "int"
|
| 120 |
+
},
|
| 121 |
+
{
|
| 122 |
+
"name": "out_features",
|
| 123 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 124 |
+
"default": null,
|
| 125 |
+
"annotation": "int"
|
| 126 |
+
}
|
| 127 |
+
],
|
| 128 |
+
"return_annotation": "torch.Tensor"
|
| 129 |
+
}
|
| 130 |
+
},
|
| 131 |
+
{
|
| 132 |
+
"name": "mul_mat_vec",
|
| 133 |
+
"qualname": "mul_mat_vec",
|
| 134 |
+
"module": "_ggml_quantization_metal_5fe9dbb",
|
| 135 |
+
"kind": "function",
|
| 136 |
+
"doc": "Fused dequantize-gemv: `x @ blocks.T` without unpacking `blocks`.\n\n`x` is `(rows, in_features)` and `rows` must be at most `MAX_GEMV_ROWS`. The result is f32\nwhatever `x`'s dtype was, since the kernel writes an f32 destination; cast it at the call site,\nwhere the cast can be fused into whatever consumes it.",
|
| 137 |
+
"signature": {
|
| 138 |
+
"parameters": [
|
| 139 |
+
{
|
| 140 |
+
"name": "blocks",
|
| 141 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 142 |
+
"default": null,
|
| 143 |
+
"annotation": "torch.Tensor"
|
| 144 |
+
},
|
| 145 |
+
{
|
| 146 |
+
"name": "x",
|
| 147 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 148 |
+
"default": null,
|
| 149 |
+
"annotation": "torch.Tensor"
|
| 150 |
+
},
|
| 151 |
+
{
|
| 152 |
+
"name": "ggml_type",
|
| 153 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 154 |
+
"default": null,
|
| 155 |
+
"annotation": "int"
|
| 156 |
+
},
|
| 157 |
+
{
|
| 158 |
+
"name": "out_features",
|
| 159 |
+
"kind": "POSITIONAL_OR_KEYWORD",
|
| 160 |
+
"default": null,
|
| 161 |
+
"annotation": "int"
|
| 162 |
+
}
|
| 163 |
+
],
|
| 164 |
+
"return_annotation": "torch.Tensor"
|
| 165 |
+
}
|
| 166 |
+
}
|
| 167 |
+
],
|
| 168 |
+
"layers": []
|
| 169 |
+
}
|