Releases: alibaba/TorchEasyRec
Release list
v1.3.0
Major Features and Improvements
Train/Eval/Predict/Export
- AOTInductor
- Cache feature-permute order during export to avoid per-forward H2D sync in #527
- Support
keep_checkpoint_maxwith async checkpoint pruning in #528 - [WIP] Support model delta tracker to track incremental embedding rows in #546
Model
- HSTUMatch:
- DlrmHSTU / UltraHSTU
- Support
stu.scaling_seqlenand drop autotune assert strip in #500 - Thread
contextual_seq_lenfrom preprocessor to STULayer with proto sentinel, truncation total_uih_len, and AOTI-friendly SLA builder in #501 - Bundle a repackaged Triton 3.7.1 wheel with
ptxas12.9.86 to fix the HSTU WGMMA shared-memory OOB on sm_90/H20 in #551
- Support
- SID:
Embedding
- Add
FeatureGroupConfig.embedding_name_suffixto break embedding sharing across groups in #504 - Add planner support to pick DynamicEmbedding HYBRID vs CACHING from topology budgets in #508
- Add
zch_to_dynamicemb_converttool to migrate ZCH checkpoints to DynamicEmbedding in #511
Dataset
- Add Kafka event-time driven checkpointing from message timestamp in #541
- Support dataloader checkpoint resume across forked workers and epochs in #544
- Batch and retry Kafka
offsets_for_timesto survive broker timeouts in #547
Optimizer and Metrics
- Add Adadelta and RMSprop sparse and dense optimizers in #499
- Add NormalizedEntropy metric for binary classification in #507
Upgrade
- Upgrade PyTorch to v2.12.1, TorchRec to v1.7.0, FBGEMM to v1.7.0, support NumPy 2, and add CUDA 13.0 TensorRT image support in #551
- Allow pandas >= 3 in #556
Note
For TorchEasyRec 1.3.x, you should use Docker image version 1.3.
- For the GPU version (CUDA 13.0) with tensorrt:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:1.3-cu130- PyTorch: v2.12.1 CUDA: v13.0 FBGEMM: v1.7.0 TorchRec: v1.7.0 TensorRT: v10.16 Python: v3.11
- Supported GPUs:
sm_75 / 80 / 86 / 90 / 100 / 120, It supports Turing (T4), Ampere/Ada (A10/A30/A100/L4/L20), Hopper (H100/H200), Blackwell (B100/B200), and other GPUs with CC 7.5-12.0. - Driver requirement: NVIDIA driver R580 or later is recommended. For older drivers, set
LD_LIBRARY_PATH=/usr/local/cuda-13.0/compat.
- For the GPU version (CUDA 12.9):
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:1.3-cu129- PyTorch: v2.12.1 CUDA: v12.9 FBGEMM: v1.7.0 TorchRec: v1.7.0 Python: v3.11
- Supported GPUs:
sm_75 / 80 / 86 / 90 / 100 / 120. It supports Turing (T4), Ampere/Ada (A10/A30/A100/L4/L20), Hopper (H100/H200), Blackwell (B100/B200), and other GPUs with CC 7.5-12.0.
- For the GPU version (CUDA 12.6):
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:1.3-cu126- PyTorch: v2.12.1 CUDA: v12.6 FBGEMM: v1.7.0 TorchRec: v1.7.0 Python: v3.11
- Supported GPUs:
sm_60 / 70 / 75 / 80 / 86 / 90. It supports Pascal (P100), Volta (V100), Turing (T4), Ampere/Ada (A10/A30/A100/L4/L20), Hopper (H100), and other GPUs with CC 6.0-9.0. It does not support Blackwell GPUs.
- For the CPU version:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:1.3-cpu- PyTorch: v2.12.1 FBGEMM: v1.7.0 TorchRec: v1.7.0 Python: v3.11
Bug Fixes and Other Changes
- [bugfix] update dynemb doc by @eric-gecheng in #496
- [bugfix] add cc<7.0 dist.barrier() at TrainPipelineSparseDist.progress() entry by @tiankongdeguiji in #497
- [ci] H20 unit test lane: workflow, Hopper-specific fixes, --scope filter by @tiankongdeguiji in #494
- [bugfix] replace deprecated torch._check_is_size with torch._check by @tiankongdeguiji in #503
- [bugfix] aoti: backport pytorch/pytorch#178147 int_array dedup key by @tiankongdeguiji in #512
- [fix] sampler: emit scalar negs for sequence-positive item-side fields by @tiankongdeguiji in #514
- [bugfix] code_review.yml: replace PR's .claude/ instead of nesting (GHSA-f9x3-9rgg-92p7) by @tiankongdeguiji in #515
- [chore] bump dynamicemb to 0.1.0+20260519.e0c1fbb by @tiankongdeguiji in #516
- fix(pepnet): fix domain output overwrite in _select_domain_task_output by @zhpjunfei in #524
- [fix] H20 CI: cutlass WGMMA bwd + unified-AOT int_array races; add test-skip infra by @tiankongdeguiji in #531
- [ci][feat] PPU: add unittest CI lane + framework adaptations + DLC/ODPS tutorial by @tiankongdeguiji in #529
- [chore] standardize OSS host on oss-accelerate by @tiankongdeguiji in #533
- [bugfix] RTP export: keep dense-embedding modules as FX leaves so AutoDis/MLP params restore by @tiankongdeguiji in #534
- [doc] PAI deployment docs: ENABLE_AOT export + serving processor params by @tiankongdeguiji in #536
- [bugfix] ODPS reader: pin pyodps==0.12.5.1 (retry connection resets) + log session/table context on errors by @tiankongdeguiji in #537
- [bugfix] fix flaky TRT test: align engine TF32 with baseline, run strict FP32 by @tiankongdeguiji in #535
- [bugfix] DlrmHSTU predict: keep candidate split key in original order for descending timestamps by @tiankongdeguiji in #540
- [doc] fix grouped sequence_fields default rule; drop epoch/wall-clock note from train.md by @tiankongdeguiji in #542
- [ci] code review: disable Remote Control in headless Claude run by @tiankongdeguiji in #548
- [bugfix] fix flaky TRT predict test by making the mock model confident by @tiankongdeguiji in #549
- [ci] resolve externals symlink for DSW authZ mount allowlist by @tiankongdeguiji in #550
- [ci] cut GPU + H20 unit-test CI toward 1 hour (cache persistence, derandomize, GPU scoping) by @tiankongdeguiji in #553
- [bugfix] fail fast when graphlearn sampler server dies by @tiankongdeguiji in #554
New Contributors
- @zhpjunfei made their first contribution in #524
- @WhiteSwan1 made their first contribution in #538
Full Changelog: v1.2.0...v1.3.0
v1.2.0
Major Features and Improvements
Train/Eval/Predict/Export
- Enhance HSTU export in #443
- Support unified one-stage AOTI export with torch.export compatibility fixes in #475
- Support generic
--additional_export_configJSON for export in #481 - Reduce AOTI compile memory usage by releasing verify-forward activations before compile in #491
Model
- DlrmHSTU:
- ULTRA-HSTU:
- Add label smoothing support to BinaryCrossEntropy loss in #455
Embedding
- Update DynamicEmbedding to use
align_to_table_sizein #460 - Integrate DynamicEmbedding table fusion in #466
Feature
Dataset
- Add
start.timestamp.mssupport to KafkaDataset in #446 - Add heartbeat thread to prevent Kafka MAX_POLL_EXCEEDED in #471
Optimizer
- Add CosineAnnealingLR and CosineAnnealingWarmRestartsLR schedules in #454
Upgrade
- Upgrade PyTorch to v2.11, TorchRec to v1.6.0, and FBGEMM to v1.6.0 in #479
Note
For TorchEasyRec 1.2.x, you should use Docker image version 1.2.
- For the GPU version (CUDA 12.9) with tensorrt:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:1.2-cu129- PyTorch: v2.11 CUDA: v12.9 FBGEMM: v1.6.0 TorchRec: v1.6.0 Python: v3.11
- Supported GPUs:
sm_75 / 80 / 86 / 90 / 100 / 120. It supports Turing (T4), Ampere/Ada (A10/A30/A100/L4/L20), Hopper (H100/H200/H20), Blackwell (B100/B200), and other GPUs with CC 7.5-12.0.
- For the GPU version (CUDA 12.6) with tensorrt:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:1.2-cu126- PyTorch: v2.11 CUDA: v12.6 FBGEMM: v1.6.0 TorchRec: v1.6.0 Python: v3.11
- Supported GPUs:
sm_70 / 75 / 80 / 86 / 90. It supports Volta (V100), Turing (T4), Ampere/Ada (A10/A30/A100/L4/L20), Hopper (H100/H20), and other GPUs with CC 7.0-9.0. It does not support Blackwell GPUs.
- For the CPU version:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:1.2-cpu- PyTorch: v2.11 FBGEMM: v1.6.0 TorchRec: v1.6.0 Python: v3.11
Bug Fixes and Other Changes
- [bugfix] fix readthedocs build failure by @tiankongdeguiji in #439
- [bugfix] fix list-to-integer comparison in embedding sequence encoder validation by @tiankongdeguiji in #429
- [bugfix] remove redundant .data access in pe_mtl_loss by @tiankongdeguiji in #430
- [bugfix] clarify sample_weight fallback value in match and rank models by @tiankongdeguiji in #435
- [feat] bump up pyfg to 1.0.2 by @tiankongdeguiji in #427
- [bugfix] fix data_config mutation during model export by @tiankongdeguiji in #441
- [feat] replace claude-code-action with direct claude -p for code review by @tiankongdeguiji in #444
- [bugfix] rename loop variable to avoid shadowing builtin input() by @tiankongdeguiji in #438
- [bugfix] replace deprecated torch.autograd.Variable in optimizer test by @tiankongdeguiji in #437
- [bugfix] fix unclosed file handle in benchmark by @tiankongdeguiji in #431
- [bugfix] fix potential socket resource leak in get_free_port by @tiankongdeguiji in #432
- [bugfix] strengthen doc reviewer to cross-reference existing user-facing docs by @tiankongdeguiji in #449
- [bugfix] fix contextual_seq_len not passed from preprocessor to STULayer by @tiankongdeguiji in #450
- filter non grad when adding to summaries by @eric-gecheng in #448
- [bugfix] fix flaky TRT test by adding allow_tf32 to predict() by @tiankongdeguiji in #456
- [bugfix] suppress false-positive range validation warnings for dynamicemb features by @tiankongdeguiji in #458
- [bugfix] fix sequence feature default_value inconsistency by @tiankongdeguiji in #461
- [docs] add FAQ for Triton v3.6.0 WGMMA crash on Hopper GPUs by @tiankongdeguiji in #452
- [bugfix] ensure predict threads are joined on exception by @tiankongdeguiji in #433
- [bugfix] fix ZCH finetune from checkpoint with different world size by @tiankongdeguiji in #467
- [bugfix] accept ChunkedArray in Parquet/Odps/Csv writers and ensure TDM writer close by @tiankongdeguiji in #469
- [bugfix] fix NameError on
sampledwhen TDMSampler is combined with sample_mask by @tiankongdeguiji in #468 - [doc] fix dynamicemb pip install command by @tiankongdeguiji in #473
- [bugfix] fix fbgemm int32 overflow during embedding quantization by @tiankongdeguiji in #472
- [chore] bump pyfg to 1.0.4 by @tiankongdeguiji in #482
- [bugfix] fix two-stage AOTI predict hang under multi-thread workers by @tiankongdeguiji in #484
- [bugfix] share Dim across grouped-sequence tensors in legacy AOT export by @tiankongdeguiji in #485
- [bugfix] add CombineFeature to SINGLE_INPUT_FEATURE_CLASSES by @tiankongdeguiji in #487
- [bump] pyfg 1.0.4 -> 1.0.5; doc updates and TokenizeFeature fix by @tiankongdeguiji in #489
Full Changelog: v1.1.0...v1.2.0
v1.1.0
Major Features and Improvements
Train/Eval/Predict/Export
- Support grad clipping for dense params in #424
- Refactor AOTInductor export with split model in #394
- Support env configs for reproducibility in #361
- Support ignore restore optimizer option for train_eval in #389
Model
- Add PE-LTR model in #381
- Add WuKong model in #372
- Add PEPNet model in #402
- Improve DlrmHSTU model in #352 #395 #393 #359
- support num_class > 1
- support descending order sequence
- support jagged label
- support time_bucket_increments in PositionEncoder
- DLRM and WuKong model support only one sparse group in #385
Embedding
- Add AdmissionStrategy support for DynamicEmbedding in #362
- Add storage estimate for dynamic embedding kv counter in #391
Feature
- Support sequence cross features in #375
- Support convert compatible feature configs of EasyRec in #392
Dataset
- Add Kafka dataset with checkpoint support in #401 #408 #413
- Add checkpointable Parquet dataset in #410
- Add checkpointable ODPS dataset in #409
- Support input fields str in #412
Optimizer
- Support initial_accumulator_value for FusedSparseAdagradOptimizer & add additional optimizer configuration options in #382
Upgrade
- Upgrade torchrec to v1.5.0 in #405
Note
For TorchEasyRec 1.1.x, you should use Docker image version 1.1.
- For the GPU version (CUDA 12.9) with tensorrt:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:1.1-cu129- PyTorch: v2.10 CUDA: v12.9 FBGEMM: v1.5.0 TorchRec: v1.5.0 Python: v3.11
- For the GPU version (CUDA 12.6) w/o tensorrt:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:1.1-cu126- PyTorch: v2.10 CUDA: v12.6 FBGEMM: v1.5.0 TorchRec: v1.5.0 Python: v3.11
- For the CPU version:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:1.1-cpu- PyTorch: v2.10 FBGEMM: v1.5.0 TorchRec: v1.5.0 Python: v3.11
Bug Fixes and Other Changes
- [bugfix] fix session_status check error of OdpsWriter by @tiankongdeguiji in #351
- [feat] add MTGR style DlrmHSTU config doc by @tiankongdeguiji in #353
- [bugfix] sampler add raise parse kv error by @chengaofei in #355
- [bugfix] make fsspec disable by default by @tiankongdeguiji in #356
- [feat] add faq doc - The "kv" feature key contains ":" character by @yanzhen1233 in #357
- [feat] bump up pyfg to 1.0.0 by @tiankongdeguiji in #363
- [feat] update local tutorial tdm doc with FG_DAG mode by @asdfasdfsdfas in #365
- [bugfix] fix input names of custom sequence feature when use pyfg 1.0.0 by @tiankongdeguiji in #368
- [feat] update dlc tutorial doc with oss mount by @asdfasdfsdfas in #373
- [bugfix] fix dynamicemb is_sparse for custom/lookup/match feature by @tiankongdeguiji in #376
- [bugfix] fix torch.full error of apply_split_helper for uvm embedding kernel by @tiankongdeguiji in #383
- [feat] use cpu npoc_per_node_is_1 by @chengaofei in #384
- [bugfix] use KVCounter initialization fix of dynamicemb by @tiankongdeguiji in #387
- [feat] add warning for default_value in vocab_list or vocab_dict by @tiankongdeguiji in #388
- [bugfix] make sequence related config optional by @tiankongdeguiji in #390
- [bugfix] fix occasional failure in test_add_timestamp_positional_embeddings_triton by @tiankongdeguiji in #396
- [feat] update custom feature doc by @tiankongdeguiji in #400
- [feat] add odps test quota & fix ecs ram role in test by @tiankongdeguiji in #403
- [bugfix] fix ecs ram role timeout in benchmark by @tiankongdeguiji in #411
- [feat] add ai code review by @tiankongdeguiji in #414
- [feat] refine readme and update doc with new features by @tiankongdeguiji in #416
- [bugfix] fix introduction doc & refine kafka dataset doc by @tiankongdeguiji in #417
- [bugfix] fix search tool hang in readthedoc and doc build warnings by @tiankongdeguiji in #418
- [bugfix] fix kafka dataset test with embed schema by @tiankongdeguiji in #419
- [bugfix] correct typo TRAGET_REPEAT_INTERLEAVE_KEY -> TARGET_REPEAT_INTERLEAVE_KEY by @hobostay in #420
- [feat] add ArrowRecordBatch flink udf usage doc by @tiankongdeguiji in #421
- [feat] unify proto configs w/o using colon by @tiankongdeguiji in #423
- [bugfix] fix ecs ram role error log by @tiankongdeguiji in #426
- [bugfix] fix INPUT_TILE_3_ONLINE=1 and add docs by @tiankongdeguiji in #428
New Contributors
- @asdfasdfsdfas made their first contribution in #365
- @hobostay made their first contribution in #420
Full Changelog: v1.0.0...v1.1.0
v1.0.0
Major Features and Improvements
Train/Eval/Predict/Export
- Support training with dynamic batch size by sample cost in #343
- Support logging train metrics in #310
- Support predicting checkpoint in #320 #322 #324
- [EXPERIMENTAL] Support exporting with AOTInductor in #239 #274
- Support exporting with TensorRT in #318
- Support exporting the best model in #294
- Support exporting to RTP in #298 #307 #329 #332 #339
- Support AdamW optimizer and label smoothing in #297
- Support setting an optimizer for a subset of parameters in #297
- Support PanguDFS in #311 #348 #349 #350
Embedding
- Support dynamic embedding in #279 #281 #283 #286 #289 #316
- Support initialize dynamic embeddings from tables in #282 #288
- MLPEmbedding support feature value_dim > 1 in #331
Model
- Optimize and refactor DlrmHSTU preprocessor to support MTGR style preprocessing in #290 #296 #300 #314
- Decouple contextual feature dimension from sequence id embedding dimension in DlrmHSTU in #302
- DlrmHSTU support uih and contextual share embedding in #337
- DlrmHSTU support global average loss option in #334
- Add TMA support for hstu attn in #336
- Optimize gpu memory usage of GAUC metric in #312
Feature
Upgrade
- Upgrade pytorch to v2.9 and torchrec to v1.4.0 in #345
Note
For TorchEasyRec 1.0.x, you should use Docker image version 1.0.
- For the GPU version (CUDA 12.6):
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:1.0-cu126- PyTorch: v2.9 CUDA: v12.6 FBGEMM: v1.4.0 TorchRec: v1.4.0 Python: v3.11
- We drop support for the 470 GPU driver version. If you still want to use the 470 GPU driver version, you can set LD_LIBRARY_PATH=/usr/local/cuda-12.6/compat
- For the CPU version:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:1.0-cpu- PyTorch: v2.9 FBGEMM: v1.4.0 TorchRec: v1.4.0 Python: v3.11
Bug Fixes and Other Changes
- [feat] make bash as default shell by @tiankongdeguiji in #273
- [feat] add benchmark odps quota and skip trt test when trt not avaiable by @tiankongdeguiji in #278
- [feat] add rdma addons into dockerfile by @tiankongdeguiji in #280
- [feat] clean up fg_encoded in docs by @tiankongdeguiji in #287
- support create tzrec config based on pyfg json by @chengaofei in #284
- [bugfix] fix finetune checkpoint path runtime error print when path not exist by @tiankongdeguiji in #291
- [feat] refactor export model by @tiankongdeguiji in #293
- fix sequence raw feature pyfg sub_type not effective by @chengaofei in #292
- [feat] optimize hstu triton op warning by @tiankongdeguiji in #301
- [bugfix] improve create init ckpt for dynamic embedding when certain id_feature in the config lack embedding_dim by @tiankongdeguiji in #303
- [feat] bump up tzrec version to 0.9.7 by @tiankongdeguiji in #305
- [bugfix] fix dlrm hstu gauc and l2 loss support by @tiankongdeguiji in #306
- [bugfix] fix content encoder with additional_content_features and target_enrich_features by @tiankongdeguiji in #304
- [bugfix] fix create dynamic embedding ckpt when raw feature in config by @tiankongdeguiji in #308
- Add evaluation metrics documentation by @yanzhen1233 in #309
- [bugfix] fix fsspec ci test by @tiankongdeguiji in #317
- add train_metric docs by @chengaofei in #315
- Update custom development model documentation by @yanzhen1233 in #313
- [feat] Adapt integration test config to local cuda device count by @eric-gecheng in #319
- [bugfix] fix dlrm hstu preprocessor doc by @tiankongdeguiji in #321
- [feat] add dlrm hstu demo data by @tiankongdeguiji in #326
- [bugfix] avoid jit convert error when using large number by @eric-gecheng in #328
- [feat] improve prune_unused_param_and_buffer when export model by @tiankongdeguiji in #327
- [feat] refactor ops directory to fix import triton error by @tiankongdeguiji in #335
- [feat]add assert to avoid using ckpt predict for two tower models by @eric-gecheng in #333
- [feat] upgrade 2025 dingtalk qrcode by @tiankongdeguiji in #340
- [bugfix] always lazy init predict checkpoint writer by @tiankongdeguiji in #341
- Feature/dynamic routing support zero init by @eric-gecheng in #342
- [bugfix] fix parse batch empty MapArray error in NegativeSampler by @tiankongdeguiji in #344
- [feat] add doc for dynamic batch by @tiankongdeguiji in #346
- [bugfix] fix array type in feature doc by @tiankongdeguiji in #347
Full Changelog: v0.9.0...v1.0.0
v0.9.0
Major Features and Improvements
Train/Eval/Export
- Support get null value for int/float dtype features when use negative sampler #202
- Support freeze embedding parameters #206
- Add mixed_precision bf16/fp16 and gradient accumulation support #220
- Add fp16 embedding dtype support #221
- Add TrainPipelineBase to support model w/o sparse parameters #222
- Add EmbeddingCollection quant support #265
- Optimize sequence emb inference speed #266
Model
- Add DlrmHSTU model #224 #227 #231 #232 #237 #250 #257
- Add DCN_V1 model #235
- Add DCN_V2 and xDeepFM model #242
- Add WideAndDeep model and wide init_fn #212
- Add sequence self_attention encoder #251
- Add binary focal loss #208
- Add xauc and grouped xauc #252
- Add feature selection for DSSM_V2 #219
- Add use_ln option for MLP module #223
Feature
- Add const input for feature #210
- Expr feature support value_dim #216
- Support feature only used as fg dag intermediate result (stub_type=true) #218
Dataset
- Sampler support odps schema #267
Upgrade
- Upgrade pytorch to v2.8 and torchrec to v1.3.0 #241
Python
Note
For TorchEasyRec 0.9.x, you should use Docker image version 0.9.
- For the GPU version (CUDA 12.6):
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:0.9-cu126- PyTorch: v2.8 CUDA: v12.6 FBGEMM: v1.3.0 TorchRec: v1.3.0 Python: v3.11
- We drop support for the 470 GPU driver version. If you still want to use the 470 GPU driver version, you can set LD_LIBRARY_PATH=/usr/local/cuda-12.6/compat
- For the CPU version:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:0.9-cpu- PyTorch: v2.8 FBGEMM: v1.3.0 TorchRec: v1.3.0 Python: v3.11
Bug Fixes and Other Changes
- [feat] prune mem of one shard > mem of one device for DynamicProgrammingProposer by @tiankongdeguiji in #194
- [feat] use oss accelerate endpoint by @tiankongdeguiji in #203
- [bugfix] fix force_base_data_group when export model by @tiankongdeguiji in #200
- [bugfix] fix int32 and double column type of negative sampler table by @tiankongdeguiji in #204
- [bugfix] remove redundant print in sampler by @tiankongdeguiji in #207
- [bugfix] fix hitrate hang on OdpsWriter & refactor broadcast_object and gather_object pg by @tiankongdeguiji in #205
- [feat] upgrade pyfg to 0.6.9 and refine expr/overlap feature doc by @tiankongdeguiji in #199
- create fg.json if exist will error by @chengaofei in #211
- [bugfix] add missing wide_and_deep doc index by @tiankongdeguiji in #214
- Feature/fix dense embedding export in dssmv2 by @eric-gecheng in #213
- [bugfix] support remove bucketizer for sequence feature and add tests by @tiankongdeguiji in #215
- [feat] add error and warning for restore_model when model path not exists by @tiankongdeguiji in #217
- [bugfix] prevent unittest nightly timeout by @tiankongdeguiji in #225
- [bugfix] fix tzrec optimizer not update params by @tiankongdeguiji in #226
- [bugfix] fix pyfg oss accelerate url by @tiankongdeguiji in #228
- rocket launching train failed by @chengaofei in #229
- [bugfix] add ops init py & add build wheel ci test by @tiankongdeguiji in #234
- increase dlrm and rocket_launching benchmark by @chengaofei in #233
- [bugfix] fix value cannot be converted to type int32 without overflow in trt test by @tiankongdeguiji in #243
- [feat] increase benchmark timeout by @tiankongdeguiji in #244
- [bugfix] fix string id support for tdm sampler by @tiankongdeguiji in #245
- [bugfix] fix tdm user defined attr delim and optimize attrs of TDMSampler by @tiankongdeguiji in #248
- [bugfix] fix HardNegativeSampler with string id by @tiankongdeguiji in #249
- [bugfix] fix pyre check by @tiankongdeguiji in #246
- [bugfix] fix save checkpoint at epoch 0 when save_checkpoint_epochs > 1 by @tiankongdeguiji in #253
- [bugfix] refine distinguish sparse module in create_train_pipeline to fix continue training failure by @tiankongdeguiji in #254
- [bugfix] fix tdm retrieval nccl hang when use odps writer by @tiankongdeguiji in #255
- [feat] refactor ec_list to ec_dict for TDMEmbedding export by @tiankongdeguiji in #258
- [bugfix] fix hard negative sampler with zero hard negative indices by @tiankongdeguiji in #259
- [bugfix] fix sampler with string id memory leak by @tiankongdeguiji in #260
- [feat] bump up pyfg to 0.7.3 by @tiankongdeguiji in #263
- support odps three schema by @chengaofei in #264
- [bugfix]nccl timeout by @eric-gecheng in #262
- [bugfix] fix quant ec doc by @tiankongdeguiji in #269
- [bugfix] fix odps dataset test by @tiankongdeguiji in #270
Full Changelog: v0.8.0...v0.9.0
v0.8.0
Major Features and Improvements
Train/Eval/Export
- Support eval and save checkpoint by epoch #116
- Support export fp32/fp16/int8/int4/int2 ebc embedding quant model #137
- Enhance export efficiency by restoring state dict directly instead of copying and gathering #177
- Add faiss gpu support for evaluation #170
- Enhance optimizer state loading for changed plans with plan checkpoint #185
- Support tensorboard log for model parameters #181
- Add restore ckpt check for continue train #180
- Add allow_tf32 flag and global embedding param constraint #188
Model
- Add MIND model #119 #123 #157 #172
- Add RocketLaunching model #129
- Add DLRM model #148
- Add MaskNet #179 #187
- Add dice activation and support bn for sequence mlp #107
- Add regression and multi-classification metric #149
- Optimize distributed GAUC memory use #127
- Add SequenceEmbeddingGroup and support jagged forward #152
- Support max sequence length setting for sequence encoder #184
- Support hard negative sampler #195
- Optimize HSTU training and sampling process and add triton ops (WIP) #93 #154
Feature
- Support custom feature and custom sequence feature #144
- Weighted id feature support map dtype #190
- Dump parsed inputs support weighted id and multi-value sequence feature #191
Dataset
- Support dataset shuffle #114
- Optimize performance of ParquetDataset and Rebalance parquet files dynamically #125 #126
- Add odps read session refresh to extend odps session expired time #132
- Add more alibaba cloud credentials for odps dataset #115
- Add odps_data_compression (ZSTD) config for OdpsDataset #146
- Always lazy init odps writer #178
Upgrade
- Upgrade pytorch to v2.7 and torchrec to v1.2.0 #197
Note
For TorchEasyRec 0.8.x, you should use Docker image version 0.8.
- For the GPU version (CUDA 12.6):
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:0.8-cu126- PyTorch: v2.7 CUDA: v12.6 FBGEMM: v1.2.0 TorchRec: v1.2.0 Python: v3.11
- We drop support for the 470 GPU driver version. If you still want to use the 470 GPU driver version, you can set LD_LIBRARY_PATH=/usr/local/cuda-12.6/compat
- For the CPU version:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:0.8-cpu- PyTorch: v2.7 FBGEMM: v1.2.0 TorchRec: v1.2.0 Python: v3.11
Bug Fixes and Other Changes
- [bugfix] fix cpu docker image build without trt by @tiankongdeguiji in #100
- add_dssm_recall_benchmark by @chengaofei in #101
- [feat] support ignore unused features in negative sampler by @tiankongdeguiji in #102
- [bugfix] fix multi-val sequence embedding nan when pooling_type = mean by @tiankongdeguiji in #104
- [feat] upgrade ruff to 2025 code style by @tiankongdeguiji in #105
- [bugfix] fix correctness of kjt.lengths when ShardedEmbeddingBag’s pooling_type is mean and shard_type is row_wise by @tiankongdeguiji in #106
- [feat] upload feature assets to odps and fix remove_bucketizer in create_fg_json by @tiankongdeguiji in #103
- [bugfix] fix multi-value sequence raw feature by @tiankongdeguiji in #109
- [bugfix] fix dice init params by @tiankongdeguiji in #108
- [feat] docker support rtx gpu by @tiankongdeguiji in #111
- [bugfix] fix create_fg_json invalid option force_update_resource by @chengaofei in #110
- [feat] clean fg_encoded config by @tiankongdeguiji in #112
- [bugfix] prevent redundant file uploading to odps when use create_fg_json by @tiankongdeguiji in #113
- [bugfix] fix modify feature group config in training by @chengaofei in #118
- [feat] refactor weighted id feature with pyfg 0.4.5 encoded format by @tiankongdeguiji in #117
- [bugfix] fix feature.keys() none error when all features in embedding group are zch by @tiankongdeguiji in #120
- [feat] refine pyarrow type to odps table type convert by @tiankongdeguiji in #121
- [bugfix] bump up pyfg version 0.4.8 to fix sequence_length in config < true sequence length in data by @tiankongdeguiji in #130
- Support non null string list by @yanzhen1233 in #128
- [bugfix] fix mc-abc divisor none error when use mean pooling by @tiankongdeguiji in #133
- [bugfix] fix feature permute when use mc-ebc and mean pooling by @tiankongdeguiji in #134
- support feature_groups select features by @chengaofei in #135
- [bugfix] fix export model with zch by @tiankongdeguiji in #136
- bugfix_export_input_tile_is_2 by @chengaofei in #138
- fix the feature bug: has_dag by @yjjinjie in #140
- [bugfix] add missing dataset utils test by @tiankongdeguiji in #139
- [bugfix] add ArrowInvalid retry for refresh odps session by @tiankongdeguiji in #141
- [feat] remove redundant side_inputs warn when fg_mode=FG_NONE by @tiankongdeguiji in #142
- [bugfix]fix autodis parameter init in dist mode by @eric-gecheng in #143
- [bugfix] fix mlp embedding param init bug by @eric-gecheng in #145
- [bugfix] revert emb_impl call by @tiankongdeguiji in #147
- [bugfix] fix ple typo by @tiankongdeguiji in #150
- [feat] add kernel config and BaseModule by @tiankongdeguiji in #151
- [feat] refactor label_name to label tensor in loss and metric impl by @tiankongdeguiji in #153
- [feat] update maxcompute vpc endpoint and quota doc by @tiankongdeguiji in #155
- [feat] add auto rebalance doc for ParquetDataset by @tiankongdeguiji in #156
- [feat] add odps dataset ci test by @tiankongdeguiji in #159
- [feat] add nightly build wheel and doc by @tiankongdeguiji in #160
- [feat] add benchmark and nightly test by @tiankongdeguiji in #161
- [bugfix] fix build nightly wheel by @tiankongdeguiji in #162
- [bugfix] fix regression metric by @tiankongdeguiji in #163
- [bugfix] fix fork repo cpu ci by @tiankongdeguiji in #166
- fix loop logic in hitrate.py by @eric-gecheng in #165
- [bugfix] fix combo feature value and length mismatch when input data with only one separator by @tiankongdeguiji in #168
- [bugfix] fix mtl weight always equal to 1 after div by mean by @tiankongdeguiji in #171
- [feat] optimze dssm and mtl with weight benchmark by @tiankongdeguiji in #173
- [bugfix] fix clear_variational_dropout and visualize flag of feature selection by @tiankongdeguiji in #174
- [feat] add fg value_type config and make num_buckets default value_dtype as string by @tiankongdeguiji in https://github.com/alibaba/...
v0.7.0
Major Features and Improvements
Train/Eval/Export
- Support train/eval/export on cpu #27
- Support TRT export (Beta) #30 #32 #41 #43 #58 #59 #89
- Support AOT export (WIP) #79
Model
- Optimize TDM gen tree speed #33
- TDM Support string id #72
- Rank and Match models support sample weight #50 #57 #63 #65
- Add zero collision hash embedding #60
- Add intervention methods for multi-target learning #49
- Add Autodis and MLP embedding for raw features #73 #75
- Add task space for multi-target learning loss #82
- Add dual augmented two-tower match model #83
- Add HSTU (WIP) #55
Feature
- pyfg support CPU without avx512 #20
- ExprFeature support l2_norm|dot|euclid_dist #35
- Add fg bucketize only mode & refactor fg_encoded to fg_mode #62
- Make default bucketize value configurable #94
- Support multi-value sequence #96
- Support vocab file #97
Dataset
- Enhance stability for credential of OdpsDataset #45
- Add complex type and credential support for sampler when use odps dataset #52
- Support CsvDataset with null columns #56
- Negative sampler support string id #70
Config
Upgrade
Note
For TorchEasyRec 0.7.x, you should use Docker image version 0.7.
- For the GPU version (CUDA 12.4):
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:0.7-cu124- PyTorch: v2.6 CUDA: v12.4 FBGEMM: v1.1.0 TorchRec: v1.1.0 Python: v3.11
- For the CPU version:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:0.7-cpu- PyTorch: v2.6 FBGEMM: v1.1.0 TorchRec: v1.1.0 Python: v3.11
Bug Fixes and Other Changes
- [bugfix] remove redundant sequence key in feature input names when fg_mode is DAG by @tiankongdeguiji in #21
- fix quota_name for add feature info by @chengaofei in #22
- update config delete drop feature config by @chengaofei in #23
- [feat] make docker compat with gpu driver 470 by @tiankongdeguiji in #24
- [bugfix] fix dlc tutorial doc by @tiankongdeguiji in #25
- [bugfix] fix dbmtl model doc by @tiankongdeguiji in #28
- [feat] add pai dlc and dsw dependency in docker by @tiankongdeguiji in #29
- [feat] update easyrec dinggroup qrcode by @tiankongdeguiji in #31
- [feat] update pyfg doc to 0.3.5 by @tiankongdeguiji in #34
- [bugfix] fix fg arrow handler with sample mask by @tiankongdeguiji in #38
- [feat] add unique test work dir by @tiankongdeguiji in #40
- [bugfix] add id field of negative sampler to selected columns by @tiankongdeguiji in #42
- [bugfix] prevent predict hang when subthread or subproc exception by @tiankongdeguiji in #44
- [bugfix] input_tile=3: make dataparser to get user feats before creat… by @yjjinjie in #46
- [bugfix] fix sequence feature doc by @tiankongdeguiji in #48
- [feat] optimize is_user_feat of Feature when use dag by @tiankongdeguiji in #53
- [bugfix] refine sample weight compatibility & refine label dtype check & relax predict pipeline check & fix num_rows < num_workers when use OdpsDataset by @tiankongdeguiji in #54
- [feat] add doc for training with maxcompute tables on DLC by @yanzhen1233 in #47
- create fg will use resource name by @chengaofei in #64
- [bugfix] fix is_sparse of LookupFeature and MatchFeature when use vocab_dict by @tiankongdeguiji in #66
- [bugfix] fix odps quota in hitrate.py & refine error info of CsvReader and ParquetReader by @tiankongdeguiji in #67
- [bugfix] fix mtl model label in ut by @tiankongdeguiji in #68
- [bugfix] fix calculate_shard_storages to handle optimizer correctly by @tiankongdeguiji in #69
- [feat] add LOG_LEVEL environ variable by @tiankongdeguiji in #71
- [bugfix] fix predict when num_workers = 0 by @tiankongdeguiji in #74
- [bugfix] fix duplicate server launch error in odps sampler test by @tiankongdeguiji in #76
- [feat] refactor batch_size to tile_size in Batch dataclass by @tiankongdeguiji in #77
- [feat]add total_loss to the plogger and summary_writer by @eric-gecheng in #78
- [bugfix] fix weighted feature when INPUT_TILE=2 by @tiankongdeguiji in #80
- [bugfix] fix negative sample table with multiple partitions by @tiankongdeguiji in #81
- [bugfix] readme typo by @eric-gecheng in #85
- [doc] fix task space doc error by @chengaofei in #86
- [bugfix] add div_no_nan and prevent divide by zero loss weight by @tiankongdeguiji in #88
- [feat] remove sample weight and labels when export by @tiankongdeguiji in #91
- [feat] configure the shell to be bash by default in docker environments by @tiankongdeguiji in #92
- [doc] creat fg json doc add upload fg json to mc method by @chengaofei in #95
New Contributors
- @yjjinjie made their first contribution in #30
- @eric-gecheng made their first contribution in #50
- @yanzhen1233 made their first contribution in #47
- @Dave-AdamsWANG made their first contribution in #49
- @chengmengli06 made their first contribution in #79
- @iWelkin-coder made their first contribution in #55
Full Changelog: v0.6.0...v0.7.0
v0.6.0
We are excited to announce the release of TorchEasyRec 0.6.0, the first public release for TorchEasyRec.
Major Features and Improvements
- High-performance training, evaluation, and prediction with GPUs.
- Supported a variety of input data types, including MaxCompute Table, OSS files, CSV files, Parquet files doc here.
- Supported a variety of feature types, including IdFeature, RawFeature, ComboFeature, LookupFeature, MatchFeature, ExprFeature, OverlapFeature, TokenizeFeature, SequenceIdFeature, SequenceRawFeature, and SequenceFeature. The feature generation operations is also efficient and robust doc here.
- Supported a variety of models, including DSSM, TDM, DeepFM, MultiTower, DIN, MMoE, DBMTL, PLE. It is also easy to implement customized models.
- Supported a variety of loss, including binary_cross_entropy, softmax_cross_entropy, l2_loss, jrc_loss doc here.
- Supported VariationalDropout feature selection.
- Easy to deploy a TorchEasyRec model as a high-performance inference service using the TorchEasyRec Processor.
Bug Fixes and Other Changes
- [bugfix] fix train_eval may hang when use OdpsDataset and set is_orderby_partition=true by @tiankongdeguiji in
- [bugfix] fix offline predict input tile model with sequence by @tiankongdeguiji in #14
Note
For TorchEasyRec 0.6.x, you should use Docker image version 0.6.
- For the GPU version (CUDA 12.1):
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:0.6-cu121
- For the CPU version:
mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easyrec/tzrec-devel:0.6-cpu
New Contributors
- @tiankongdeguiji made their first contribution in #1
- @jjbbong made their first contribution in #3
- @chengaofei made their first contribution in #4
Full Changelog: https://github.com/alibaba/TorchEasyRec/commits/v0.6.0