扩展库
集成新的Transformer模型
目前,并非所有包含在Hugging Face的transformers中的模型类型都支持适配器。
不过,可以将现有的适配器实现添加到新模型中。
详细说明请参阅Adding Adapters to a Model。
加载自定义模块权重
adapters 提供了开箱即用的支持,可以从本地文件系统或Hub保存和加载适配器及预测头模块。然而,语言模型中还可以设想无数其他的模块集成方式。为了给这类新的自定义模型插件提供基础,adapters 集成了一个基本机制来保存和加载自定义权重。
所有适配器和头部模块的权重均通过WeightsLoader类的实现进行提取、保存和加载,其中预包含的两个实现是AdapterLoader和PredictionHeadLoader。若需为自定义模块权重添加基础的保存和加载功能,您可以实现一个新的WeightsLoader子类。需要实现的两个必要抽象方法是:
filter_func(self, name: str) -> Callable[[str], bool]: 该方法返回的可调用对象用于根据模块名称提取需要保存或加载的模块权重。rename_func(self, old_name: str, new_name: str) -> Callable[[str], str]: 该方法返回的可调用对象用于在加载后可选地重命名模块权重。
如需更高级的功能,您可能还需要重写save()和load()方法。
使用自定义加载器类,现在可以通过以下方式保存权重:
loader = MyCustomWeightsLoader(model)
loader.save("path/to/save/dir", "custom_weights_name")
您也可以将这些权重上传到Hub,然后与适配器一起从那里加载它们:
model.load_adapter(
"adapter_name",
custom_weights_loaders=[MyCustomWeightsLoader]
)