Skip to content

Releases: lenskit/lkpy

LensKit 0.13.0 - critical bugs fixed

18 Jun 16:59
Compare
Choose a tag to compare

We're pleased to release LensKit 0.13!

Major Fixes

This release includes two critical fixes, for which everyone should upgrade:

  • The Bias model's transform and inverse_transform methods were incorrect (#265). These bugs did not affect Bias when used as a predictor or a recommender, but they did affect any model using Bias as a normalization step, namely the biased matrix factorizers (since version 0.11, when this API was added).
  • Previous versions of LensKit did not clean up temporary files (or, on Python 3.8 and later, shared memory resources) when running parallel evaluation processes.

It also includes significant performance improvements and code to detect common problems with parallel processing configurations, and is tested on Python 3.9 and on Linux AArch64 (64-bit ARM).

Future Changes

This release deprecates two sets of APIs that will be removed in LensKit 0.14:

  • MultiEval (#254) - it doesn't work well for realistic projects, and simple evaluations are easy enough to write in a loop, so we will be removing MultiEval to reduce our maintenance burden going forward.
  • RNG seed management APIs - these are replaced by seedbank. In 0.13, the APIs are kept as compatibility shims for their SeedBank replacements, but we will remove them in 0.14 in favor of directly calling seedbank.

We haven't yet adopted any formal deprecation policies for LensKit, but my current tentative plan is to use this next-release cadence for nontrivial removals while we're still releasing 0.x versions; once we decide to bump to 4.x, we will use semantic versioning on all public APIs, and thus deprecations will not be enforced until the next major release.

In a future LensKit, I tentatively plan to factor out several of our bridges (TensorFlow, Implicit, HPF) into separate projects. We will keep compatibility imports for at least one 0.x release, and probably until 4.0. This will reduce the development overhead of the LensKit core.

What’s Changed

Really publish

06 Mar 22:45
Compare
Choose a tag to compare

This actually publishes the 0.12 bump, a tagging error prevented 0.12.2 from going out.

Education Bugfixes

06 Mar 22:43
Compare
Choose a tag to compare

This release contains the sampling function refactor (#230), and documentation improvements.

The Clone SVDs

02 Mar 02:29
Compare
Choose a tag to compare

Small bug-fix release.

What’s Changed

No Longer Candide

13 Feb 02:39
Compare
Choose a tag to compare

This version of LensKit splits out the CSR routines into a separate CSR package, allowing LensKit to be a pure Python package.

This also makes a major change to TensorFlow BPR, using popularity-weighted negative sampling by default (this can be disabled with neg_weight=False), and makes our TF recommenders much faster.

What’s Changed

Building It Live

13 Nov 20:18
Compare
Choose a tag to compare

This release is just to fix a build problem in 0.11.0 that prevented automatic package publication.

Let's Do It Live

13 Nov 19:12
Compare
Choose a tag to compare

This release brings a number of functionality and performance improvements. Highlights include:

  • Refactoring the Bias model and using it consistently instead of re-implementing pieces in matrix factorizers
  • Support new ratings from a user in both ALS recommenders
  • Fix crash when TensorFlow 1 is installed

The main-channel Conda packages for this release have disabled MKL support in macOS, due to environmental factors causing the build to fail. LensKit will still work fine in MKL environments, it just won't use its MKL-based k-NN acceleration on macOS. Linux and Windows are still unchanged. With 0.11, we will also begin publishing packages to conda-forge; we expect MKL acceleration to work in that environment.

What’s Changed

Better Processes

26 Jun 23:38
Compare
Choose a tag to compare

This release makes some improvements to multi-process support and item-item kNN resource use.

What’s Changed

Flow

09 Jun 21:45
Compare
Choose a tag to compare

Highlights of this release are significant improvements to parallel processing (we no longer use joblib), shared memory, and our first TensorFlow integrations.

What’s Changed

Gone in 60 Seconds

26 May 01:44
Compare
Choose a tag to compare

This release has some performance and improvements, including full Python 3.8, Pandas 1.0, and Numba 0.49 testing.

This is the last release we expect to use JobLib to parallelize batch prediction and recommendation. Any Python scripts that call the batch routines (batch.predict, batch.recommend, or MultiEval) need to be import-protected: their code needs to be in functions, and only invoked with a __name__ guard:

if __name__ = '__main__':
    do_stuff()

Unprotected scripts (where the code is just in the script, and runs when the script is imported as a module) will probably still work with LensKit 0.9, but will not work in the next version of LensKit. Jupyter notebooks should be just fine - when they are run, the IPython kernel is actually running, and it is properly protected.

What’s Changed