Transformers documentation
PEFT
PEFT
PeftAdapterMixin, Transformers ile adaptörleri yönetmek için PEFT kütüphanesinden fonksiyonlar sağlar. Bu mixin, tüm prompt-öğrenme dışı PEFT yöntemlerini (LoRA, IA3, AdaLoRA ve diğerleri) destekler. Prefix tuning yöntemleri (prompt tuning, prompt learning), bir torch modülüne enjekte edilemedikleri için desteklenmez.
PEFT kütüphanesinde desteklenen adaptör ağırlıklarını yüklemek ve kullanmak için tüm işlevleri içeren bir sınıf. Adaptörler ve bunların transformer tabanlı bir modele enjekte edilmesi hakkında daha fazla ayrıntı için PEFT kütüphanesinin belgelerine göz atın: https://huggingface.co/docs/peft/index
Şu anda desteklenen PEFT yöntemleri, tümüyle prompt öğrenme dışı yöntemlerdir (LoRA, IA³ vb.). Prompt tuning, prompt learning gibi diğer PEFT modelleri kapsam dışıdır, çünkü bu adaptörler bir torch modülüne “enjekte edilemez”. Bu yöntemleri kullanmak için PEFT kütüphanesinin kullanım kılavuzuna başvurun.
Bu mixin ile doğru PEFT sürümü yüklüyse (>= 0.20.0), aşağıdakiler yapılabilir:
- Yerel bir yolda veya uzak bir Hub deposunda saklanan bir adaptörü yükleyin ve modele enjekte edin
- Modelde yeni adaptörler ekleyin ve bunları Trainer ile veya kendi yöntemlerinizle eğitin.
- Birden çok adaptör ekleyin ve bunları iteratif olarak etkinleştirin / devre dışı bırakın
- Modeldeki tüm adaptörleri etkinleştir / devre dışı bırak.
- Aktif adaptörün
state_dict'ini alın.
load_adapter
< source >( peft_model_id: str | None = Noneadapter_name: str | None = Nonepeft_config: dict[str, typing.Any] | None = Noneadapter_state_dict: dict[str, 'torch.Tensor'] | None = Nonelow_cpu_mem_usage: bool = Falseis_trainable: bool = Falsehotswap: typing.Union[bool, typing.Literal['auto']] = 'auto'local_files_only: bool = Falseadapter_kwargs: dict[str, typing.Any] | None = Noneload_config: typing.Optional[ForwardRef('LoadStateDictConfig')] = None**kwargs )
Parametreler
- peft_model_id (
str, isteğe bağlı) — Hub'da aranacak modelin tanımlayıcısı veya kaydedilmiş adaptör yapılandırma dosyasının ve adaptör ağırlıklarının yerel yolu. - adapter_name (
str, isteğe bağlı) — Kullanılacak adaptör adı. Ayarlanmazsa, “default” adı kullanılır. - load_config (
LoadStateDictConfig, isteğe bağlı) — Adaptör ağırlıklarını çekerken yeniden kullanılacak bir yükleme yapılandırması, genelliklefrom_pretrainedüzerinden. - kwargs (
dict[str, Any], isteğe bağlı) — Anahtar kelime argümanları olarak geçirilen ekLoadStateDictConfigalanları. - peft_config (
dict[str, Any], isteğe bağlı) — Eklenecek adaptörün yapılandırması; desteklenen adaptörler, tüm prompt öğrenme dışı yapılandırmalardır (LoRA, IA³ vb). Bu argüman, kullanıcılar PEFT durum sözlüklerini doğrudan geçirdiğinde kullanılır. - adapter_state_dict (
dict[str, torch.Tensor], isteğe bağlı) — Yüklenmesi gereken adaptörün state dict'i. Bu argüman, kullanıcıların PEFT state dict'lerini doğrudan geçirdiği durumlarda kullanılır. - low_cpu_mem_usage (
bool, isteğe bağlı, varsayılanFalse) — PEFT adaptörünün yüklenmesi sırasında bellek kullanımını azaltır. Bu, yükleme sürecini de hızlandırmalıdır. - is_trainable (
bool, isteğe bağlı, varsayılanFalse) — Uyarlamanın (adapter) eğitilebilir olup olmadığı.Falseise, uyarlama dondurulur ve yalnızca çıkarım (inference) için kullanılabilir. - hotswap — (
"auto"veyabool, isteğe bağlı, varsayılanı"auto") Mevcut (LoRA) adaptörün, yeni yüklenen adaptörle yerinde değiştirilip değiştirilmeyeceğini belirtir. Bu, ek bir adaptör yüklemek yerine mevcut adaptör ağırlıklarının yeni adaptörün ağırlıklarıyla değiştirilmesi anlamına gelir. Bu işlem daha hızlı ve bellek açısından daha verimli olabilir. Ancak hotswap'in ana avantajı, model `torch.compile` ile derlendiğinde yeni adaptörün yüklenmesinin modelin yeniden derlenmesini gerektirmemesidir. Hotswap kullanıldığında, geçirilenadapter_namezaten yüklenmiş bir adaptörün adı olmalıdır.Yeni ve eski adaptörlerin farklı rütbelere ve/veya LoRA alfa değerlerine (yani ölçeklemeye) sahip olması durumunda, adaptörü yüklemekten önce ek bir yöntemi çağırmalısınız:
Dosyadan veya uzak Hub klasöründen adaptör ağırlıklarını yükler. Adaptörler ve PEFT yöntemleri hakkında bilgi sahibi değilseniz, bunlar hakkında daha fazla bilgi edinmek için PEFT resmi dokümantasyonunu okumaya sizi davet ediyoruz: https://huggingface.co/docs/peft
Adaptör ağırlıklarını yüklemek için PEFT'nin bir arka uç olarak kurulu olması gerekir.
add_adapter
< source >( adapter_configadapter_name: str | None = None )
Eğer adaptörler ve PEFT yöntemleriyle aşina değilseniz, bunlar hakkında daha fazla bilgi edinmek için PEFT resmi dokümantasyonunu okumaya davet ediyoruz: https://huggingface.co/docs/peft
Eğitim amacıyla mevcut modele yeni bir adaptör ekler. Adaptör adı geçirilmezse, PEFT kütüphanesinin sözleşmesine uyulması için adaptöre varsayılan bir ad atanır (PEFT'te varsayılan adaptör adı olarak “default” kullanılır).
Yeni eklenen adaptörün otomatik olarak etkinleştirilmediğini unutmayın. Etkinleştirmek için model.set_adapter kullanın.
set_adapter
< source >( adapter_name: list[str] | str )
Eğer adaptörler ve PEFT yöntemleriyle aşina değilseniz, bunlar hakkında daha fazla bilgi edinmek için PEFT resmi dokümantasyonunu okumaya davet ediyoruz: https://huggingface.co/docs/peft
Belirli bir adaptörü, modelin o adaptörü kullanmasını zorlayarak ve diğer adaptörleri devre dışı bırakarak ayarlar.
Eğer adaptörler ve PEFT yöntemleriyle aşina değilseniz, bunlar hakkında daha fazla bilgi edinmek için PEFT resmi dokümantasyonunu okumaya davet ediyoruz: https://huggingface.co/docs/peft
Modelde bağlı olan tüm adaptörleri devre dışı bırakır. Bu, yalnızca temel modelle çıkarım yapılmasına yol açar.
Eğer adaptörler ve PEFT yöntemleriyle aşina değilseniz, bunlar hakkında daha fazla bilgi edinmek için PEFT resmi dokümantasyonunu okumaya davet ediyoruz: https://huggingface.co/docs/peft
Modelde bağlı olan adaptörleri etkinleştirin.
enable_peft_hotswap
< source >( target_rank: int = 128check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error' )
Parametreler
- target_rank (
int, isteğe bağlı, varsayılan128) — Yüklenecek tüm adaptörler arasındaki en yüksek rank. - check_compiled (
str, isteğe bağlı, varsayılan olarak"error") — Modelin zaten derlenmiş olduğu durumu nasıl ele alınacağı, bu durumun genellikle kaçınılması gerekir. Seçenekler:- “error” (varsayılan): bir hata fırlat
- “warn”: bir uyarı yayınla
- “ignore”: hiçbir şey yapma
Farklı rütlere sahip PEFT adaptörlerinin sıcak değiştirilmesine olanak tanır veya model derlenmişse yeniden derlemeyi tetiklemeden bu işlemi yapmanızı sağlar.
Şu anda, hotswapping yalnızca LoRA için desteklenmektedir.
Bu yöntemin çağrılması yalnızca adaptörlerin sıcak değiştirilmesi sırasında ve model derlenmişse veya yüklenen adaptörlerin dereceleri farklıysa gereklidir. Dereceler tamamen aynıysa ve model derlenmemişse, bu yöntemi önce çağırmadan sıcak değiştirme işlemi çalışır.
Eğer adaptörler ve PEFT yöntemleriyle aşina değilseniz, bunlar hakkında daha fazla bilgi edinmek için PEFT resmi dokümantasyonunu okumaya davet ediyoruz: https://huggingface.co/docs/peft
Modelin mevcut etkin adaptörlerini alır. Çoklu adaptör çıkarımı (birden fazla adaptörün çıkarım için birleştirilmesi) durumunda, kullanıcıların bunlara göre işlem yapabilmeleri için tüm etkin adaptörlerin listesini döndürür.
Daha önceki PEFT sürümlerinde (çoklu adaptör çıkarımını desteklemeyenler) module.active_adapter tek bir dize döndürür.
get_adapter_state_dict
< source >( adapter_name: str | None = Nonestate_dict: dict | None = None )
Parametreler
- adapter_name (
str, isteğe bağlı) — State dict'in alınacağı adaptörün adı. Bir ad geçirilmezse, etkin adaptör kullanılır. - state_dict (
torch.Tensoriçeren iç içe sözlük, isteğe bağlı) — Modelin durum sözlüğü. Varsayılan olarakself.state_dict()kullanılır ancak modelin durum sözlüğünü geri yüklerken özel önlemler alınması gerekiyorsa (model paralelliği kullanılırken olduğu gibi) kullanılabilir.
Eğer adaptörler ve PEFT yöntemleriyle aşina değilseniz, bunlar hakkında daha fazla bilgi edinmek için PEFT resmi dokümantasyonunu okumaya davet ediyoruz: https://huggingface.co/docs/peft
Belirtilen adapter_name adaptörünün yalnızca ağırlık tensörlerini içermesi gereken adaptör durum sözlüğünü (state dict) alır. adapter_name geçirilmezse, etkin adaptör kullanılır.
delete_adapter
< source >( adapter_names: list[str] | str )
Alt modelden bir PEFT adaptörünü siler.