Kernels:
Trusted publisher
Uploaded using `kernel-builder`.
Browse files- build/torch-stable-abi210-cu126-x86_64-linux/__init__.py +23 -0
- build/torch-stable-abi210-cu126-x86_64-linux/_custom_ops.py +173 -0
- build/torch-stable-abi210-cu126-x86_64-linux/_ops.py +9 -0
- build/torch-stable-abi210-cu126-x86_64-linux/_paged_attention_cuda_4b8a7b6.abi3.so +3 -0
- build/torch-stable-abi210-cu126-x86_64-linux/_private_for_testing.py +7 -0
- build/torch-stable-abi210-cu126-x86_64-linux/metadata.json +44 -0
- build/torch-stable-abi210-cu126-x86_64-linux/metadata.json.sigstore +1 -0
- build/torch-stable-abi210-cu126-x86_64-linux/platforms.py +92 -0
- build/torch-stable-abi210-cu130-x86_64-linux/__init__.py +23 -0
- build/torch-stable-abi210-cu130-x86_64-linux/_custom_ops.py +173 -0
- build/torch-stable-abi210-cu130-x86_64-linux/_ops.py +9 -0
- build/torch-stable-abi210-cu130-x86_64-linux/_paged_attention_cuda_4b8a7b6.abi3.so +3 -0
- build/torch-stable-abi210-cu130-x86_64-linux/_private_for_testing.py +7 -0
- build/torch-stable-abi210-cu130-x86_64-linux/metadata.json +47 -0
- build/torch-stable-abi210-cu130-x86_64-linux/metadata.json.sigstore +1 -0
- build/torch-stable-abi210-cu130-x86_64-linux/platforms.py +92 -0
- build/torch-stable-abi210-cu132-x86_64-linux/__init__.py +23 -0
- build/torch-stable-abi210-cu132-x86_64-linux/_custom_ops.py +173 -0
- build/torch-stable-abi210-cu132-x86_64-linux/_ops.py +9 -0
- build/torch-stable-abi210-cu132-x86_64-linux/_paged_attention_cuda_4b8a7b6.abi3.so +3 -0
- build/torch-stable-abi210-cu132-x86_64-linux/_private_for_testing.py +7 -0
- build/torch-stable-abi210-cu132-x86_64-linux/metadata.json +47 -0
- build/torch-stable-abi210-cu132-x86_64-linux/metadata.json.sigstore +1 -0
- build/torch-stable-abi210-cu132-x86_64-linux/platforms.py +92 -0
build/torch-stable-abi210-cu126-x86_64-linux/__init__.py
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from . import platforms
|
| 2 |
+
from ._custom_ops import (
|
| 3 |
+
convert_fp8,
|
| 4 |
+
copy_blocks,
|
| 5 |
+
paged_attention_v1,
|
| 6 |
+
paged_attention_v2,
|
| 7 |
+
reshape_and_cache,
|
| 8 |
+
reshape_and_cache_flash,
|
| 9 |
+
swap_blocks,
|
| 10 |
+
)
|
| 11 |
+
|
| 12 |
+
from . import _private_for_testing # noqa: F401
|
| 13 |
+
|
| 14 |
+
__all__ = [
|
| 15 |
+
"_private_for_testing",
|
| 16 |
+
"convert_fp8",
|
| 17 |
+
"copy_blocks",
|
| 18 |
+
"paged_attention_v1",
|
| 19 |
+
"paged_attention_v2",
|
| 20 |
+
"reshape_and_cache",
|
| 21 |
+
"reshape_and_cache_flash",
|
| 22 |
+
"swap_blocks",
|
| 23 |
+
]
|
build/torch-stable-abi210-cu126-x86_64-linux/_custom_ops.py
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import List, Optional
|
| 2 |
+
|
| 3 |
+
import torch
|
| 4 |
+
|
| 5 |
+
from ._ops import ops
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
# page attention ops
|
| 9 |
+
def paged_attention_v1(
|
| 10 |
+
out: torch.Tensor,
|
| 11 |
+
query: torch.Tensor,
|
| 12 |
+
key_cache: torch.Tensor,
|
| 13 |
+
value_cache: torch.Tensor,
|
| 14 |
+
num_kv_heads: int,
|
| 15 |
+
scale: float,
|
| 16 |
+
block_tables: torch.Tensor,
|
| 17 |
+
seq_lens: torch.Tensor,
|
| 18 |
+
block_size: int,
|
| 19 |
+
max_seq_len: int,
|
| 20 |
+
alibi_slopes: Optional[torch.Tensor],
|
| 21 |
+
kv_cache_dtype: str,
|
| 22 |
+
k_scale: float,
|
| 23 |
+
v_scale: float,
|
| 24 |
+
tp_rank: int = 0,
|
| 25 |
+
blocksparse_local_blocks: int = 0,
|
| 26 |
+
blocksparse_vert_stride: int = 0,
|
| 27 |
+
blocksparse_block_size: int = 64,
|
| 28 |
+
blocksparse_head_sliding_step: int = 0,
|
| 29 |
+
) -> None:
|
| 30 |
+
ops.paged_attention_v1(
|
| 31 |
+
out,
|
| 32 |
+
query,
|
| 33 |
+
key_cache,
|
| 34 |
+
value_cache,
|
| 35 |
+
num_kv_heads,
|
| 36 |
+
scale,
|
| 37 |
+
block_tables,
|
| 38 |
+
seq_lens,
|
| 39 |
+
block_size,
|
| 40 |
+
max_seq_len,
|
| 41 |
+
alibi_slopes,
|
| 42 |
+
kv_cache_dtype,
|
| 43 |
+
k_scale,
|
| 44 |
+
v_scale,
|
| 45 |
+
tp_rank,
|
| 46 |
+
blocksparse_local_blocks,
|
| 47 |
+
blocksparse_vert_stride,
|
| 48 |
+
blocksparse_block_size,
|
| 49 |
+
blocksparse_head_sliding_step,
|
| 50 |
+
)
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def paged_attention_v2(
|
| 54 |
+
out: torch.Tensor,
|
| 55 |
+
exp_sum: torch.Tensor,
|
| 56 |
+
max_logits: torch.Tensor,
|
| 57 |
+
tmp_out: torch.Tensor,
|
| 58 |
+
query: torch.Tensor,
|
| 59 |
+
key_cache: torch.Tensor,
|
| 60 |
+
value_cache: torch.Tensor,
|
| 61 |
+
num_kv_heads: int,
|
| 62 |
+
scale: float,
|
| 63 |
+
block_tables: torch.Tensor,
|
| 64 |
+
seq_lens: torch.Tensor,
|
| 65 |
+
block_size: int,
|
| 66 |
+
max_seq_len: int,
|
| 67 |
+
alibi_slopes: Optional[torch.Tensor],
|
| 68 |
+
kv_cache_dtype: str,
|
| 69 |
+
k_scale: float,
|
| 70 |
+
v_scale: float,
|
| 71 |
+
tp_rank: int = 0,
|
| 72 |
+
blocksparse_local_blocks: int = 0,
|
| 73 |
+
blocksparse_vert_stride: int = 0,
|
| 74 |
+
blocksparse_block_size: int = 64,
|
| 75 |
+
blocksparse_head_sliding_step: int = 0,
|
| 76 |
+
) -> None:
|
| 77 |
+
ops.paged_attention_v2(
|
| 78 |
+
out,
|
| 79 |
+
exp_sum,
|
| 80 |
+
max_logits,
|
| 81 |
+
tmp_out,
|
| 82 |
+
query,
|
| 83 |
+
key_cache,
|
| 84 |
+
value_cache,
|
| 85 |
+
num_kv_heads,
|
| 86 |
+
scale,
|
| 87 |
+
block_tables,
|
| 88 |
+
seq_lens,
|
| 89 |
+
block_size,
|
| 90 |
+
max_seq_len,
|
| 91 |
+
alibi_slopes,
|
| 92 |
+
kv_cache_dtype,
|
| 93 |
+
k_scale,
|
| 94 |
+
v_scale,
|
| 95 |
+
tp_rank,
|
| 96 |
+
blocksparse_local_blocks,
|
| 97 |
+
blocksparse_vert_stride,
|
| 98 |
+
blocksparse_block_size,
|
| 99 |
+
blocksparse_head_sliding_step,
|
| 100 |
+
)
|
| 101 |
+
|
| 102 |
+
|
| 103 |
+
def reshape_and_cache(
|
| 104 |
+
key: torch.Tensor,
|
| 105 |
+
value: torch.Tensor,
|
| 106 |
+
key_cache: torch.Tensor,
|
| 107 |
+
value_cache: torch.Tensor,
|
| 108 |
+
slot_mapping: torch.Tensor,
|
| 109 |
+
kv_cache_dtype: str,
|
| 110 |
+
k_scale: float,
|
| 111 |
+
v_scale: float,
|
| 112 |
+
) -> None:
|
| 113 |
+
ops.reshape_and_cache(
|
| 114 |
+
key,
|
| 115 |
+
value,
|
| 116 |
+
key_cache,
|
| 117 |
+
value_cache,
|
| 118 |
+
slot_mapping,
|
| 119 |
+
kv_cache_dtype,
|
| 120 |
+
k_scale,
|
| 121 |
+
v_scale,
|
| 122 |
+
)
|
| 123 |
+
|
| 124 |
+
|
| 125 |
+
def reshape_and_cache_flash(
|
| 126 |
+
key: torch.Tensor,
|
| 127 |
+
value: torch.Tensor,
|
| 128 |
+
key_cache: torch.Tensor,
|
| 129 |
+
value_cache: torch.Tensor,
|
| 130 |
+
slot_mapping: torch.Tensor,
|
| 131 |
+
kv_cache_dtype: str,
|
| 132 |
+
k_scale: torch.Tensor,
|
| 133 |
+
v_scale: torch.Tensor,
|
| 134 |
+
) -> None:
|
| 135 |
+
ops.reshape_and_cache_flash(
|
| 136 |
+
key,
|
| 137 |
+
value,
|
| 138 |
+
key_cache,
|
| 139 |
+
value_cache,
|
| 140 |
+
slot_mapping,
|
| 141 |
+
kv_cache_dtype,
|
| 142 |
+
k_scale,
|
| 143 |
+
v_scale,
|
| 144 |
+
)
|
| 145 |
+
|
| 146 |
+
|
| 147 |
+
def copy_blocks(
|
| 148 |
+
key_caches: List[torch.Tensor],
|
| 149 |
+
value_caches: List[torch.Tensor],
|
| 150 |
+
block_mapping: torch.Tensor,
|
| 151 |
+
) -> None:
|
| 152 |
+
ops.copy_blocks(key_caches, value_caches, block_mapping)
|
| 153 |
+
|
| 154 |
+
|
| 155 |
+
def swap_blocks(
|
| 156 |
+
src: torch.Tensor, dst: torch.Tensor, block_mapping: torch.Tensor
|
| 157 |
+
) -> None:
|
| 158 |
+
ops.swap_blocks(src, dst, block_mapping)
|
| 159 |
+
|
| 160 |
+
|
| 161 |
+
def convert_fp8(
|
| 162 |
+
output: torch.Tensor, input: torch.Tensor, scale: float = 1.0, kv_dtype: str = "fp8"
|
| 163 |
+
) -> None:
|
| 164 |
+
ops.convert_fp8(output, input, scale, kv_dtype)
|
| 165 |
+
|
| 166 |
+
|
| 167 |
+
__all__ = [
|
| 168 |
+
"convert_fp8",
|
| 169 |
+
"paged_attention_v1",
|
| 170 |
+
"paged_attention_v2",
|
| 171 |
+
"reshape_and_cache",
|
| 172 |
+
"copy_blocks",
|
| 173 |
+
]
|
build/torch-stable-abi210-cu126-x86_64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _paged_attention_cuda_4b8a7b6
|
| 3 |
+
ops = torch.ops._paged_attention_cuda_4b8a7b6
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_paged_attention_cuda_4b8a7b6::{op_name}"
|
build/torch-stable-abi210-cu126-x86_64-linux/_paged_attention_cuda_4b8a7b6.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:465ad3baeb4ca55824956916df7fb110d8b4f1251c4cfd1974de808c4f3adcbd
|
| 3 |
+
size 138139456
|
build/torch-stable-abi210-cu126-x86_64-linux/_private_for_testing.py
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Internal symbols that need to be exposed for the test suite."""
|
| 2 |
+
|
| 3 |
+
from ._ops import ops
|
| 4 |
+
|
| 5 |
+
__all__ = [
|
| 6 |
+
"ops",
|
| 7 |
+
]
|
build/torch-stable-abi210-cu126-x86_64-linux/metadata.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "paged-attention",
|
| 3 |
+
"id": "_paged_attention_cuda_4b8a7b6",
|
| 4 |
+
"version": 2,
|
| 5 |
+
"kernels-minver": "0.14.0",
|
| 6 |
+
"license": "Apache-2.0",
|
| 7 |
+
"python-depends": [],
|
| 8 |
+
"kernel-depends": [],
|
| 9 |
+
"backend": {
|
| 10 |
+
"type": "cuda",
|
| 11 |
+
"archs": [
|
| 12 |
+
"7.0",
|
| 13 |
+
"7.2",
|
| 14 |
+
"7.5",
|
| 15 |
+
"8.0",
|
| 16 |
+
"8.6",
|
| 17 |
+
"8.7",
|
| 18 |
+
"8.9",
|
| 19 |
+
"9.0+PTX"
|
| 20 |
+
]
|
| 21 |
+
},
|
| 22 |
+
"digest": {
|
| 23 |
+
"algorithm": "sha256",
|
| 24 |
+
"files": {
|
| 25 |
+
"__init__.py": "iImkWaa9phF1Yo9eaibD+dvh0W3HXLUpMwl9kfaeZ1w=",
|
| 26 |
+
"_custom_ops.py": "tnC6OR7TPhMV+tt8MyUyIH2gDIdxBzHT+1z1NUhA9EE=",
|
| 27 |
+
"_ops.py": "auz+JB60XwCdqM2eFtbS9mdhpZwUcp8BK7SnzHS3bvo=",
|
| 28 |
+
"_paged_attention_cuda_4b8a7b6.abi3.so": "RlrTuutMpVgklWkW33+xENi08SUcTP0ZdN6AjE863L0=",
|
| 29 |
+
"_private_for_testing.py": "7iW8UbcC7nyQDzB1nslnXbLFVq9ceOaiP+VLo6hE/no=",
|
| 30 |
+
"platforms.py": "NeAhENqA8yXHgy3EfkYP1Bkx1n6aStkExV9py7Jvdiw="
|
| 31 |
+
}
|
| 32 |
+
},
|
| 33 |
+
"provenance": {
|
| 34 |
+
"kernel-builder": {
|
| 35 |
+
"version": "0.17.0-dev0",
|
| 36 |
+
"commit": "a7f0afdb29a6a3372b1d47180cc0c182454c5e3b",
|
| 37 |
+
"dirty": false
|
| 38 |
+
},
|
| 39 |
+
"kernel": {
|
| 40 |
+
"commit": "4b8a7b601eeacbe87d9836605f1c65496dc718b2",
|
| 41 |
+
"dirty": false
|
| 42 |
+
}
|
| 43 |
+
}
|
| 44 |
+
}
|
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":"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"}, "tlogEntries":[{"logIndex":"3023417683", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1790791793", "inclusionPromise":{"signedEntryTimestamp":"MEYCIQCC0aSEcqWR2wgYHqW6XJe4Vd6CCFvHueollp6O54DjmgIhAJkzCWRuF/8A2Jb8wgGl/eg3gZImVeHnEvu97KjgPgMW"}, "inclusionProof":{"logIndex":"2901513421", "rootHash":"Cje1CNSsLTFVqQND8soubA+/mNdfQ6vdxWXGgZFzDjA=", "treeSize":"2901513445", "hashes":["GTpOy3S7yRsiSx7WwdxuDzLdWNKSfLA3E++VNZz7hXY=", "PhbhRud0FCcWjgL8ulB1I+esQdl9/x23Gp5u9cQWsHw=", "jbzqg9tt6MgzJ2voxJl1si7zsY3ArVwZxBABMJOIDJ4=", "LZ6Soyje1ENOzylrHhih7vHFmwD61PfsTaC48kRH4r0=", "gzgt/6vGoL6LF4Pxh6QgFP+kYCz/wKOSqBZCY+8ovuM=", "qATM80TyFsxYnov7OUP26kqNsLh06LbSAybZ2oq9084=", "vkbH/F/eR5N8gL64LJYJyMffWLUjvEuVEenaEqhHupw=", "MWwpn86+9kQYOYTwi4UMcQ7UcOmXZh+t43ztShwMynI=", "KkM4t12E/0oDsQUKu2L03FdljDSCr6SMNKcjNHFVwkg=", "DBf+6S2FPBJx6iWymdRRUYRU/lyeflo7HU1q99h8qfo=", "dqgK4q43/y6aLFT0j3OJDK0/wP3bB1DcjtXt+M9ZDgA=", "YI8EgjQmA38CJT2O2AulXkUFuygfBUvKto28k1J1g2U=", "gjP07uTk7mDQZEVMqe6TZetGLEhOhmmEiWzeOyme2rk=", "qOJyrwx/VzDfrHHCPrmyyJlJlVTT2lwb0jUshbhlF6Q=", "R65BPV8zugTBA3eQG4LqBT4kXwiJbUY1GYPdd4glLTg=", "AqDykV6o5ERshtWsKq2KL+g91mURajZ2DQDbOsXvZ3I=", "4lYk7cX8PszZLoyQMWjMDB1BOBn4f7hehtFiHo92e5Y=", "ttpxd0TJprOUtb/8Wf5DeIzwNtUw72Q0YnXE2LFMIZo=", "qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2901513445\nCje1CNSsLTFVqQND8soubA+/mNdfQ6vdxWXGgZFzDjA=\n\n— rekor.sigstore.dev wNI9ajBFAiBAGZ98zWjd0U/CKIxwWmMnlA9WmaveUzTYiHAymBIs6wIhAONncJaEMHceBhuZnWeUHbO5EnrpM7p3rGeZkpb3uA/d\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxNDVmNWRmYzhlZTU4ZjM0NDE0OGMzMDI1MTk1Y2JlOTYwNzJhYWRmYzlkNjBhZDQ5YzA0OGYwYjIxMjI4MWJlIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUMvTnNmZm1MZTR2M1VMRmhQMHFWMmNpU05FQjR6WTlTWDFnTFVIdCtVeGxnSWdUblZOUnpCRFRJbXZqbzgwbHVyZjdkZzNGNWkrN0V2Y2tBeDl5b3N2d1FnPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFVSRU5EUW5STFowRjNTVUpCWjBsVlZUVXhTVzVXT0V0VVZFSjRkRmxpU1hoT1pUWkxZVUY1VmxkM2QwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVVFhkTlZHZDNUMVJWZVZkb1kwNU5hbGwzVDFSTmQwMVVaM2hQVkZWNVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVYzWkhWYVpWRkdPSHB4WlhkNU9IVk5VV3d4U0U1NGNqaHdaVlU0WVVGWE4yNHpaSEVLYVhWeE5ubFNjbkpNZVNzemRuUTBOeXR0TjBwaFZ6SkNWR2hYVnpoRWVrazNSR3hMZGk5R1RYVkljbGRPUkRKNlNqWlBRMEptUlhkbloxaDBUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZIVjNOUENqVmxaRVpQWTBKUE9XNVRkVTQxUzJsdVJIbDNjM3BOZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU9SMGswV1ZSa2FVNXFRWGhhVjFab1dUSktiRTlFWkd0UFZHZDZDazVxV1hkT1YxbDRXWHBaTVU1RWF6SmFSMDB6VFZSb2FVMXFRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDVIU1RSWlZHUnBUbXBCZUZwWFZtaFpNa3BzVDBSa2EwOVVaM3BPYWxsM1RsZFplRmw2V1RFS1RrUnJNbHBIVFROTlZHaHBUV3BCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDVIU1RSWlZHUnBUbXBCZUZwWFZtaFpNa3BzVDBSa2EwOVVaM29LVG1wWmQwNVhXWGhaZWxreFRrUnJNbHBIVFROTlZHaHBUV3BCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUlNhVTlIUlRNS1dXcFpkMDFYVm14WlYwNXBXbFJuTTFwRWF6Uk5lbGt5VFVSV2JVMVhUVEpPVkZFMVRtMVNhazU2UlRSWmFrbDNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWxrelRsUk5lRTE2VlROUFZGVjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwZDFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT1VKSWMwRUtaVkZDTTBGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOVFUME5QVkdOQlFVRlJSQXBCUldkM1VtZEphRUZMT0RSRmFtOHZUSE4yVWt4eFJXWlZWVE52T0haaU5FTkRkRzR6SzNsUVZqY3dWbHBxVFZveFJIb3dRV2xGUVhRM1RsZEhVVkF3Q2xwYVMwazBjblZrYlVNMGMyUXdkR0l5TUdkdFVGQnFSRFEzZEhKdmIwOXFZVnBaZDBObldVbExiMXBKZW1vd1JVRjNUVVJoUVVGM1dsRkplRUZLZWxjS1ltZGtSV04xZURaa1V5OVJNRFpVV0ZONFdVMUlkVXhpWVZCWFpIcENSRzlTVldOU1ZFaGFSVlJIVW0xVFoxSkZVMUJQVTJ0RGVFOU9jelY2YW5kSmR3cFZUVXRJYm0xbGNGVlNia1owWkc1emVrSlpNVE5CVWpWTlREZHJWV1JtY1U1c01rTldkalk0VGk5TVZYRkRRMmhUWlVSbmJXZHlNamt3YmxoT1F6SjFDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg5TmWhH+NPH413y7pNJx/Igq00GXzTqBAQpXjiSEhGvgCFQDCt+UZYr6/BpAZ8KMZakfDxMGN6hgPMjAyNjA5MzAxODA5NTNaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkzMDE4MDk1M1owLwYJKoZIhvcNAQkEMSIEIEG6QS7Ygm2oZ4jxj1XgCzBM98JbRB121pPeu4tThqAIMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQCzZW4IiUbJdFeM5q8zh3YLyGLTPclfYT+hoIYG1uOH7ITNK6jmcY6nPMGPZW9wS9ICMQCTXGUIo/BcLCpzq1mz9l2xpfTfEtGtvOg9rUYH98JK4vqcadEQN4/Eo2lgYVSYoOY="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"FF9d/I7ljzRBSMMCUZXL6WByqt/J1grUnASPCyEigb4="}, "signature":"MEUCIQC/NsffmLe4v3ULFhP0qV2ciSNEB4zY9SX1gLUHt+UxlgIgTnVNRzBDTImvjo80lurf7dg3F5i+7EvckAx9yosvwQg="}}
|
build/torch-stable-abi210-cu126-x86_64-linux/platforms.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import random
|
| 3 |
+
from abc import ABC, abstractmethod
|
| 4 |
+
from functools import lru_cache, wraps
|
| 5 |
+
from typing import Callable, ParamSpec, TypeVar
|
| 6 |
+
|
| 7 |
+
import numpy as np
|
| 8 |
+
import torch
|
| 9 |
+
|
| 10 |
+
IS_ROCM = torch.version.hip is not None
|
| 11 |
+
IS_MPS = torch.backends.mps.is_available()
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
class Platform(ABC):
|
| 15 |
+
@classmethod
|
| 16 |
+
def seed_everything(cls, seed: int) -> None:
|
| 17 |
+
"""
|
| 18 |
+
Set the seed of each random module.
|
| 19 |
+
`torch.manual_seed` will set seed on all devices.
|
| 20 |
+
|
| 21 |
+
Loosely based on: https://github.com/Lightning-AI/pytorch-lightning/blob/2.4.0/src/lightning/fabric/utilities/seed.py#L20
|
| 22 |
+
"""
|
| 23 |
+
random.seed(seed)
|
| 24 |
+
np.random.seed(seed)
|
| 25 |
+
torch.manual_seed(seed)
|
| 26 |
+
|
| 27 |
+
@abstractmethod
|
| 28 |
+
def get_device_name(self, device_id: int = 0) -> str: ...
|
| 29 |
+
|
| 30 |
+
@abstractmethod
|
| 31 |
+
def is_cuda(self) -> bool: ...
|
| 32 |
+
|
| 33 |
+
@abstractmethod
|
| 34 |
+
def is_rocm(self) -> bool: ...
|
| 35 |
+
|
| 36 |
+
@abstractmethod
|
| 37 |
+
def is_mps(self) -> bool: ...
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
class CudaPlatform(Platform):
|
| 41 |
+
@classmethod
|
| 42 |
+
@lru_cache(maxsize=8)
|
| 43 |
+
def get_device_name(cls, device_id: int = 0) -> str:
|
| 44 |
+
return torch.cuda.get_device_name(0)
|
| 45 |
+
|
| 46 |
+
def is_cuda(self) -> bool:
|
| 47 |
+
return True
|
| 48 |
+
|
| 49 |
+
def is_rocm(self) -> bool:
|
| 50 |
+
return False
|
| 51 |
+
|
| 52 |
+
def is_mps(self) -> bool:
|
| 53 |
+
return False
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
class RocmPlatform(Platform):
|
| 57 |
+
@classmethod
|
| 58 |
+
@lru_cache(maxsize=8)
|
| 59 |
+
def get_device_name(cls, device_id: int = 0) -> str:
|
| 60 |
+
return torch.cuda.get_device_name(device_id)
|
| 61 |
+
|
| 62 |
+
def is_cuda(self) -> bool:
|
| 63 |
+
return False
|
| 64 |
+
|
| 65 |
+
def is_rocm(self) -> bool:
|
| 66 |
+
return True
|
| 67 |
+
|
| 68 |
+
def is_mps(self) -> bool:
|
| 69 |
+
return False
|
| 70 |
+
|
| 71 |
+
|
| 72 |
+
class MpsPlatform(Platform):
|
| 73 |
+
@classmethod
|
| 74 |
+
@lru_cache(maxsize=8)
|
| 75 |
+
def get_device_name(cls, device_id: int = 0) -> str:
|
| 76 |
+
return torch.cuda.get_device_name(device_id)
|
| 77 |
+
|
| 78 |
+
def is_cuda(self) -> bool:
|
| 79 |
+
return False
|
| 80 |
+
|
| 81 |
+
def is_rocm(self) -> bool:
|
| 82 |
+
return False
|
| 83 |
+
|
| 84 |
+
def is_mps(self) -> bool:
|
| 85 |
+
return True
|
| 86 |
+
|
| 87 |
+
current_platform = (
|
| 88 |
+
RocmPlatform() if IS_ROCM else
|
| 89 |
+
MpsPlatform() if IS_MPS else
|
| 90 |
+
CudaPlatform() if torch.cuda.is_available() else
|
| 91 |
+
None
|
| 92 |
+
)
|
build/torch-stable-abi210-cu130-x86_64-linux/__init__.py
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from . import platforms
|
| 2 |
+
from ._custom_ops import (
|
| 3 |
+
convert_fp8,
|
| 4 |
+
copy_blocks,
|
| 5 |
+
paged_attention_v1,
|
| 6 |
+
paged_attention_v2,
|
| 7 |
+
reshape_and_cache,
|
| 8 |
+
reshape_and_cache_flash,
|
| 9 |
+
swap_blocks,
|
| 10 |
+
)
|
| 11 |
+
|
| 12 |
+
from . import _private_for_testing # noqa: F401
|
| 13 |
+
|
| 14 |
+
__all__ = [
|
| 15 |
+
"_private_for_testing",
|
| 16 |
+
"convert_fp8",
|
| 17 |
+
"copy_blocks",
|
| 18 |
+
"paged_attention_v1",
|
| 19 |
+
"paged_attention_v2",
|
| 20 |
+
"reshape_and_cache",
|
| 21 |
+
"reshape_and_cache_flash",
|
| 22 |
+
"swap_blocks",
|
| 23 |
+
]
|
build/torch-stable-abi210-cu130-x86_64-linux/_custom_ops.py
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import List, Optional
|
| 2 |
+
|
| 3 |
+
import torch
|
| 4 |
+
|
| 5 |
+
from ._ops import ops
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
# page attention ops
|
| 9 |
+
def paged_attention_v1(
|
| 10 |
+
out: torch.Tensor,
|
| 11 |
+
query: torch.Tensor,
|
| 12 |
+
key_cache: torch.Tensor,
|
| 13 |
+
value_cache: torch.Tensor,
|
| 14 |
+
num_kv_heads: int,
|
| 15 |
+
scale: float,
|
| 16 |
+
block_tables: torch.Tensor,
|
| 17 |
+
seq_lens: torch.Tensor,
|
| 18 |
+
block_size: int,
|
| 19 |
+
max_seq_len: int,
|
| 20 |
+
alibi_slopes: Optional[torch.Tensor],
|
| 21 |
+
kv_cache_dtype: str,
|
| 22 |
+
k_scale: float,
|
| 23 |
+
v_scale: float,
|
| 24 |
+
tp_rank: int = 0,
|
| 25 |
+
blocksparse_local_blocks: int = 0,
|
| 26 |
+
blocksparse_vert_stride: int = 0,
|
| 27 |
+
blocksparse_block_size: int = 64,
|
| 28 |
+
blocksparse_head_sliding_step: int = 0,
|
| 29 |
+
) -> None:
|
| 30 |
+
ops.paged_attention_v1(
|
| 31 |
+
out,
|
| 32 |
+
query,
|
| 33 |
+
key_cache,
|
| 34 |
+
value_cache,
|
| 35 |
+
num_kv_heads,
|
| 36 |
+
scale,
|
| 37 |
+
block_tables,
|
| 38 |
+
seq_lens,
|
| 39 |
+
block_size,
|
| 40 |
+
max_seq_len,
|
| 41 |
+
alibi_slopes,
|
| 42 |
+
kv_cache_dtype,
|
| 43 |
+
k_scale,
|
| 44 |
+
v_scale,
|
| 45 |
+
tp_rank,
|
| 46 |
+
blocksparse_local_blocks,
|
| 47 |
+
blocksparse_vert_stride,
|
| 48 |
+
blocksparse_block_size,
|
| 49 |
+
blocksparse_head_sliding_step,
|
| 50 |
+
)
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def paged_attention_v2(
|
| 54 |
+
out: torch.Tensor,
|
| 55 |
+
exp_sum: torch.Tensor,
|
| 56 |
+
max_logits: torch.Tensor,
|
| 57 |
+
tmp_out: torch.Tensor,
|
| 58 |
+
query: torch.Tensor,
|
| 59 |
+
key_cache: torch.Tensor,
|
| 60 |
+
value_cache: torch.Tensor,
|
| 61 |
+
num_kv_heads: int,
|
| 62 |
+
scale: float,
|
| 63 |
+
block_tables: torch.Tensor,
|
| 64 |
+
seq_lens: torch.Tensor,
|
| 65 |
+
block_size: int,
|
| 66 |
+
max_seq_len: int,
|
| 67 |
+
alibi_slopes: Optional[torch.Tensor],
|
| 68 |
+
kv_cache_dtype: str,
|
| 69 |
+
k_scale: float,
|
| 70 |
+
v_scale: float,
|
| 71 |
+
tp_rank: int = 0,
|
| 72 |
+
blocksparse_local_blocks: int = 0,
|
| 73 |
+
blocksparse_vert_stride: int = 0,
|
| 74 |
+
blocksparse_block_size: int = 64,
|
| 75 |
+
blocksparse_head_sliding_step: int = 0,
|
| 76 |
+
) -> None:
|
| 77 |
+
ops.paged_attention_v2(
|
| 78 |
+
out,
|
| 79 |
+
exp_sum,
|
| 80 |
+
max_logits,
|
| 81 |
+
tmp_out,
|
| 82 |
+
query,
|
| 83 |
+
key_cache,
|
| 84 |
+
value_cache,
|
| 85 |
+
num_kv_heads,
|
| 86 |
+
scale,
|
| 87 |
+
block_tables,
|
| 88 |
+
seq_lens,
|
| 89 |
+
block_size,
|
| 90 |
+
max_seq_len,
|
| 91 |
+
alibi_slopes,
|
| 92 |
+
kv_cache_dtype,
|
| 93 |
+
k_scale,
|
| 94 |
+
v_scale,
|
| 95 |
+
tp_rank,
|
| 96 |
+
blocksparse_local_blocks,
|
| 97 |
+
blocksparse_vert_stride,
|
| 98 |
+
blocksparse_block_size,
|
| 99 |
+
blocksparse_head_sliding_step,
|
| 100 |
+
)
|
| 101 |
+
|
| 102 |
+
|
| 103 |
+
def reshape_and_cache(
|
| 104 |
+
key: torch.Tensor,
|
| 105 |
+
value: torch.Tensor,
|
| 106 |
+
key_cache: torch.Tensor,
|
| 107 |
+
value_cache: torch.Tensor,
|
| 108 |
+
slot_mapping: torch.Tensor,
|
| 109 |
+
kv_cache_dtype: str,
|
| 110 |
+
k_scale: float,
|
| 111 |
+
v_scale: float,
|
| 112 |
+
) -> None:
|
| 113 |
+
ops.reshape_and_cache(
|
| 114 |
+
key,
|
| 115 |
+
value,
|
| 116 |
+
key_cache,
|
| 117 |
+
value_cache,
|
| 118 |
+
slot_mapping,
|
| 119 |
+
kv_cache_dtype,
|
| 120 |
+
k_scale,
|
| 121 |
+
v_scale,
|
| 122 |
+
)
|
| 123 |
+
|
| 124 |
+
|
| 125 |
+
def reshape_and_cache_flash(
|
| 126 |
+
key: torch.Tensor,
|
| 127 |
+
value: torch.Tensor,
|
| 128 |
+
key_cache: torch.Tensor,
|
| 129 |
+
value_cache: torch.Tensor,
|
| 130 |
+
slot_mapping: torch.Tensor,
|
| 131 |
+
kv_cache_dtype: str,
|
| 132 |
+
k_scale: torch.Tensor,
|
| 133 |
+
v_scale: torch.Tensor,
|
| 134 |
+
) -> None:
|
| 135 |
+
ops.reshape_and_cache_flash(
|
| 136 |
+
key,
|
| 137 |
+
value,
|
| 138 |
+
key_cache,
|
| 139 |
+
value_cache,
|
| 140 |
+
slot_mapping,
|
| 141 |
+
kv_cache_dtype,
|
| 142 |
+
k_scale,
|
| 143 |
+
v_scale,
|
| 144 |
+
)
|
| 145 |
+
|
| 146 |
+
|
| 147 |
+
def copy_blocks(
|
| 148 |
+
key_caches: List[torch.Tensor],
|
| 149 |
+
value_caches: List[torch.Tensor],
|
| 150 |
+
block_mapping: torch.Tensor,
|
| 151 |
+
) -> None:
|
| 152 |
+
ops.copy_blocks(key_caches, value_caches, block_mapping)
|
| 153 |
+
|
| 154 |
+
|
| 155 |
+
def swap_blocks(
|
| 156 |
+
src: torch.Tensor, dst: torch.Tensor, block_mapping: torch.Tensor
|
| 157 |
+
) -> None:
|
| 158 |
+
ops.swap_blocks(src, dst, block_mapping)
|
| 159 |
+
|
| 160 |
+
|
| 161 |
+
def convert_fp8(
|
| 162 |
+
output: torch.Tensor, input: torch.Tensor, scale: float = 1.0, kv_dtype: str = "fp8"
|
| 163 |
+
) -> None:
|
| 164 |
+
ops.convert_fp8(output, input, scale, kv_dtype)
|
| 165 |
+
|
| 166 |
+
|
| 167 |
+
__all__ = [
|
| 168 |
+
"convert_fp8",
|
| 169 |
+
"paged_attention_v1",
|
| 170 |
+
"paged_attention_v2",
|
| 171 |
+
"reshape_and_cache",
|
| 172 |
+
"copy_blocks",
|
| 173 |
+
]
|
build/torch-stable-abi210-cu130-x86_64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _paged_attention_cuda_4b8a7b6
|
| 3 |
+
ops = torch.ops._paged_attention_cuda_4b8a7b6
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_paged_attention_cuda_4b8a7b6::{op_name}"
|
build/torch-stable-abi210-cu130-x86_64-linux/_paged_attention_cuda_4b8a7b6.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8cb6fec1a2521eb4cee629e724ef2ba38ed03286f6d82c25a8b06a9098a27ccc
|
| 3 |
+
size 97624248
|
build/torch-stable-abi210-cu130-x86_64-linux/_private_for_testing.py
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Internal symbols that need to be exposed for the test suite."""
|
| 2 |
+
|
| 3 |
+
from ._ops import ops
|
| 4 |
+
|
| 5 |
+
__all__ = [
|
| 6 |
+
"ops",
|
| 7 |
+
]
|
build/torch-stable-abi210-cu130-x86_64-linux/metadata.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "paged-attention",
|
| 3 |
+
"id": "_paged_attention_cuda_4b8a7b6",
|
| 4 |
+
"version": 2,
|
| 5 |
+
"kernels-minver": "0.14.0",
|
| 6 |
+
"license": "Apache-2.0",
|
| 7 |
+
"python-depends": [],
|
| 8 |
+
"kernel-depends": [],
|
| 9 |
+
"backend": {
|
| 10 |
+
"type": "cuda",
|
| 11 |
+
"archs": [
|
| 12 |
+
"10.0",
|
| 13 |
+
"10.3",
|
| 14 |
+
"11.0",
|
| 15 |
+
"12.0",
|
| 16 |
+
"12.1+PTX",
|
| 17 |
+
"7.5",
|
| 18 |
+
"8.0",
|
| 19 |
+
"8.6",
|
| 20 |
+
"8.7",
|
| 21 |
+
"8.9",
|
| 22 |
+
"9.0"
|
| 23 |
+
]
|
| 24 |
+
},
|
| 25 |
+
"digest": {
|
| 26 |
+
"algorithm": "sha256",
|
| 27 |
+
"files": {
|
| 28 |
+
"__init__.py": "iImkWaa9phF1Yo9eaibD+dvh0W3HXLUpMwl9kfaeZ1w=",
|
| 29 |
+
"_custom_ops.py": "tnC6OR7TPhMV+tt8MyUyIH2gDIdxBzHT+1z1NUhA9EE=",
|
| 30 |
+
"_ops.py": "auz+JB60XwCdqM2eFtbS9mdhpZwUcp8BK7SnzHS3bvo=",
|
| 31 |
+
"_paged_attention_cuda_4b8a7b6.abi3.so": "jLb+waJSHrTO5innJO8ro47QMob22CwlqLBqkJiifMw=",
|
| 32 |
+
"_private_for_testing.py": "7iW8UbcC7nyQDzB1nslnXbLFVq9ceOaiP+VLo6hE/no=",
|
| 33 |
+
"platforms.py": "NeAhENqA8yXHgy3EfkYP1Bkx1n6aStkExV9py7Jvdiw="
|
| 34 |
+
}
|
| 35 |
+
},
|
| 36 |
+
"provenance": {
|
| 37 |
+
"kernel-builder": {
|
| 38 |
+
"version": "0.17.0-dev0",
|
| 39 |
+
"commit": "a7f0afdb29a6a3372b1d47180cc0c182454c5e3b",
|
| 40 |
+
"dirty": false
|
| 41 |
+
},
|
| 42 |
+
"kernel": {
|
| 43 |
+
"commit": "4b8a7b601eeacbe87d9836605f1c65496dc718b2",
|
| 44 |
+
"dirty": false
|
| 45 |
+
}
|
| 46 |
+
}
|
| 47 |
+
}
|
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":"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"}, "tlogEntries":[{"logIndex":"3023417810", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1790791794", "inclusionPromise":{"signedEntryTimestamp":"MEUCIQDpUqWLcq0ShsJTrIvrW+GkUwqR+IkDG6DY8P86jP+fGwIgTdGWmp0tgSHUPSf2H4/OZZsA1iddH64JGZPznsqUEUM="}, "inclusionProof":{"logIndex":"2901513548", "rootHash":"2RtGLQph71rmxmf7n4kWK1EfThplm4uvxx/C51urdWg=", "treeSize":"2901513564", "hashes":["WqoPfGjnU2ITHmi8ehwhFifOiLviRPVkwFT1jkAYInA=", "YzOv4i1LXxCG0L86296oIOfmhrJGMUYXt7ls/dK8h9Q=", "qctkt/sGFTyKgLX6OoRguSt6Z73AVBs5Fhv4/OL8kfs=", "6kYFNgbbyBVEqSYWhHZ3ZVWgBwHzhcJeTcpsazuKnCI=", "qlT3ZaltTYW8sjF9x1Z0TgP7slRzmu1wfYVkZe+T9FU=", "rCcezIKlxyzpk9kIgOvmt9OCO9CbX7V3OLGABpMWY+c=", "Y/b1UVQEeF4rBAS3K1Xr5I4NuBlqkZyyiobLBU4NxTM=", "KkM4t12E/0oDsQUKu2L03FdljDSCr6SMNKcjNHFVwkg=", "DBf+6S2FPBJx6iWymdRRUYRU/lyeflo7HU1q99h8qfo=", "dqgK4q43/y6aLFT0j3OJDK0/wP3bB1DcjtXt+M9ZDgA=", "YI8EgjQmA38CJT2O2AulXkUFuygfBUvKto28k1J1g2U=", "gjP07uTk7mDQZEVMqe6TZetGLEhOhmmEiWzeOyme2rk=", "qOJyrwx/VzDfrHHCPrmyyJlJlVTT2lwb0jUshbhlF6Q=", "R65BPV8zugTBA3eQG4LqBT4kXwiJbUY1GYPdd4glLTg=", "AqDykV6o5ERshtWsKq2KL+g91mURajZ2DQDbOsXvZ3I=", "4lYk7cX8PszZLoyQMWjMDB1BOBn4f7hehtFiHo92e5Y=", "ttpxd0TJprOUtb/8Wf5DeIzwNtUw72Q0YnXE2LFMIZo=", "qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2901513564\n2RtGLQph71rmxmf7n4kWK1EfThplm4uvxx/C51urdWg=\n\n— rekor.sigstore.dev wNI9ajBGAiEApOqBRioqDHFh5n8e9Q3nPwKFGAdU0d66v2ixwPMNorcCIQC0ilq3y3ml1FYFOtan2rw3omcBZlX02FYPtvakxlxE9w==\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJmODkzODljMTExMGEwNWE1NGU5ODI4ODZjYTc5YmMzMzE0ZGVkNWU4NmFjM2E5YTdlOWIzMzQ0MmY5MDg5NzZjIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUN3ZXdLY1AyYlo4UzV5SURSeStmcmhYcjdsTWpzWDI2V0dpSXFjSjFxZUtnSWdDRzNRSHlVNTNqM3ZKdFZDamlYYU5NMTV5VGw5dlRYQ0hKMlRRTUMyQXlFPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRha05EUW5SRFowRjNTVUpCWjBsVldGTmlibVJIU1RKTVVuY3hjSEpvU2tVek1YRmlUMUpuUVhnMGQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVVFhkTlZHZDNUMVJWZWxkb1kwNU5hbGwzVDFSTmQwMVVaM2hQVkZWNlYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVYzUW1seVRUQkRaM2QxVXpKb1JYVjNkVkpZZFU1bmFHcHJOa29yZUhCMlNGcEhORThLUlU5M05GUk5jWEpYUmpCck5tUlZSbVIyY3pKb1lVeGtXak40Wld4RWVXaFRWWE51U1ZSWVZXbHhaRzVoV0UxRk9YRlBRMEpsT0hkbloxaHlUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZNYjAxbUNrdGhSMWxwWW1aU2NqUnRWWE5KUldJMGQwOXhVbTVKZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGM1dVUldVakJTUVZGSUwwSkhSWGRZTkZwa1lVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKb01Wb3laSEJpYldSdFdWZE9iQXBNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1lVFZ1WVZoU2IyUlhTWFprTWpsNVlUSmFjMkl6WkhwTU1rb3hZVmQ0YTB4dWJHaGlWM2hCQ21OdFZtMWplVGx2V2xkR2EyTjVPWFJaVjJ4MVRVUnJSME5wYzBkQlVWRkNaemM0ZDBGUlJVVkxNbWd3WkVoQ2VrOXBPSFprUnpseVdsYzBkVmxYVGpBS1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1NIZFpTMHQzV1VKQ1FVZEVkbnBCUWtGblVWSmtNamw1WVRKYWN3cGlNMlJtV2tkc2VtTkhSakJaTW1kM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtGM1VXOU9SMGswV1ZSa2FVNXFRWGhhVjFab1dUSktiRTlFWkd0UFZHZDZDazVxV1hkT1YxbDRXWHBaTVU1RWF6SmFSMDB6VFZSb2FVMXFRVlJDWjI5eVFtZEZSVUZaVHk5TlFVVkZRa0ZXUTJSWGJITmFSRUZ5UW1kdmNrSm5SVVVLUVZsUEwwMUJSVVpDUWpGdlpGZGtibUZYTlc1YWJVWnFXbE01Y2xwWVNuVmFWM2g2VEZkT2RtSlhNVEZpYld3d1pWUkJaRUpuYjNKQ1owVkZRVmxQTHdwTlFVVkhRa0U1ZVZwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QzZFpTMHQzV1VKQ1FVZEVkbnBCUWtOQlVYUkVRM1J2WkVoU2QyTjZiM1pNTTFKMkNtRXlWblZNYlVacVpFZHNkbUp1VFhWYU1td3dZVWhXYVdSWVRteGpiVTUyWW01U2JHSnVVWFZaTWpsMFRVY3dSME5wYzBkQlVWRkNaemM0ZDBGUmEwVUtXSGQ0WkdGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5YURGYU1tUndZbTFrYlZsWFRteE1NblJzWTIwMWJHSklUWFJaTWpsMFlsaFdkUXBoV0ZJMVRIazFibUZZVW05a1YwbDJaREk1ZVdFeVduTmlNMlI2VERKS01XRlhlR3RNYm14b1lsZDRRV050Vm0xamVUbHZXbGRHYTJONU9YUlpWMngxQ2sxRVowZERhWE5IUVZGUlFtYzNPSGRCVVc5RlMyZDNiMDVIU1RSWlZHUnBUbXBCZUZwWFZtaFpNa3BzVDBSa2EwOVVaM3BPYWxsM1RsZFplRmw2V1RFS1RrUnJNbHBIVFROTlZHaHBUV3BCWWtKbmIzSkNaMFZGUVZsUEwwMUJSVXhDUVRCTlF6Tk9iR0pIV1hSaFJ6bDZaRWRXYTAxRlFVZERhWE5IUVZGUlFncG5OemgzUVZGM1JVMW5kM2RoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NbWd4V2pKa2NHSnRaRzFaVjA1c1RESjBiR050Tld4aVNFMTBDbGt5T1hSaVdGWjFZVmhTTlUxRVowZERhWE5IUVZGUlFtYzNPSGRCVVRCRlMyZDNiMDVIU1RSWlZHUnBUbXBCZUZwWFZtaFpNa3BzVDBSa2EwOVVaM29LVG1wWmQwNVhXWGhaZWxreFRrUnJNbHBIVFROTlZHaHBUV3BCWmtKbmIzSkNaMFZGUVZsUEwwMUJSVTlDUWtWTlJETktiRnB1VFhaaFIxWm9Xa2hOZGdwaVYwWndZbXBCWVVKbmIzSkNaMFZGUVZsUEwwMUJSVkJDUVhkTlEycEZkMDU2UlRCT2VsVXhUV3ByZDB4bldVdExkMWxDUWtGSFJIWjZRVUpGUVZGbkNrUkNOVzlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWM1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVc0tSRUZuZVU1VVkzbE5SR013VFhwQ2RFSm5iM0pDWjBWRlFWbFBMMDFCUlZOQ1JqaE5XRmRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVid3BrVjJSdVlWYzFibHB0Um1wYVV6bHlXbGhLZFZwWGVIcE1WMDUyWWxjeE1XSnRiREJsVXpoMVdqSnNNR0ZJVm1sTU0yUjJZMjEwYldKSE9UTmplVGxwQ21SWGJITmFRelUxV1ZjeGMxRklTbXhhYmsxMllVZFdhRnBJVFhaaVYwWndZbXBCTkVKbmIzSkNaMFZGUVZsUEwwMUJSVlJDUTI5TlMwUlNhVTlIUlRNS1dXcFpkMDFYVm14WlYwNXBXbFJuTTFwRWF6Uk5lbGt5VFVSV2JVMVhUVEpPVkZFMVRtMVNhazU2UlRSWmFrbDNTVkZaUzB0M1dVSkNRVWRFZG5wQlFncEdRVkZVUkVKR00ySXpTbkphYlhoMlpERTVhMkZZVG5kWldGSnFZVVJDYTBKbmIzSkNaMFZGUVZsUEwwMUJSVlpDUmxsTlZrZG9NR1JJUW5wUGFUaDJDbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVXpseVdsaEtkVnBYZUhwTVYwNTJZbGN4TVdKdGJEQmxVemxvV1ROU2NHSXlOWG9LVEROS01XSnVUWFpOZWxrelRsUk5lRTE2VlROUFZGVjJXVmhTTUZwWE1YZGtTRTEyVFZSQlYwSm5iM0pDWjBWRlFWbFBMMDFCUlZkQ1FXZE5RbTVDTVFwWmJYaHdXWHBDUjBKbmIzSkNaMFZGUVZsUEwwMUJSVmxDUkdkTlRtNUtiR05IT0RaaFNGWnVXakpzZFZveVdtaFpNbFYyWVRKV2VXSnRWbk5qZVRGcUNtSXlNWFJrVnpWd1pFaHJObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwVVZsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTTjBKSWEwRUtaSGRDTVVGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOVFUME5RVVd0QlFVRlJSQXBCUlZsM1VrRkpaMlZRYlVKbFpHdGtOMU4yWmxrd1RHZEJXVGN6Y2tkVldVTlBRV2RhVUhCVFp6UnVjR1UxYldkMlIwRkRTVU5IYlhaV1FTdFRTVTloQ2tsUmNVOTFhbVpDZEhWdVpYVmFUa1F4T1dGTmFtTkNTV2hKVGs5amJtWkVUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlaMEZOUjFWRFRWRkVhbGcwVjBJS2NFaG9TRWhrVG5wdlYzWTRRMGR1WnpKdVNUUkxLM1p5TTNkTU5HZENUSFJ4UlZoYWQyaHlPR3BRUldSQk0zRjFaVkJoVFd3NVJHZGhNV3REVFVKRVF3cHZVekZWUzBSVFIxZHJUbFZHWlhwR2VrSlhPRUZTUjJkR1NURmtNWE5wY0hkSFRYZDJVbHBoTUhneFpsSlRZME5IU1hOYVFsTkZZbEV2S3pSd1p6MDlDaTB0TFMwdFJVNUVJRU5GVWxSSlJrbERRVlJGTFMwdExTMEsifX19fQ=="}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyjADAgEAMIICwQYJKoZIhvcNAQcCoIICsjCCAq4CAQMxDTALBglghkgBZQMEAgEwgbcGCyqGSIb3DQEJEAEEoIGnBIGkMIGhAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg7hwUQiVNMdqDJ4LVmvuIVrRLtGkXoy/4GLU1714lyWgCFDs9KbBVjFcUi66MSy7sbjVmWUy0GA8yMDI2MDkzMDE4MDk1NFowAwIBAaAypDAwLjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MRUwEwYDVQQDEwxzaWdzdG9yZS10c2GgADGCAdwwggHYAgEBMFEwOTEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MSAwHgYDVQQDExdzaWdzdG9yZS10c2Etc2VsZnNpZ25lZAIUOhNULwyQYe68wUMvy4qOiyojiwwwCwYJYIZIAWUDBAIBoIH8MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjYwOTMwMTgwOTU0WjAvBgkqhkiG9w0BCQQxIgQgcdKLoIDwnquqYBia+VJeyLrEOSoTmY7DEJ345eNxDaYwgY4GCyqGSIb3DQEJEAIvMX8wfTB7MHkEIIX5J7wHq2LKw7RDVsEO/IGyxog/2nq55thw2dE6zQW3MFUwPaQ7MDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAoGCCqGSM49BAMCBGgwZgIxANLAnGhn9luhiOB5wYxsJkI1Xzl6BGdmo2lkW+r5eDaV+HOkgchZodVY3hMcboAr3wIxAOZgBmhh7XUqvex1e1zs1IdfeSURjS0hgEK4XVAw4blMiM1RIzo9NSWdd291eOzoSA=="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"+JOJwREKBaVOmCiGynm8MxTe1ehqw6mn6bM0QvkIl2w="}, "signature":"MEUCIQCwewKcP2bZ8S5yIDRy+frhXr7lMjsX26WGiIqcJ1qeKgIgCG3QHyU53j3vJtVCjiXaNM15yTl9vTXCHJ2TQMC2AyE="}}
|
build/torch-stable-abi210-cu130-x86_64-linux/platforms.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import random
|
| 3 |
+
from abc import ABC, abstractmethod
|
| 4 |
+
from functools import lru_cache, wraps
|
| 5 |
+
from typing import Callable, ParamSpec, TypeVar
|
| 6 |
+
|
| 7 |
+
import numpy as np
|
| 8 |
+
import torch
|
| 9 |
+
|
| 10 |
+
IS_ROCM = torch.version.hip is not None
|
| 11 |
+
IS_MPS = torch.backends.mps.is_available()
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
class Platform(ABC):
|
| 15 |
+
@classmethod
|
| 16 |
+
def seed_everything(cls, seed: int) -> None:
|
| 17 |
+
"""
|
| 18 |
+
Set the seed of each random module.
|
| 19 |
+
`torch.manual_seed` will set seed on all devices.
|
| 20 |
+
|
| 21 |
+
Loosely based on: https://github.com/Lightning-AI/pytorch-lightning/blob/2.4.0/src/lightning/fabric/utilities/seed.py#L20
|
| 22 |
+
"""
|
| 23 |
+
random.seed(seed)
|
| 24 |
+
np.random.seed(seed)
|
| 25 |
+
torch.manual_seed(seed)
|
| 26 |
+
|
| 27 |
+
@abstractmethod
|
| 28 |
+
def get_device_name(self, device_id: int = 0) -> str: ...
|
| 29 |
+
|
| 30 |
+
@abstractmethod
|
| 31 |
+
def is_cuda(self) -> bool: ...
|
| 32 |
+
|
| 33 |
+
@abstractmethod
|
| 34 |
+
def is_rocm(self) -> bool: ...
|
| 35 |
+
|
| 36 |
+
@abstractmethod
|
| 37 |
+
def is_mps(self) -> bool: ...
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
class CudaPlatform(Platform):
|
| 41 |
+
@classmethod
|
| 42 |
+
@lru_cache(maxsize=8)
|
| 43 |
+
def get_device_name(cls, device_id: int = 0) -> str:
|
| 44 |
+
return torch.cuda.get_device_name(0)
|
| 45 |
+
|
| 46 |
+
def is_cuda(self) -> bool:
|
| 47 |
+
return True
|
| 48 |
+
|
| 49 |
+
def is_rocm(self) -> bool:
|
| 50 |
+
return False
|
| 51 |
+
|
| 52 |
+
def is_mps(self) -> bool:
|
| 53 |
+
return False
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
class RocmPlatform(Platform):
|
| 57 |
+
@classmethod
|
| 58 |
+
@lru_cache(maxsize=8)
|
| 59 |
+
def get_device_name(cls, device_id: int = 0) -> str:
|
| 60 |
+
return torch.cuda.get_device_name(device_id)
|
| 61 |
+
|
| 62 |
+
def is_cuda(self) -> bool:
|
| 63 |
+
return False
|
| 64 |
+
|
| 65 |
+
def is_rocm(self) -> bool:
|
| 66 |
+
return True
|
| 67 |
+
|
| 68 |
+
def is_mps(self) -> bool:
|
| 69 |
+
return False
|
| 70 |
+
|
| 71 |
+
|
| 72 |
+
class MpsPlatform(Platform):
|
| 73 |
+
@classmethod
|
| 74 |
+
@lru_cache(maxsize=8)
|
| 75 |
+
def get_device_name(cls, device_id: int = 0) -> str:
|
| 76 |
+
return torch.cuda.get_device_name(device_id)
|
| 77 |
+
|
| 78 |
+
def is_cuda(self) -> bool:
|
| 79 |
+
return False
|
| 80 |
+
|
| 81 |
+
def is_rocm(self) -> bool:
|
| 82 |
+
return False
|
| 83 |
+
|
| 84 |
+
def is_mps(self) -> bool:
|
| 85 |
+
return True
|
| 86 |
+
|
| 87 |
+
current_platform = (
|
| 88 |
+
RocmPlatform() if IS_ROCM else
|
| 89 |
+
MpsPlatform() if IS_MPS else
|
| 90 |
+
CudaPlatform() if torch.cuda.is_available() else
|
| 91 |
+
None
|
| 92 |
+
)
|
build/torch-stable-abi210-cu132-x86_64-linux/__init__.py
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from . import platforms
|
| 2 |
+
from ._custom_ops import (
|
| 3 |
+
convert_fp8,
|
| 4 |
+
copy_blocks,
|
| 5 |
+
paged_attention_v1,
|
| 6 |
+
paged_attention_v2,
|
| 7 |
+
reshape_and_cache,
|
| 8 |
+
reshape_and_cache_flash,
|
| 9 |
+
swap_blocks,
|
| 10 |
+
)
|
| 11 |
+
|
| 12 |
+
from . import _private_for_testing # noqa: F401
|
| 13 |
+
|
| 14 |
+
__all__ = [
|
| 15 |
+
"_private_for_testing",
|
| 16 |
+
"convert_fp8",
|
| 17 |
+
"copy_blocks",
|
| 18 |
+
"paged_attention_v1",
|
| 19 |
+
"paged_attention_v2",
|
| 20 |
+
"reshape_and_cache",
|
| 21 |
+
"reshape_and_cache_flash",
|
| 22 |
+
"swap_blocks",
|
| 23 |
+
]
|
build/torch-stable-abi210-cu132-x86_64-linux/_custom_ops.py
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from typing import List, Optional
|
| 2 |
+
|
| 3 |
+
import torch
|
| 4 |
+
|
| 5 |
+
from ._ops import ops
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
# page attention ops
|
| 9 |
+
def paged_attention_v1(
|
| 10 |
+
out: torch.Tensor,
|
| 11 |
+
query: torch.Tensor,
|
| 12 |
+
key_cache: torch.Tensor,
|
| 13 |
+
value_cache: torch.Tensor,
|
| 14 |
+
num_kv_heads: int,
|
| 15 |
+
scale: float,
|
| 16 |
+
block_tables: torch.Tensor,
|
| 17 |
+
seq_lens: torch.Tensor,
|
| 18 |
+
block_size: int,
|
| 19 |
+
max_seq_len: int,
|
| 20 |
+
alibi_slopes: Optional[torch.Tensor],
|
| 21 |
+
kv_cache_dtype: str,
|
| 22 |
+
k_scale: float,
|
| 23 |
+
v_scale: float,
|
| 24 |
+
tp_rank: int = 0,
|
| 25 |
+
blocksparse_local_blocks: int = 0,
|
| 26 |
+
blocksparse_vert_stride: int = 0,
|
| 27 |
+
blocksparse_block_size: int = 64,
|
| 28 |
+
blocksparse_head_sliding_step: int = 0,
|
| 29 |
+
) -> None:
|
| 30 |
+
ops.paged_attention_v1(
|
| 31 |
+
out,
|
| 32 |
+
query,
|
| 33 |
+
key_cache,
|
| 34 |
+
value_cache,
|
| 35 |
+
num_kv_heads,
|
| 36 |
+
scale,
|
| 37 |
+
block_tables,
|
| 38 |
+
seq_lens,
|
| 39 |
+
block_size,
|
| 40 |
+
max_seq_len,
|
| 41 |
+
alibi_slopes,
|
| 42 |
+
kv_cache_dtype,
|
| 43 |
+
k_scale,
|
| 44 |
+
v_scale,
|
| 45 |
+
tp_rank,
|
| 46 |
+
blocksparse_local_blocks,
|
| 47 |
+
blocksparse_vert_stride,
|
| 48 |
+
blocksparse_block_size,
|
| 49 |
+
blocksparse_head_sliding_step,
|
| 50 |
+
)
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def paged_attention_v2(
|
| 54 |
+
out: torch.Tensor,
|
| 55 |
+
exp_sum: torch.Tensor,
|
| 56 |
+
max_logits: torch.Tensor,
|
| 57 |
+
tmp_out: torch.Tensor,
|
| 58 |
+
query: torch.Tensor,
|
| 59 |
+
key_cache: torch.Tensor,
|
| 60 |
+
value_cache: torch.Tensor,
|
| 61 |
+
num_kv_heads: int,
|
| 62 |
+
scale: float,
|
| 63 |
+
block_tables: torch.Tensor,
|
| 64 |
+
seq_lens: torch.Tensor,
|
| 65 |
+
block_size: int,
|
| 66 |
+
max_seq_len: int,
|
| 67 |
+
alibi_slopes: Optional[torch.Tensor],
|
| 68 |
+
kv_cache_dtype: str,
|
| 69 |
+
k_scale: float,
|
| 70 |
+
v_scale: float,
|
| 71 |
+
tp_rank: int = 0,
|
| 72 |
+
blocksparse_local_blocks: int = 0,
|
| 73 |
+
blocksparse_vert_stride: int = 0,
|
| 74 |
+
blocksparse_block_size: int = 64,
|
| 75 |
+
blocksparse_head_sliding_step: int = 0,
|
| 76 |
+
) -> None:
|
| 77 |
+
ops.paged_attention_v2(
|
| 78 |
+
out,
|
| 79 |
+
exp_sum,
|
| 80 |
+
max_logits,
|
| 81 |
+
tmp_out,
|
| 82 |
+
query,
|
| 83 |
+
key_cache,
|
| 84 |
+
value_cache,
|
| 85 |
+
num_kv_heads,
|
| 86 |
+
scale,
|
| 87 |
+
block_tables,
|
| 88 |
+
seq_lens,
|
| 89 |
+
block_size,
|
| 90 |
+
max_seq_len,
|
| 91 |
+
alibi_slopes,
|
| 92 |
+
kv_cache_dtype,
|
| 93 |
+
k_scale,
|
| 94 |
+
v_scale,
|
| 95 |
+
tp_rank,
|
| 96 |
+
blocksparse_local_blocks,
|
| 97 |
+
blocksparse_vert_stride,
|
| 98 |
+
blocksparse_block_size,
|
| 99 |
+
blocksparse_head_sliding_step,
|
| 100 |
+
)
|
| 101 |
+
|
| 102 |
+
|
| 103 |
+
def reshape_and_cache(
|
| 104 |
+
key: torch.Tensor,
|
| 105 |
+
value: torch.Tensor,
|
| 106 |
+
key_cache: torch.Tensor,
|
| 107 |
+
value_cache: torch.Tensor,
|
| 108 |
+
slot_mapping: torch.Tensor,
|
| 109 |
+
kv_cache_dtype: str,
|
| 110 |
+
k_scale: float,
|
| 111 |
+
v_scale: float,
|
| 112 |
+
) -> None:
|
| 113 |
+
ops.reshape_and_cache(
|
| 114 |
+
key,
|
| 115 |
+
value,
|
| 116 |
+
key_cache,
|
| 117 |
+
value_cache,
|
| 118 |
+
slot_mapping,
|
| 119 |
+
kv_cache_dtype,
|
| 120 |
+
k_scale,
|
| 121 |
+
v_scale,
|
| 122 |
+
)
|
| 123 |
+
|
| 124 |
+
|
| 125 |
+
def reshape_and_cache_flash(
|
| 126 |
+
key: torch.Tensor,
|
| 127 |
+
value: torch.Tensor,
|
| 128 |
+
key_cache: torch.Tensor,
|
| 129 |
+
value_cache: torch.Tensor,
|
| 130 |
+
slot_mapping: torch.Tensor,
|
| 131 |
+
kv_cache_dtype: str,
|
| 132 |
+
k_scale: torch.Tensor,
|
| 133 |
+
v_scale: torch.Tensor,
|
| 134 |
+
) -> None:
|
| 135 |
+
ops.reshape_and_cache_flash(
|
| 136 |
+
key,
|
| 137 |
+
value,
|
| 138 |
+
key_cache,
|
| 139 |
+
value_cache,
|
| 140 |
+
slot_mapping,
|
| 141 |
+
kv_cache_dtype,
|
| 142 |
+
k_scale,
|
| 143 |
+
v_scale,
|
| 144 |
+
)
|
| 145 |
+
|
| 146 |
+
|
| 147 |
+
def copy_blocks(
|
| 148 |
+
key_caches: List[torch.Tensor],
|
| 149 |
+
value_caches: List[torch.Tensor],
|
| 150 |
+
block_mapping: torch.Tensor,
|
| 151 |
+
) -> None:
|
| 152 |
+
ops.copy_blocks(key_caches, value_caches, block_mapping)
|
| 153 |
+
|
| 154 |
+
|
| 155 |
+
def swap_blocks(
|
| 156 |
+
src: torch.Tensor, dst: torch.Tensor, block_mapping: torch.Tensor
|
| 157 |
+
) -> None:
|
| 158 |
+
ops.swap_blocks(src, dst, block_mapping)
|
| 159 |
+
|
| 160 |
+
|
| 161 |
+
def convert_fp8(
|
| 162 |
+
output: torch.Tensor, input: torch.Tensor, scale: float = 1.0, kv_dtype: str = "fp8"
|
| 163 |
+
) -> None:
|
| 164 |
+
ops.convert_fp8(output, input, scale, kv_dtype)
|
| 165 |
+
|
| 166 |
+
|
| 167 |
+
__all__ = [
|
| 168 |
+
"convert_fp8",
|
| 169 |
+
"paged_attention_v1",
|
| 170 |
+
"paged_attention_v2",
|
| 171 |
+
"reshape_and_cache",
|
| 172 |
+
"copy_blocks",
|
| 173 |
+
]
|
build/torch-stable-abi210-cu132-x86_64-linux/_ops.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import torch
|
| 2 |
+
from . import _paged_attention_cuda_4b8a7b6
|
| 3 |
+
ops = torch.ops._paged_attention_cuda_4b8a7b6
|
| 4 |
+
|
| 5 |
+
def add_op_namespace_prefix(op_name: str):
|
| 6 |
+
"""
|
| 7 |
+
Prefix op by namespace.
|
| 8 |
+
"""
|
| 9 |
+
return f"_paged_attention_cuda_4b8a7b6::{op_name}"
|
build/torch-stable-abi210-cu132-x86_64-linux/_paged_attention_cuda_4b8a7b6.abi3.so
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7f652685222ac9e6af2183ec9320bd3f4e883c802e870df3861d6b46cd439d73
|
| 3 |
+
size 96451400
|
build/torch-stable-abi210-cu132-x86_64-linux/_private_for_testing.py
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Internal symbols that need to be exposed for the test suite."""
|
| 2 |
+
|
| 3 |
+
from ._ops import ops
|
| 4 |
+
|
| 5 |
+
__all__ = [
|
| 6 |
+
"ops",
|
| 7 |
+
]
|
build/torch-stable-abi210-cu132-x86_64-linux/metadata.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "paged-attention",
|
| 3 |
+
"id": "_paged_attention_cuda_4b8a7b6",
|
| 4 |
+
"version": 2,
|
| 5 |
+
"kernels-minver": "0.14.0",
|
| 6 |
+
"license": "Apache-2.0",
|
| 7 |
+
"python-depends": [],
|
| 8 |
+
"kernel-depends": [],
|
| 9 |
+
"backend": {
|
| 10 |
+
"type": "cuda",
|
| 11 |
+
"archs": [
|
| 12 |
+
"10.0",
|
| 13 |
+
"10.3",
|
| 14 |
+
"11.0",
|
| 15 |
+
"12.0",
|
| 16 |
+
"12.1+PTX",
|
| 17 |
+
"7.5",
|
| 18 |
+
"8.0",
|
| 19 |
+
"8.6",
|
| 20 |
+
"8.7",
|
| 21 |
+
"8.9",
|
| 22 |
+
"9.0"
|
| 23 |
+
]
|
| 24 |
+
},
|
| 25 |
+
"digest": {
|
| 26 |
+
"algorithm": "sha256",
|
| 27 |
+
"files": {
|
| 28 |
+
"__init__.py": "iImkWaa9phF1Yo9eaibD+dvh0W3HXLUpMwl9kfaeZ1w=",
|
| 29 |
+
"_custom_ops.py": "tnC6OR7TPhMV+tt8MyUyIH2gDIdxBzHT+1z1NUhA9EE=",
|
| 30 |
+
"_ops.py": "auz+JB60XwCdqM2eFtbS9mdhpZwUcp8BK7SnzHS3bvo=",
|
| 31 |
+
"_paged_attention_cuda_4b8a7b6.abi3.so": "f2UmhSIqyeavIYPskyC9P06IPIAuhw3zhh1rRs1DnXM=",
|
| 32 |
+
"_private_for_testing.py": "7iW8UbcC7nyQDzB1nslnXbLFVq9ceOaiP+VLo6hE/no=",
|
| 33 |
+
"platforms.py": "NeAhENqA8yXHgy3EfkYP1Bkx1n6aStkExV9py7Jvdiw="
|
| 34 |
+
}
|
| 35 |
+
},
|
| 36 |
+
"provenance": {
|
| 37 |
+
"kernel-builder": {
|
| 38 |
+
"version": "0.17.0-dev0",
|
| 39 |
+
"commit": "a7f0afdb29a6a3372b1d47180cc0c182454c5e3b",
|
| 40 |
+
"dirty": false
|
| 41 |
+
},
|
| 42 |
+
"kernel": {
|
| 43 |
+
"commit": "4b8a7b601eeacbe87d9836605f1c65496dc718b2",
|
| 44 |
+
"dirty": false
|
| 45 |
+
}
|
| 46 |
+
}
|
| 47 |
+
}
|
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":"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"}, "tlogEntries":[{"logIndex":"3023417930", "logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion":{"kind":"hashedrekord", "version":"0.0.1"}, "integratedTime":"1790791795", "inclusionPromise":{"signedEntryTimestamp":"MEUCIDqlP8sPkgD7zBZQc6orrbjwG3fZXIRLHnpas6Yv1gkJAiEAwNkKKiCpnlqJUET715KltT8RciMHjuhtnRhB4q8ZSRw="}, "inclusionProof":{"logIndex":"2901513668", "rootHash":"e74V2IOrZ3x6ckZVsZC2Cm1xGV8T4WIxmpW9fbAzu0Y=", "treeSize":"2901513692", "hashes":["4K2UuEqZPF9j84nNulLi3ZScuXwVCtY6U730id3KCMg=", "y3obLZbgRSQhpDH1oJBuK1KVbWTorrHbpEshfeTKn1Q=", "ZoFEbI4E1suwDgCrE4JJIk02FoJm//0gD1TXay06RcA=", "95RzGvodKN2fFcSeq8C7epPZAJ35KimmtkZgTt5LfAo=", "pWb8ON9JupkDH2KpW88waHo7jTwrUoOFcQJLQIyOi0U=", "JWgGg6UJX+Kw5yYgUOaNl8UJIsfdVRUAwHiruEhzsv8=", "Al21iLAHz7ijpGcyUNOVU0IaBEFcPEU2yb0VZQkZKdM=", "Y/b1UVQEeF4rBAS3K1Xr5I4NuBlqkZyyiobLBU4NxTM=", "KkM4t12E/0oDsQUKu2L03FdljDSCr6SMNKcjNHFVwkg=", "DBf+6S2FPBJx6iWymdRRUYRU/lyeflo7HU1q99h8qfo=", "dqgK4q43/y6aLFT0j3OJDK0/wP3bB1DcjtXt+M9ZDgA=", "YI8EgjQmA38CJT2O2AulXkUFuygfBUvKto28k1J1g2U=", "gjP07uTk7mDQZEVMqe6TZetGLEhOhmmEiWzeOyme2rk=", "qOJyrwx/VzDfrHHCPrmyyJlJlVTT2lwb0jUshbhlF6Q=", "R65BPV8zugTBA3eQG4LqBT4kXwiJbUY1GYPdd4glLTg=", "AqDykV6o5ERshtWsKq2KL+g91mURajZ2DQDbOsXvZ3I=", "4lYk7cX8PszZLoyQMWjMDB1BOBn4f7hehtFiHo92e5Y=", "ttpxd0TJprOUtb/8Wf5DeIzwNtUw72Q0YnXE2LFMIZo=", "qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=", "xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="], "checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2901513692\ne74V2IOrZ3x6ckZVsZC2Cm1xGV8T4WIxmpW9fbAzu0Y=\n\n— rekor.sigstore.dev wNI9ajBGAiEA+w0ZOAZRXkeiHBRTsGpVkDuIlBfxAQ14Q3/gf4R2DV0CIQDWOpVMwAzLkxWcYdJwzhH3AhmIoUrO72fs/ACPx4UkeA==\n"}}, "canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI4NGMwYWUyNTNlM2NkNTcyMThjN2FlNjQ3N2JmNWE3OTUwNGRmZjhhMzRkMzMwM2E4NTk2ODNjNTBjYTVjODE3In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJQkpBL2VYam0xdWxCeFd6TnBtSkFvZ01PZkFWTTRhdHdBOTlJUEhlaUFkdkFpRUFnLy8wckdrY1ZOL0d3eHZQQlRtd2ZybWhMYnhZMGRkcnJmWkozaWpMbTU0PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFRWRU5EUW5SRFowRjNTVUpCWjBsVVdTdFhMMVZPV0ZVNWNsaDRNSGxOVGpkU09IQnJRbEZ5V1dwQlMwSm5aM0ZvYTJwUFVGRlJSRUY2UVRNS1RWSlZkMFYzV1VSV1VWRkxSWGQ0ZW1GWFpIcGtSemw1V2xNMWExcFlXWGhJYWtGalFtZE9Wa0pCVFZSR1dFNXdXak5PTUdJelNteE1WMngxWkVkV2VRcGlWMVpyWVZkR01GcFVRV1ZHZHpCNVRtcEJOVTE2UVhoUFJFRTFUbFJTWVVaM01IbE9ha0UxVFhwQmVFOUVSVFZPVkZKaFRVRkJkMWRVUVZSQ1oyTnhDbWhyYWs5UVVVbENRbWRuY1docmFrOVFVVTFDUW5kT1EwRkJVazlpYzJsYVIwRlBURlZhTUU5a2RFZEJNMkZQWW1aTWRFaGpURTB3ZUZsd1VYRjBUMFlLUzBOc1VGVjFTWGhsYkRoa1VYaG9jWGRSVUc5RmVsWlpXRFk0UW1vck5Ua3hXa2swYVVJNVUyOXdOSEJTVXpaTWJ6UkpSamhFUTBOQ1pYZDNSR2RaUkFwV1VqQlFRVkZJTDBKQlVVUkJaMlZCVFVKTlIwRXhWV1JLVVZGTlRVRnZSME5EYzBkQlVWVkdRbmROUkUxQ01FZEJNVlZrUkdkUlYwSkNVVkJDYm1OaUNpOHJUR05wVXpCdGNEQmpjVzFwUmxkclJYQTNNMFJCWmtKblRsWklVMDFGUjBSQlYyZENWR1l3SzI1UVZtbFJVbXgyYlc4eVQydHZWbUZNUjB4b2FHc0tVSHBDY2tKblRsWklVa1ZDUVdZNFJWbFVRbVpvYkRGdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyWVVoV2Jsb3liSFZhTWxwb1dUSlZkZ3BoTWxaNVltMVdjMk41TVdwaU1qRjBaRmMxY0dSSWEzWk1iV1J3WkVkb01WbHBPVE5pTTBweVdtMTRkbVF6VFhaWmJsWndZa2RSZFdWWFJuUmlSVUo1Q2xwWFducE1NbWhzV1ZkU2Vrd3lNV2hoVnpSM1QxRlpTMHQzV1VKQ1FVZEVkbnBCUWtGUlVYSmhTRkl3WTBoTk5reDVPVEJpTW5Sc1ltazFhRmt6VW5BS1lqSTFla3h0WkhCa1IyZ3hXVzVXZWxwWVNtcGlNalV3V2xjMU1FeHRUblppVkVGbVFtZHZja0puUlVWQldVOHZUVUZGUTBKQ1JqTmlNMHB5V20xNGRncGtNVGxyWVZoT2QxbFlVbXBoUkVFeVFtZHZja0puUlVWQldVOHZUVUZGUkVKRFp6QlphbWhvVGpKSk1rMUVSbXhhVjBacVdXMVZORTR5VVRWUFJFMHlDazVxUVRGYWFrWnFUbXBWTUU5VVdtdFplbU40VDBkSmVVMUNUVWREYVhOSFFWRlJRbWMzT0hkQlVWRkZRbFZLTVdGWGVHdE5RM05IUTJselIwRlJVVUlLWnpjNGQwRlJWVVZJVjJneFdqSmtjR0p0WkcxWlYwNXNUREowYkdOdE5XeGlTRTEwV1RJNWRHSllWblZoV0ZJMVRVSXdSME5wYzBkQlVWRkNaemM0ZHdwQlVWbEZSRE5LYkZwdVRYWmhSMVpvV2toTmRtSlhSbkJpYWtFM1FtZHZja0puUlVWQldVOHZUVUZGU1VKRE1FMUxNbWd3WkVoQ2VrOXBPSFprUnpseUNscFhOSFZaVjA0d1lWYzVkV041Tlc1aFdGSnZaRmRLTVdNeVZubFpNamwxWkVkV2RXUkROV3BpTWpCM1lsRlpTMHQzV1VKQ1FVZEVkbnBCUWtOUlVtWUtSRVl4YjJSSVVuZGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbUZJVm01YU1teDFXakphYUZreVZYWmhNbFo1WW0xV2MyTjVNV3BpTWpGMFpGYzFjQXBrU0d0MlRHMWtjR1JIYURGWmFUa3pZak5LY2xwdGVIWmtNMDEyV1c1V2NHSkhVWFZsVjBaMFlrVkNlVnBYV25wTU1taHNXVmRTZWt3eU1XaGhWelIzQ2s5QldVdExkMWxDUWtGSFJIWjZRVUpEWjFGeFJFTm5NRmxxYUdoT01ra3lUVVJHYkZwWFJtcFpiVlUwVGpKUk5VOUVUVEpPYWtFeFdtcEdhazVxVlRBS1QxUmFhMWw2WTNoUFIwbDVUVUp6UjBOcGMwZEJVVkZDWnpjNGQwRlJjMFZFVVhkTVl6SldjMXBwTVc5aU0wNHdXbGRSZDFGQldVdExkMWxDUWtGSFJBcDJla0ZDUkVGUmVVUkVRbTlrU0ZKM1kzcHZka3d5WkhCa1IyZ3hXV2sxYW1JeU1IWmhTRlp1V2pKc2RWb3lXbWhaTWxWMllUSldlV0p0Vm5OamVURnFDbUl5TVhSa1Z6VndaRWhyZDA5QldVdExkMWxDUWtGSFJIWjZRVUpFVVZGeFJFTm5NRmxxYUdoT01ra3lUVVJHYkZwWFJtcFpiVlUwVGpKUk5VOUVUVElLVG1wQk1WcHFSbXBPYWxVd1QxUmFhMWw2WTNoUFIwbDVUVUk0UjBOcGMwZEJVVkZDWnpjNGQwRlJORVZGVVhkUVkyMVdiV041T1c5YVYwWnJZM2s1ZEFwWlYyeDFUVUp2UjBOcGMwZEJVVkZDWnpjNGQwRlJPRVZFUVhkTFRWUkJNMDFVVVROT1ZGVjVUMVJCZFVKbmIzSkNaMFZGUVZsUEwwMUJSVkZDUTBGTkNraHRhREJrU0VKNlQyazRkbG95YkRCaFNGWnBURzFPZG1KVE9XOWtWMlJ1WVZjMWJscHRSbXBhVkVGWlFtZHZja0puUlVWQldVOHZUVUZGVWtKQmIwMEtRMFJKTVU1NlNYZE9lbEY2VFVjd1IwTnBjMGRCVVZGQ1p6YzRkMEZTU1VWWWQzaGtZVWhTTUdOSVRUWk1lVGx1WVZoU2IyUlhTWFZaTWpsMFRESm9NUXBhTW1Sd1ltMWtiVmxYVG14TU1uUnNZMjAxYkdKSVRYUlpNamwwWWxoV2RXRllValZNZVRWdVlWaFNiMlJYU1haa01qbDVZVEphYzJJelpIcE1Na294Q21GWGVHdE1ibXhvWWxkNFFXTnRWbTFqZVRsdldsZEdhMk41T1hSWlYyeDFUVVJuUjBOcGMwZEJVVkZDWnpjNGQwRlNUVVZMWjNkdlRrZEpORmxVWkdrS1RtcEJlRnBYVm1oWk1rcHNUMFJrYTA5VVozcE9hbGwzVGxkWmVGbDZXVEZPUkdzeVdrZE5NMDFVYUdsTmFrRm9RbWR2Y2tKblJVVkJXVTh2VFVGRlZRcENRazFOUlZoa2RtTnRkRzFpUnpreldESlNjR016UW1oa1IwNXZUVWRSUjBOcGMwZEJVVkZDWnpjNGQwRlNWVVZXWjNoVllVaFNNR05JVFRaTWVUbHVDbUZZVW05a1YwbDFXVEk1ZEV3eWFERmFNbVJ3WW0xa2JWbFhUbXhNTW5Sc1kyMDFiR0pJVFhSWk1qbDBZbGhXZFdGWVVqVk1Na1pxWkVkc2RtSnVUWFlLWTI1V2RXTjVPSHBPYW1NeFRYcEZlazVVWXpWT1V6bG9aRWhTYkdKWVFqQmplVGg0VFVKWlIwTnBjMGRCVVZGQ1p6YzRkMEZTV1VWRFFYZEhZMGhXYVFwaVIyeHFUVVZaUjBOcGMwZEJVVkZDWnpjNGQwRlNaMFZQUVhjeVkyMVdkMko2Y0c5a1YyUnVZVmMxYmxwdFJtcGFVemx5V2xoS2RWcFhlSHBNVjA1MkNtSlhNVEZpYld3d1pWUndlVnBYV1RaamJWWnRZM2s1YjFwWFJtdGplVGwwV1Zkc2RVMUpSMHRDWjI5eVFtZEZSVUZrV2pWQloxRkRRa2gzUldWblFqUUtRVWhaUVROVU1IZGhjMkpJUlZSS2FrZFNOR050VjJNelFYRktTMWh5YW1WUVN6TXZhRFJ3ZVdkRE9IQTNielJCUVVGSFp6ZzBTa0ZWVVVGQlFrRk5RUXBTZWtKR1FXbENTbFJWYVVWTlYxWTBabFZVZG5vNGRtRk5VRk5UTlRWNGVFb3JkVzlxYVVOeGIxSnBXRWwwY0d4cWQwbG9RVXhvUnpSTVJGUnRSWGhDQ2k5V1VHaE1WblZ5TWxOa1VsWlVVRGhQYVhkSk9VbGlUMVJoVW5OQlJFdDNUVUZ2UjBORGNVZFRUVFE1UWtGTlJFRXlZMEZOUjFGRFRVVnZkRmhpV21vS1ExYzRhMjVrVUVzeGFYTmlWSFZ0Vm5GbmQwaFZUVFl4ZFdOMlZFMTRjaXMyVDBFelUyYzFibFJrYUhwRk9FZHNZVGR1WjBzclMwOTRRVWwzUkZScWJncGFTM0pOTVd4MlZGYzRZVkZ0Tld4UmJsWlJiRlpvTmxwM01YRmxVR0V3Y0hKNVUza3ZWV0YzTXpSUFREaE9TWGRYU1hSbVozQnRlbVpVWkVjS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}], "timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyzADAgEAMIICwgYJKoZIhvcNAQcCoIICszCCAq8CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQgWRwl3OTbSJeG7aVNhn3MJ+kJvCb9B5IvtRsXJQsPEuECFQCx4nhg4N5mgKEDAYYV34hyKN3NYxgPMjAyNjA5MzAxODA5NTRaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHcMIIB2AIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkzMDE4MDk1NFowLwYJKoZIhvcNAQkEMSIEIMQBIM46cL4WETGwV/ybd6XsglPEc6ulZAHi8fRWwLhRMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRoMGYCMQCUxnWuB7pwhy79Msu6+qoV0echf4kDvl/gXAmWWUtaEBVhwKC7lzDbJjcV/FQf7T0CMQDE5t9n+Q5YmP9XQYujTFf2joSCOk+Y+oDGgE0UrJdE9iIWSVue5U0wmrkRgjhiopk="}]}}, "messageSignature":{"messageDigest":{"algorithm":"SHA2_256", "digest":"hMCuJT481XIYx65kd79aeVBN/4o00zA6hZaDxQylyBc="}, "signature":"MEUCIBJA/eXjm1ulBxWzNpmJAogMOfAVM4atwA99IPHeiAdvAiEAg//0rGkcVN/GwxvPBTmwfrmhLbxY0ddrrfZJ3ijLm54="}}
|
build/torch-stable-abi210-cu132-x86_64-linux/platforms.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import random
|
| 3 |
+
from abc import ABC, abstractmethod
|
| 4 |
+
from functools import lru_cache, wraps
|
| 5 |
+
from typing import Callable, ParamSpec, TypeVar
|
| 6 |
+
|
| 7 |
+
import numpy as np
|
| 8 |
+
import torch
|
| 9 |
+
|
| 10 |
+
IS_ROCM = torch.version.hip is not None
|
| 11 |
+
IS_MPS = torch.backends.mps.is_available()
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
class Platform(ABC):
|
| 15 |
+
@classmethod
|
| 16 |
+
def seed_everything(cls, seed: int) -> None:
|
| 17 |
+
"""
|
| 18 |
+
Set the seed of each random module.
|
| 19 |
+
`torch.manual_seed` will set seed on all devices.
|
| 20 |
+
|
| 21 |
+
Loosely based on: https://github.com/Lightning-AI/pytorch-lightning/blob/2.4.0/src/lightning/fabric/utilities/seed.py#L20
|
| 22 |
+
"""
|
| 23 |
+
random.seed(seed)
|
| 24 |
+
np.random.seed(seed)
|
| 25 |
+
torch.manual_seed(seed)
|
| 26 |
+
|
| 27 |
+
@abstractmethod
|
| 28 |
+
def get_device_name(self, device_id: int = 0) -> str: ...
|
| 29 |
+
|
| 30 |
+
@abstractmethod
|
| 31 |
+
def is_cuda(self) -> bool: ...
|
| 32 |
+
|
| 33 |
+
@abstractmethod
|
| 34 |
+
def is_rocm(self) -> bool: ...
|
| 35 |
+
|
| 36 |
+
@abstractmethod
|
| 37 |
+
def is_mps(self) -> bool: ...
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
class CudaPlatform(Platform):
|
| 41 |
+
@classmethod
|
| 42 |
+
@lru_cache(maxsize=8)
|
| 43 |
+
def get_device_name(cls, device_id: int = 0) -> str:
|
| 44 |
+
return torch.cuda.get_device_name(0)
|
| 45 |
+
|
| 46 |
+
def is_cuda(self) -> bool:
|
| 47 |
+
return True
|
| 48 |
+
|
| 49 |
+
def is_rocm(self) -> bool:
|
| 50 |
+
return False
|
| 51 |
+
|
| 52 |
+
def is_mps(self) -> bool:
|
| 53 |
+
return False
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
class RocmPlatform(Platform):
|
| 57 |
+
@classmethod
|
| 58 |
+
@lru_cache(maxsize=8)
|
| 59 |
+
def get_device_name(cls, device_id: int = 0) -> str:
|
| 60 |
+
return torch.cuda.get_device_name(device_id)
|
| 61 |
+
|
| 62 |
+
def is_cuda(self) -> bool:
|
| 63 |
+
return False
|
| 64 |
+
|
| 65 |
+
def is_rocm(self) -> bool:
|
| 66 |
+
return True
|
| 67 |
+
|
| 68 |
+
def is_mps(self) -> bool:
|
| 69 |
+
return False
|
| 70 |
+
|
| 71 |
+
|
| 72 |
+
class MpsPlatform(Platform):
|
| 73 |
+
@classmethod
|
| 74 |
+
@lru_cache(maxsize=8)
|
| 75 |
+
def get_device_name(cls, device_id: int = 0) -> str:
|
| 76 |
+
return torch.cuda.get_device_name(device_id)
|
| 77 |
+
|
| 78 |
+
def is_cuda(self) -> bool:
|
| 79 |
+
return False
|
| 80 |
+
|
| 81 |
+
def is_rocm(self) -> bool:
|
| 82 |
+
return False
|
| 83 |
+
|
| 84 |
+
def is_mps(self) -> bool:
|
| 85 |
+
return True
|
| 86 |
+
|
| 87 |
+
current_platform = (
|
| 88 |
+
RocmPlatform() if IS_ROCM else
|
| 89 |
+
MpsPlatform() if IS_MPS else
|
| 90 |
+
CudaPlatform() if torch.cuda.is_available() else
|
| 91 |
+
None
|
| 92 |
+
)
|