PEFT documentation
Karışık adaptör türleri
Karışık adaptör türleri
Normalde, 🤗 PEFT içinde farklı adaptör türlerini bir arada kullanmak mümkün değildir. İki farklı LoRA adaptörü (farklı yapılandırma seçeneklerine sahip olabilecek) ile bir PEFT modeli oluşturabilirsiniz, ancak bir LoRA ve bir LoHa adaptörünü birleştirmek mümkün değildir. Bununla birlikte, PeftMixedModel ile adaptör türleri uyumlu olduğu sürece bu işlem çalışır. Karışık adaptör türlerine izin verilmesinin ana amacı, eğitimden geçirilmiş adaptörleri çıkarım (inference) için birleştirmektir. Karışık bir adaptör modeli eğitmek mümkün olsa da bu durum test edilmemiştir ve önerilmez.
PEFT modeline farklı adaptör türlerini yüklemek için PeftModel yerine PeftMixedModel kullanın:
from peft import PeftMixedModel
base_model = ... # load the base model, e.g. from transformers
# load first adapter, which will be called "default"
peft_model = PeftMixedModel.from_pretrained(base_model, <path_to_adapter1>)
peft_model.load_adapter(<path_to_adapter2>, adapter_name="other")
peft_model.set_adapter(["default", "other"])Her iki adaptörü etkinleştirmek için set_adapter() yöntemi gereklidir; aksi takdirde yalnızca ilk adaptör etkin olur. add_adapter() yöntemini tekrar tekrar çağırarak daha fazla adaptör eklemeye devam edebilirsiniz.
PeftMixedModel, karışık adaptörlerin kaydedilmesini ve yüklenmesini desteklemez. Adaptörler zaten eğitilmiş olmalıdır ve modelin yüklenmesi her seferinde bir betiğin çalıştırılmasını gerektirir.
İpuçları
- Tüm adaptör türleri bir arada kullanılamaz. Uyumlu türlerin listesini
peft.tuners.mixed.COMPATIBLE_TUNER_TYPESiçinde bulabilirsiniz. Uyumlu olmayan adaptör türlerini birleştirmeye çalışırsanız bir hata oluşturulur. - Aynı türden birden çok adaptörün karıştırılması mümkündür ve bu, yapılandırmaları birbirinden çok farklı olan adaptörleri birleştirmek için faydalı olabilir.
- Birçok farklı adaptörü birleştirmek istiyorsanız, en yüksek performansı sağlayan yöntem, aynı adaptör türlerini ardışık olarak eklemektir. Örneğin, LoRA1, LoHa1, LoRA2 ve LoHa2 sırası yerine LoRA1, LoRA2, LoHa1, LoHa2 sırasını kullanın. Sıra, çıktıyı etkileyebilir ancak özünde en iyi bir sıra yoktur; bu nedenle en hızlı olanı seçmek en doğrusudur.