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 CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
 
2
2
  {
3
- "version": "2025.10.31",
3
+ "version": "2025.11.2",
4
4
  "target": "genai",
5
5
  "variant": "cuda"
6
6
  }
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 # training_id_eviction_trigger_count for each table
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 # training_id_keep_count for each table
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 # threshold_calculation_bucket_stride if eviction strategy is feature score
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, threshold_calculation_bucket_num if eviction strategy is feature score
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 or 4 "
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, (
@@ -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
- self.kv_zch_params.eviction_policy.eviction_trigger_mode, # eviction is disabled, 0: disabled, 1: iteration, 2: mem_util, 3: manual, 4: id count
694
- self.kv_zch_params.eviction_policy.eviction_strategy, # evict_trigger_strategy: 0: timestamp, 1: counter, 2: counter + timestamp, 3: feature l2 norm, 4: timestamp threshold 5: feature score
695
- self.kv_zch_params.eviction_policy.eviction_step_intervals, # trigger_step_interval if trigger mode is iteration
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
- self.kv_zch_params.eviction_policy.ttls_in_mins, # ttls_in_mins for each table if eviction strategy is timestamp
698
- self.kv_zch_params.eviction_policy.counter_thresholds, # counter_thresholds for each table if eviction strategy is counter
699
- self.kv_zch_params.eviction_policy.counter_decay_rates, # counter_decay_rates for each table if eviction strategy is counter
700
- self.kv_zch_params.eviction_policy.feature_score_counter_decay_rates, # feature_score_counter_decay_rates for each table if eviction strategy is feature score
701
- self.kv_zch_params.eviction_policy.training_id_eviction_trigger_count, # training_id_eviction_trigger_count for each table
702
- self.kv_zch_params.eviction_policy.training_id_keep_count, # training_id_keep_count for each table
703
- self.kv_zch_params.eviction_policy.l2_weight_thresholds, # l2_weight_thresholds for each table if eviction strategy is feature l2 norm
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
- self.kv_zch_params.eviction_policy.threshold_calculation_bucket_stride, # threshold_calculation_bucket_stride if eviction strategy is feature score
706
- self.kv_zch_params.eviction_policy.threshold_calculation_bucket_num, # threshold_calculation_bucket_num if eviction strategy is feature score
707
- self.kv_zch_params.eviction_policy.interval_for_insufficient_eviction_s,
708
- self.kv_zch_params.eviction_policy.interval_for_sufficient_eviction_s,
709
- self.kv_zch_params.eviction_policy.interval_for_feature_statistics_decay_s,
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fbgemm_gpu_genai_nightly
3
- Version: 2025.10.31
3
+ Version: 2025.11.2
4
4
  Home-page: https://github.com/pytorch/fbgemm
5
5
  Author: FBGEMM Team
6
6
  Author-email: packages@pytorch.org
@@ -1,8 +1,8 @@
1
1
  fbgemm_gpu/__init__.py,sha256=A3DuseilQ-sEtBpeZsG0LOqN5Cl3e5DHI_YgCZEMhnE,6283
2
- fbgemm_gpu/asmjit.so,sha256=s2majpI_vsFgc4Vh8szCK4xFYXyT5A0K6HwepGBwrqQ,501728
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=B9y6MDLC6Ou7Bw_pT07Xfw5g5Q4j2yn9Xsp96QVpgEU,5646712
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=Y7q0HbxTehMAYaow-A0MOAjsgyyB4PB31VGP4S_MDKc,17310
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=lnTGpquMN5G34NLn02Vfksm8F1T2UsoJ7fOnDUg1f9w,79
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=L_5MAlnk1aGaf9xPelwSTMMESsEywWMvk9M2gorKQr0,243904
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=vZMIC9brSKaF7pOkHDK7aDYNeFXyWXPZLW1zpacCvX0,74888976
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=mKi5nC1p6p0ZFG0XBWDqzNDkxE-v2PzFnVI0SY7w9v4,199916
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.10.31.dist-info/METADATA,sha256=vJe0nced-mx3C1Ti6JrR_9TXc-GSQHsDteKtvodR8jg,2656
125
- fbgemm_gpu_genai_nightly-2025.10.31.dist-info/WHEEL,sha256=k9CVMKlTmOLLXq_OyiiJFbPd6UKfogV4yIUezgPmplE,108
126
- fbgemm_gpu_genai_nightly-2025.10.31.dist-info/top_level.txt,sha256=_2s1Aa08r_eDn0JP4FjOhzK09Q8bVlEI7q8pMep51UY,25
127
- fbgemm_gpu_genai_nightly-2025.10.31.dist-info/RECORD,,
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,,