fbgemm-gpu-genai-nightly 2025.10.31__cp310-cp310-manylinux_2_28_x86_64.whl → 2025.11.2__cp310-cp310-manylinux_2_28_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of fbgemm-gpu-genai-nightly might be problematic. Click here for more details.
- fbgemm_gpu/asmjit.so +0 -0
- fbgemm_gpu/docs/target.genai.json.py +1 -1
- fbgemm_gpu/experimental/example/fbgemm_gpu_experimental_example_py.so +0 -0
- fbgemm_gpu/experimental/gen_ai/fbgemm_gpu_experimental_gen_ai.so +0 -0
- fbgemm_gpu/fbgemm.so +0 -0
- fbgemm_gpu/split_table_batched_embeddings_ops_common.py +19 -6
- fbgemm_gpu/tbe/ssd/training.py +128 -16
- {fbgemm_gpu_genai_nightly-2025.10.31.dist-info → fbgemm_gpu_genai_nightly-2025.11.2.dist-info}/METADATA +1 -1
- {fbgemm_gpu_genai_nightly-2025.10.31.dist-info → fbgemm_gpu_genai_nightly-2025.11.2.dist-info}/RECORD +11 -11
- {fbgemm_gpu_genai_nightly-2025.10.31.dist-info → fbgemm_gpu_genai_nightly-2025.11.2.dist-info}/WHEEL +0 -0
- {fbgemm_gpu_genai_nightly-2025.10.31.dist-info → fbgemm_gpu_genai_nightly-2025.11.2.dist-info}/top_level.txt +0 -0
fbgemm_gpu/asmjit.so
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
fbgemm_gpu/fbgemm.so
CHANGED
|
Binary file
|
|
@@ -86,19 +86,19 @@ class EvictionPolicy(NamedTuple):
|
|
|
86
86
|
None # feature_score_counter_decay_rates for each table if eviction strategy is feature score
|
|
87
87
|
)
|
|
88
88
|
training_id_eviction_trigger_count: Optional[list[int]] = (
|
|
89
|
-
None #
|
|
89
|
+
None # Number of training IDs that, when exceeded, will trigger eviction for each table.
|
|
90
90
|
)
|
|
91
91
|
training_id_keep_count: Optional[list[int]] = (
|
|
92
|
-
None #
|
|
92
|
+
None # Target number of training IDs to retain in each table after eviction.
|
|
93
93
|
)
|
|
94
94
|
l2_weight_thresholds: Optional[list[float]] = (
|
|
95
95
|
None # l2_weight_thresholds for each table if eviction strategy is feature l2 norm
|
|
96
96
|
)
|
|
97
97
|
threshold_calculation_bucket_stride: Optional[float] = (
|
|
98
|
-
0.2 #
|
|
98
|
+
0.2 # The width of each feature score bucket used for threshold calculation in feature score-based eviction.
|
|
99
99
|
)
|
|
100
100
|
threshold_calculation_bucket_num: Optional[int] = (
|
|
101
|
-
1000000 # 1M,
|
|
101
|
+
1000000 # 1M, Total number of feature score buckets used for threshold calculation in feature score-based eviction.
|
|
102
102
|
)
|
|
103
103
|
interval_for_insufficient_eviction_s: int = (
|
|
104
104
|
# wait at least # seconds before trigger next round of eviction, if last finished eviction is insufficient
|
|
@@ -114,10 +114,16 @@ class EvictionPolicy(NamedTuple):
|
|
|
114
114
|
24 * 3600 # 1 day, interval for feature statistics decay
|
|
115
115
|
)
|
|
116
116
|
meta_header_lens: Optional[list[int]] = None # metaheader length for each table
|
|
117
|
+
eviction_free_mem_threshold_gb: Optional[int] = (
|
|
118
|
+
None # Minimum free memory (in GB) required before triggering eviction when using free_mem trigger mode.
|
|
119
|
+
)
|
|
120
|
+
eviction_free_mem_check_interval_batch: Optional[int] = (
|
|
121
|
+
None # Number of batches between checks for free memory threshold when using free_mem trigger mode.
|
|
122
|
+
)
|
|
117
123
|
|
|
118
124
|
def validate(self) -> None:
|
|
119
|
-
assert self.eviction_trigger_mode in [0, 1, 2, 3, 4], (
|
|
120
|
-
"eviction_trigger_mode must be 0, 1, 2, 3
|
|
125
|
+
assert self.eviction_trigger_mode in [0, 1, 2, 3, 4, 5], (
|
|
126
|
+
"eviction_trigger_mode must be 0, 1, 2, 3, 4, 5"
|
|
121
127
|
f"actual {self.eviction_trigger_mode}"
|
|
122
128
|
)
|
|
123
129
|
if self.eviction_trigger_mode == 0:
|
|
@@ -143,6 +149,13 @@ class EvictionPolicy(NamedTuple):
|
|
|
143
149
|
assert (
|
|
144
150
|
self.training_id_eviction_trigger_count is not None
|
|
145
151
|
), "training_id_eviction_trigger_count must be set if eviction_trigger_mode is 4"
|
|
152
|
+
elif self.eviction_trigger_mode == 5:
|
|
153
|
+
assert (
|
|
154
|
+
self.eviction_free_mem_threshold_gb is not None
|
|
155
|
+
), "eviction_free_mem_threshold_gb must be set if eviction_trigger_mode is 5"
|
|
156
|
+
assert (
|
|
157
|
+
self.eviction_free_mem_check_interval_batch is not None
|
|
158
|
+
), "eviction_free_mem_check_interval_batch must be set if eviction_trigger_mode is 5"
|
|
146
159
|
|
|
147
160
|
if self.eviction_strategy == 0:
|
|
148
161
|
assert self.ttls_in_mins is not None, (
|
fbgemm_gpu/tbe/ssd/training.py
CHANGED
|
@@ -18,8 +18,9 @@ import threading
|
|
|
18
18
|
import time
|
|
19
19
|
from functools import cached_property
|
|
20
20
|
from math import floor, log2
|
|
21
|
-
from typing import Any, Callable, Optional, Union
|
|
21
|
+
from typing import Any, Callable, ClassVar, Optional, Union
|
|
22
22
|
import torch # usort:skip
|
|
23
|
+
import weakref
|
|
23
24
|
|
|
24
25
|
# @manual=//deeplearning/fbgemm/fbgemm_gpu/codegen:split_embedding_codegen_lookup_invokers
|
|
25
26
|
import fbgemm_gpu.split_embedding_codegen_lookup_invokers as invokers
|
|
@@ -34,6 +35,7 @@ from fbgemm_gpu.split_table_batched_embeddings_ops_common import (
|
|
|
34
35
|
BoundsCheckMode,
|
|
35
36
|
CacheAlgorithm,
|
|
36
37
|
EmbeddingLocation,
|
|
38
|
+
EvictionPolicy,
|
|
37
39
|
get_bounds_check_version_for_platform,
|
|
38
40
|
KVZCHParams,
|
|
39
41
|
PoolingMode,
|
|
@@ -54,6 +56,8 @@ from fbgemm_gpu.split_table_batched_embeddings_ops_training_common import (
|
|
|
54
56
|
from torch import distributed as dist, nn, Tensor # usort:skip
|
|
55
57
|
from dataclasses import dataclass
|
|
56
58
|
|
|
59
|
+
import psutil
|
|
60
|
+
|
|
57
61
|
from torch.autograd.profiler import record_function
|
|
58
62
|
|
|
59
63
|
from ..cache import get_unique_indices_v2
|
|
@@ -100,6 +104,9 @@ class SSDTableBatchedEmbeddingBags(nn.Module):
|
|
|
100
104
|
_local_instance_index: int = -1
|
|
101
105
|
res_params: RESParams
|
|
102
106
|
table_names: list[str]
|
|
107
|
+
_all_tbe_instances: ClassVar[weakref.WeakSet] = weakref.WeakSet()
|
|
108
|
+
_first_instance_ref: ClassVar[weakref.ref] = None
|
|
109
|
+
_eviction_triggered: ClassVar[bool] = False
|
|
103
110
|
|
|
104
111
|
def __init__(
|
|
105
112
|
self,
|
|
@@ -179,6 +186,7 @@ class SSDTableBatchedEmbeddingBags(nn.Module):
|
|
|
179
186
|
table_names: Optional[list[str]] = None,
|
|
180
187
|
use_rowwise_bias_correction: bool = False, # For Adam use
|
|
181
188
|
optimizer_state_dtypes: dict[str, SparseType] = {}, # noqa: B006
|
|
189
|
+
pg: Optional[dist.ProcessGroup] = None,
|
|
182
190
|
) -> None:
|
|
183
191
|
super(SSDTableBatchedEmbeddingBags, self).__init__()
|
|
184
192
|
|
|
@@ -567,6 +575,10 @@ class SSDTableBatchedEmbeddingBags(nn.Module):
|
|
|
567
575
|
# loading checkpoint flag, set by checkpoint loader, and cleared after weight is applied to backend
|
|
568
576
|
self.load_state_dict: bool = False
|
|
569
577
|
|
|
578
|
+
SSDTableBatchedEmbeddingBags._all_tbe_instances.add(self)
|
|
579
|
+
if SSDTableBatchedEmbeddingBags._first_instance_ref is None:
|
|
580
|
+
SSDTableBatchedEmbeddingBags._first_instance_ref = weakref.ref(self)
|
|
581
|
+
|
|
570
582
|
# create tbe unique id using rank index | local tbe idx
|
|
571
583
|
if tbe_unique_id == -1:
|
|
572
584
|
SSDTableBatchedEmbeddingBags._local_instance_index += 1
|
|
@@ -584,6 +596,7 @@ class SSDTableBatchedEmbeddingBags(nn.Module):
|
|
|
584
596
|
self.tbe_unique_id = tbe_unique_id
|
|
585
597
|
self.l2_cache_size = l2_cache_size
|
|
586
598
|
logging.info(f"tbe_unique_id: {tbe_unique_id}")
|
|
599
|
+
self.enable_free_mem_trigger_eviction: bool = False
|
|
587
600
|
if self.backend_type == BackendType.SSD:
|
|
588
601
|
logging.info(
|
|
589
602
|
f"Logging SSD offloading setup, tbe_unique_id:{tbe_unique_id}, l2_cache_size:{l2_cache_size}GB, "
|
|
@@ -688,25 +701,31 @@ class SSDTableBatchedEmbeddingBags(nn.Module):
|
|
|
688
701
|
if self.kv_zch_params.eviction_policy.eviction_mem_threshold_gb
|
|
689
702
|
else self.l2_cache_size
|
|
690
703
|
)
|
|
704
|
+
kv_zch_params = self.kv_zch_params
|
|
705
|
+
eviction_policy = self.kv_zch_params.eviction_policy
|
|
706
|
+
if eviction_policy.eviction_trigger_mode == 5:
|
|
707
|
+
# If trigger mode is free_mem(5), populate config
|
|
708
|
+
self.set_free_mem_eviction_trigger_config(eviction_policy)
|
|
709
|
+
|
|
691
710
|
# Please refer to https://fburl.com/gdoc/nuupjwqq for the following eviction parameters.
|
|
692
711
|
eviction_config = torch.classes.fbgemm.FeatureEvictConfig(
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
712
|
+
eviction_policy.eviction_trigger_mode, # eviction is disabled, 0: disabled, 1: iteration, 2: mem_util, 3: manual, 4: id count
|
|
713
|
+
eviction_policy.eviction_strategy, # evict_trigger_strategy: 0: timestamp, 1: counter, 2: counter + timestamp, 3: feature l2 norm, 4: timestamp threshold 5: feature score
|
|
714
|
+
eviction_policy.eviction_step_intervals, # trigger_step_interval if trigger mode is iteration
|
|
696
715
|
eviction_mem_threshold_gb, # mem_util_threshold_in_GB if trigger mode is mem_util
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
716
|
+
eviction_policy.ttls_in_mins, # ttls_in_mins for each table if eviction strategy is timestamp
|
|
717
|
+
eviction_policy.counter_thresholds, # counter_thresholds for each table if eviction strategy is counter
|
|
718
|
+
eviction_policy.counter_decay_rates, # counter_decay_rates for each table if eviction strategy is counter
|
|
719
|
+
eviction_policy.feature_score_counter_decay_rates, # feature_score_counter_decay_rates for each table if eviction strategy is feature score
|
|
720
|
+
eviction_policy.training_id_eviction_trigger_count, # training_id_eviction_trigger_count for each table
|
|
721
|
+
eviction_policy.training_id_keep_count, # training_id_keep_count for each table
|
|
722
|
+
eviction_policy.l2_weight_thresholds, # l2_weight_thresholds for each table if eviction strategy is feature l2 norm
|
|
704
723
|
table_dims.tolist() if table_dims is not None else None,
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
724
|
+
eviction_policy.threshold_calculation_bucket_stride, # threshold_calculation_bucket_stride if eviction strategy is feature score
|
|
725
|
+
eviction_policy.threshold_calculation_bucket_num, # threshold_calculation_bucket_num if eviction strategy is feature score
|
|
726
|
+
eviction_policy.interval_for_insufficient_eviction_s,
|
|
727
|
+
eviction_policy.interval_for_sufficient_eviction_s,
|
|
728
|
+
eviction_policy.interval_for_feature_statistics_decay_s,
|
|
710
729
|
)
|
|
711
730
|
self._ssd_db = torch.classes.fbgemm.DramKVEmbeddingCacheWrapper(
|
|
712
731
|
self.cache_row_dim,
|
|
@@ -1065,6 +1084,8 @@ class SSDTableBatchedEmbeddingBags(nn.Module):
|
|
|
1065
1084
|
|
|
1066
1085
|
self.bounds_check_version: int = get_bounds_check_version_for_platform()
|
|
1067
1086
|
|
|
1087
|
+
self._pg = pg
|
|
1088
|
+
|
|
1068
1089
|
@cached_property
|
|
1069
1090
|
def cache_row_dim(self) -> int:
|
|
1070
1091
|
"""
|
|
@@ -2042,6 +2063,9 @@ class SSDTableBatchedEmbeddingBags(nn.Module):
|
|
|
2042
2063
|
if dist.get_rank() == 0:
|
|
2043
2064
|
self._report_kv_backend_stats()
|
|
2044
2065
|
|
|
2066
|
+
# May trigger eviction if free mem trigger mode enabled before get cuda
|
|
2067
|
+
self.may_trigger_eviction()
|
|
2068
|
+
|
|
2045
2069
|
# Fetch data from SSD
|
|
2046
2070
|
if linear_cache_indices.numel() > 0:
|
|
2047
2071
|
self.record_function_via_dummy_profile(
|
|
@@ -4650,3 +4674,91 @@ class SSDTableBatchedEmbeddingBags(nn.Module):
|
|
|
4650
4674
|
)
|
|
4651
4675
|
|
|
4652
4676
|
# Return control to the main stream without waiting for the backend operation to complete
|
|
4677
|
+
|
|
4678
|
+
def get_free_cpu_memory_gb(self) -> float:
|
|
4679
|
+
mem = psutil.virtual_memory()
|
|
4680
|
+
return mem.available / (1024**3)
|
|
4681
|
+
|
|
4682
|
+
@classmethod
|
|
4683
|
+
def trigger_evict_in_all_tbes(cls) -> None:
|
|
4684
|
+
for tbe in cls._all_tbe_instances:
|
|
4685
|
+
tbe.ssd_db.trigger_feature_evict()
|
|
4686
|
+
|
|
4687
|
+
@classmethod
|
|
4688
|
+
def tbe_has_ongoing_eviction(cls) -> bool:
|
|
4689
|
+
for tbe in cls._all_tbe_instances:
|
|
4690
|
+
if tbe.ssd_db.is_evicting():
|
|
4691
|
+
return True
|
|
4692
|
+
return False
|
|
4693
|
+
|
|
4694
|
+
def set_free_mem_eviction_trigger_config(
|
|
4695
|
+
self, eviction_policy: EvictionPolicy
|
|
4696
|
+
) -> None:
|
|
4697
|
+
self.enable_free_mem_trigger_eviction = True
|
|
4698
|
+
self.eviction_trigger_mode: int = eviction_policy.eviction_trigger_mode
|
|
4699
|
+
assert (
|
|
4700
|
+
eviction_policy.eviction_free_mem_check_interval_batch is not None
|
|
4701
|
+
), "eviction_free_mem_check_interval_batch is unexpected none for free_mem eviction trigger mode"
|
|
4702
|
+
self.eviction_free_mem_check_interval_batch: int = (
|
|
4703
|
+
eviction_policy.eviction_free_mem_check_interval_batch
|
|
4704
|
+
)
|
|
4705
|
+
assert (
|
|
4706
|
+
eviction_policy.eviction_free_mem_threshold_gb is not None
|
|
4707
|
+
), "eviction_policy.eviction_free_mem_threshold_gb is unexpected none for free_mem eviction trigger mode"
|
|
4708
|
+
self.eviction_free_mem_threshold_gb: int = (
|
|
4709
|
+
eviction_policy.eviction_free_mem_threshold_gb
|
|
4710
|
+
)
|
|
4711
|
+
logging.info(
|
|
4712
|
+
f"[FREE_MEM Eviction] eviction config, trigger model: FREE_MEM, {self.eviction_free_mem_check_interval_batch=}, {self.eviction_free_mem_threshold_gb=}"
|
|
4713
|
+
)
|
|
4714
|
+
|
|
4715
|
+
def may_trigger_eviction(self) -> None:
|
|
4716
|
+
def is_first_tbe() -> bool:
|
|
4717
|
+
first = SSDTableBatchedEmbeddingBags._first_instance_ref
|
|
4718
|
+
return first is not None and first() is self
|
|
4719
|
+
|
|
4720
|
+
# We assume that the eviction time is less than free mem check interval time
|
|
4721
|
+
# So every time we reach this check, all evictions in all tbes should be finished.
|
|
4722
|
+
# We only need to check the first tbe because all tbes share the same free mem,
|
|
4723
|
+
# once the first tbe detect need to trigger eviction, it will call trigger func
|
|
4724
|
+
# in all tbes from _all_tbe_instances
|
|
4725
|
+
if (
|
|
4726
|
+
self.enable_free_mem_trigger_eviction
|
|
4727
|
+
and self.step % self.eviction_free_mem_check_interval_batch == 0
|
|
4728
|
+
and self.training
|
|
4729
|
+
and is_first_tbe()
|
|
4730
|
+
):
|
|
4731
|
+
if not SSDTableBatchedEmbeddingBags.tbe_has_ongoing_eviction():
|
|
4732
|
+
SSDTableBatchedEmbeddingBags._eviction_triggered = False
|
|
4733
|
+
|
|
4734
|
+
free_cpu_mem_gb = self.get_free_cpu_memory_gb()
|
|
4735
|
+
local_evict_trigger = int(
|
|
4736
|
+
free_cpu_mem_gb < self.eviction_free_mem_threshold_gb
|
|
4737
|
+
)
|
|
4738
|
+
tensor_flag = torch.tensor(
|
|
4739
|
+
local_evict_trigger,
|
|
4740
|
+
device=self.current_device,
|
|
4741
|
+
dtype=torch.int,
|
|
4742
|
+
)
|
|
4743
|
+
world_size = dist.get_world_size(self._pg)
|
|
4744
|
+
if world_size > 1:
|
|
4745
|
+
dist.all_reduce(tensor_flag, op=dist.ReduceOp.SUM, group=self._pg)
|
|
4746
|
+
global_evict_trigger = tensor_flag.item()
|
|
4747
|
+
else:
|
|
4748
|
+
global_evict_trigger = local_evict_trigger
|
|
4749
|
+
if (
|
|
4750
|
+
global_evict_trigger >= 1
|
|
4751
|
+
and SSDTableBatchedEmbeddingBags._eviction_triggered
|
|
4752
|
+
):
|
|
4753
|
+
logging.warning(
|
|
4754
|
+
f"[FREE_MEM Eviction] {global_evict_trigger} ranks triggered eviction, but SSDTableBatchedEmbeddingBags._eviction_triggered is true"
|
|
4755
|
+
)
|
|
4756
|
+
if (
|
|
4757
|
+
global_evict_trigger >= 1
|
|
4758
|
+
and not SSDTableBatchedEmbeddingBags._eviction_triggered
|
|
4759
|
+
):
|
|
4760
|
+
SSDTableBatchedEmbeddingBags._eviction_triggered = True
|
|
4761
|
+
SSDTableBatchedEmbeddingBags.trigger_evict_in_all_tbes()
|
|
4762
|
+
logging.info(
|
|
4763
|
+
f"[FREE_MEM Eviction] Evict all at batch {self.step}, {free_cpu_mem_gb} GB free CPU memory, {global_evict_trigger} ranks triggered eviction"
|
|
4764
|
+
)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
fbgemm_gpu/__init__.py,sha256=A3DuseilQ-sEtBpeZsG0LOqN5Cl3e5DHI_YgCZEMhnE,6283
|
|
2
|
-
fbgemm_gpu/asmjit.so,sha256=
|
|
2
|
+
fbgemm_gpu/asmjit.so,sha256=5N9owjQJb6tzArT7Lzjl_gIEjn5eDTvOvjxwLEVTaV4,484232
|
|
3
3
|
fbgemm_gpu/batched_unary_embeddings_ops.py,sha256=GYeJ9pg-Wc9FokXVci_npDsL6UV18-pJXID2xzrJ9O8,2904
|
|
4
4
|
fbgemm_gpu/enums.py,sha256=37ewGSfO1x7sO31ZkRiqV1yKuklfHXT5qZIxzeeGogo,755
|
|
5
|
-
fbgemm_gpu/fbgemm.so,sha256=
|
|
5
|
+
fbgemm_gpu/fbgemm.so,sha256=DEQ1gRPSFaPAUbupt2byc0F7ZpHYo1yagdZ1Se9Gq1A,5807256
|
|
6
6
|
fbgemm_gpu/metrics.py,sha256=TsurFLJf0nJvPDN7urWb4LMQlf5RgdWPTTTDO7S4wtI,5663
|
|
7
7
|
fbgemm_gpu/permute_pooled_embedding_modules.py,sha256=vOXMYclaGnwSt0St_SOAlAe18kz6WjMyTeHnC9jLhcE,5130
|
|
8
8
|
fbgemm_gpu/permute_pooled_embedding_modules_split.py,sha256=f3VJvH_kw9Ltd_DXtaf_PJPHmlmEWrQgzQ7MDkhh5Nw,2746
|
|
@@ -15,7 +15,7 @@ fbgemm_gpu/split_embedding_inference_converter.py,sha256=AghGW22MgMsdHzdwdPMPYDj
|
|
|
15
15
|
fbgemm_gpu/split_embedding_optimizer_ops.py,sha256=wXuGazClBMk62yL_r9udUIKaPgQP7SlkSb5ugB75wrQ,711
|
|
16
16
|
fbgemm_gpu/split_embedding_utils.py,sha256=Gb40ZKeATxIKEKI3aVQMgDDBanNpKMc53Z43mnzdR_I,851
|
|
17
17
|
fbgemm_gpu/split_table_batched_embeddings_ops.py,sha256=_MIp6uHYHLn4GxGdrGsfddfSsZ2Z9mjsYIrih3ncI1I,2339
|
|
18
|
-
fbgemm_gpu/split_table_batched_embeddings_ops_common.py,sha256=
|
|
18
|
+
fbgemm_gpu/split_table_batched_embeddings_ops_common.py,sha256=Ps2N_MAaKY6PiMDJlnpRNGzPQxVgHP98qSHK7-oXSyg,18200
|
|
19
19
|
fbgemm_gpu/split_table_batched_embeddings_ops_inference.py,sha256=dGC85xjQiRUrequBibSf9oMAVHT5Q49zsVo2zW4n_88,81679
|
|
20
20
|
fbgemm_gpu/split_table_batched_embeddings_ops_training.py,sha256=sM4xXXU6p_clbPIRLO7UI5fnIcan8dt2FhL6KURZTQw,180438
|
|
21
21
|
fbgemm_gpu/split_table_batched_embeddings_ops_training_common.py,sha256=e3O9ElaWBGvG7TdT3Ok_8cB06jhskXuyCQ0t40dzsEY,5449
|
|
@@ -32,9 +32,9 @@ fbgemm_gpu/docs/merge_pooled_embedding_ops.py,sha256=oJLgSgZQmhsyGLbTmZTxNgQrk65
|
|
|
32
32
|
fbgemm_gpu/docs/permute_pooled_embedding_ops.py,sha256=tZUqLVXlk5O6VAKKDA-OEMx2fCu5QPOOeoAPZA9_nLY,4454
|
|
33
33
|
fbgemm_gpu/docs/quantize_ops.py,sha256=xTtOaVK1P02ymreE_i21YiyYDZCqhoZY9eWp_mEIRlo,1297
|
|
34
34
|
fbgemm_gpu/docs/sparse_ops.py,sha256=gSLUFdnu8lle_6gLewFkM20wL3ek2jKLvDGMKR6POaY,27292
|
|
35
|
-
fbgemm_gpu/docs/target.genai.json.py,sha256=
|
|
35
|
+
fbgemm_gpu/docs/target.genai.json.py,sha256=L7gR40FUATqlkaSPBV3e1J3iB0KTlNDZ_x5fHg0Apg0,78
|
|
36
36
|
fbgemm_gpu/experimental/example/__init__.py,sha256=OvJHZgWnycL1gWKyCXFJCTKuys3KAqx4iadjx3R-tBQ,723
|
|
37
|
-
fbgemm_gpu/experimental/example/fbgemm_gpu_experimental_example_py.so,sha256=
|
|
37
|
+
fbgemm_gpu/experimental/example/fbgemm_gpu_experimental_example_py.so,sha256=VqjkB_CVMV_gQLGn9Upu-2SwrpeReWK43f0pqsYnWhs,232488
|
|
38
38
|
fbgemm_gpu/experimental/example/utils.py,sha256=Je__VkMlBMLOhh7NXOocOdvaa2gz9kl9Dkqeu25tpFA,562
|
|
39
39
|
fbgemm_gpu/experimental/gemm/triton_gemm/__init__.py,sha256=1CqUfzlYyXTvU-BNaUq4RZpLV-2lKAVCAHeJzSIZFWw,419
|
|
40
40
|
fbgemm_gpu/experimental/gemm/triton_gemm/fp4_quantize.py,sha256=2RjIDSzUXtoFoC2ryp-C-j5H83mbSjPwvsvTrThfrqE,215658
|
|
@@ -43,7 +43,7 @@ fbgemm_gpu/experimental/gemm/triton_gemm/grouped_gemm.py,sha256=rbjxTMefjQWgJrWK
|
|
|
43
43
|
fbgemm_gpu/experimental/gemm/triton_gemm/matmul_perf_model.py,sha256=SltbY_dsit5e7B8lDIB_VYPrEq0t9kckthj9mQaVNfA,7571
|
|
44
44
|
fbgemm_gpu/experimental/gemm/triton_gemm/utils.py,sha256=rULXIpVaaRS3GKUZ1RHcWUrUyy0xMVREwS1SFShGgcw,4302
|
|
45
45
|
fbgemm_gpu/experimental/gen_ai/__init__.py,sha256=r3NlNCXuIh0pfKwKU5v14y6AZkpoIkKWbtzxSprgeKA,1713
|
|
46
|
-
fbgemm_gpu/experimental/gen_ai/fbgemm_gpu_experimental_gen_ai.so,sha256=
|
|
46
|
+
fbgemm_gpu/experimental/gen_ai/fbgemm_gpu_experimental_gen_ai.so,sha256=TZc59RhMw90V2m323-l_7gRsX_r0PEoaosoKwZBMmVI,74306608
|
|
47
47
|
fbgemm_gpu/experimental/gen_ai/quantize.py,sha256=KAljWSdN-1_c5DWfT-3MDxWLMULK49Yu36t6TmQI9Tw,12599
|
|
48
48
|
fbgemm_gpu/experimental/gen_ai/attention/cutlass_blackwell_fmha/__init__.py,sha256=ntFgFs0foi6NQx8eqs5I3fCjzKSI0spXfEWiMhlcT00,897
|
|
49
49
|
fbgemm_gpu/experimental/gen_ai/attention/cutlass_blackwell_fmha/cutlass_blackwell_fmha_custom_op.py,sha256=FADVTYzS2u8fA-3iChS5CbtWd0mWF8F3lnXcwr_7vDw,7821
|
|
@@ -99,7 +99,7 @@ fbgemm_gpu/tbe/cache/split_embeddings_cache_ops.py,sha256=vZHj7KIe1DoJDy5eft29Xt
|
|
|
99
99
|
fbgemm_gpu/tbe/ssd/__init__.py,sha256=wzfMT10cp_dqK2lrebC449hOdexBnizcf_98lA1NyHs,483
|
|
100
100
|
fbgemm_gpu/tbe/ssd/common.py,sha256=1J8K7sTQswgCYWaVwF-ZdCJj7mNN6O9GI70AaZWzJGE,1044
|
|
101
101
|
fbgemm_gpu/tbe/ssd/inference.py,sha256=B_uX66ajGA9YKGlFa5TmGWs7b-b1RFigzwxmENZ9Oio,22816
|
|
102
|
-
fbgemm_gpu/tbe/ssd/training.py,sha256=
|
|
102
|
+
fbgemm_gpu/tbe/ssd/training.py,sha256=e_I8FR3oVTcsyf6EZJ0mjgbjU7TbLvHXktp5ovl7CAc,204722
|
|
103
103
|
fbgemm_gpu/tbe/ssd/utils/__init__.py,sha256=5DgmR2HA6NtmYh2ddkUgpDsZ6a7hF0DPedA1gMpdh18,250
|
|
104
104
|
fbgemm_gpu/tbe/ssd/utils/partially_materialized_tensor.py,sha256=SFg2-29b-i49LWm-FlaWUkTz2XzXbicYi_AzVj4jKNE,7601
|
|
105
105
|
fbgemm_gpu/tbe/stats/__init__.py,sha256=on29iDtq7cVNh90JR9aeFNG-K9DDoYq0JryzoplL49I,322
|
|
@@ -121,7 +121,7 @@ fbgemm_gpu/utils/loader.py,sha256=1hCEhNvkflniH46fGcrguLeP1z-6uyOu2QFwqKU5CIM,99
|
|
|
121
121
|
fbgemm_gpu/utils/torch_library.py,sha256=ywsAHjbuwesj50LjEu99WkAH17FlaVgePZ9OmFg6YE4,4193
|
|
122
122
|
list_versions/__init__.py,sha256=UmTeqCk-UJWFtlZQWvZao3xvui2w9E3X_JdOXVjRaNw,315
|
|
123
123
|
list_versions/cli_run.py,sha256=CChZoXQ-tiKaWboXAYlPVJ5w8K5zAKiKcncA087I1sc,4508
|
|
124
|
-
fbgemm_gpu_genai_nightly-2025.
|
|
125
|
-
fbgemm_gpu_genai_nightly-2025.
|
|
126
|
-
fbgemm_gpu_genai_nightly-2025.
|
|
127
|
-
fbgemm_gpu_genai_nightly-2025.
|
|
124
|
+
fbgemm_gpu_genai_nightly-2025.11.2.dist-info/METADATA,sha256=nnnSanW_EGlXKbVjuOEUOK0cCGg9o-0rKCzSik8SakY,2655
|
|
125
|
+
fbgemm_gpu_genai_nightly-2025.11.2.dist-info/WHEEL,sha256=k9CVMKlTmOLLXq_OyiiJFbPd6UKfogV4yIUezgPmplE,108
|
|
126
|
+
fbgemm_gpu_genai_nightly-2025.11.2.dist-info/top_level.txt,sha256=_2s1Aa08r_eDn0JP4FjOhzK09Q8bVlEI7q8pMep51UY,25
|
|
127
|
+
fbgemm_gpu_genai_nightly-2025.11.2.dist-info/RECORD,,
|
{fbgemm_gpu_genai_nightly-2025.10.31.dist-info → fbgemm_gpu_genai_nightly-2025.11.2.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|