Skip to content

v0.17.0

Compare
Choose a tag to compare
@OnlyDeniko OnlyDeniko released this 07 Jun 07:34
· 84 commits to main since this release

RePlay 0.17.0 Release notes

  • Highlights
  • Backwards Incompatible Changes
  • Deprecations
  • New Features
  • Improvements
  • Bug fixes

Highlights

We are excited to announce the release of RePlay 0.17.0!
The new version fixes serious bugs related to the performance of LabelEncoder and saving checkpoints in transformers. In addition, methods have been added to save splitters and SequentialTokenizer without using pickle.

Backwards Incompatible Changes

Change SequentialDataset behavior

When training transformers on big data, a slowdown was detected that increased the epoch time from 5 minutes to 1 hour. The slowdown was due to the fact that by default, the model trainer saves checkpoints every 50 steps of the epoch. While saving the checkpoint, not only the model was saved, but also the entire training dataset was implicitly saved. The behavior was corrected by changing the SequentialDataset and the callbacks used in it. Therefore, using SequentialDataset from older versions will not be possible. Otherwise, no interface changes were required.

Deprecations

Added a deprecation warning related to saving splitters and SequentialTokenizer using a pickle. In future versions, the functionality will be removed.

New Features

A new strategy in the LabelEncoder

The drop strategy has been added. It allows you to throw tokens from the dataset that were not present at the training stage. If all rows are deleted, the corresponding warning will appear.

New Linters

We keep up with the latest trends in code quality control, so the list of linters for testing code quality has been updated. The use of Pylint and PyCodestyle has been removed. Added the linters Ruff, Black and toml-sort.

Improvements

PyArrow dependency

The dependency on PyArrow has been adjusted. The RePlay now can work with any version that is greater than 12.0.1.

Bug fixes

Performance fixes at the partial_fit stage in LabelEncoder

The slowdown occurred when using DataFrame from Pandas. The partial_fit stage had a quadratic running time. The bug has been fixed, now the time linearly depends on the size of the dataset.

Timestamp tokenization when using SasRec

Fixed an error that occurs when training a SasRec transformer with a ti_modification=True parameter.

Loading a checkpoint with a modified embedding in the transformers

The error occurred when loading the model on another device, when the dimensions of embeddings in transformers were changed before that. The example of working with embeddings in transformers has been updated.