Using Adapters and the DeploymentModel class¶
Alongside full finetuning, finetune
also supports the adapter finetuning strategy from “Parameter-Efficient Transfer Learning for NLP”.
This dramatically shrinks the size of serialized model files to ~30mb. When used in conjunction with the DeploymentModel
class at inference time, this enables quickly switching between target models.
# First we train and save a model using the adapter finetuning strategy
from finetune import Classifier, DeploymentModel
from finetune.base_models import GPT
model = Classifier(adapter_size=64)
model.fit(X, Y)
model.save('adapter-model.jl')
# Then we load it using the DeploymentModel wrapper
deployment_model = DeploymentModel(featurizer=GPT)
# Loading the featurizer only needs to be done once
deployment_model.load_featurizer()
# You can then cheaply load + predict with any adapter model that uses the
# same base_model and adapter_size
deployment_model.load_custom_model('adapter-model.jl')
predictions = deployment_model.predict(testX)
# Switching to another model takes only 2 seconds now rather than 20
deployment_model.load_custom_model('another-adapter-model.jl')
predictions = deployment_model.predict(testX)