Implicit Versions Save

Fast Python Collaborative Filtering for Implicit Feedback Datasets

v0.7.2

7 months ago

Changes

🚀 Features

  • Use np.random.Generator for rng @benfred (#694)
  • use threadpoolctl for detecting BLAS threadpools @benfred (#692)

🧰 Maintenance

  • bump cibuildwheel version in gha @benfred (#693)

v0.7.1

8 months ago

Changes

🚀 Features

  • Add support for H100 gpu's @benfred (#669)

🐛 Bug Fixes

  • Clear cached properties on partial_fit_* @benfred (#685)
  • Add check_csr for partial_fit methods @benfred (#683)
  • Add noexcept declarations for Cython 3.0 @benfred (#680)
  • Fix cuda build on conda-forge @benfred (#668)

🧰 Maintenance

  • use raft 23.08 @benfred (#681)
  • Add cmake/ninja to pyproject.toml @benfred (#677)
  • Remove setup_requires @benfred (#674)

v0.7.0

10 months ago

Changes

🚀 Features

  • use RAFT for select_k on the gpu @benfred (#656)
  • float16 support for GPU als model @benfred (#661)

🐛 Bug Fixes

  • Fix ALS loss calculation on GPU @benfred (#663)
  • Fix for ALS calculate_loss on the cpu @benfred (#662)

🧰 Maintenance

  • Build / publish sdist package to pypi as well @benfred (#665)
  • Set cython directives globally @benfred (#666)
  • Test h5py in GHA for python 3.11 @benfred (#664)
  • Use the batch functionality in the movielens example @benfred (#659)
  • update isort/pylint/black versions @benfred (#657)
  • Remove import of numpy.distutils @benfred (#660)

v0.6.2

1 year ago

Changes

🚀 Features

  • Build arm64 wheels for linux @benfred (#630)
  • Build python 3.11 wheels @benfred (#634)

🐛 Bug Fixes

  • Fix more issues with pickling GPU models @benfred (#636)
  • Fix pickling GPU models @benfred (#632)
  • Fix ordering in .recommend for KNN models @benfred (#629)

📄 Documentation

  • Update README / github actions versions @benfred (#635)
  • Update evaluation.pyx @mrticker (#617)
  • Fix CosineRecommender documentation @benfred (#619)

🧰 Maintenance

  • fix for newer packaging versions @benfred (#633)
  • Remove unnecessary argument @Soonmok (#621)

v0.6.1

1 year ago

Changes

🚀 Features

  • Tweak callback API @benfred (#612)
  • Allow GPU models to train on sparse matrices that exceed the size of available GPU memory @benfred (#605)
  • Fit callback in BPR model @apat1n (#590)

🐛 Bug Fixes

  • Handle more than 2**31 parameters on GPU models @benfred (#599)
  • Fix recalculate_item / recalculate_user on the GPU @benfred (#598)

📄 Documentation

  • Minor documentation fixes @benfred (#609)
  • docs: Fix a few typos @timgates42 (#596)

v0.6.0

1 year ago

Changes

🚀 Features

  • Add an alpha parameter for the ALS models @benfred (#581)
  • Use num_threads for batch recommendations in MF models @benfred (#562)
  • Add save/load functions for models @benfred (#552)
  • Publish binary wheels to PyPi using cibuildwheel @benfred (#546)

🐛 Bug Fixes

  • Fix default argument typo in benchmark_als.py @atakanfilgoz (#585)
  • Fix save/load for models that haven't been fit @benfred (#577)
  • Warn on non-csr input passed to model.fit @benfred (#578)
  • Fix partial_fit_items bug with only growing by a single item @benfred (#563)

🏎💨 Performance Improvements

  • Only call sort_indices when verifying negative samples @benfred (#583)

📄 Documentation

  • Update link to dataset in lastfm example script @benfred (#573)

🧰 Maintenance

  • Add release-drafter workflow for generating release notes @benfred (#579)
  • Disable building GPU extension if IMPLICIT_DISABLE_CUDA env var is set @benfred (#561)
  • Build binary wheels for apple silicon @benfred (#553)
  • Use scikit-build>=0.13.1 @benfred (#549)
  • Disable compute_86 compilation for cuda 11.0 @benfred (#536)
  • Require cmake v3.17+ @benfred (#534)

v0.5.0

2 years ago

v0.5.0

Breaking API Changes

The API for implicit has substantially changed in v0.5.0 - and any code written for the previous API will need to be rewritten:

  • Change model.fit to take a user_items sparse matrix #484
  • Return numpy arrays from recommend methods #482
  • Don't require empty rows in user_items and item_users parameters #526
  • Unify API for rank_items/recommend/recommend_all #489

Performance Improvements

  • Speedup evaluation by using batch recommend functions #520
  • Use FAISS for GPU inference #506
  • Multithreaded speedups for CPU models #517
  • Use thrust::binary_search to verify negative samples on GPU #524
  • Release GIL on GPU calls #528

New Features

  • Add incremental retraining support for ALS models #527
  • Add filtering for similar_items and similar_users #488
  • Add support for recalculate_users/items on the GPU #515
  • Add methods for converting MF models to/from gpu #521
  • Add a tutorial notebook for the lastfm example #529
  • Approximate nearest neighbour for BPR/LMF and GPU models #487
  • Dynamically detect CUDA availability #174