Kernels:
Trusted publisher
Uploaded using `kernel-builder`.
Browse files- build/torch212-cxx11-xpu20253-x86_64-linux/__init__.py +75 -0
- build/torch212-cxx11-xpu20253-x86_64-linux/_activation_xpu_48c70b2.abi3.so +3 -0
- build/torch212-cxx11-xpu20253-x86_64-linux/_ops.py +9 -0
- build/torch212-cxx11-xpu20253-x86_64-linux/layers.py +201 -0
- build/torch212-cxx11-xpu20253-x86_64-linux/metadata.json +31 -0
- build/torch212-cxx11-xpu20253-x86_64-linux/metadata.json.sigstore +1 -0
- build/torch213-cxx11-xpu20260-x86_64-linux/__init__.py +75 -0
- build/torch213-cxx11-xpu20260-x86_64-linux/_activation_xpu_48c70b2.abi3.so +3 -0
- build/torch213-cxx11-xpu20260-x86_64-linux/_ops.py +9 -0
- build/torch213-cxx11-xpu20260-x86_64-linux/layers.py +201 -0
- build/torch213-cxx11-xpu20260-x86_64-linux/metadata.json +31 -0
- build/torch213-cxx11-xpu20260-x86_64-linux/metadata.json.sigstore +1 -0
build/torch212-cxx11-xpu20253-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/torch212-cxx11-xpu20253-x86_64-linux/_activation_xpu_48c70b2.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f6cd10f5f0554fe63f5665d013101cf0ece9f52c7aecf19882245fd3ea924436
|
| 3 |
+
size 947784
|
build/torch212-cxx11-xpu20253-x86_64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _activation_xpu_48c70b2
|
| 3 |
+
ops = torch.ops._activation_xpu_48c70b2
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_activation_xpu_48c70b2::{op_name}"
|
build/torch212-cxx11-xpu20253-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/torch212-cxx11-xpu20253-x86_64-linux/metadata.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "activation",
|
| 3 |
+
"id": "_activation_xpu_48c70b2",
|
| 4 |
+
"version": 1,
|
| 5 |
+
"license": "Apache-2.0",
|
| 6 |
+
"python-depends": [],
|
| 7 |
+
"kernel-depends": [],
|
| 8 |
+
"backend": {
|
| 9 |
+
"type": "xpu"
|
| 10 |
+
},
|
| 11 |
+
"digest": {
|
| 12 |
+
"algorithm": "sha256",
|
| 13 |
+
"files": {
|
| 14 |
+
"__init__.py": "NQdhY7p9BPoMw0NQodMKFTPSQXBlrsX3yUdP8MEHyH0=",
|
| 15 |
+
"_activation_xpu_48c70b2.abi3.so": "9s0Q9fBVT+Y/VmXQExAc8Ozp9Sx67PGYgiRf0+qSRDY=",
|
| 16 |
+
"_ops.py": "bnTZQDC/nPRug4m7O+3urq7Wog8gHfHGpSGak6zrx0o=",
|
| 17 |
+
"layers.py": "wWX07+W0BNFA7RyCE0jYH7aa2U3B8aiiIpu/Q4xsE0w="
|
| 18 |
+
}
|
| 19 |
+
},
|
| 20 |
+
"provenance": {
|
| 21 |
+
"kernel-builder": {
|
| 22 |
+
"version": "0.17.0-dev0",
|
| 23 |
+
"commit": "18c4d686a271ca6e56d0110fd36a9a5f58e86215",
|
| 24 |
+
"dirty": false
|
| 25 |
+
},
|
| 26 |
+
"kernel": {
|
| 27 |
+
"commit": "48c70b2ba7aef180abf5842ee848a2fbf6ac7938",
|
| 28 |
+
"dirty": false
|
| 29 |
+
}
|
| 30 |
+
}
|
| 31 |
+
}
|
build/torch212-cxx11-xpu20253-x86_64-linux/metadata.json.sigstore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHTDCCBtGgAwIBAgIUTVpg3Ofl9mst/gJTS12faFbdl/YwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwODI1MDg0NDE0WhcNMjYwODI1MDg1NDE0WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8/YRNmGcCNeJyxHGjgCMoqoqgZCAQFoB6cQ4tN6FD45HMNgLEOzy+WDuwyLJdcPFQWjM/+tzSwl/SKzs5iuPc6OCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUTUDJfWiKI8/+PitqjmJ2RnuQLMkwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNDhjNzBiMmJhN2FlZjE4MGFiZjU4NDJlZTg0OGEyZmJmNmFjNzkzODATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNDhjNzBiMmJhN2FlZjE4MGFiZjU4NDJlZTg0OGEyZmJmNmFjNzkzODAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoNDhjNzBiMmJhN2FlZjE4MGFiZjU4NDJlZTg0OGEyZmJmNmFjNzkzODAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDQ4YzcwYjJiYTdhZWYxODBhYmY1ODQyZWU4NDhhMmZiZjZhYzc5MzgwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzI4Mjc2ODkzMzkvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoDgXa6sAAAQDAEcwRQIgUm1+N18cjZ5k/L+U/KnPDwUepz87+pdog/TSP0ri+rcCIQDuyBcWWzdye+R8cwC9dXeWrn6HbR8SWY8C46dPMJzIyTAKBggqhkjOPQQDAwNpADBmAjEA160TL7Rv3d5RT/J/Y1Yi/wV2FtQK6+b4tv58M7VeAyL04FAnvTcrCANjOAzlrquXAjEA7sNsoijsiaf+jdzw/n/+xoyVUNWKYUFf58nykTCLWYTkcaEXnDTVETLmyF/mNWba"}, "tlogEntries":[{"logIndex":"2582952715", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1787647454", "inclusionPromise":{"signedEntryTimestamp":"MEYCIQDaFH1E7kzKu2YVMAsE1lKiKDQqoIXpWVuANTSwQmtASAIhAOgQa8TwMPdxbDayKFwvHcEHA+gWzehhkiakIiSUoFqF"}, "inclusionProof":{"logIndex":"2461048453", "rootHash":"rOwx5W0teN2+J8jLgoE3uFQW7dS8m8FoIM8a8Uyt+j4=", "treeSize":"2461048456", "hashes":["hujJ1pl4O9rurvrFYu9E8cj4NHQPQPSiMNgP0+oZiAY=", "y+1BLMQUOF4H6b/haYaRjMX3whuRX1EW9Ap8tzYanVw=", "CfL8c9ux8SkntUeE/LeHhCBZAH6U+LYKAddZNujgjMk=", "8K8+KSh64BpwE6NkbN+LNbrYuF/ZuKSFNsEpgRU/lEM=", "4UPW03pR5d/S8S25q3W+PC/TwhAPuxfTmfKnmO33cHA=", "f3c9bzyzF+wdeDh9V3kJZhvr3/T4gcysWlp0QzLka8E=", "Th15qgqYcs37kiyp97/BYdRRKqp/F+VA7CefNJPqzBE=", "JyiA1Pt/xAGPTTd1RuvrZlHKy0ONxEJxVSjQ2jTXw3g=", "AIf8u9gW8bL2y17W8LUxlNoyuhwQoXMnh4ikfEtQoyA=", "G1R9F5B2KizFA2NyhDznjNKXPOF1SDmbGHz+omLG7TY=", "RZ7XwGuqMr5gDUh2HpUcaXp+AmIiEcPJiMui4GLJE7o=", "mBm+vQtn0C4thMnlTnxfxqowq1dXsPBCKaJ85da3JeU=", "b80/J/68RC8/tx5xRdlKk6MmTpZiVRotquWBrE/z1pI=", "SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2461048456\nrOwx5W0teN2+J8jLgoE3uFQW7dS8m8FoIM8a8Uyt+j4=\n\n— rekor.sigstore.dev wNI9ajBEAiBB0EkDi4wSr0m0RZsA+2v1qM1RgQSR7YWnLq0qZlWqWwIgZbIB8sjuInY1PY/vkwHnLppqgvLrAgkl2i9GcjfqH6M=\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI3NWY0MjI0NzI1MDA0M2Y4NDRmYzhmYTI3MGNkYjdjMDk2OTA0ZDZhMTEzZTg4OTA4ZDY4OTcwN2NiZWU1YWZmIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUNDZGY2eWNkajU1aEhYcDdrMFkzSUdCeWJERHV0bzlVbVZrOTZNSk1oQWN3SWdUZWpRckppc1dvYTcvQTgyYUpFckxBcklSTS8zSktldXl6aHNUUFBsWDNBPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFVSRU5EUW5SSFowRjNTVUpCWjBsVlZGWndaek5QWm13NWJYTjBMMmRLVkZNeE1tWmhSbUprYkM5WmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlFU1RGTlJHY3dUa1JGTUZkb1kwNU5hbGwzVDBSSk1VMUVaekZPUkVVd1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVU0TDFsU1RtMUhZME5PWlVwNWVFaEhhbWREVFc5eGIzRm5Xa05CVVVadlFqWmpVVFFLZEU0MlJrUTBOVWhOVG1kTVJVOTZlU3RYUkhWM2VVeEtaR05RUmxGWGFrMHZLM1I2VTNkc0wxTkxlbk0xYVhWUVl6WlBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZVVlVSS0NtWlhhVXRKT0M4clVHbDBjV3B0U2pKU2JuVlJURTFyZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU9SR2hxVG5wQ2FVMXRTbWhPTWtac1dtcEZORTFIUm1sYWFsVTBDazVFU214YVZHY3dUMGRGZVZwdFNtMU9iVVpxVG5wcmVrOUVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDVFYUdwT2VrSnBUVzFLYUU0eVJteGFha1UwVFVkR2FWcHFWVFJPUkVwc1dsUm5NRTlIUlhrS1dtMUtiVTV0Um1wT2VtdDZUMFJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDVFYUdwT2VrSnBUVzFLYUU0eVJteGFha1UwVFVkR2FWcHFWVFFLVGtSS2JGcFVaekJQUjBWNVdtMUtiVTV0Um1wT2VtdDZUMFJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUlJORmw2WTNjS1dXcEthVmxVWkdoYVYxbDRUMFJDYUZsdFdURlBSRkY1V2xkVk5FNUVhR2hOYlZwcFdtcGFhRmw2WXpWTmVtZDNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWtrMFRXcGpNazlFYTNwTmVtdDJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOUVaMWhoTm5OQlFVRlJSQXBCUldOM1VsRkpaMVZ0TVN0T01UaGphbG8xYXk5TUsxVXZTMjVRUkhkVlpYQjZPRGNyY0dSdlp5OVVVMUF3Y21rcmNtTkRTVkZFZFhsQ1kxZFhlbVI1Q21VclVqaGpkME01WkZobFYzSnVOa2hpVWpoVFYxazRRelEyWkZCTlNucEplVlJCUzBKblozRm9hMnBQVUZGUlJFRjNUbkJCUkVKdFFXcEZRVEUyTUZRS1REZFNkak5rTlZKVUwwb3ZXVEZaYVM5M1ZqSkdkRkZMTml0aU5IUjJOVGhOTjFabFFYbE1NRFJHUVc1MlZHTnlRMEZPYWs5QmVteHljWFZZUVdwRlFRbzNjMDV6YjJscWMybGhaaXRxWkhwM0wyNHZLM2h2ZVZaVlRsZExXVlZHWmpVNGJubHJWRU5NVjFsVWEyTmhSVmh1UkZSV1JWUk1iWGxHTDIxT1YySmhDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgzcKm8be/64JUkhZksQHmlXiXVUPKZVCRZMlgSF/MYWQCFQDk+EzzalIsQ1QfN/zwIGKMfkpyPRgPMjAyNjA4MjUwODQ0MTRaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDgyNTA4NDQxNFowLwYJKoZIhvcNAQkEMSIEILyqaKs4tpX/1a/ZEyJH+zcGhl+104lPg28XZkIVtdfWMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMF/20j7/6YX7Ks2DdzdAuDB1E7NXOqvpm08/V9NDG0Ea60AvFGI/Rtitun06a/+gMwIwYo+tsafr8CsmVFWcI9RxIi1/ACt3bYqD2ZZmZ8VIkdGRvuDZMuMwZ2i3h4ftIdHo"}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"dfQiRyUAQ/hE/I+icM23wJaQTWoRPoiQjWiXB8vuWv8="}, "signature":"MEUCIQCCdf6ycdj55hHXp7k0Y3IGBybDDuto9UmVk96MJMhAcwIgTejQrJisWoa7/A82aJErLArIRM/3JKeuyzhsTPPlX3A="}}
|
build/torch213-cxx11-xpu20260-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/torch213-cxx11-xpu20260-x86_64-linux/_activation_xpu_48c70b2.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3ea5dec8a81959e2125267c71b804d485a397119c7fff05fbe03b955978bbd71
|
| 3 |
+
size 893328
|
build/torch213-cxx11-xpu20260-x86_64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _activation_xpu_48c70b2
|
| 3 |
+
ops = torch.ops._activation_xpu_48c70b2
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_activation_xpu_48c70b2::{op_name}"
|
build/torch213-cxx11-xpu20260-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/torch213-cxx11-xpu20260-x86_64-linux/metadata.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "activation",
|
| 3 |
+
"id": "_activation_xpu_48c70b2",
|
| 4 |
+
"version": 1,
|
| 5 |
+
"license": "Apache-2.0",
|
| 6 |
+
"python-depends": [],
|
| 7 |
+
"kernel-depends": [],
|
| 8 |
+
"backend": {
|
| 9 |
+
"type": "xpu"
|
| 10 |
+
},
|
| 11 |
+
"digest": {
|
| 12 |
+
"algorithm": "sha256",
|
| 13 |
+
"files": {
|
| 14 |
+
"__init__.py": "NQdhY7p9BPoMw0NQodMKFTPSQXBlrsX3yUdP8MEHyH0=",
|
| 15 |
+
"_activation_xpu_48c70b2.abi3.so": "PqXeyKgZWeISUmfHG4BNSFo5cRnH//BfvgO5VZeLvXE=",
|
| 16 |
+
"_ops.py": "bnTZQDC/nPRug4m7O+3urq7Wog8gHfHGpSGak6zrx0o=",
|
| 17 |
+
"layers.py": "wWX07+W0BNFA7RyCE0jYH7aa2U3B8aiiIpu/Q4xsE0w="
|
| 18 |
+
}
|
| 19 |
+
},
|
| 20 |
+
"provenance": {
|
| 21 |
+
"kernel-builder": {
|
| 22 |
+
"version": "0.17.0-dev0",
|
| 23 |
+
"commit": "18c4d686a271ca6e56d0110fd36a9a5f58e86215",
|
| 24 |
+
"dirty": false
|
| 25 |
+
},
|
| 26 |
+
"kernel": {
|
| 27 |
+
"commit": "48c70b2ba7aef180abf5842ee848a2fbf6ac7938",
|
| 28 |
+
"dirty": false
|
| 29 |
+
}
|
| 30 |
+
}
|
| 31 |
+
}
|
build/torch213-cxx11-xpu20260-x86_64-linux/metadata.json.sigstore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial":{"certificate":{"rawBytes":"MIIHSzCCBtGgAwIBAgIUaHh70MSckW9Mv6UCYT89XER7MggwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjYwODI1MDg0NDE0WhcNMjYwODI1MDg1NDE0WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESNp05kxmxhGPKgv10LLRErBYD9A+k7rWUn8CDLB/kb2NmwoWqzYGqvqWNInSSN4uG3cxufezK+EQeO1H6HXGzqOCBfAwggXsMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUfnTXlupk1GJD1DzkD6rnt9RPqQQwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wawYDVR0RAQH/BGEwX4ZdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDkGCisGAQQBg78wAQEEK2h0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb20wHwYKKwYBBAGDvzABAgQRd29ya2Zsb3dfZGlzcGF0Y2gwNgYKKwYBBAGDvzABAwQoNDhjNzBiMmJhN2FlZjE4MGFiZjU4NDJlZTg0OGEyZmJmNmFjNzkzODATBgorBgEEAYO/MAEEBAVCdWlsZDArBgorBgEEAYO/MAEFBB1odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eTAdBgorBgEEAYO/MAEGBA9yZWZzL2hlYWRzL21haW4wOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMG0GCisGAQQBg78wAQkEXwxdaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5Ly5naXRodWIvd29ya2Zsb3dzL2J1aWxkLnlhbWxAcmVmcy9oZWFkcy9tYWluMDgGCisGAQQBg78wAQoEKgwoNDhjNzBiMmJhN2FlZjE4MGFiZjU4NDJlZTg0OGEyZmJmNmFjNzkzODAbBgorBgEEAYO/MAELBA0MC3NlbGYtaG9zdGVkMEAGCisGAQQBg78wAQwEMgwwaHR0cHM6Ly9naXRodWIuY29tL2h1Z2dpbmdmYWNlL2tlcm5lbHMtY29tbXVuaXR5MDgGCisGAQQBg78wAQ0EKgwoNDhjNzBiMmJhN2FlZjE4MGFiZjU4NDJlZTg0OGEyZmJmNmFjNzkzODAfBgorBgEEAYO/MAEOBBEMD3JlZnMvaGVhZHMvbWFpbjAaBgorBgEEAYO/MAEPBAwMCjEwNzE0NzU1MjkwLgYKKwYBBAGDvzABEAQgDB5odHRwczovL2dpdGh1Yi5jb20vaHVnZ2luZ2ZhY2UwGAYKKwYBBAGDvzABEQQKDAgyNTcyMDc0MzBtBgorBgEEAYO/MAESBF8MXWh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS8uZ2l0aHViL3dvcmtmbG93cy9idWlsZC55YW1sQHJlZnMvaGVhZHMvbWFpbjA4BgorBgEEAYO/MAETBCoMKDQ4YzcwYjJiYTdhZWYxODBhYmY1ODQyZWU4NDhhMmZiZjZhYzc5MzgwIQYKKwYBBAGDvzABFAQTDBF3b3JrZmxvd19kaXNwYXRjaDBkBgorBgEEAYO/MAEVBFYMVGh0dHBzOi8vZ2l0aHViLmNvbS9odWdnaW5nZmFjZS9rZXJuZWxzLWNvbW11bml0eS9hY3Rpb25zL3J1bnMvMzI4Mjc2ODkzMzkvYXR0ZW1wdHMvMTAWBgorBgEEAYO/MAEWBAgMBnB1YmxpYzBGBgorBgEEAYO/MAEYBDgMNnJlcG86aHVnZ2luZ2ZhY2Uva2VybmVscy1jb21tdW5pdHk6cmVmOnJlZnMvaGVhZHMvbWFpbjCBigYKKwYBBAHWeQIEAgR8BHoAeAB2AN09MGrGxxEyYxkeHJlnNwKiSl643jyt/4eKcoAvKe6OAAABoDgXbrMAAAQDAEcwRQIhALBZgbe+Ugc3RcPhFPNRN08qX/QXoNr+TN9OgW2+iQrsAiBGsK3b1xY7JrRmmm0ylEnnYh89GsnUVVn2eRw6+KsE/zAKBggqhkjOPQQDAwNoADBlAjBKxtgqoyD3bRUU2H/Jczww/vOtfupa+bV9kYq/IfkHr3l4gXe9h8y0LED8xCdcpw0CMQCOWYknLf4r/juX9ADvtL9/zGhgp4u4KoAki0xDMuBALM0NtwLpcEkhsi7T67h5JX8="}, "tlogEntries":[{"logIndex":"2582952732", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1787647455", "inclusionPromise":{"signedEntryTimestamp":"MEYCIQC24TGmG6TiahBrYl3rBBxHEjQFH1kqUBoDZPVljjjtuAIhAOmAwbC94VMN483qCruxV8pvdfoh7b9ZaoGkNwv41IF5"}, "inclusionProof":{"logIndex":"2461048470", "rootHash":"Ke0GEu0Bkxji8g/Wq+qQ4FDdD2ADQzLhmbMmvJk/l4w=", "treeSize":"2461048473", "hashes":["v1V0KVIELAjsfp3jsr7T8902mR2dsVzeN0uUTFb0RQQ=", "pOOM/VoztRL98mO20yGMip7WLAfM6cJ66I9F9JLGpL0=", "6ogh73FEPJIDIH/XqT8TUh5rB8ZTi06X8xusZsp2BBU=", "YU3+LLAyR0lDvDG2z7VtwZF95pPKHYaD84fsINsQkNs=", "ZvfwVcEZ2o5rqYJfSdbjL988fsmMvqUvFQvROEEDORA=", "8K8+KSh64BpwE6NkbN+LNbrYuF/ZuKSFNsEpgRU/lEM=", "4UPW03pR5d/S8S25q3W+PC/TwhAPuxfTmfKnmO33cHA=", "f3c9bzyzF+wdeDh9V3kJZhvr3/T4gcysWlp0QzLka8E=", "Th15qgqYcs37kiyp97/BYdRRKqp/F+VA7CefNJPqzBE=", "JyiA1Pt/xAGPTTd1RuvrZlHKy0ONxEJxVSjQ2jTXw3g=", "AIf8u9gW8bL2y17W8LUxlNoyuhwQoXMnh4ikfEtQoyA=", "G1R9F5B2KizFA2NyhDznjNKXPOF1SDmbGHz+omLG7TY=", "RZ7XwGuqMr5gDUh2HpUcaXp+AmIiEcPJiMui4GLJE7o=", "mBm+vQtn0C4thMnlTnxfxqowq1dXsPBCKaJ85da3JeU=", "b80/J/68RC8/tx5xRdlKk6MmTpZiVRotquWBrE/z1pI=", "SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2461048473\nKe0GEu0Bkxji8g/Wq+qQ4FDdD2ADQzLhmbMmvJk/l4w=\n\n— rekor.sigstore.dev wNI9ajBEAiBzea2Di2kYRDnPTkDAlaKeN8k4ViaigH4s6VAvEPEiVAIgDxsWJXBeIMgUkvLtFU9e99h6QLft+1ZkuPfDlwhDR74=\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIwN2UzMjRhOTY3OTNkYjJhMWNjOGE2Y2RiNGE5MDEzZGIwYWZjZTYxODExNWFiMDY4ZDZkOWZhNzNjZjlkNWZlIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQnlqRGlqZ3FjMk5CbFI5b09zNGppSGZsMC9yMityUEFkclJBbUQxVEpDN0FpQnBBakRoVVZiMW5Ed0NRczZBU0UyeVFGV0dwQkZxcVVqREM3RXhMcXp5enc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRla05EUW5SSFowRjNTVUpCWjBsVllVaG9OekJOVTJOclZ6bE5kalpWUTFsVU9EbFlSVkkzVFdkbmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlFU1RGTlJHY3dUa1JGTUZkb1kwNU5hbGwzVDBSSk1VMUVaekZPUkVVd1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZUVG5Bd05XdDRiWGhvUjFCTFozWXhNRXhNVWtWeVFsbEVPVUVyYXpkeVYxVnVPRU1LUkV4Q0wydGlNazV0ZDI5WGNYcFpSM0YyY1ZkT1NXNVRVMDQwZFVjelkzaDFabVY2U3l0RlVXVlBNVWcyU0ZoSGVuRlBRMEptUVhkbloxaHpUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZtYmxSWUNteDFjR3N4UjBwRU1VUjZhMFEyY201ME9WSlFjVkZSZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU9SR2hxVG5wQ2FVMXRTbWhPTWtac1dtcEZORTFIUm1sYWFsVTBDazVFU214YVZHY3dUMGRGZVZwdFNtMU9iVVpxVG5wcmVrOUVRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDVFYUdwT2VrSnBUVzFLYUU0eVJteGFha1UwVFVkR2FWcHFWVFJPUkVwc1dsUm5NRTlIUlhrS1dtMUtiVTV0Um1wT2VtdDZUMFJCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDVFYUdwT2VrSnBUVzFLYUU0eVJteGFha1UwVFVkR2FWcHFWVFFLVGtSS2JGcFVaekJQUjBWNVdtMUtiVTV0Um1wT2VtdDZUMFJCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUlJORmw2WTNjS1dXcEthVmxVWkdoYVYxbDRUMFJDYUZsdFdURlBSRkY1V2xkVk5FNUVhR2hOYlZwcFdtcGFhRmw2WXpWTmVtZDNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWtrMFRXcGpNazlFYTNwTmVtdDJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0VKSWIwRUtaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOUVaMWhpY2sxQlFVRlJSQXBCUldOM1VsRkphRUZNUWxwblltVXJWV2RqTTFKalVHaEdVRTVTVGpBNGNWZ3ZVVmh2VG5JclZFNDVUMmRYTWl0cFVYSnpRV2xDUjNOTE0ySXhlRmszQ2tweVVtMXRiVEI1YkVWdWJsbG9PRGxIYzI1VlZsWnVNbVZTZHpZclMzTkZMM3BCUzBKblozRm9hMnBQVUZGUlJFRjNUbTlCUkVKc1FXcENTM2gwWjNFS2IzbEVNMkpTVlZVeVNDOUtZM3AzZHk5MlQzUm1kWEJoSzJKV09XdFpjUzlKWm10SWNqTnNOR2RZWlRsb09Ia3dURVZFT0hoRFpHTndkekJEVFZGRFR3cFhXV3R1VEdZMGNpOXFkVmc1UVVSMmRFdzVMM3BIYUdkd05IVTBTMjlCYTJrd2VFUk5kVUpCVEUwd1RuUjNUSEJqUld0b2MyazNWRFkzYURWS1dEZzlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgbylPauhHq1fhRyUYekP/Sce2+WQNkyEaJayRts1nz6kCFQDl4SJqErLgaaPTO7xZuLidaOHPRxgPMjAyNjA4MjUwODQ0MTRaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHbMIIB1wIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDgyNTA4NDQxNFowLwYJKoZIhvcNAQkEMSIEIHUvYtlnA9xfd+l2LwH7021vlfKOmM5BwtQGqGG3iMrTMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRnMGUCMAJuDwxEQTT8MLvnbVIh2YQS68HJrrsNR+gWuyOxTNWHsMaUc6qyI7bMo+xDE9oHrwIxAPXlnQSK9oGiT4Gto1LpqcwyWhUoWBRoWsorXLMfiQSjvjGmOnoCnPbKwiCofL6y4Q=="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"B+MkqWeT2yocyKbNtKkBPbCvzmGBFasGjW2fpzz51f4="}, "signature":"MEQCIByjDijgqc2NBlR9oOs4jiHfl0/r2+rPAdrRAmD1TJC7AiBpAjDhUVb1nDwCQs6ASE2yQFWGpBFqqUjDC7ExLqzyzw=="}}
|