PEFT documentation

Eğitilebilir Jetonlar

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.21.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Eğitilebilir Jetonlar

Trainable Tokens yöntemi, tam gömme matrisini eğitmeye veya gömme matrisine bir adaptör kullanmaya başvurmadan, ince ayar için belirli token gömmelerini hedeflemenin bir yolunu sunar. Bu yöntem, buradaki ilk uygulamaya dayanmaktadır.

Yöntem yalnızca belirli jetonları hedefler ve belirttiğiniz jeton dizinlerini seçici olarak eğitir. Sonuç olarak, tam ince ayarlanmış gömme matrisini depolamaya kıyasla gereken RAM daha düşük olur ve disk belleği de önemli ölçüde daha az yer kaplar.

Bu betik ile elde edilen bazı ön düzey kıyaslama sonuçları, gemma-2-2b (oldukça büyük bir gömme matrisine sahip) için Trainable Tokens yaklaşımının, gömme matrisinin tamamen ince ayarına kıyasla ~4 GiB VRAM tasarrufu sağlayabileceğini göstermektedir. LoRA benzer miktarda VRAM kullanırken, değiştirilmesini istemediğiniz token'lara da etki edebilir. Not: Bunlar yalnızca göstergelerdir ve değişen gömme matrisi boyutları bu sayıları biraz değiştirebilir.

Bu yöntemin sizin için token eklemeyeceğini, tokenleri tokenizer'a kendinizin eklemeniz ve modelin gömme matrisini buna göre yeniden boyutlandırmanız gerektiğini unutmayın. Bu yöntem yalnızca belirttiğiniz tokenler için gömme katmanlarını yeniden eğitecektir. Bu yöntem, LoRA katmanlarıyla birlikte de kullanılabilir! LoRA belgelendirmesine bakın.

Yeni tokenler eklerken modeli save_pretrained() ile kaydetmek veya durum sözlüğünü get_peft_model_state_dict() kullanarak almak, gömme matrisinin yeniden boyutlandırıldığı için önlem olarak yalnızca farkı değil, tam gömme matrisini kaydedebilir. Alan tasarrufu sağlamak için, save_pretrained çağrılırken save_embedding_layers=False ayarlayarak bu davranışı devre dışı bırakabilirsiniz. Bu, gömme matrisini başka yollarla da değiştirmediğiniz sürece güvenlidir; çünkü bu tür değişiklikler eğitilebilir tokenlar tarafından izlenmez.

Karma performans değerlendirmesi genel bakış

API

TrainableTokensConfig

sınıf peft.TrainableTokensConfig

< >

( task_type: Optional[Union[str, TaskType]] = Nonepeft_type: Optional[Union[str, PeftType]] = Noneauto_mapping: Optional[dict] = Nonepeft_version: Optional[str] = Nonebase_model_name_or_path: Optional[str] = Nonerevision: Optional[str] = Noneinference_mode: bool = Falsetoken_indices: list[int] = <factory>target_modules: Optional[Union[list[str], str]] = Noneinit_weights: bool = True )

Parametreler

  • token_indices (list[int]) — Eğitilebilir olmasını istediğiniz tokenlerin indekslerini belirten tamsayı listesi. Bir tokenin indeksini bulmak için bir tokenizer ile metni tokenize edip döndürülen input_ids değerlerine bakabilirsiniz. İndeks sayısı toplam token sayısına ne kadar yakınsa, bu yöntemin verimliliği o kadar azalır.
  • target_modules (Optional[Union[list[str], str]]) — TrainableTokensLayer ile değiştirilecek modül adlarının listesi veya modül adlarının regex ifadesi. Tanımlanmamışsa, modelin get_input_embeddings metodu varsa (transformer modelleri genellikle vardır) modelin giriş gömme katmanını almaya çalışır, bu başarısız olursa varsayılan değer ‘embed_tokens’ olur. Diğer örnek hedefler embedding, encoder.embeddings veya decoder.embeddings şeklindedir.
  • init_weights (bool) — Varsayılan olarak yeni token ağırlıkları, ilgili token gömümleriyle aynı olacak şekilde başlatılır. Bu, TrainableTokens'ın eğitilmediğinde bir işe yaramaz (no-op) olmasını sağlar. False olarak ayarlanırsa ağırlıklar rastgele değerler olur. Ne yaptığınızı tam olarak bilmiyorsanız bu ayarı değiştirmeyin.

TrainableTokens yöntemi için yapılandırma.

Yeni tokenların (ve mevcut olanların yeniden) tam gömme matrisini eğitmek zorunda kalmadan eğitilmesine olanak tanır. Birkaç seçili tokenı (endeksleriyle tanımlanan) eğitilebilir olarak işaretleyip geri kalanına dokunmadan, bu yöntem yeni token eklemek veya mevcut tokenların gömme değerlerini değiştirmek için hafıza tasarrufu sağlayarak kullanılabilir. Gömme matrisinin tamamen eğitilmesine kıyasla hem depolama hem de çalışma belleği kullanımı azaltılır.

FSDP/DeepSpeed ile eğitimin henüz tam olarak desteklenmediğini unutmayın.

TrainableTokensModel

sınıf peft.TrainableTokensModel

< >

( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )

Update on GitHub