New in 0.9.0 (2021-03-03)#
This release features our new software development kit for building new probabilistic models. Our hope is that others will be able to develop new models by importing scvi-tools into their own packages.
From the user perspective, there are two package-wide API breaking changes and one
SCANVI specific breaking change enumerated below. From the method developer perspective, the entire model backend has been revamped using PyTorch Lightning, and no old code will be compatible with this and future versions. Also, we dropped support for Python 3.6.
Breaking change: The
max_epochsfor consistency with PytorchLightning and to better relect the functionality of the parameter.
use_gpufor consistency with PytorchLightning.
check_val_every_n_epochfor consistency with PytorchLightning.
train()methods in the codebase have been removed and various arguments have been reorganized into
trainer_kwargs. Generally speaking,
plan_kwargsdeal with model optimization like kl warmup, while
trainer_kwargsdeal with the actual training loop like early stopping.
Breaking change: GPU handling#
use_cudawas removed from the init of each model and was not replaced by
use_gpu. By default every model is intialized on CPU but can be moved to a device via
model.to_device(). If a model is trained with
use_gpu=Truethe model will remain on the GPU after training.
When loading saved models, scvi-tools will always attempt to load the model on GPU unless otherwise specified.
We now support specifying which GPU device to use if there are multiple available GPUs.
n_epochs_semisupervisedhave been removed from
train. It has been replaced with
max_epochsfor semisupervised training.
n_samples_per_labelis a new argument which will subsample the number of labelled training examples to train on per label each epoch.
New Model Implementations#
Added callback for saving the best state of a model (#887)
Option to disable progress bar (#905)
load() documentation improvements (#913)
track is now public (#938)
get_likelihood_parameter() bug (#967)
model.history are now pandas DataFrames (#949)