Skip to content

Commit a177d1e

Browse files
EddyLXJfacebook-github-bot
authored andcommitted
Feature score eviction frontend support (#3273)
Summary: X-link: pytorch/FBGEMM#4682 X-link: facebookresearch/FBGEMM#1708 Adding support for feature score eviction in frontend. Reviewed By: emlin Differential Revision: D79591336
1 parent 9e0b90f commit a177d1e

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

torchrec/distributed/batched_embedding_kernel.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
CountTimestampMixedEvictionPolicy,
8585
data_type_to_sparse_type,
8686
FeatureL2NormBasedEvictionPolicy,
87+
FeatureScoreBasedEvictionPolicy,
8788
NoEvictionPolicy,
8889
pooling_type_to_pooling_mode,
8990
TimestampBasedEvictionPolicy,
@@ -235,6 +236,9 @@ def _populate_zero_collision_tbe_params(
235236
counter_thresholds = [0] * len(config.embedding_tables)
236237
ttls_in_mins = [0] * len(config.embedding_tables)
237238
counter_decay_rates = [0.0] * len(config.embedding_tables)
239+
feature_score_counter_decay_rates = [0.0] * len(config.embedding_tables)
240+
max_training_id_num_per_table = [0] * len(config.embedding_tables)
241+
target_eviction_percent_per_table = [0.0] * len(config.embedding_tables)
238242
l2_weight_thresholds = [0.0] * len(config.embedding_tables)
239243
eviction_strategy = -1
240244
table_names = [table.name for table in config.embedding_tables]
@@ -251,6 +255,20 @@ def _populate_zero_collision_tbe_params(
251255
raise ValueError(
252256
f"Do not support multiple eviction strategy in one tbe {eviction_strategy} and 1 for tables {table_names}"
253257
)
258+
elif isinstance(policy_t, FeatureScoreBasedEvictionPolicy):
259+
feature_score_counter_decay_rates[i] = policy_t.decay_rate
260+
max_training_id_num_per_table[i] = (
261+
policy_t.max_training_id_num_per_rank
262+
)
263+
target_eviction_percent_per_table[i] = (
264+
policy_t.target_eviction_percent
265+
)
266+
if eviction_strategy == -1 or eviction_strategy == 5:
267+
eviction_strategy = 5
268+
else:
269+
raise ValueError(
270+
f"Do not support multiple eviction strategy in one tbe {eviction_strategy} and 5 for tables {table_names}"
271+
)
254272
elif isinstance(policy_t, TimestampBasedEvictionPolicy):
255273
ttls_in_mins[i] = policy_t.eviction_ttl_mins
256274
if eviction_strategy == -1 or eviction_strategy == 0:
@@ -288,6 +306,9 @@ def _populate_zero_collision_tbe_params(
288306
counter_thresholds=counter_thresholds,
289307
ttls_in_mins=ttls_in_mins,
290308
counter_decay_rates=counter_decay_rates,
309+
feature_score_counter_decay_rates=feature_score_counter_decay_rates,
310+
max_training_id_num_per_table=max_training_id_num_per_table,
311+
target_eviction_percent_per_table=target_eviction_percent_per_table,
291312
l2_weight_thresholds=l2_weight_thresholds,
292313
meta_header_lens=meta_header_lens,
293314
)

torchrec/modules/embedding_configs.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,17 @@ def __post_init__(self) -> None:
203203
self.inference_eviction_threshold = self.eviction_threshold
204204

205205

206+
@dataclass
207+
class FeatureScoreBasedEvictionPolicy(VirtualTableEvictionPolicy):
208+
"""
209+
Feature score based eviction policy for virtual table.
210+
"""
211+
212+
decay_rate: float = 0.99 # default decay by default #TODO: Change to real value
213+
max_training_id_num_per_rank: int = 0 # max number of training ids per rank
214+
target_eviction_percent: float = 0.0 # target eviction percent
215+
216+
206217
@dataclass
207218
class TimestampBasedEvictionPolicy(VirtualTableEvictionPolicy):
208219
"""

0 commit comments

Comments
 (0)