Kernels:
Trusted publisher
Uploaded using `kernel-builder`.
Browse files- build/torch-stable-abi210-cu126-x86_64-linux/__init__.py +75 -0
- build/torch-stable-abi210-cu126-x86_64-linux/_activation_cuda_2f7c452.abi3.so +3 -0
- build/torch-stable-abi210-cu126-x86_64-linux/_ops.py +9 -0
- build/torch-stable-abi210-cu126-x86_64-linux/activation/__init__.py +26 -0
- build/torch-stable-abi210-cu126-x86_64-linux/layers.py +201 -0
- build/torch-stable-abi210-cu126-x86_64-linux/metadata.json +41 -0
- build/torch-stable-abi210-cu126-x86_64-linux/metadata.json.sigstore +1 -0
- build/torch-stable-abi210-cu128-x86_64-linux/__init__.py +75 -0
- build/torch-stable-abi210-cu128-x86_64-linux/_activation_cuda_2f7c452.abi3.so +3 -0
- build/torch-stable-abi210-cu128-x86_64-linux/_ops.py +9 -0
- build/torch-stable-abi210-cu128-x86_64-linux/activation/__init__.py +26 -0
- build/torch-stable-abi210-cu128-x86_64-linux/layers.py +201 -0
- build/torch-stable-abi210-cu128-x86_64-linux/metadata.json +44 -0
- build/torch-stable-abi210-cu128-x86_64-linux/metadata.json.sigstore +1 -0
- build/torch-stable-abi210-cu130-x86_64-linux/__init__.py +75 -0
- build/torch-stable-abi210-cu130-x86_64-linux/_activation_cuda_2f7c452.abi3.so +3 -0
- build/torch-stable-abi210-cu130-x86_64-linux/_ops.py +9 -0
- build/torch-stable-abi210-cu130-x86_64-linux/activation/__init__.py +26 -0
- build/torch-stable-abi210-cu130-x86_64-linux/layers.py +201 -0
- build/torch-stable-abi210-cu130-x86_64-linux/metadata.json +43 -0
- build/torch-stable-abi210-cu130-x86_64-linux/metadata.json.sigstore +1 -0
- build/torch-stable-abi210-cu132-x86_64-linux/__init__.py +75 -0
- build/torch-stable-abi210-cu132-x86_64-linux/_activation_cuda_2f7c452.abi3.so +3 -0
- build/torch-stable-abi210-cu132-x86_64-linux/_ops.py +9 -0
- build/torch-stable-abi210-cu132-x86_64-linux/activation/__init__.py +26 -0
- build/torch-stable-abi210-cu132-x86_64-linux/layers.py +201 -0
- build/torch-stable-abi210-cu132-x86_64-linux/metadata.json +43 -0
- build/torch-stable-abi210-cu132-x86_64-linux/metadata.json.sigstore +1 -0
build/torch-stable-abi210-cu126-x86_64-linux/__init__.py
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
|
| 3 |
+
from ._ops import ops
|
| 4 |
+
|
| 5 |
+
from . import layers
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def silu_and_mul(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 9 |
+
ops.silu_and_mul(out, x)
|
| 10 |
+
return out
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
def mul_and_silu(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 14 |
+
ops.mul_and_silu(out, x)
|
| 15 |
+
return out
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def gelu_and_mul(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 19 |
+
ops.gelu_and_mul(out, x)
|
| 20 |
+
return out
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def gelu_tanh_and_mul(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 24 |
+
ops.gelu_tanh_and_mul(out, x)
|
| 25 |
+
return out
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def fatrelu_and_mul(out: torch.Tensor, x: torch.Tensor, threshold: float = 0.0) -> torch.Tensor:
|
| 29 |
+
ops.fatrelu_and_mul(out, x, threshold)
|
| 30 |
+
return out
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
def gelu(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 34 |
+
ops.gelu(out, x)
|
| 35 |
+
return out
|
| 36 |
+
|
| 37 |
+
def silu(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 38 |
+
ops.silu(out, x)
|
| 39 |
+
return out
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def gelu_tanh(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 43 |
+
ops.gelu_tanh(out, x)
|
| 44 |
+
return out
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
def gelu_fast(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 48 |
+
ops.gelu_fast(out, x)
|
| 49 |
+
return out
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
def gelu_new(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 53 |
+
ops.gelu_new(out, x)
|
| 54 |
+
return out
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
def gelu_quick(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 58 |
+
ops.gelu_quick(out, x)
|
| 59 |
+
return out
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
__all__ = [
|
| 63 |
+
"silu_and_mul",
|
| 64 |
+
"mul_and_silu",
|
| 65 |
+
"gelu_and_mul",
|
| 66 |
+
"gelu_tanh_and_mul",
|
| 67 |
+
"fatrelu_and_mul",
|
| 68 |
+
"gelu_fast",
|
| 69 |
+
"gelu_new",
|
| 70 |
+
"gelu_quick",
|
| 71 |
+
"gelu_tanh",
|
| 72 |
+
"silu",
|
| 73 |
+
"gelu",
|
| 74 |
+
"layers",
|
| 75 |
+
]
|
build/torch-stable-abi210-cu126-x86_64-linux/_activation_cuda_2f7c452.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b73105f386072409d3ca2efb024422fd7e31ed086e4f7c308c2166dd44b6b5fb
|
| 3 |
+
size 1214312
|
build/torch-stable-abi210-cu126-x86_64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _activation_cuda_2f7c452
|
| 3 |
+
ops = torch.ops._activation_cuda_2f7c452
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_activation_cuda_2f7c452::{op_name}"
|
build/torch-stable-abi210-cu126-x86_64-linux/activation/__init__.py
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import ctypes
|
| 2 |
+
import importlib.util
|
| 3 |
+
import sys
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
from types import ModuleType
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def _import_from_path(file_path: Path) -> ModuleType:
|
| 9 |
+
# We cannot use the module name as-is, after adding it to `sys.modules`,
|
| 10 |
+
# it would also be used for other imports. So, we make a module name that
|
| 11 |
+
# depends on the path for it to be unique using the hex-encoded hash of
|
| 12 |
+
# the path.
|
| 13 |
+
path_hash = "{:x}".format(ctypes.c_size_t(hash(file_path.absolute())).value)
|
| 14 |
+
module_name = path_hash
|
| 15 |
+
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
| 16 |
+
if spec is None:
|
| 17 |
+
raise ImportError(f"Cannot load spec for {module_name} from {file_path}")
|
| 18 |
+
module = importlib.util.module_from_spec(spec)
|
| 19 |
+
if module is None:
|
| 20 |
+
raise ImportError(f"Cannot load module {module_name} from spec")
|
| 21 |
+
sys.modules[module_name] = module
|
| 22 |
+
spec.loader.exec_module(module) # type: ignore
|
| 23 |
+
return module
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
globals().update(vars(_import_from_path(Path(__file__).parent.parent / "__init__.py")))
|
build/torch-stable-abi210-cu126-x86_64-linux/layers.py
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
|
| 4 |
+
from ._ops import ops
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
class SiluAndMul(nn.Module):
|
| 8 |
+
"""An activation function for SwiGLU.
|
| 9 |
+
|
| 10 |
+
The function computes x -> silu(x[:d]) * x[d:] where d = x.shape[-1] // 2.
|
| 11 |
+
|
| 12 |
+
Shapes:
|
| 13 |
+
x: (num_tokens, 2 * d) or (batch_size, seq_len, 2 * d)
|
| 14 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 15 |
+
"""
|
| 16 |
+
|
| 17 |
+
can_torch_compile: bool = True
|
| 18 |
+
|
| 19 |
+
def forward(self, x: torch.Tensor):
|
| 20 |
+
if not x.is_contiguous():
|
| 21 |
+
x = x.contiguous()
|
| 22 |
+
d = x.shape[-1] // 2
|
| 23 |
+
output_shape = x.shape[:-1] + (d,)
|
| 24 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 25 |
+
ops.silu_and_mul(out, x)
|
| 26 |
+
return out
|
| 27 |
+
|
| 28 |
+
class Silu(nn.Module):
|
| 29 |
+
"""An activation function for SiLU.
|
| 30 |
+
|
| 31 |
+
The function computes x -> silu(x).
|
| 32 |
+
|
| 33 |
+
Shapes:
|
| 34 |
+
x: (num_tokens, d) or (batch_size, seq_len, d)
|
| 35 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 36 |
+
"""
|
| 37 |
+
|
| 38 |
+
can_torch_compile: bool = True
|
| 39 |
+
|
| 40 |
+
def forward(self, x: torch.Tensor):
|
| 41 |
+
if not x.is_contiguous():
|
| 42 |
+
x = x.contiguous()
|
| 43 |
+
out = torch.empty_like(x)
|
| 44 |
+
ops.silu(out, x)
|
| 45 |
+
return out
|
| 46 |
+
|
| 47 |
+
class Gelu(nn.Module):
|
| 48 |
+
"""An activation function for GELU.
|
| 49 |
+
|
| 50 |
+
The function computes x -> gelu(x).
|
| 51 |
+
|
| 52 |
+
Shapes:
|
| 53 |
+
x: (num_tokens, d) or (batch_size, seq_len, d)
|
| 54 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 55 |
+
"""
|
| 56 |
+
|
| 57 |
+
can_torch_compile: bool = True
|
| 58 |
+
|
| 59 |
+
def forward(self, x: torch.Tensor):
|
| 60 |
+
if not x.is_contiguous():
|
| 61 |
+
x = x.contiguous()
|
| 62 |
+
out = torch.empty_like(x)
|
| 63 |
+
ops.gelu(out, x)
|
| 64 |
+
return out
|
| 65 |
+
|
| 66 |
+
class GeluTanh(nn.Module):
|
| 67 |
+
"""An activation function for GELU with `tanh` approximation.
|
| 68 |
+
|
| 69 |
+
The function computes x -> gelu_tanh(x).
|
| 70 |
+
|
| 71 |
+
Shapes:
|
| 72 |
+
x: (num_tokens, d) or (batch_size, seq_len, d)
|
| 73 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 74 |
+
"""
|
| 75 |
+
|
| 76 |
+
can_torch_compile: bool = True
|
| 77 |
+
|
| 78 |
+
def forward(self, x: torch.Tensor):
|
| 79 |
+
if not x.is_contiguous():
|
| 80 |
+
x = x.contiguous()
|
| 81 |
+
out = torch.empty_like(x)
|
| 82 |
+
ops.gelu_tanh(out, x)
|
| 83 |
+
return out
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
class MulAndSilu(nn.Module):
|
| 87 |
+
"""An activation function for SwiGLU.
|
| 88 |
+
|
| 89 |
+
The function computes x -> x[:d] * silu(x[d:]) where d = x.shape[-1] // 2.
|
| 90 |
+
|
| 91 |
+
Shapes:
|
| 92 |
+
x: (num_tokens, 2 * d) or (batch_size, seq_len, 2 * d)
|
| 93 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 94 |
+
"""
|
| 95 |
+
|
| 96 |
+
can_torch_compile: bool = True
|
| 97 |
+
|
| 98 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 99 |
+
if not x.is_contiguous():
|
| 100 |
+
x = x.contiguous()
|
| 101 |
+
d = x.shape[-1] // 2
|
| 102 |
+
output_shape = x.shape[:-1] + (d,)
|
| 103 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 104 |
+
ops.mul_and_silu(out, x)
|
| 105 |
+
return out
|
| 106 |
+
|
| 107 |
+
|
| 108 |
+
class GeluAndMul(nn.Module):
|
| 109 |
+
"""An activation function for GeGLU.
|
| 110 |
+
|
| 111 |
+
The function computes x -> GELU(x[:d]) * x[d:] where d = x.shape[-1] // 2.
|
| 112 |
+
|
| 113 |
+
Shapes:
|
| 114 |
+
x: (batch_size, seq_len, 2 * d) or (num_tokens, 2 * d)
|
| 115 |
+
return: (batch_size, seq_len, d) or (num_tokens, d)
|
| 116 |
+
"""
|
| 117 |
+
|
| 118 |
+
can_torch_compile: bool = True
|
| 119 |
+
|
| 120 |
+
def forward(self, x: torch.Tensor):
|
| 121 |
+
if not x.is_contiguous():
|
| 122 |
+
x = x.contiguous()
|
| 123 |
+
d = x.shape[-1] // 2
|
| 124 |
+
output_shape = x.shape[:-1] + (d,)
|
| 125 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 126 |
+
ops.gelu_and_mul(out, x)
|
| 127 |
+
return out
|
| 128 |
+
|
| 129 |
+
|
| 130 |
+
class GeluTanhAndMul(nn.Module):
|
| 131 |
+
can_torch_compile: bool = True
|
| 132 |
+
|
| 133 |
+
def forward(self, x: torch.Tensor):
|
| 134 |
+
if not x.is_contiguous():
|
| 135 |
+
x = x.contiguous()
|
| 136 |
+
d = x.shape[-1] // 2
|
| 137 |
+
output_shape = x.shape[:-1] + (d,)
|
| 138 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 139 |
+
ops.gelu_tanh_and_mul(out, x)
|
| 140 |
+
return out
|
| 141 |
+
|
| 142 |
+
|
| 143 |
+
class FatreluAndMul(nn.Module):
|
| 144 |
+
"""An activation function for FATReLU.
|
| 145 |
+
|
| 146 |
+
The function computes x -> FATReLU(x[:d]) * x[d:] where
|
| 147 |
+
d = x.shape[-1] // 2.
|
| 148 |
+
This is used in openbmb/MiniCPM-S-1B-sft.
|
| 149 |
+
|
| 150 |
+
Shapes:
|
| 151 |
+
x: (num_tokens, 2 * d) or (batch_size, seq_len, 2 * d)
|
| 152 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 153 |
+
"""
|
| 154 |
+
|
| 155 |
+
can_torch_compile: bool = True
|
| 156 |
+
|
| 157 |
+
def __init__(self, threshold: float = 0.0):
|
| 158 |
+
super().__init__()
|
| 159 |
+
self.threshold = threshold
|
| 160 |
+
|
| 161 |
+
def forward(self, x: torch.Tensor):
|
| 162 |
+
if not x.is_contiguous():
|
| 163 |
+
x = x.contiguous()
|
| 164 |
+
d = x.shape[-1] // 2
|
| 165 |
+
output_shape = x.shape[:-1] + (d,)
|
| 166 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 167 |
+
ops.fatrelu_and_mul(out, x, self.threshold)
|
| 168 |
+
return out
|
| 169 |
+
|
| 170 |
+
|
| 171 |
+
class FastGELU(nn.Module):
|
| 172 |
+
can_torch_compile: bool = True
|
| 173 |
+
|
| 174 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 175 |
+
if not x.is_contiguous():
|
| 176 |
+
x = x.contiguous()
|
| 177 |
+
out = torch.empty_like(x)
|
| 178 |
+
ops.gelu_fast(out, x)
|
| 179 |
+
return out
|
| 180 |
+
|
| 181 |
+
|
| 182 |
+
class NewGELU(nn.Module):
|
| 183 |
+
can_torch_compile: bool = True
|
| 184 |
+
|
| 185 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 186 |
+
if not x.is_contiguous():
|
| 187 |
+
x = x.contiguous()
|
| 188 |
+
out = torch.empty_like(x)
|
| 189 |
+
ops.gelu_new(out, x)
|
| 190 |
+
return out
|
| 191 |
+
|
| 192 |
+
|
| 193 |
+
class QuickGELU(nn.Module):
|
| 194 |
+
can_torch_compile: bool = True
|
| 195 |
+
|
| 196 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 197 |
+
if not x.is_contiguous():
|
| 198 |
+
x = x.contiguous()
|
| 199 |
+
out = torch.empty_like(x)
|
| 200 |
+
ops.gelu_quick(out, x)
|
| 201 |
+
return out
|
build/torch-stable-abi210-cu126-x86_64-linux/metadata.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "activation",
|
| 3 |
+
"id": "_activation_cuda_2f7c452",
|
| 4 |
+
"version": 1,
|
| 5 |
+
"license": "Apache-2.0",
|
| 6 |
+
"python-depends": [],
|
| 7 |
+
"backend": {
|
| 8 |
+
"type": "cuda",
|
| 9 |
+
"archs": [
|
| 10 |
+
"7.0",
|
| 11 |
+
"7.2",
|
| 12 |
+
"7.5",
|
| 13 |
+
"8.0",
|
| 14 |
+
"8.6",
|
| 15 |
+
"8.7",
|
| 16 |
+
"8.9",
|
| 17 |
+
"9.0+PTX"
|
| 18 |
+
]
|
| 19 |
+
},
|
| 20 |
+
"digest": {
|
| 21 |
+
"algorithm": "sha256",
|
| 22 |
+
"files": {
|
| 23 |
+
"__init__.py": "NQdhY7p9BPoMw0NQodMKFTPSQXBlrsX3yUdP8MEHyH0=",
|
| 24 |
+
"_activation_cuda_2f7c452.abi3.so": "tzEF84YHJAnTyi77AkQi/X4x7QhuT3wwjCFm3US2tfs=",
|
| 25 |
+
"_ops.py": "q9xZtwPjdsRciOCA5aQFDtsTQnV9SNcvAC74ivbShuM=",
|
| 26 |
+
"activation/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 27 |
+
"layers.py": "wWX07+W0BNFA7RyCE0jYH7aa2U3B8aiiIpu/Q4xsE0w="
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"provenance": {
|
| 31 |
+
"kernel-builder": {
|
| 32 |
+
"version": "0.17.0-dev0",
|
| 33 |
+
"sha": "81580bb92577f2f7228661ca2a221fc052375709",
|
| 34 |
+
"dirty": false
|
| 35 |
+
},
|
| 36 |
+
"kernel": {
|
| 37 |
+
"sha": "2f7c452801641012cf6aa9bdf042431457024033",
|
| 38 |
+
"dirty": false
|
| 39 |
+
}
|
| 40 |
+
}
|
| 41 |
+
}
|
build/torch-stable-abi210-cu126-x86_64-linux/metadata.json.sigstore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHSjCCBtCgAwIBAgIUIpIIzQvY1vZnLspuNow7Fo5ZBwQwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzA5MTU1MTQyWhcNMjYwNzA5MTYwMTQyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEW5MDKwTxD2ecD+kg/CRfsjUP4PE3/JYkPF43M1iCuLCiWghwdN0yjW72ipZK9cuXAkRvXQ9GDmhaZIn02uZznaOCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUfd+HfVZXCcFyb50qULJq0uAGAccwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoMmY3YzQ1MjgwMTY0MTAxMmNmNmFhOWJkZjA0MjQzMTQ1NzAyNDAzMzATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoMmY3YzQ1MjgwMTY0MTAxMmNmNmFhOWJkZjA0MjQzMTQ1NzAyNDAzMzAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoMmY3YzQ1MjgwMTY0MTAxMmNmNmFhOWJkZjA0MjQzMTQ1NzAyNDAzMzAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDJmN2M0NTI4MDE2NDEwMTJjZjZhYTliZGYwNDI0MzE0NTcwMjQwMzMwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjkwMzA3NzExMDMvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABn0eT5CsAAAQDAEYwRAIgalweqW6nEJUV1ai9EEc4pSmR8o/JjbIu6Mq70FdVeGACIFtyEpmHkAuz98V58/VjA507eHbcjRN8Oiw7FcQPJyfXMAoGCCqGSM49BAMDA2gAMGUCMCSduCp6K0IL0qrwe53m4QlW0gmUVqvxAlqreU+qEVEOEoOr1PPDxHFG4UhVjWruVAIxAOT+rWY2tlTgriWY5Ib6Lyn4ew1zBuunFsfBO95ZgT3PwrJhYPi9Z+OnveMQmr7nNA=="},"tlogEntries":[{"logIndex":"2129302897","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1783612302","inclusionPromise":{"signedEntryTimestamp":"MEUCICrxacShG6XZyJ/TJNBxnGLm610z9YlpAAIvKU69n9fuAiEA/WAP9iS1RbvZC7sABLyO9BStdcmJgDQ8yF2YR9AvwgE="},"inclusionProof":{"logIndex":"2007398635","rootHash":"dKNmg1yShbrFSkHg9skDBxPyvlelxDAREg8U5imS1+8=","treeSize":"2007398678","hashes":["y/nv+gEqqdgcRfrWWw+YIZyAZFo7Y0c7ZBWhBQETWCs=","mITr1QGpert4D214uf9wymA/hkzQGS1SiOA2T5jxykI=","ubHbeiPY/hGbtNilOllM9khkIn/FwiR1O23CIK76ibc=","aFU8TJprN7e1Kl15oBXk5MX4KdSAdPwgVuaStE8gibg=","pkfkrGC/cRG9uBN6QU9Z8OCRt82k3QVBYlNz/0pF6SA=","4V7F1xphvXRTUfX1Pg7n4sdpRVHhs3oET1oe97JGFDc=","CbeTSflbPRIlru0NZ4jkElWKw2sJF1Co3FqAbpRbgqo=","AaS1rMF9OrO+Oztf9bGGAvRbFUVJfDimzM4+y82j8rU=","h/fPKPRhm5KdStB6PeYETgODWdA7JGqqnne29SL5YiM=","//tgd4n3O1lkKeaDYqSROJWpI6U4CTDa3qN2h+aaErM=","QSToMPx5TqhI36VW0It7C6G8d89Rw+K0SvD1mjtgUs4=","wDuWNODPXUN9TzDUDyffEW6I0L6CzB5JluV1OrTAMDs=","Pl/PPrvg1MauND83htOpSHMRjJM3PGHEnGC8w205Rqo=","CCu7OkQW6+npAh6Tygn9JYdKku6AUboDosZP3sI7yKQ=","uwnh4tLrO/3+ywQ63CnFW6mU2V+y+Db8CobG3g6S0Hk=","Kezfh1XcoOp9KAwr7OWyF8C7cr/mZBPGqKHTdO0BnDs=","LD5Ws0n7JWm8O7qGvHNSZug32ByFM1WblCpsDJh5M6o=","f8knrc4LOu/X8scT5SBvEgFJSd7vZZ0LzSaC0Z3lm/U=","WajL3ZhY6ZX9meV3VTH9TkrbM31OF4o6+7foL0Uf6PI=","cyKMKBvHkQtwb2xR5svh+YppANOVdn7X8t4DuKMxICA=","+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2007398678\ndKNmg1yShbrFSkHg9skDBxPyvlelxDAREg8U5imS1+8=\n\n— rekor.sigstore.dev wNI9ajBFAiBfxPMIcT0fGgdycJFUrqvVg7szljdFXO8U3PEXpKfnUgIhAKswmUN3vG7f9Snfm6AYMQVb8NxyFzsMaT3HqYu2UhQ+\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIyMDdlMjlkOWRmMTgzOWJjOTIwMTU0ZmViMjFiZDI2ZmY5NDI1N2QyNGUwYjUwOTdiMDY4NzhkYzc0ODdiYzI2In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQUdsa0tseUtzOE54ckpTcVZmdW9ydzFjMTVrN1ZVaXdyZk83cVJJbjVTUEFpRUE3cS9aN1RRUFVtNDE1VitYRDZNc1hCV1ZiL3ZVNldXZjcvZEJkSng0N1EwPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRha05EUW5SRFowRjNTVUpCWjBsVlNYQkpTWHBSZGxreGRscHVUSE53ZFU1dmR6ZEdielZhUW5kUmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVRWTlZGVXhUVlJSZVZkb1kwNU5hbGwzVG5wQk5VMVVXWGROVkZGNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZYTlUxRVMzZFVlRVF5WldORUsydG5MME5TWm5OcVZWQTBVRVV6TDBwWmExQkdORE1LVFRGcFEzVk1RMmxYWjJoM1pFNHdlV3BYTnpKcGNGcExPV04xV0VGclVuWllVVGxIUkcxb1lWcEpiakF5ZFZwNmJtRlBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZtWkN0SUNtWldXbGhEWTBaNVlqVXdjVlZNU25Fd2RVRkhRV05qZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU5iVmt6V1hwUk1VMXFaM2ROVkZrd1RWUkJlRTF0VG0xT2JVWm9DazlYU210YWFrRXdUV3BSZWsxVVVURk9la0Y1VGtSQmVrMTZRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDF0V1ROWmVsRXhUV3BuZDAxVVdUQk5WRUY0VFcxT2JVNXRSbWhQVjBwcldtcEJNRTFxVVhvS1RWUlJNVTU2UVhsT1JFRjZUWHBCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDF0V1ROWmVsRXhUV3BuZDAxVVdUQk5WRUY0VFcxT2JVNXRSbWdLVDFkS2ExcHFRVEJOYWxGNlRWUlJNVTU2UVhsT1JFRjZUWHBCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUktiVTR5VFRBS1RsUkpORTFFUlRKT1JFVjNUVlJLYWxwcVdtaFpWR3hwV2tkWmQwNUVTVEJOZWtVd1RsUmpkMDFxVVhkTmVrMTNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW10M1RYcEJNMDU2UlhoTlJFMTJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNHdaVlExUTNOQlFVRlJSQXBCUlZsM1VrRkpaMkZzZDJWeFZ6WnVSVXBWVmpGaGFUbEZSV00wY0ZOdFVqaHZMMHBxWWtsMU5rMXhOekJHWkZabFIwRkRTVVowZVVWd2JVaHJRWFY2Q2prNFZqVTRMMVpxUVRVd04yVklZbU5xVWs0NFQybDNOMFpqVVZCS2VXWllUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlaMEZOUjFWRFRVTlRaSFZEY0RZS1N6QkpUREJ4Y25kbE5UTnRORkZzVnpCbmJWVldjWFo0UVd4eGNtVlZLM0ZGVmtWUFJXOVBjakZRVUVSNFNFWkhORlZvVm1wWGNuVldRVWw0UVU5VUt3cHlWMWt5ZEd4VVozSnBWMWsxU1dJMlRIbHVOR1YzTVhwQ2RYVnVSbk5tUWs4NU5WcG5WRE5RZDNKS2FGbFFhVGxhSzA5dWRtVk5VVzF5TjI1T1FUMDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgKBpwEiX/WOExUbXmHRIhKuiiLuICnTJoBeD3R/G7nyMCFQD1VhVQU44M1Tno52gJLm+zP26YVxgPMjAyNjA3MDkxNTUxNDJaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDcwOTE1NTE0MlowLwYJKoZIhvcNAQkEMSIEIL/eMdv+HLbTaTE7L8vHsy6LDLPHWL/wbCoJJIERdm2rMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMARITbjrdb2UihT9MP2fnEmFnAuXUbr6A36on+zax4pYh/Ti3alvvR4jQIRwQciA5QIwSvc+inCkkkEVb9lQbGRe1YIL0UlRlSipP27x9IpTxN8lzH5XHm7CvpnFPqLHXMxv"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"IH4p2d8YObySAVT+shvSb/lCV9JOC1CXsGh43HSHvCY="},"signature":"MEUCIAGlkKlyKs8NxrJSqVfuorw1c15k7VUiwrfO7qRIn5SPAiEA7q/Z7TQPUm415V+XD6MsXBWVb/vU6WWf7/dBdJx47Q0="}}
|
build/torch-stable-abi210-cu128-x86_64-linux/__init__.py
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
|
| 3 |
+
from ._ops import ops
|
| 4 |
+
|
| 5 |
+
from . import layers
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def silu_and_mul(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 9 |
+
ops.silu_and_mul(out, x)
|
| 10 |
+
return out
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
def mul_and_silu(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 14 |
+
ops.mul_and_silu(out, x)
|
| 15 |
+
return out
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def gelu_and_mul(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 19 |
+
ops.gelu_and_mul(out, x)
|
| 20 |
+
return out
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def gelu_tanh_and_mul(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 24 |
+
ops.gelu_tanh_and_mul(out, x)
|
| 25 |
+
return out
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def fatrelu_and_mul(out: torch.Tensor, x: torch.Tensor, threshold: float = 0.0) -> torch.Tensor:
|
| 29 |
+
ops.fatrelu_and_mul(out, x, threshold)
|
| 30 |
+
return out
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
def gelu(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 34 |
+
ops.gelu(out, x)
|
| 35 |
+
return out
|
| 36 |
+
|
| 37 |
+
def silu(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 38 |
+
ops.silu(out, x)
|
| 39 |
+
return out
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def gelu_tanh(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 43 |
+
ops.gelu_tanh(out, x)
|
| 44 |
+
return out
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
def gelu_fast(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 48 |
+
ops.gelu_fast(out, x)
|
| 49 |
+
return out
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
def gelu_new(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 53 |
+
ops.gelu_new(out, x)
|
| 54 |
+
return out
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
def gelu_quick(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 58 |
+
ops.gelu_quick(out, x)
|
| 59 |
+
return out
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
__all__ = [
|
| 63 |
+
"silu_and_mul",
|
| 64 |
+
"mul_and_silu",
|
| 65 |
+
"gelu_and_mul",
|
| 66 |
+
"gelu_tanh_and_mul",
|
| 67 |
+
"fatrelu_and_mul",
|
| 68 |
+
"gelu_fast",
|
| 69 |
+
"gelu_new",
|
| 70 |
+
"gelu_quick",
|
| 71 |
+
"gelu_tanh",
|
| 72 |
+
"silu",
|
| 73 |
+
"gelu",
|
| 74 |
+
"layers",
|
| 75 |
+
]
|
build/torch-stable-abi210-cu128-x86_64-linux/_activation_cuda_2f7c452.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:06e673344bb8a9fdcbc772403ad784e1e652371b41adadc9df230118c2bda83d
|
| 3 |
+
size 2439096
|
build/torch-stable-abi210-cu128-x86_64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _activation_cuda_2f7c452
|
| 3 |
+
ops = torch.ops._activation_cuda_2f7c452
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_activation_cuda_2f7c452::{op_name}"
|
build/torch-stable-abi210-cu128-x86_64-linux/activation/__init__.py
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import ctypes
|
| 2 |
+
import importlib.util
|
| 3 |
+
import sys
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
from types import ModuleType
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def _import_from_path(file_path: Path) -> ModuleType:
|
| 9 |
+
# We cannot use the module name as-is, after adding it to `sys.modules`,
|
| 10 |
+
# it would also be used for other imports. So, we make a module name that
|
| 11 |
+
# depends on the path for it to be unique using the hex-encoded hash of
|
| 12 |
+
# the path.
|
| 13 |
+
path_hash = "{:x}".format(ctypes.c_size_t(hash(file_path.absolute())).value)
|
| 14 |
+
module_name = path_hash
|
| 15 |
+
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
| 16 |
+
if spec is None:
|
| 17 |
+
raise ImportError(f"Cannot load spec for {module_name} from {file_path}")
|
| 18 |
+
module = importlib.util.module_from_spec(spec)
|
| 19 |
+
if module is None:
|
| 20 |
+
raise ImportError(f"Cannot load module {module_name} from spec")
|
| 21 |
+
sys.modules[module_name] = module
|
| 22 |
+
spec.loader.exec_module(module) # type: ignore
|
| 23 |
+
return module
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
globals().update(vars(_import_from_path(Path(__file__).parent.parent / "__init__.py")))
|
build/torch-stable-abi210-cu128-x86_64-linux/layers.py
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
|
| 4 |
+
from ._ops import ops
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
class SiluAndMul(nn.Module):
|
| 8 |
+
"""An activation function for SwiGLU.
|
| 9 |
+
|
| 10 |
+
The function computes x -> silu(x[:d]) * x[d:] where d = x.shape[-1] // 2.
|
| 11 |
+
|
| 12 |
+
Shapes:
|
| 13 |
+
x: (num_tokens, 2 * d) or (batch_size, seq_len, 2 * d)
|
| 14 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 15 |
+
"""
|
| 16 |
+
|
| 17 |
+
can_torch_compile: bool = True
|
| 18 |
+
|
| 19 |
+
def forward(self, x: torch.Tensor):
|
| 20 |
+
if not x.is_contiguous():
|
| 21 |
+
x = x.contiguous()
|
| 22 |
+
d = x.shape[-1] // 2
|
| 23 |
+
output_shape = x.shape[:-1] + (d,)
|
| 24 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 25 |
+
ops.silu_and_mul(out, x)
|
| 26 |
+
return out
|
| 27 |
+
|
| 28 |
+
class Silu(nn.Module):
|
| 29 |
+
"""An activation function for SiLU.
|
| 30 |
+
|
| 31 |
+
The function computes x -> silu(x).
|
| 32 |
+
|
| 33 |
+
Shapes:
|
| 34 |
+
x: (num_tokens, d) or (batch_size, seq_len, d)
|
| 35 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 36 |
+
"""
|
| 37 |
+
|
| 38 |
+
can_torch_compile: bool = True
|
| 39 |
+
|
| 40 |
+
def forward(self, x: torch.Tensor):
|
| 41 |
+
if not x.is_contiguous():
|
| 42 |
+
x = x.contiguous()
|
| 43 |
+
out = torch.empty_like(x)
|
| 44 |
+
ops.silu(out, x)
|
| 45 |
+
return out
|
| 46 |
+
|
| 47 |
+
class Gelu(nn.Module):
|
| 48 |
+
"""An activation function for GELU.
|
| 49 |
+
|
| 50 |
+
The function computes x -> gelu(x).
|
| 51 |
+
|
| 52 |
+
Shapes:
|
| 53 |
+
x: (num_tokens, d) or (batch_size, seq_len, d)
|
| 54 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 55 |
+
"""
|
| 56 |
+
|
| 57 |
+
can_torch_compile: bool = True
|
| 58 |
+
|
| 59 |
+
def forward(self, x: torch.Tensor):
|
| 60 |
+
if not x.is_contiguous():
|
| 61 |
+
x = x.contiguous()
|
| 62 |
+
out = torch.empty_like(x)
|
| 63 |
+
ops.gelu(out, x)
|
| 64 |
+
return out
|
| 65 |
+
|
| 66 |
+
class GeluTanh(nn.Module):
|
| 67 |
+
"""An activation function for GELU with `tanh` approximation.
|
| 68 |
+
|
| 69 |
+
The function computes x -> gelu_tanh(x).
|
| 70 |
+
|
| 71 |
+
Shapes:
|
| 72 |
+
x: (num_tokens, d) or (batch_size, seq_len, d)
|
| 73 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 74 |
+
"""
|
| 75 |
+
|
| 76 |
+
can_torch_compile: bool = True
|
| 77 |
+
|
| 78 |
+
def forward(self, x: torch.Tensor):
|
| 79 |
+
if not x.is_contiguous():
|
| 80 |
+
x = x.contiguous()
|
| 81 |
+
out = torch.empty_like(x)
|
| 82 |
+
ops.gelu_tanh(out, x)
|
| 83 |
+
return out
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
class MulAndSilu(nn.Module):
|
| 87 |
+
"""An activation function for SwiGLU.
|
| 88 |
+
|
| 89 |
+
The function computes x -> x[:d] * silu(x[d:]) where d = x.shape[-1] // 2.
|
| 90 |
+
|
| 91 |
+
Shapes:
|
| 92 |
+
x: (num_tokens, 2 * d) or (batch_size, seq_len, 2 * d)
|
| 93 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 94 |
+
"""
|
| 95 |
+
|
| 96 |
+
can_torch_compile: bool = True
|
| 97 |
+
|
| 98 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 99 |
+
if not x.is_contiguous():
|
| 100 |
+
x = x.contiguous()
|
| 101 |
+
d = x.shape[-1] // 2
|
| 102 |
+
output_shape = x.shape[:-1] + (d,)
|
| 103 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 104 |
+
ops.mul_and_silu(out, x)
|
| 105 |
+
return out
|
| 106 |
+
|
| 107 |
+
|
| 108 |
+
class GeluAndMul(nn.Module):
|
| 109 |
+
"""An activation function for GeGLU.
|
| 110 |
+
|
| 111 |
+
The function computes x -> GELU(x[:d]) * x[d:] where d = x.shape[-1] // 2.
|
| 112 |
+
|
| 113 |
+
Shapes:
|
| 114 |
+
x: (batch_size, seq_len, 2 * d) or (num_tokens, 2 * d)
|
| 115 |
+
return: (batch_size, seq_len, d) or (num_tokens, d)
|
| 116 |
+
"""
|
| 117 |
+
|
| 118 |
+
can_torch_compile: bool = True
|
| 119 |
+
|
| 120 |
+
def forward(self, x: torch.Tensor):
|
| 121 |
+
if not x.is_contiguous():
|
| 122 |
+
x = x.contiguous()
|
| 123 |
+
d = x.shape[-1] // 2
|
| 124 |
+
output_shape = x.shape[:-1] + (d,)
|
| 125 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 126 |
+
ops.gelu_and_mul(out, x)
|
| 127 |
+
return out
|
| 128 |
+
|
| 129 |
+
|
| 130 |
+
class GeluTanhAndMul(nn.Module):
|
| 131 |
+
can_torch_compile: bool = True
|
| 132 |
+
|
| 133 |
+
def forward(self, x: torch.Tensor):
|
| 134 |
+
if not x.is_contiguous():
|
| 135 |
+
x = x.contiguous()
|
| 136 |
+
d = x.shape[-1] // 2
|
| 137 |
+
output_shape = x.shape[:-1] + (d,)
|
| 138 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 139 |
+
ops.gelu_tanh_and_mul(out, x)
|
| 140 |
+
return out
|
| 141 |
+
|
| 142 |
+
|
| 143 |
+
class FatreluAndMul(nn.Module):
|
| 144 |
+
"""An activation function for FATReLU.
|
| 145 |
+
|
| 146 |
+
The function computes x -> FATReLU(x[:d]) * x[d:] where
|
| 147 |
+
d = x.shape[-1] // 2.
|
| 148 |
+
This is used in openbmb/MiniCPM-S-1B-sft.
|
| 149 |
+
|
| 150 |
+
Shapes:
|
| 151 |
+
x: (num_tokens, 2 * d) or (batch_size, seq_len, 2 * d)
|
| 152 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 153 |
+
"""
|
| 154 |
+
|
| 155 |
+
can_torch_compile: bool = True
|
| 156 |
+
|
| 157 |
+
def __init__(self, threshold: float = 0.0):
|
| 158 |
+
super().__init__()
|
| 159 |
+
self.threshold = threshold
|
| 160 |
+
|
| 161 |
+
def forward(self, x: torch.Tensor):
|
| 162 |
+
if not x.is_contiguous():
|
| 163 |
+
x = x.contiguous()
|
| 164 |
+
d = x.shape[-1] // 2
|
| 165 |
+
output_shape = x.shape[:-1] + (d,)
|
| 166 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 167 |
+
ops.fatrelu_and_mul(out, x, self.threshold)
|
| 168 |
+
return out
|
| 169 |
+
|
| 170 |
+
|
| 171 |
+
class FastGELU(nn.Module):
|
| 172 |
+
can_torch_compile: bool = True
|
| 173 |
+
|
| 174 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 175 |
+
if not x.is_contiguous():
|
| 176 |
+
x = x.contiguous()
|
| 177 |
+
out = torch.empty_like(x)
|
| 178 |
+
ops.gelu_fast(out, x)
|
| 179 |
+
return out
|
| 180 |
+
|
| 181 |
+
|
| 182 |
+
class NewGELU(nn.Module):
|
| 183 |
+
can_torch_compile: bool = True
|
| 184 |
+
|
| 185 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 186 |
+
if not x.is_contiguous():
|
| 187 |
+
x = x.contiguous()
|
| 188 |
+
out = torch.empty_like(x)
|
| 189 |
+
ops.gelu_new(out, x)
|
| 190 |
+
return out
|
| 191 |
+
|
| 192 |
+
|
| 193 |
+
class QuickGELU(nn.Module):
|
| 194 |
+
can_torch_compile: bool = True
|
| 195 |
+
|
| 196 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 197 |
+
if not x.is_contiguous():
|
| 198 |
+
x = x.contiguous()
|
| 199 |
+
out = torch.empty_like(x)
|
| 200 |
+
ops.gelu_quick(out, x)
|
| 201 |
+
return out
|
build/torch-stable-abi210-cu128-x86_64-linux/metadata.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "activation",
|
| 3 |
+
"id": "_activation_cuda_2f7c452",
|
| 4 |
+
"version": 1,
|
| 5 |
+
"license": "Apache-2.0",
|
| 6 |
+
"python-depends": [],
|
| 7 |
+
"backend": {
|
| 8 |
+
"type": "cuda",
|
| 9 |
+
"archs": [
|
| 10 |
+
"10.0",
|
| 11 |
+
"10.1",
|
| 12 |
+
"12.0+PTX",
|
| 13 |
+
"7.0",
|
| 14 |
+
"7.2",
|
| 15 |
+
"7.5",
|
| 16 |
+
"8.0",
|
| 17 |
+
"8.6",
|
| 18 |
+
"8.7",
|
| 19 |
+
"8.9",
|
| 20 |
+
"9.0"
|
| 21 |
+
]
|
| 22 |
+
},
|
| 23 |
+
"digest": {
|
| 24 |
+
"algorithm": "sha256",
|
| 25 |
+
"files": {
|
| 26 |
+
"__init__.py": "NQdhY7p9BPoMw0NQodMKFTPSQXBlrsX3yUdP8MEHyH0=",
|
| 27 |
+
"_activation_cuda_2f7c452.abi3.so": "BuZzNEu4qf3Lx3JAOteE4eZSNxtBra3J3yMBGMK9qD0=",
|
| 28 |
+
"_ops.py": "q9xZtwPjdsRciOCA5aQFDtsTQnV9SNcvAC74ivbShuM=",
|
| 29 |
+
"activation/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 30 |
+
"layers.py": "wWX07+W0BNFA7RyCE0jYH7aa2U3B8aiiIpu/Q4xsE0w="
|
| 31 |
+
}
|
| 32 |
+
},
|
| 33 |
+
"provenance": {
|
| 34 |
+
"kernel-builder": {
|
| 35 |
+
"version": "0.17.0-dev0",
|
| 36 |
+
"sha": "81580bb92577f2f7228661ca2a221fc052375709",
|
| 37 |
+
"dirty": false
|
| 38 |
+
},
|
| 39 |
+
"kernel": {
|
| 40 |
+
"sha": "2f7c452801641012cf6aa9bdf042431457024033",
|
| 41 |
+
"dirty": false
|
| 42 |
+
}
|
| 43 |
+
}
|
| 44 |
+
}
|
build/torch-stable-abi210-cu128-x86_64-linux/metadata.json.sigstore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHTDCCBtGgAwIBAgIUOWf8hX9JLBDabtkLpEQI+VRbS+4wCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzA5MTU1MTQzWhcNMjYwNzA5MTYwMTQzWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETiS0XPM2unaVH6vMO7b7OYXmplmpx54btCt6PIbTR8p+Avxjq/IlfSWsDRHRc381lVhElIFzfpyj02iIkJGJTqOCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUFSJ0NTKO39tD3KAX51vtxnTcjaowHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoMmY3YzQ1MjgwMTY0MTAxMmNmNmFhOWJkZjA0MjQzMTQ1NzAyNDAzMzATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoMmY3YzQ1MjgwMTY0MTAxMmNmNmFhOWJkZjA0MjQzMTQ1NzAyNDAzMzAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoMmY3YzQ1MjgwMTY0MTAxMmNmNmFhOWJkZjA0MjQzMTQ1NzAyNDAzMzAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDJmN2M0NTI4MDE2NDEwMTJjZjZhYTliZGYwNDI0MzE0NTcwMjQwMzMwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjkwMzA3NzExMDMvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABn0eT6A0AAAQDAEcwRQIhALgGp2wgBNpgM4/tcsyKNp5yk3rK/JjBOYtQIGI6D3YbAiB1a7jvKG3YUxuJiF5neI3CAjvdNp3LZOvloNdd5jZklzAKBggqhkjOPQQDAwNpADBmAjEA6fyQN2ra8GTr/x6YMevFsfdPEfwyey3qTJcPErChd9Co8hjIRSgZtLK7XJXFo4cTAjEA2OXREx0HDii4hTM5U+89eWUiagP77qVtGqZwNAYm/5lO4SyYGOnKv2gSbrLz6g02"},"tlogEntries":[{"logIndex":"2129303114","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1783612303","inclusionPromise":{"signedEntryTimestamp":"MEQCIBaeoUqavAXKxFBHcztDYZ/idr8SX0A43PvSGqulizxWAiAJEKutJvGeWLbqFUiOMds8X9191kWeOiQUNuqN3C5WaQ=="},"inclusionProof":{"logIndex":"2007398852","rootHash":"RXDODsAkmHzzZdNWgD5YH1HupuCss4RslCxjEd5KfQc=","treeSize":"2007398881","hashes":["Orv2P9645KPvPc410Txukcmf/LgoiatiuBV4pypgH24=","Rd/UO72l0N2az1VuZWxDb/XgsLm8TNlcZKUzHhE4TrA=","rPzWY/PYKvDfEhVcuuw33LYMi64pjelriHFcbsA3w18=","XonGKPUJ0lQEV4tBBMWRjCNRBXIDDdN/T7ku4r0NlnQ=","DI8tg6g7AOqdDfX2o1N/xUuIm6RNlBv28lWv3iKPREQ=","Pe+u+0aWRo8k2AqRTyxWbP8pQyIZwtNtrZdYrzlsx1c=","n+gBcnJyq2S7um64LaqEunM8L6MFp0YEafx3Qfv2sI0=","cFnsuYjXZGPaT10WWsKIa4HYzJPzePZis+nGlULG+cc=","ZVl7cAcFo2s35ZoLtNG96eTJvhhd90W6LwS22w1ph9Y=","//tgd4n3O1lkKeaDYqSROJWpI6U4CTDa3qN2h+aaErM=","QSToMPx5TqhI36VW0It7C6G8d89Rw+K0SvD1mjtgUs4=","wDuWNODPXUN9TzDUDyffEW6I0L6CzB5JluV1OrTAMDs=","Pl/PPrvg1MauND83htOpSHMRjJM3PGHEnGC8w205Rqo=","CCu7OkQW6+npAh6Tygn9JYdKku6AUboDosZP3sI7yKQ=","uwnh4tLrO/3+ywQ63CnFW6mU2V+y+Db8CobG3g6S0Hk=","Kezfh1XcoOp9KAwr7OWyF8C7cr/mZBPGqKHTdO0BnDs=","LD5Ws0n7JWm8O7qGvHNSZug32ByFM1WblCpsDJh5M6o=","f8knrc4LOu/X8scT5SBvEgFJSd7vZZ0LzSaC0Z3lm/U=","WajL3ZhY6ZX9meV3VTH9TkrbM31OF4o6+7foL0Uf6PI=","cyKMKBvHkQtwb2xR5svh+YppANOVdn7X8t4DuKMxICA=","+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2007398881\nRXDODsAkmHzzZdNWgD5YH1HupuCss4RslCxjEd5KfQc=\n\n— rekor.sigstore.dev wNI9ajBFAiBy52+bZe7OrmgFvCdzRPirvN4i+EOTBXNl3lBqXbnJqQIhAO2nTNBlELJq0Bgjinr6qav3NftCneREe3+II9GzUZeW\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJhOTMxMDU0OWI3ZTY5MGFmOTE2ZWE5NzI5ODEyNmNhMTg0NjYxYTYzM2E2YjA4ODRjYWRmMTY1NWNjNTQ5MDJmIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQVFpdHErSTNaajhNUHhsTzF4bG8xRWJoVUFqTjNSNmtrMGtBVFdoYm80NkFpRUFxbmt6SCtuRDJmMzFCMXFhelpNdC9mNGd2YUJ6emVwaEdwcE4xTkh6Y05NPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFVSRU5EUW5SSFowRjNTVUpCWjBsVlQxZG1PR2hZT1VwTVFrUmhZblJyVEhCRlVVa3JWbEppVXlzMGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVRWTlZGVXhUVlJSZWxkb1kwNU5hbGwzVG5wQk5VMVVXWGROVkZGNlYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZVYVZNd1dGQk5NblZ1WVZaSU5uWk5UemRpTjA5WldHMXdiRzF3ZURVMFluUkRkRFlLVUVsaVZGSTRjQ3RCZG5ocWNTOUpiR1pUVjNORVVraFNZek00TVd4V2FFVnNTVVo2Wm5CNWFqQXlhVWxyU2tkS1ZIRlBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZHVTBvd0NrNVVTMDh6T1hSRU0wdEJXRFV4ZG5SNGJsUmphbUZ2ZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU5iVmt6V1hwUk1VMXFaM2ROVkZrd1RWUkJlRTF0VG0xT2JVWm9DazlYU210YWFrRXdUV3BSZWsxVVVURk9la0Y1VGtSQmVrMTZRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDF0V1ROWmVsRXhUV3BuZDAxVVdUQk5WRUY0VFcxT2JVNXRSbWhQVjBwcldtcEJNRTFxVVhvS1RWUlJNVTU2UVhsT1JFRjZUWHBCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDF0V1ROWmVsRXhUV3BuZDAxVVdUQk5WRUY0VFcxT2JVNXRSbWdLVDFkS2ExcHFRVEJOYWxGNlRWUlJNVTU2UVhsT1JFRjZUWHBCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUktiVTR5VFRBS1RsUkpORTFFUlRKT1JFVjNUVlJLYWxwcVdtaFpWR3hwV2tkWmQwNUVTVEJOZWtVd1RsUmpkMDFxVVhkTmVrMTNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW10M1RYcEJNMDU2UlhoTlJFMTJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNHdaVlEyUVRCQlFVRlJSQXBCUldOM1VsRkphRUZNWjBkd01uZG5RazV3WjAwMEwzUmpjM2xMVG5BMWVXc3pja3N2U21wQ1QxbDBVVWxIU1RaRU0xbGlRV2xDTVdFM2FuWkxSek5aQ2xWNGRVcHBSalZ1WlVrelEwRnFkbVJPY0ROTVdrOTJiRzlPWkdRMWFscHJiSHBCUzBKblozRm9hMnBQVUZGUlJFRjNUbkJCUkVKdFFXcEZRVFptZVZFS1RqSnlZVGhIVkhJdmVEWlpUV1YyUm5ObVpGQkZabmQ1WlhremNWUktZMUJGY2tOb1pEbERiemhvYWtsU1UyZGFkRXhMTjFoS1dFWnZOR05VUVdwRlFRb3lUMWhTUlhnd1NFUnBhVFJvVkUwMVZTczRPV1ZYVldsaFoxQTNOM0ZXZEVkeFduZE9RVmx0THpWc1R6UlRlVmxIVDI1TGRqSm5VMkp5VEhvMlp6QXlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgDN6OCv9soshTadsnO0l37axKwDF78FC4O5xYcdJy0xcCFFv4yCwGTrFdfg73dUdOc8+1AYGxGA8yMDI2MDcwOTE1NTE0M1owAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdswggHXAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwNzA5MTU1MTQzWjAvBgkqhkiG9w0BCQQxIgQgIaAAmpQ2OpsJNmgPBBgr475uraqDzG5kzqqYS0GY8TEwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGcwZQIwcAMwhbnov5PlZKKMQoYMi6LpdDiio1AzhdczjvipTWcfuPX8tOMxp40ojt4BIwdEAjEA/NCacWOuiOp5gZhqYbX5NYO6VUCRXAKM/icxEBKAhcK7zb5ieJctpIQlyewKqys8"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"qTEFSbfmkK+RbqlymBJsoYRmGmM6awiEyt8WVcxUkC8="},"signature":"MEUCIAQitq+I3Zj8MPxlO1xlo1EbhUAjN3R6kk0kATWhbo46AiEAqnkzH+nD2f31B1qazZMt/f4gvaBzzephGppN1NHzcNM="}}
|
build/torch-stable-abi210-cu130-x86_64-linux/__init__.py
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
|
| 3 |
+
from ._ops import ops
|
| 4 |
+
|
| 5 |
+
from . import layers
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def silu_and_mul(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 9 |
+
ops.silu_and_mul(out, x)
|
| 10 |
+
return out
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
def mul_and_silu(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 14 |
+
ops.mul_and_silu(out, x)
|
| 15 |
+
return out
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def gelu_and_mul(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 19 |
+
ops.gelu_and_mul(out, x)
|
| 20 |
+
return out
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def gelu_tanh_and_mul(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 24 |
+
ops.gelu_tanh_and_mul(out, x)
|
| 25 |
+
return out
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def fatrelu_and_mul(out: torch.Tensor, x: torch.Tensor, threshold: float = 0.0) -> torch.Tensor:
|
| 29 |
+
ops.fatrelu_and_mul(out, x, threshold)
|
| 30 |
+
return out
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
def gelu(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 34 |
+
ops.gelu(out, x)
|
| 35 |
+
return out
|
| 36 |
+
|
| 37 |
+
def silu(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 38 |
+
ops.silu(out, x)
|
| 39 |
+
return out
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def gelu_tanh(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 43 |
+
ops.gelu_tanh(out, x)
|
| 44 |
+
return out
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
def gelu_fast(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 48 |
+
ops.gelu_fast(out, x)
|
| 49 |
+
return out
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
def gelu_new(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 53 |
+
ops.gelu_new(out, x)
|
| 54 |
+
return out
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
def gelu_quick(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 58 |
+
ops.gelu_quick(out, x)
|
| 59 |
+
return out
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
__all__ = [
|
| 63 |
+
"silu_and_mul",
|
| 64 |
+
"mul_and_silu",
|
| 65 |
+
"gelu_and_mul",
|
| 66 |
+
"gelu_tanh_and_mul",
|
| 67 |
+
"fatrelu_and_mul",
|
| 68 |
+
"gelu_fast",
|
| 69 |
+
"gelu_new",
|
| 70 |
+
"gelu_quick",
|
| 71 |
+
"gelu_tanh",
|
| 72 |
+
"silu",
|
| 73 |
+
"gelu",
|
| 74 |
+
"layers",
|
| 75 |
+
]
|
build/torch-stable-abi210-cu130-x86_64-linux/_activation_cuda_2f7c452.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4a3850b428f3b640028c451c8e25cb66b9ec57a90878d34fcabd1248541e1952
|
| 3 |
+
size 2615936
|
build/torch-stable-abi210-cu130-x86_64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _activation_cuda_2f7c452
|
| 3 |
+
ops = torch.ops._activation_cuda_2f7c452
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_activation_cuda_2f7c452::{op_name}"
|
build/torch-stable-abi210-cu130-x86_64-linux/activation/__init__.py
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import ctypes
|
| 2 |
+
import importlib.util
|
| 3 |
+
import sys
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
from types import ModuleType
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def _import_from_path(file_path: Path) -> ModuleType:
|
| 9 |
+
# We cannot use the module name as-is, after adding it to `sys.modules`,
|
| 10 |
+
# it would also be used for other imports. So, we make a module name that
|
| 11 |
+
# depends on the path for it to be unique using the hex-encoded hash of
|
| 12 |
+
# the path.
|
| 13 |
+
path_hash = "{:x}".format(ctypes.c_size_t(hash(file_path.absolute())).value)
|
| 14 |
+
module_name = path_hash
|
| 15 |
+
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
| 16 |
+
if spec is None:
|
| 17 |
+
raise ImportError(f"Cannot load spec for {module_name} from {file_path}")
|
| 18 |
+
module = importlib.util.module_from_spec(spec)
|
| 19 |
+
if module is None:
|
| 20 |
+
raise ImportError(f"Cannot load module {module_name} from spec")
|
| 21 |
+
sys.modules[module_name] = module
|
| 22 |
+
spec.loader.exec_module(module) # type: ignore
|
| 23 |
+
return module
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
globals().update(vars(_import_from_path(Path(__file__).parent.parent / "__init__.py")))
|
build/torch-stable-abi210-cu130-x86_64-linux/layers.py
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
|
| 4 |
+
from ._ops import ops
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
class SiluAndMul(nn.Module):
|
| 8 |
+
"""An activation function for SwiGLU.
|
| 9 |
+
|
| 10 |
+
The function computes x -> silu(x[:d]) * x[d:] where d = x.shape[-1] // 2.
|
| 11 |
+
|
| 12 |
+
Shapes:
|
| 13 |
+
x: (num_tokens, 2 * d) or (batch_size, seq_len, 2 * d)
|
| 14 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 15 |
+
"""
|
| 16 |
+
|
| 17 |
+
can_torch_compile: bool = True
|
| 18 |
+
|
| 19 |
+
def forward(self, x: torch.Tensor):
|
| 20 |
+
if not x.is_contiguous():
|
| 21 |
+
x = x.contiguous()
|
| 22 |
+
d = x.shape[-1] // 2
|
| 23 |
+
output_shape = x.shape[:-1] + (d,)
|
| 24 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 25 |
+
ops.silu_and_mul(out, x)
|
| 26 |
+
return out
|
| 27 |
+
|
| 28 |
+
class Silu(nn.Module):
|
| 29 |
+
"""An activation function for SiLU.
|
| 30 |
+
|
| 31 |
+
The function computes x -> silu(x).
|
| 32 |
+
|
| 33 |
+
Shapes:
|
| 34 |
+
x: (num_tokens, d) or (batch_size, seq_len, d)
|
| 35 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 36 |
+
"""
|
| 37 |
+
|
| 38 |
+
can_torch_compile: bool = True
|
| 39 |
+
|
| 40 |
+
def forward(self, x: torch.Tensor):
|
| 41 |
+
if not x.is_contiguous():
|
| 42 |
+
x = x.contiguous()
|
| 43 |
+
out = torch.empty_like(x)
|
| 44 |
+
ops.silu(out, x)
|
| 45 |
+
return out
|
| 46 |
+
|
| 47 |
+
class Gelu(nn.Module):
|
| 48 |
+
"""An activation function for GELU.
|
| 49 |
+
|
| 50 |
+
The function computes x -> gelu(x).
|
| 51 |
+
|
| 52 |
+
Shapes:
|
| 53 |
+
x: (num_tokens, d) or (batch_size, seq_len, d)
|
| 54 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 55 |
+
"""
|
| 56 |
+
|
| 57 |
+
can_torch_compile: bool = True
|
| 58 |
+
|
| 59 |
+
def forward(self, x: torch.Tensor):
|
| 60 |
+
if not x.is_contiguous():
|
| 61 |
+
x = x.contiguous()
|
| 62 |
+
out = torch.empty_like(x)
|
| 63 |
+
ops.gelu(out, x)
|
| 64 |
+
return out
|
| 65 |
+
|
| 66 |
+
class GeluTanh(nn.Module):
|
| 67 |
+
"""An activation function for GELU with `tanh` approximation.
|
| 68 |
+
|
| 69 |
+
The function computes x -> gelu_tanh(x).
|
| 70 |
+
|
| 71 |
+
Shapes:
|
| 72 |
+
x: (num_tokens, d) or (batch_size, seq_len, d)
|
| 73 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 74 |
+
"""
|
| 75 |
+
|
| 76 |
+
can_torch_compile: bool = True
|
| 77 |
+
|
| 78 |
+
def forward(self, x: torch.Tensor):
|
| 79 |
+
if not x.is_contiguous():
|
| 80 |
+
x = x.contiguous()
|
| 81 |
+
out = torch.empty_like(x)
|
| 82 |
+
ops.gelu_tanh(out, x)
|
| 83 |
+
return out
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
class MulAndSilu(nn.Module):
|
| 87 |
+
"""An activation function for SwiGLU.
|
| 88 |
+
|
| 89 |
+
The function computes x -> x[:d] * silu(x[d:]) where d = x.shape[-1] // 2.
|
| 90 |
+
|
| 91 |
+
Shapes:
|
| 92 |
+
x: (num_tokens, 2 * d) or (batch_size, seq_len, 2 * d)
|
| 93 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 94 |
+
"""
|
| 95 |
+
|
| 96 |
+
can_torch_compile: bool = True
|
| 97 |
+
|
| 98 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 99 |
+
if not x.is_contiguous():
|
| 100 |
+
x = x.contiguous()
|
| 101 |
+
d = x.shape[-1] // 2
|
| 102 |
+
output_shape = x.shape[:-1] + (d,)
|
| 103 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 104 |
+
ops.mul_and_silu(out, x)
|
| 105 |
+
return out
|
| 106 |
+
|
| 107 |
+
|
| 108 |
+
class GeluAndMul(nn.Module):
|
| 109 |
+
"""An activation function for GeGLU.
|
| 110 |
+
|
| 111 |
+
The function computes x -> GELU(x[:d]) * x[d:] where d = x.shape[-1] // 2.
|
| 112 |
+
|
| 113 |
+
Shapes:
|
| 114 |
+
x: (batch_size, seq_len, 2 * d) or (num_tokens, 2 * d)
|
| 115 |
+
return: (batch_size, seq_len, d) or (num_tokens, d)
|
| 116 |
+
"""
|
| 117 |
+
|
| 118 |
+
can_torch_compile: bool = True
|
| 119 |
+
|
| 120 |
+
def forward(self, x: torch.Tensor):
|
| 121 |
+
if not x.is_contiguous():
|
| 122 |
+
x = x.contiguous()
|
| 123 |
+
d = x.shape[-1] // 2
|
| 124 |
+
output_shape = x.shape[:-1] + (d,)
|
| 125 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 126 |
+
ops.gelu_and_mul(out, x)
|
| 127 |
+
return out
|
| 128 |
+
|
| 129 |
+
|
| 130 |
+
class GeluTanhAndMul(nn.Module):
|
| 131 |
+
can_torch_compile: bool = True
|
| 132 |
+
|
| 133 |
+
def forward(self, x: torch.Tensor):
|
| 134 |
+
if not x.is_contiguous():
|
| 135 |
+
x = x.contiguous()
|
| 136 |
+
d = x.shape[-1] // 2
|
| 137 |
+
output_shape = x.shape[:-1] + (d,)
|
| 138 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 139 |
+
ops.gelu_tanh_and_mul(out, x)
|
| 140 |
+
return out
|
| 141 |
+
|
| 142 |
+
|
| 143 |
+
class FatreluAndMul(nn.Module):
|
| 144 |
+
"""An activation function for FATReLU.
|
| 145 |
+
|
| 146 |
+
The function computes x -> FATReLU(x[:d]) * x[d:] where
|
| 147 |
+
d = x.shape[-1] // 2.
|
| 148 |
+
This is used in openbmb/MiniCPM-S-1B-sft.
|
| 149 |
+
|
| 150 |
+
Shapes:
|
| 151 |
+
x: (num_tokens, 2 * d) or (batch_size, seq_len, 2 * d)
|
| 152 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 153 |
+
"""
|
| 154 |
+
|
| 155 |
+
can_torch_compile: bool = True
|
| 156 |
+
|
| 157 |
+
def __init__(self, threshold: float = 0.0):
|
| 158 |
+
super().__init__()
|
| 159 |
+
self.threshold = threshold
|
| 160 |
+
|
| 161 |
+
def forward(self, x: torch.Tensor):
|
| 162 |
+
if not x.is_contiguous():
|
| 163 |
+
x = x.contiguous()
|
| 164 |
+
d = x.shape[-1] // 2
|
| 165 |
+
output_shape = x.shape[:-1] + (d,)
|
| 166 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 167 |
+
ops.fatrelu_and_mul(out, x, self.threshold)
|
| 168 |
+
return out
|
| 169 |
+
|
| 170 |
+
|
| 171 |
+
class FastGELU(nn.Module):
|
| 172 |
+
can_torch_compile: bool = True
|
| 173 |
+
|
| 174 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 175 |
+
if not x.is_contiguous():
|
| 176 |
+
x = x.contiguous()
|
| 177 |
+
out = torch.empty_like(x)
|
| 178 |
+
ops.gelu_fast(out, x)
|
| 179 |
+
return out
|
| 180 |
+
|
| 181 |
+
|
| 182 |
+
class NewGELU(nn.Module):
|
| 183 |
+
can_torch_compile: bool = True
|
| 184 |
+
|
| 185 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 186 |
+
if not x.is_contiguous():
|
| 187 |
+
x = x.contiguous()
|
| 188 |
+
out = torch.empty_like(x)
|
| 189 |
+
ops.gelu_new(out, x)
|
| 190 |
+
return out
|
| 191 |
+
|
| 192 |
+
|
| 193 |
+
class QuickGELU(nn.Module):
|
| 194 |
+
can_torch_compile: bool = True
|
| 195 |
+
|
| 196 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 197 |
+
if not x.is_contiguous():
|
| 198 |
+
x = x.contiguous()
|
| 199 |
+
out = torch.empty_like(x)
|
| 200 |
+
ops.gelu_quick(out, x)
|
| 201 |
+
return out
|
build/torch-stable-abi210-cu130-x86_64-linux/metadata.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "activation",
|
| 3 |
+
"id": "_activation_cuda_2f7c452",
|
| 4 |
+
"version": 1,
|
| 5 |
+
"license": "Apache-2.0",
|
| 6 |
+
"python-depends": [],
|
| 7 |
+
"backend": {
|
| 8 |
+
"type": "cuda",
|
| 9 |
+
"archs": [
|
| 10 |
+
"10.0",
|
| 11 |
+
"11.0",
|
| 12 |
+
"12.0",
|
| 13 |
+
"12.1+PTX",
|
| 14 |
+
"7.5",
|
| 15 |
+
"8.0",
|
| 16 |
+
"8.6",
|
| 17 |
+
"8.7",
|
| 18 |
+
"8.9",
|
| 19 |
+
"9.0"
|
| 20 |
+
]
|
| 21 |
+
},
|
| 22 |
+
"digest": {
|
| 23 |
+
"algorithm": "sha256",
|
| 24 |
+
"files": {
|
| 25 |
+
"__init__.py": "NQdhY7p9BPoMw0NQodMKFTPSQXBlrsX3yUdP8MEHyH0=",
|
| 26 |
+
"_activation_cuda_2f7c452.abi3.so": "SjhQtCjztkACjEUcjiXLZrnsV6kIeNNPyr0SSFQeGVI=",
|
| 27 |
+
"_ops.py": "q9xZtwPjdsRciOCA5aQFDtsTQnV9SNcvAC74ivbShuM=",
|
| 28 |
+
"activation/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 29 |
+
"layers.py": "wWX07+W0BNFA7RyCE0jYH7aa2U3B8aiiIpu/Q4xsE0w="
|
| 30 |
+
}
|
| 31 |
+
},
|
| 32 |
+
"provenance": {
|
| 33 |
+
"kernel-builder": {
|
| 34 |
+
"version": "0.17.0-dev0",
|
| 35 |
+
"sha": "81580bb92577f2f7228661ca2a221fc052375709",
|
| 36 |
+
"dirty": false
|
| 37 |
+
},
|
| 38 |
+
"kernel": {
|
| 39 |
+
"sha": "2f7c452801641012cf6aa9bdf042431457024033",
|
| 40 |
+
"dirty": false
|
| 41 |
+
}
|
| 42 |
+
}
|
| 43 |
+
}
|
build/torch-stable-abi210-cu130-x86_64-linux/metadata.json.sigstore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHSzCCBtCgAwIBAgIUJ8I7TSQzzwzuEC609wMOr/hLCZowCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzA5MTU1MTQ0WhcNMjYwNzA5MTYwMTQ0WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELUhsI43kpxBz5ZJN7Qk7EqBIr748KiW7BzO63xGMz1mVTh53qtabyfaLVjrD0J+JYByx9BRCm5OSof4LeNQ6TKOCBe8wggXrMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUHvEJSlaH1CChAtEz/a7IFSP7BUgwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoMmY3YzQ1MjgwMTY0MTAxMmNmNmFhOWJkZjA0MjQzMTQ1NzAyNDAzMzATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoMmY3YzQ1MjgwMTY0MTAxMmNmNmFhOWJkZjA0MjQzMTQ1NzAyNDAzMzAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoMmY3YzQ1MjgwMTY0MTAxMmNmNmFhOWJkZjA0MjQzMTQ1NzAyNDAzMzAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDJmN2M0NTI4MDE2NDEwMTJjZjZhYTliZGYwNDI0MzE0NTcwMjQwMzMwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjkwMzA3NzExMDMvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBiQYKKwYBBAHWeQIEAgR7BHkAdwB1AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABn0eT6/IAAAQDAEYwRAIgREIgExlgRHvdd7JVv2H7APbVn/Lbv3BqW0/4H7C1U2gCID5+9ekbPhMbXaaSbnvHciueyf6Dk5ohJTGXumGY1TD3MAoGCCqGSM49BAMDA2kAMGYCMQDmarSCSxB2x6dPpLZd8GXHDvcBV9kmMlNZFdYK/ta53SuXeeVt2dCt4XE8P2u3vysCMQDsejaZQxfHNXIIqKrjEER4bYv9sUrPNqNWGF/NyaiiNplkCnomUa6A16Nu6oTfexI="},"tlogEntries":[{"logIndex":"2129303304","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1783612304","inclusionPromise":{"signedEntryTimestamp":"MEUCIQDsziu8sy9Oz7mPOwNhdEGSZ3+5Ok/Dc43JfDwcwQnoHwIgPjfApwiH3hdTlDLi0F53gBDJJXi5uAHqSpwUDgRf2bU="},"inclusionProof":{"logIndex":"2007399042","rootHash":"JAG2IaXBIaJvG9NmcFOMCiRZt+qB14fEMhL74PuexlY=","treeSize":"2007399067","hashes":["MxDzip66O/++DD3Bb0a6g87Z01GTeg43IE83wdfsunk=","VtFICI097CZtHUdAiNy94SP6ZAHiH1EMX2fInRLdGpo=","CNWvvCb5PZvalHY74kRyv4K13fE6zR3uFeXnoTf2lfM=","/plh4xM4pWa5azbb9riBrSxlxDiIBuSb8pg8/j5Tows=","szceWDisc31TirI6Natqr7VxfplM3dZTc8GTTHJuv5o=","tXmFxVgUndhqTL6TFivD1VOUtsWXcnVvlgXdozhMOyc=","hFBVXjNkljbsIUdp3kpwlDdY04wNZmTLDDuPI22wVCk=","//tgd4n3O1lkKeaDYqSROJWpI6U4CTDa3qN2h+aaErM=","QSToMPx5TqhI36VW0It7C6G8d89Rw+K0SvD1mjtgUs4=","wDuWNODPXUN9TzDUDyffEW6I0L6CzB5JluV1OrTAMDs=","Pl/PPrvg1MauND83htOpSHMRjJM3PGHEnGC8w205Rqo=","CCu7OkQW6+npAh6Tygn9JYdKku6AUboDosZP3sI7yKQ=","uwnh4tLrO/3+ywQ63CnFW6mU2V+y+Db8CobG3g6S0Hk=","Kezfh1XcoOp9KAwr7OWyF8C7cr/mZBPGqKHTdO0BnDs=","LD5Ws0n7JWm8O7qGvHNSZug32ByFM1WblCpsDJh5M6o=","f8knrc4LOu/X8scT5SBvEgFJSd7vZZ0LzSaC0Z3lm/U=","WajL3ZhY6ZX9meV3VTH9TkrbM31OF4o6+7foL0Uf6PI=","cyKMKBvHkQtwb2xR5svh+YppANOVdn7X8t4DuKMxICA=","+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2007399067\nJAG2IaXBIaJvG9NmcFOMCiRZt+qB14fEMhL74PuexlY=\n\n— rekor.sigstore.dev wNI9ajBFAiEA1kww0G7Yq85kJTBfjNSFVR/gb1KjOyzjdsxQ9ut1ghwCID8tVvQ8fz4iawxu9BUfGyTlm9O3DNvYc4807SsR2i01\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJiZDNkOWZkYTM2OWZhNWMzZDM2YWM1MWQwMWU4ZTA3ZDE5NGU4ZjBmODVjYzI4N2ZlNDg4M2U3YzE5YmEwZGM3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUMwRmJmQ2FZbThreXZjQlU1WlVMRW9RdFRZSEZvT0NlRTBMdTNTbDdrcWt3SWdWSzJBelFYaTBIZklZSWU0S3M0WlpnUU05UkZFOHRnSm95SnlqOWlCV3VvPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRla05EUW5SRFowRjNTVUpCWjBsVlNqaEpOMVJUVVhwNmQzcDFSVU0yTURsM1RVOXlMMmhNUTFwdmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVRWTlZGVXhUVlJSTUZkb1kwNU5hbGwzVG5wQk5VMVVXWGROVkZFd1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZNVldoelNUUXphM0I0UW5vMVdrcE9OMUZyTjBWeFFrbHlOelE0UzJsWE4wSjZUellLTTNoSFRYb3hiVlpVYURVemNYUmhZbmxtWVV4V2FuSkVNRW9yU2xsQ2VYZzVRbEpEYlRWUFUyOW1ORXhsVGxFMlZFdFBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZJZGtWS0NsTnNZVWd4UTBOb1FYUkZlaTloTjBsR1UxQTNRbFZuZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU5iVmt6V1hwUk1VMXFaM2ROVkZrd1RWUkJlRTF0VG0xT2JVWm9DazlYU210YWFrRXdUV3BSZWsxVVVURk9la0Y1VGtSQmVrMTZRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDF0V1ROWmVsRXhUV3BuZDAxVVdUQk5WRUY0VFcxT2JVNXRSbWhQVjBwcldtcEJNRTFxVVhvS1RWUlJNVTU2UVhsT1JFRjZUWHBCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDF0V1ROWmVsRXhUV3BuZDAxVVdUQk5WRUY0VFcxT2JVNXRSbWdLVDFkS2ExcHFRVEJOYWxGNlRWUlJNVTU2UVhsT1JFRjZUWHBCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUktiVTR5VFRBS1RsUkpORTFFUlRKT1JFVjNUVlJLYWxwcVdtaFpWR3hwV2tkWmQwNUVTVEJOZWtVd1RsUmpkMDFxVVhkTmVrMTNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW10M1RYcEJNMDU2UlhoTlJFMTJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNHdaVlEyTDBsQlFVRlJSQXBCUlZsM1VrRkpaMUpGU1dkRmVHeG5Va2gyWkdRM1NsWjJNa2czUVZCaVZtNHZUR0oyTTBKeFZ6QXZORWczUXpGVk1tZERTVVExS3psbGEySlFhRTFpQ2xoaFlWTmliblpJWTJsMVpYbG1Oa1JyTlc5b1NsUkhXSFZ0UjFreFZFUXpUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlhMEZOUjFsRFRWRkViV0Z5VTBNS1UzaENNbmcyWkZCd1RGcGtPRWRZU0VSMlkwSldPV3R0VFd4T1drWmtXVXN2ZEdFMU0xTjFXR1ZsVm5ReVpFTjBORmhGT0ZBeWRUTjJlWE5EVFZGRWN3cGxhbUZhVVhobVNFNVlTVWx4UzNKcVJVVlNOR0paZGpselZYSlFUbkZPVjBkR0wwNTVZV2xwVG5Cc2EwTnViMjFWWVRaQk1UWk9kVFp2VkdabGVFazlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg5jFHXQvkxqyjZ0tbhssoW2+LNB+agHmcG/Fp+D2wtQ8CFQC8zOq94eTvUCzRnAaCoeQVXmqrCxgPMjAyNjA3MDkxNTUxNDRaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDcwOTE1NTE0NFowLwYJKoZIhvcNAQkEMSIEIJmqjHUjFLvkFmFtul5Es58wHnqe5KYWRISvSrlim5eNMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMAXlxcHiknlovAjZRhF2oLEPhtguTj6PolBVjIRBvnKW9y8cC81W12AynuPB5L2BrQIxAJbrEOjmeyBcYgb77WzK8lEQdZUBCI83RaYTx37+BRvSPfc8oRM9rqxWQoe6HQ53iQ=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"vT2f2jafpcPTasUdAejgfRlOjw+FzCh/5Ig+fBm6Dcc="},"signature":"MEUCIQC0FbfCaYm8kyvcBU5ZULEoQtTYHFoOCeE0Lu3Sl7kqkwIgVK2AzQXi0HfIYIe4Ks4ZZgQM9RFE8tgJoyJyj9iBWuo="}}
|
build/torch-stable-abi210-cu132-x86_64-linux/__init__.py
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
|
| 3 |
+
from ._ops import ops
|
| 4 |
+
|
| 5 |
+
from . import layers
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def silu_and_mul(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 9 |
+
ops.silu_and_mul(out, x)
|
| 10 |
+
return out
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
def mul_and_silu(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 14 |
+
ops.mul_and_silu(out, x)
|
| 15 |
+
return out
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def gelu_and_mul(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 19 |
+
ops.gelu_and_mul(out, x)
|
| 20 |
+
return out
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def gelu_tanh_and_mul(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 24 |
+
ops.gelu_tanh_and_mul(out, x)
|
| 25 |
+
return out
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def fatrelu_and_mul(out: torch.Tensor, x: torch.Tensor, threshold: float = 0.0) -> torch.Tensor:
|
| 29 |
+
ops.fatrelu_and_mul(out, x, threshold)
|
| 30 |
+
return out
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
def gelu(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 34 |
+
ops.gelu(out, x)
|
| 35 |
+
return out
|
| 36 |
+
|
| 37 |
+
def silu(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 38 |
+
ops.silu(out, x)
|
| 39 |
+
return out
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def gelu_tanh(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 43 |
+
ops.gelu_tanh(out, x)
|
| 44 |
+
return out
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
def gelu_fast(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 48 |
+
ops.gelu_fast(out, x)
|
| 49 |
+
return out
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
def gelu_new(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 53 |
+
ops.gelu_new(out, x)
|
| 54 |
+
return out
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
def gelu_quick(out: torch.Tensor, x: torch.Tensor) -> torch.Tensor:
|
| 58 |
+
ops.gelu_quick(out, x)
|
| 59 |
+
return out
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
__all__ = [
|
| 63 |
+
"silu_and_mul",
|
| 64 |
+
"mul_and_silu",
|
| 65 |
+
"gelu_and_mul",
|
| 66 |
+
"gelu_tanh_and_mul",
|
| 67 |
+
"fatrelu_and_mul",
|
| 68 |
+
"gelu_fast",
|
| 69 |
+
"gelu_new",
|
| 70 |
+
"gelu_quick",
|
| 71 |
+
"gelu_tanh",
|
| 72 |
+
"silu",
|
| 73 |
+
"gelu",
|
| 74 |
+
"layers",
|
| 75 |
+
]
|
build/torch-stable-abi210-cu132-x86_64-linux/_activation_cuda_2f7c452.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:72f4044f3bcf933e96214ab600657dab57acaca2243081c713b218541e59be22
|
| 3 |
+
size 2687952
|
build/torch-stable-abi210-cu132-x86_64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _activation_cuda_2f7c452
|
| 3 |
+
ops = torch.ops._activation_cuda_2f7c452
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_activation_cuda_2f7c452::{op_name}"
|
build/torch-stable-abi210-cu132-x86_64-linux/activation/__init__.py
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import ctypes
|
| 2 |
+
import importlib.util
|
| 3 |
+
import sys
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
from types import ModuleType
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
def _import_from_path(file_path: Path) -> ModuleType:
|
| 9 |
+
# We cannot use the module name as-is, after adding it to `sys.modules`,
|
| 10 |
+
# it would also be used for other imports. So, we make a module name that
|
| 11 |
+
# depends on the path for it to be unique using the hex-encoded hash of
|
| 12 |
+
# the path.
|
| 13 |
+
path_hash = "{:x}".format(ctypes.c_size_t(hash(file_path.absolute())).value)
|
| 14 |
+
module_name = path_hash
|
| 15 |
+
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
| 16 |
+
if spec is None:
|
| 17 |
+
raise ImportError(f"Cannot load spec for {module_name} from {file_path}")
|
| 18 |
+
module = importlib.util.module_from_spec(spec)
|
| 19 |
+
if module is None:
|
| 20 |
+
raise ImportError(f"Cannot load module {module_name} from spec")
|
| 21 |
+
sys.modules[module_name] = module
|
| 22 |
+
spec.loader.exec_module(module) # type: ignore
|
| 23 |
+
return module
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
globals().update(vars(_import_from_path(Path(__file__).parent.parent / "__init__.py")))
|
build/torch-stable-abi210-cu132-x86_64-linux/layers.py
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
import torch.nn as nn
|
| 3 |
+
|
| 4 |
+
from ._ops import ops
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
class SiluAndMul(nn.Module):
|
| 8 |
+
"""An activation function for SwiGLU.
|
| 9 |
+
|
| 10 |
+
The function computes x -> silu(x[:d]) * x[d:] where d = x.shape[-1] // 2.
|
| 11 |
+
|
| 12 |
+
Shapes:
|
| 13 |
+
x: (num_tokens, 2 * d) or (batch_size, seq_len, 2 * d)
|
| 14 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 15 |
+
"""
|
| 16 |
+
|
| 17 |
+
can_torch_compile: bool = True
|
| 18 |
+
|
| 19 |
+
def forward(self, x: torch.Tensor):
|
| 20 |
+
if not x.is_contiguous():
|
| 21 |
+
x = x.contiguous()
|
| 22 |
+
d = x.shape[-1] // 2
|
| 23 |
+
output_shape = x.shape[:-1] + (d,)
|
| 24 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 25 |
+
ops.silu_and_mul(out, x)
|
| 26 |
+
return out
|
| 27 |
+
|
| 28 |
+
class Silu(nn.Module):
|
| 29 |
+
"""An activation function for SiLU.
|
| 30 |
+
|
| 31 |
+
The function computes x -> silu(x).
|
| 32 |
+
|
| 33 |
+
Shapes:
|
| 34 |
+
x: (num_tokens, d) or (batch_size, seq_len, d)
|
| 35 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 36 |
+
"""
|
| 37 |
+
|
| 38 |
+
can_torch_compile: bool = True
|
| 39 |
+
|
| 40 |
+
def forward(self, x: torch.Tensor):
|
| 41 |
+
if not x.is_contiguous():
|
| 42 |
+
x = x.contiguous()
|
| 43 |
+
out = torch.empty_like(x)
|
| 44 |
+
ops.silu(out, x)
|
| 45 |
+
return out
|
| 46 |
+
|
| 47 |
+
class Gelu(nn.Module):
|
| 48 |
+
"""An activation function for GELU.
|
| 49 |
+
|
| 50 |
+
The function computes x -> gelu(x).
|
| 51 |
+
|
| 52 |
+
Shapes:
|
| 53 |
+
x: (num_tokens, d) or (batch_size, seq_len, d)
|
| 54 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 55 |
+
"""
|
| 56 |
+
|
| 57 |
+
can_torch_compile: bool = True
|
| 58 |
+
|
| 59 |
+
def forward(self, x: torch.Tensor):
|
| 60 |
+
if not x.is_contiguous():
|
| 61 |
+
x = x.contiguous()
|
| 62 |
+
out = torch.empty_like(x)
|
| 63 |
+
ops.gelu(out, x)
|
| 64 |
+
return out
|
| 65 |
+
|
| 66 |
+
class GeluTanh(nn.Module):
|
| 67 |
+
"""An activation function for GELU with `tanh` approximation.
|
| 68 |
+
|
| 69 |
+
The function computes x -> gelu_tanh(x).
|
| 70 |
+
|
| 71 |
+
Shapes:
|
| 72 |
+
x: (num_tokens, d) or (batch_size, seq_len, d)
|
| 73 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 74 |
+
"""
|
| 75 |
+
|
| 76 |
+
can_torch_compile: bool = True
|
| 77 |
+
|
| 78 |
+
def forward(self, x: torch.Tensor):
|
| 79 |
+
if not x.is_contiguous():
|
| 80 |
+
x = x.contiguous()
|
| 81 |
+
out = torch.empty_like(x)
|
| 82 |
+
ops.gelu_tanh(out, x)
|
| 83 |
+
return out
|
| 84 |
+
|
| 85 |
+
|
| 86 |
+
class MulAndSilu(nn.Module):
|
| 87 |
+
"""An activation function for SwiGLU.
|
| 88 |
+
|
| 89 |
+
The function computes x -> x[:d] * silu(x[d:]) where d = x.shape[-1] // 2.
|
| 90 |
+
|
| 91 |
+
Shapes:
|
| 92 |
+
x: (num_tokens, 2 * d) or (batch_size, seq_len, 2 * d)
|
| 93 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 94 |
+
"""
|
| 95 |
+
|
| 96 |
+
can_torch_compile: bool = True
|
| 97 |
+
|
| 98 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 99 |
+
if not x.is_contiguous():
|
| 100 |
+
x = x.contiguous()
|
| 101 |
+
d = x.shape[-1] // 2
|
| 102 |
+
output_shape = x.shape[:-1] + (d,)
|
| 103 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 104 |
+
ops.mul_and_silu(out, x)
|
| 105 |
+
return out
|
| 106 |
+
|
| 107 |
+
|
| 108 |
+
class GeluAndMul(nn.Module):
|
| 109 |
+
"""An activation function for GeGLU.
|
| 110 |
+
|
| 111 |
+
The function computes x -> GELU(x[:d]) * x[d:] where d = x.shape[-1] // 2.
|
| 112 |
+
|
| 113 |
+
Shapes:
|
| 114 |
+
x: (batch_size, seq_len, 2 * d) or (num_tokens, 2 * d)
|
| 115 |
+
return: (batch_size, seq_len, d) or (num_tokens, d)
|
| 116 |
+
"""
|
| 117 |
+
|
| 118 |
+
can_torch_compile: bool = True
|
| 119 |
+
|
| 120 |
+
def forward(self, x: torch.Tensor):
|
| 121 |
+
if not x.is_contiguous():
|
| 122 |
+
x = x.contiguous()
|
| 123 |
+
d = x.shape[-1] // 2
|
| 124 |
+
output_shape = x.shape[:-1] + (d,)
|
| 125 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 126 |
+
ops.gelu_and_mul(out, x)
|
| 127 |
+
return out
|
| 128 |
+
|
| 129 |
+
|
| 130 |
+
class GeluTanhAndMul(nn.Module):
|
| 131 |
+
can_torch_compile: bool = True
|
| 132 |
+
|
| 133 |
+
def forward(self, x: torch.Tensor):
|
| 134 |
+
if not x.is_contiguous():
|
| 135 |
+
x = x.contiguous()
|
| 136 |
+
d = x.shape[-1] // 2
|
| 137 |
+
output_shape = x.shape[:-1] + (d,)
|
| 138 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 139 |
+
ops.gelu_tanh_and_mul(out, x)
|
| 140 |
+
return out
|
| 141 |
+
|
| 142 |
+
|
| 143 |
+
class FatreluAndMul(nn.Module):
|
| 144 |
+
"""An activation function for FATReLU.
|
| 145 |
+
|
| 146 |
+
The function computes x -> FATReLU(x[:d]) * x[d:] where
|
| 147 |
+
d = x.shape[-1] // 2.
|
| 148 |
+
This is used in openbmb/MiniCPM-S-1B-sft.
|
| 149 |
+
|
| 150 |
+
Shapes:
|
| 151 |
+
x: (num_tokens, 2 * d) or (batch_size, seq_len, 2 * d)
|
| 152 |
+
return: (num_tokens, d) or (batch_size, seq_len, d)
|
| 153 |
+
"""
|
| 154 |
+
|
| 155 |
+
can_torch_compile: bool = True
|
| 156 |
+
|
| 157 |
+
def __init__(self, threshold: float = 0.0):
|
| 158 |
+
super().__init__()
|
| 159 |
+
self.threshold = threshold
|
| 160 |
+
|
| 161 |
+
def forward(self, x: torch.Tensor):
|
| 162 |
+
if not x.is_contiguous():
|
| 163 |
+
x = x.contiguous()
|
| 164 |
+
d = x.shape[-1] // 2
|
| 165 |
+
output_shape = x.shape[:-1] + (d,)
|
| 166 |
+
out = torch.empty(output_shape, dtype=x.dtype, device=x.device)
|
| 167 |
+
ops.fatrelu_and_mul(out, x, self.threshold)
|
| 168 |
+
return out
|
| 169 |
+
|
| 170 |
+
|
| 171 |
+
class FastGELU(nn.Module):
|
| 172 |
+
can_torch_compile: bool = True
|
| 173 |
+
|
| 174 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 175 |
+
if not x.is_contiguous():
|
| 176 |
+
x = x.contiguous()
|
| 177 |
+
out = torch.empty_like(x)
|
| 178 |
+
ops.gelu_fast(out, x)
|
| 179 |
+
return out
|
| 180 |
+
|
| 181 |
+
|
| 182 |
+
class NewGELU(nn.Module):
|
| 183 |
+
can_torch_compile: bool = True
|
| 184 |
+
|
| 185 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 186 |
+
if not x.is_contiguous():
|
| 187 |
+
x = x.contiguous()
|
| 188 |
+
out = torch.empty_like(x)
|
| 189 |
+
ops.gelu_new(out, x)
|
| 190 |
+
return out
|
| 191 |
+
|
| 192 |
+
|
| 193 |
+
class QuickGELU(nn.Module):
|
| 194 |
+
can_torch_compile: bool = True
|
| 195 |
+
|
| 196 |
+
def forward(self, x: torch.Tensor) -> torch.Tensor:
|
| 197 |
+
if not x.is_contiguous():
|
| 198 |
+
x = x.contiguous()
|
| 199 |
+
out = torch.empty_like(x)
|
| 200 |
+
ops.gelu_quick(out, x)
|
| 201 |
+
return out
|
build/torch-stable-abi210-cu132-x86_64-linux/metadata.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "activation",
|
| 3 |
+
"id": "_activation_cuda_2f7c452",
|
| 4 |
+
"version": 1,
|
| 5 |
+
"license": "Apache-2.0",
|
| 6 |
+
"python-depends": [],
|
| 7 |
+
"backend": {
|
| 8 |
+
"type": "cuda",
|
| 9 |
+
"archs": [
|
| 10 |
+
"10.0",
|
| 11 |
+
"11.0",
|
| 12 |
+
"12.0",
|
| 13 |
+
"12.1+PTX",
|
| 14 |
+
"7.5",
|
| 15 |
+
"8.0",
|
| 16 |
+
"8.6",
|
| 17 |
+
"8.7",
|
| 18 |
+
"8.9",
|
| 19 |
+
"9.0"
|
| 20 |
+
]
|
| 21 |
+
},
|
| 22 |
+
"digest": {
|
| 23 |
+
"algorithm": "sha256",
|
| 24 |
+
"files": {
|
| 25 |
+
"__init__.py": "NQdhY7p9BPoMw0NQodMKFTPSQXBlrsX3yUdP8MEHyH0=",
|
| 26 |
+
"_activation_cuda_2f7c452.abi3.so": "cvQETzvPkz6WIUq2AGV9q1esrKIkMIHHE7IYVB5ZviI=",
|
| 27 |
+
"_ops.py": "q9xZtwPjdsRciOCA5aQFDtsTQnV9SNcvAC74ivbShuM=",
|
| 28 |
+
"activation/__init__.py": "DFYPlrhXwYjEqCl/8n0SmWGZV8NFml5DPhMjKfv98GY=",
|
| 29 |
+
"layers.py": "wWX07+W0BNFA7RyCE0jYH7aa2U3B8aiiIpu/Q4xsE0w="
|
| 30 |
+
}
|
| 31 |
+
},
|
| 32 |
+
"provenance": {
|
| 33 |
+
"kernel-builder": {
|
| 34 |
+
"version": "0.17.0-dev0",
|
| 35 |
+
"sha": "81580bb92577f2f7228661ca2a221fc052375709",
|
| 36 |
+
"dirty": false
|
| 37 |
+
},
|
| 38 |
+
"kernel": {
|
| 39 |
+
"sha": "2f7c452801641012cf6aa9bdf042431457024033",
|
| 40 |
+
"dirty": false
|
| 41 |
+
}
|
| 42 |
+
}
|
| 43 |
+
}
|
build/torch-stable-abi210-cu132-x86_64-linux/metadata.json.sigstore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"MIIHSjCCBtGgAwIBAgIUBpxTwKwkkQgsYGP9q7/jd+kISkMwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwNzA5MTU1MTQ1WhcNMjYwNzA5MTYwMTQ1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgk3oWOwNu9GUgz3chT3tmLKjgTkumLu0Xc/3w4H5p15TpKyzMYnDflUQaXcpxW4JZ6fAGman///A4isvkAvK96OCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUsBBWnB4NtyF0xSLYA107Jgx38wIwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoMmY3YzQ1MjgwMTY0MTAxMmNmNmFhOWJkZjA0MjQzMTQ1NzAyNDAzMzATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoMmY3YzQ1MjgwMTY0MTAxMmNmNmFhOWJkZjA0MjQzMTQ1NzAyNDAzMzAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoMmY3YzQ1MjgwMTY0MTAxMmNmNmFhOWJkZjA0MjQzMTQ1NzAyNDAzMzAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDJmN2M0NTI4MDE2NDEwMTJjZjZhYTliZGYwNDI0MzE0NTcwMjQwMzMwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMjkwMzA3NzExMDMvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABn0eT78QAAAQDAEcwRQIgCwTueDfUIzc+25aTwb8LUmPqhVBOF32UqnhKF33y+YgCIQDvWKp1Gydk/0tCyp4F8VcjOPRjVCfSZZVnhfzLlYsDlzAKBggqhkjOPQQDAwNnADBkAjAE5ooqagIbKiYOrvov8vxYoJVfr913URP+1Jnh8QIVE59DkNj6roIKNkC9Hj9GgfgCMEqb8gs/5SynNi72mwwC5QKQTnBfZP0oToIC66p/YImbr0JHEL88vVxBl6zHgQuhwA=="},"tlogEntries":[{"logIndex":"2129303539","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1783612305","inclusionPromise":{"signedEntryTimestamp":"MEUCIQCAnE0PPwK1HroURAjXqrsmDlWwJfDkvPUBdVoVeAPeMwIgNCUdlCuqUHs9Z+vH7mYbeN2X283NjA/lVK07ng026SY="},"inclusionProof":{"logIndex":"2007399277","rootHash":"YM+uVwE6anhzlnPmBkSRNTmrT8G3Blodcwdw7KndD3Y=","treeSize":"2007399278","hashes":["OvYxPCwn713vzlNjH9MAyhvvz8PIU3+OxpIdn6CH6+c=","t1PiHUB01vZRMe2+BnxiqLRF3NPIWTyd8cDhpOVzwv0=","tZ4lZb0yasEsoBI+oJ6wQEOuOGqJqd0/9Zemz1aG9vA=","jvjfvzdpHotxvTKtyuXXEHy4svtxoHJKueRv075yUl4=","djYpViM6Qfw37JN96v1+RREES8sJ3kC10Vu3a6szcyQ=","hNlE1FNfEvUFJbnd/mNVREUC/VV1JgbhksuUoQotp9Y=","hFBVXjNkljbsIUdp3kpwlDdY04wNZmTLDDuPI22wVCk=","//tgd4n3O1lkKeaDYqSROJWpI6U4CTDa3qN2h+aaErM=","QSToMPx5TqhI36VW0It7C6G8d89Rw+K0SvD1mjtgUs4=","wDuWNODPXUN9TzDUDyffEW6I0L6CzB5JluV1OrTAMDs=","Pl/PPrvg1MauND83htOpSHMRjJM3PGHEnGC8w205Rqo=","CCu7OkQW6+npAh6Tygn9JYdKku6AUboDosZP3sI7yKQ=","uwnh4tLrO/3+ywQ63CnFW6mU2V+y+Db8CobG3g6S0Hk=","Kezfh1XcoOp9KAwr7OWyF8C7cr/mZBPGqKHTdO0BnDs=","LD5Ws0n7JWm8O7qGvHNSZug32ByFM1WblCpsDJh5M6o=","f8knrc4LOu/X8scT5SBvEgFJSd7vZZ0LzSaC0Z3lm/U=","WajL3ZhY6ZX9meV3VTH9TkrbM31OF4o6+7foL0Uf6PI=","cyKMKBvHkQtwb2xR5svh+YppANOVdn7X8t4DuKMxICA=","+/VZ56MsIPxMiyLAodzKXo5TEWdQp36z89qLhpzloAo=","daxmZaajRpZV+JxHiOYZhJBiSKN5ucqjh2WnGbHhirw=","DOCeoSMovIvLExkhIvisow9AuNXgeWs4ECkyR6EcqYU="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2007399278\nYM+uVwE6anhzlnPmBkSRNTmrT8G3Blodcwdw7KndD3Y=\n\n— rekor.sigstore.dev wNI9ajBEAiART4AIPntGJouwlyEoHhpBshv5gXapEhDVsyFsvQAicQIgAaM3dK4Drlr2FGMAZvo9SUZbxuHplL4I8kVLrTWoD3s=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJlZjZlNTBjMDFhY2M0YzNkMjIwMDdkYWRiMjQ2ZjI3OTQzZDQ3ODIxMDgyOTFlMDY5OTQ3YWNjNTNhYzdjOWZhIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUURXRDVMY3FRM1lCL0FnRmFNOWFNTUNKVXpuTU83RmhTM2dnNDJCU1g0c3dBSWhBS3V3RGdrUGU2NFhWbmlwd1Z1bFpwaERkQTIzQ0J4Q2xGbkZWancwRGRaVSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRha05EUW5SSFowRjNTVUpCWjBsVlFuQjRWSGRMZDJ0clVXZHpXVWRRT1hFM0wycGtLMnRKVTJ0TmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDU2UVRWTlZGVXhUVlJSTVZkb1kwNU5hbGwzVG5wQk5VMVVXWGROVkZFeFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZuYXpOdlYwOTNUblU1UjFWbmVqTmphRlF6ZEcxTVMycG5WR3QxYlV4MU1GaGpMek1LZHpSSU5YQXhOVlJ3UzNsNlRWbHVSR1pzVlZGaFdHTndlRmMwU2xvMlprRkhiV0Z1THk4dlFUUnBjM1pyUVhaTE9UWlBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZ6UWtKWENtNUNORTUwZVVZd2VGTk1XVUV4TURkS1ozZ3pPSGRKZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU5iVmt6V1hwUk1VMXFaM2ROVkZrd1RWUkJlRTF0VG0xT2JVWm9DazlYU210YWFrRXdUV3BSZWsxVVVURk9la0Y1VGtSQmVrMTZRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDF0V1ROWmVsRXhUV3BuZDAxVVdUQk5WRUY0VFcxT2JVNXRSbWhQVjBwcldtcEJNRTFxVVhvS1RWUlJNVTU2UVhsT1JFRjZUWHBCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDF0V1ROWmVsRXhUV3BuZDAxVVdUQk5WRUY0VFcxT2JVNXRSbWdLVDFkS2ExcHFRVEJOYWxGNlRWUlJNVTU2UVhsT1JFRjZUWHBCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUktiVTR5VFRBS1RsUkpORTFFUlRKT1JFVjNUVlJLYWxwcVdtaFpWR3hwV2tkWmQwNUVTVEJOZWtVd1RsUmpkMDFxVVhkTmVrMTNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOYW10M1RYcEJNMDU2UlhoTlJFMTJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtNHdaVlEzT0ZGQlFVRlJSQXBCUldOM1VsRkpaME4zVkhWbFJHWlZTWHBqS3pJMVlWUjNZamhNVlcxUWNXaFdRazlHTXpKVmNXNW9TMFl6TTNrcldXZERTVkZFZGxkTGNERkhlV1JyQ2k4d2RFTjVjRFJHT0ZaamFrOVFVbXBXUTJaVFdscFdibWhtZWt4c1dYTkViSHBCUzBKblozRm9hMnBQVUZGUlJFRjNUbTVCUkVKclFXcEJSVFZ2YjNFS1lXZEpZa3RwV1U5eWRtOTJPSFo0V1c5S1ZtWnlPVEV6VlZKUUt6RktibWc0VVVsV1JUVTVSR3RPYWpaeWIwbExUbXRET1VocU9VZG5abWREVFVWeFlnbzRaM012TlZONWJrNXBOekp0ZDNkRE5WRkxVVlJ1UW1aYVVEQnZWRzlKUXpZMmNDOVpTVzFpY2pCS1NFVk1PRGgyVm5oQ2JEWjZTR2RSZFdoM1FUMDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg4SAxEIFglcgp8Mqy7VeaYRS/6WmSDaD48DEYpqYinF0CFBP7Dp5HU40f3/pzPEPq8zE8PmCbGA8yMDI2MDcwOTE1NTE0NVowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwNzA5MTU1MTQ1WjAvBgkqhkiG9w0BCQQxIgQgKVvLSNyhW5Q5TIXgRtMnFXVCiAGK5bapjNVcHtu8OQYwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxAKs8wTfJl+cNllCL8ojJIFAUYzK72Iludv8HSq4MVj2+8ZEq/CjszNon/bFK6bvDzgIxAL2isEOYPSM5bVWAlmU8R+52othS+FwXb7zZo7B07wmrxKAprp82Qvs1+162UKFwtw=="}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"725QwBrMTD0iAH2tskbyeUPUeCEIKR4GmUesxTrHyfo="},"signature":"MEYCIQDWD5LcqQ3YB/AgFaM9aMMCJUznMO7FhS3gg42BSX4swAIhAKuwDgkPe64XVnipwVulZphDdA23CBxClFnFVjw0DdZU"}}
|