Transformers documentation
Modeller
Modeller
Taban sınıf PreTrainedModel, bir modelin yerel bir dosya veya dizinden ya da kütüphanenin sağladığı önceden eğitilmiş bir model yapılandırmasından (HuggingFace Hub'dan indirilen) yüklenmesi/kaydedilmesi için ortak yöntemleri uygular.
PreTrainedModel, tüm modellerde ortak olan birkaç yöntemi de uygular:
- sözlüğe yeni tokenler eklendiğinde girdi token gömme boyutlarını yeniden boyutlandırın
Her modele ortak olan diğer yöntemler ModuleUtilsMixin ve GenerationMixin içinde tanımlanmıştır.
PreTrainedModel
Tüm modellerin temel sınıfı.
PreTrainedModel, modellerin yapılandırmasını saklamaktan ve modelleri yükleme, indirme ve kaydetme yöntemlerini yönetmekten sorumlu olup, tüm modellerde ortak olan birkaç yöntemi de içerir:
- girdi gömme boyutlarını yeniden ayarlayın
Sınıf özellikleri (türetilen sınıflar tarafından geçersiz kılınır):
- config_class (PreTrainedConfig) — Bu model mimarisi için yapılandırma sınıfı olarak kullanılacak PreTrainedConfig alt sınıfı
- base_model_prefix (
str) — Aynı mimarinin türetilmiş sınıflarında, temel modelin üzerine modüller ekleyen sınıflarda, temel modele ilişkilendirilen özniteliği gösteren bir dize. - main_input_name (
str) — Modelin ana girdisinin adı (NLP modelleri için genellikleinput_ids, görsele dayalı modeller içinpixel_valuesve konuşma modelleri içininput_values). - can_record_outputs (dict):
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Parametreler
- repo_id (
str) — Modelinizi yüklemek istediğiniz depoyun adı. Belirli bir organizasyona yüklerken organizasyon adınızı içermelidir. - commit_message (
str, isteğe bağlı) — İterken iletilecek mesaj. Varsayılan olarak"Upload model"olur. - commit_description (
str, isteğe bağlı) — Oluşturulacak commit'in açıklaması - private (
bool, isteğe bağlı) — Deponun özel yapılıp yapılmayacağı.None(varsayılan) ise, organizasyonun varsayılanı özel değilse depo herkese açık olur. Depo zaten mevcutsa bu değer yok sayılır. - token (
boolveyastr, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton.True(varsayılan) ise,hf auth loginçalıştırıldığında oluşturulan jeton (~/.huggingfaceiçinde saklanır) kullanılır. - revision (
str, isteğe bağlı) — Yüklenen dosyaların itileceği dal. - create_pr (
bool, isteğe bağlı, varsayılanFalse) — Yüklenen dosyalarla bir PR oluşturulup oluşturulmayacağı veya doğrudan commit atılıp atılmayacağı. - max_shard_size (
intveyastr, isteğe bağlı, varsayılan"50GB") — Yalnızca modeller için geçerlidir. Bir kontrol noktasının parçalanmadan önceki maksimum boyutu. Parçalanan kontrol noktalarının her biri bu boyuttan küçük olacaktır. Bir dize olarak ifade ediliyorsa, birimden (ör."5MB") önce rakamlar içermelidir. - tags (
list[str], isteğe bağlı) — Hub'a itilecek etiketlerin listesi.
Model dosyasını 🤗 Model Hub'a yükleyin.
Örnekler:
from transformers import AutoModel
model = AutoModel.from_pretrained("google-bert/bert-base-cased")
# Push the model to your namespace with the name "my-finetuned-bert".
model.push_to_hub("my-finetuned-bert")
# Push the model to an organization with the name "my-finetuned-bert".
model.push_to_hub("huggingface/my-finetuned-bert")Mevcut model için aktivasyon denetlemesini devre dışı bırakır.
activation_checkpointing_enable
< source >( activation_checkpointing_kwargs = Noneevery_n_layers: int = 1offload: bool = False )
Parametreler
- every_n_layers (
int, isteğe bağlı, varsayılan 1) — Sadece herevery_n_layers. decoder katmanını checkpoint'leyin, kalanların aktivasyonlarını koruyun.1her katmanı checkpoint'ler; bu, normalde tümü ya da hiç davranışıdır. Daha büyük değerler, tam checkpoint'leme ile açığa çıkan bellek kullanılmayacaksa, hız için bellek ödünleşimi sağlar. - offload (
bool, isteğe bağlı, varsayılanFalse) — Yeniden hesaplama için kaydedilen aktivasyonları hızlandırıcıda değil, sabitlenmiş ana bellekte (pinned host memory) tutar. Bu, uzun dizi uzunluklarında baskın olanlayers x sequence x hiddenbaytlık cihaz belleğini boşaltır; bunun bedeli olarak ileri yönde cihazdan ana belleğe, geri yönde ise ana bellekten cihaza kopyalama yapılır. Her iki kopyalama da hesaplama akışında (compute stream) çalıştığı için adım yavaşlar. - activation_checkpointing_kwargs (dict, isteğe bağlı) —
torch.utils.checkpoint.checkpointfonksiyonuna iletilen ek anahtar kelime argümanları.
Mevcut model için aktivasyon denetlemesini etkinleştirir.
Modüllerin __call__ metodunu, forward yerine __call__ modülün tüm kanca (hook)larını eklediği için geçiririz. https://discuss.pytorch.org/t/any-different-between-model-input-and-model-forward-input/3690/2
add_model_tags
< source >( tags: list[str] | str )
Hugging Face Hub'a gönderilen modele özel etiketler ekler. Modeldeki mevcut etiketlerin üzerine yazmaz.
can_generate
< source >( ) → bool
Dönüş değeri
bool
Bu modelin .generate() ile diziler üretebilip üretemeyeceği.
Bu modelin GenerationMixin'den veya benzer bir arayüze sahip bir sınıftan .generate() ile diziler üretebileceğini döndürür.
Arka planda, bu fonksiyon True dönen sınıflarda bazı üretimle ilgili değişiklikler tetiklenir:
örneğin, model örneği dolu bir generation_config özniteliğine sahip olacaktır.
Noktalı bir yol için sahte bir değer (ör. torch.float32): öznitelik erişim zincirleri, çağrılar geçiş (pass-through) dekoratörleri gibi davranır, repr noktalı yoldur ve bir taban sınıf olarak kullanıldığında düz bir type tabanı yerine geçer (PEP 560 __mro_entries__), böylece gerçek alt sınıflar normal bir meta sınıfı korur ve inspect.signature sahtenin yerine gerçek __init__ değerlerini okur.
Eğer model, dequantizasyonu destekleyen bir kuantizasyon yöntemiyle kuantize edilmişse, modelin dequantize edilmesini potansiyel olarak gerçekleştirin.
_require_grads_hook öğesini kaldırır.
Girdi gömme katmanları için gradyanları etkinleştirir. Bu, model ağırlıklarını sabit tutarken adaptör ağırlarını ince ayar yapmak için faydalıdır.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike | None*model_argsconfig: transformers.configuration_utils.PreTrainedConfig | str | os.PathLike | None = Nonecache_dir: str | os.PathLike | None = Noneignore_mismatched_sizes: bool = Falseforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'use_safetensors: bool | None = Noneweights_only: bool = Truefusion_config: dict[str, bool | dict[str, typing.Any]] | None = Nonedisable_mmap: bool | None = None**kwargs )
Parametreler
- pretrained_model_name_or_path (
strveyaos.PathLike, isteğe bağlı) — Şunlardan biri olabilir:- Bir dize, huggingface.co'daki bir model deposunda barındırılan önceden eğitilmiş bir modelin model kimliği.
- klasör yoluna işaret eden, save_pretrained() kullanılarak kaydedilmiş model ağırlıkları içeren bir yol, örneğin
./my_model_directory/.save_pretrained(..., distributed_checkpoint=True)ile kaydedilen klasörler, dağıtık checkpoint (DCP) ile algılanır ve yüklenir; bu işlem modelin mevcut mesh ve yerleşimlerini korur. Bunun içintorch>=2.7gereklidir ve yükleme katıdır: checkpoint'te her model anahtarı bulunmalıdır. None, hem yapılandırma hem de durum sözlüğünü (sırasıylaconfigvestate_dictanahtar sözcük argümanlarıyla) sağlıyorsanız.
- model_args (konumsal argümanlar dizisi, isteğe bağlı) —
Kalan tüm konumsal argümanlar, alttaki modelin
__init__yöntemine aktarılır. - config (
Union[PreTrainedConfig, str, os.PathLike], isteğe bağlı) — Şunlardan biri olabilir:- PreTrainedConfig'den türetilmiş bir sınıfın bir örneği,
- from_pretrained() girdisi olarak geçerli bir dize veya yol.
Otomatik olarak yüklenen bir yapılandırma yerine kullanılacak modelin yapılandırması. Yapılandırma şu durumlarda otomatik olarak yüklenebilir:
- Model, kütüphane tarafından sağlanan bir modeldir (önceden eğitilmiş bir modelin model kimliği dizesiyle yüklenir).
- Model, save_pretrained() kullanılarak kaydedildi ve yeniden yüklenirken kayıt dizini sağlanarak yapılır.
- Model, yerel bir dizin
pretrained_model_name_or_patholarak sağlanarak yüklenir ve dizinde config.json adlı bir yapılandırma JSON dosyası bulunur.
- state_dict (
dict[str, torch.Tensor], isteğe bağlı) — Kaydedilen ağırlık dosyasından yüklenen bir durum sözlüğü yerine kullanılacak bir durum sözlüğü. Bu seçenek, önceden eğitilmiş bir yapılandırmadan model oluşturmak ancak kendi ağırlıklarınızı yüklemek istediğinizde kullanılabilir. Bu durumda, save_pretrained() ve from_pretrained() kullanmanın daha basit bir seçenek olup olmadığını kontrol etmelisiniz.Bu seçenek, önceden eğitilmiş bir yapılandırmadan model oluşturmak ancak kendi ağırlıklarınızı yüklemek istediğinizde kullanılabilir. Ancak bu durumda, save_pretrained() ve from_pretrained() kullanmanın daha basit bir seçenek olup olmadığını kontrol etmeniz gerekir.
- cache_dir (
Union[str, os.PathLike], isteğe bağlı) — Standart önbellek kullanılmayacaksa, indirilen önceden eğitilmiş model yapılandırmasının önbelleğe alınacağı dizinin yolu. - ignore_mismatched_sizes (
bool, isteğe bağlı, varsayılanFalse) — Kontrol noktasındaki bazı ağırlıkların boyutları, modelin ağırlıklarıyla aynı değilse (örneğin, 3 etiketli bir kontrol noktasından 10 etiketli bir model oluşturuyorsanız) hata fırlatılacak mı? - force_download (
bool, isteğe bağlı, varsayılanFalse) — Model ağırlıklarının ve yapılandırma dosyalarının (yeniden) indirilmesinin zorlanıp zorlanmayacağını belirler; önbellekteki sürümler varsa bunların üzerine yazar. - proxies (
dict[str, str], isteğe bağlı) — Protokole veya uç noktaya göre kullanılacak vekil sunucuların sözlüğü, örn.{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Vekiller her istekte kullanılır. - output_loading_info(
bool, opsiyonel, varsayılan olarakFalse) — Eksik anahtarlar, beklenmeyen anahtarlar ve hata mesajlarını içeren bir sözlüğü de döndürülüp döndürülmeyeceğini belirtir. - local_files_only(
bool, isteğe bağlı, varsayılanFalse) — Yalnızca yerel dosyalara bakılacak mı (yani modelin indirilmeye çalışılmayacağı). - token (
strveyabool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton.Trueise veya belirtilmezse,hf auth loginçalıştırıldığında oluşturulan jeton (~/.huggingfaceiçinde saklanır) kullanılır. - revision (
str, isteğe bağlı, varsayılan olarak"main") — Kullanılacak belirli model sürümü. huggingface.co üzerinde modelleri ve diğer artefaktları depolamak için git tabanlı bir sistem kullandığımız için bir dal adı, etiket adı veya commit kimliği olabilir, bu nedenlerevisiongit tarafından izin verilen herhangi bir tanımlayıcı olabilir.Hub'da oluşturduğunuz bir çekme isteğini test etmek için
revision="refs/pr/<pr_number>"parametresini iletebilirsiniz. - attn_implementation (
str, isteğe bağlı) — Modelde kullanılacak dikkat (attention) uygulaması (ilgiliyse). Aşağıdakilerden biri olabilir:"eager"(dikkatin manuel uygulaması)"sdpa"(F.scaled_dot_product_attentionkullanılarak)"flash_attention_2"(Dao-AILab/flash-attention kullanılarak)"flash_attention_3"(Dao-AILab/flash-attention/hopper kullanılarak)"flash_attention_4"(Dao-AILab/flash-attention/flash_attn/cute kullanılarak). Varsayılan olarak, kullanılabilirse SDPA kullanılır. Aksi halde varsayılan, manuel"eager"uygulamasıdır.
Aşağıdaki biçimde HF çekirdek referanslarını kabul edin:
/ [@ ][: ] ve herhangi bir "/" ve ":" dışı dizidir. - “@
” isteğe bağlıdır (dal, etiket veya commit benzeri), örn. “@main”, “@v1.2.0”, “@abc123”. - ”:
” isteğe bağlıdır ve kernel deposu içinde bir işlev seçer. - Her iki seçenek de birlikte görünebilir ve yalnızca bu sırayla: önce @revision, ardından :kernel_name.
- Kod, yüklemeden önce bunu kaldırdığı için başlangıçta
| önekinin (ör. “flash|…”) var olmasına bilinçli olarak izin veriyor; buradaki karakter sınıflarında '|' hariç tutulmuyor.
Eşleşen örnekler: “org/model” “org/model@main” “org/model:custom_kernel” “org/[email protected]:custom_kernel”
- experts_implementation (
str, isteğe bağlı) — Modelde kullanılacak uzmanlar uygulaması (ilgiliyse). Aşağıdakilerden biri olabilir:"eager"(uzman matris çarpımlarının ardışık uygulaması)."batched_mm"(torch.bmmkullanılarak)."grouped_mm"(torch.nn.functional.grouped_mmkullanılarak).
Varsayılan olarak, model destekliyorsa
"grouped_mm"kullanılır. Aksi halde varsayılan, manuel"eager"uygulamasıdır.
Büyük model çıkarımı için parametreler
- dtype (
strveyatorch.dtype, isteğe bağlı, varsayılanı"auto") — varsayılantorch_dtypeve modeli belirli birdtype. değeriyle yükler. Farklı seçenekler şunlardır:-
torch.float16veyatorch.bfloat16veyatorch.float: belirtilendtypeile yükler, varsa modelinconfig.dtypedeğerini yok sayar. Belirtilmezse- model
torch.float(fp32) olarak yüklenecektir.
- model
-
"auto"- Modelinconfig.jsondosyasındakidtypeveyatorch_dtypegirdisi kullanılmaya çalışılır. Bu girdi bulunamazsa, checkpoint'teki ilk ağırlığındtype'i kontrol edilir ve bu değerdtypeolarak kullanılır. Bu, modeli eğitim sonunda kaydedildiğidtypeile yükler. Modelin nasıl eğitildiğine dair bir gösterge olarak kullanılamaz. Çünkü model yarı hassasiyetli dtype'lardan biriyle eğitilip fp32'de kaydedilmiş olabilir. -
Geçerli bir
torch.dtypeolan bir dize. Örneğin “float32”, modelitorch.float32olarak yükler, “float16” isetorch.float16olarak yükler vb.
Bazı modellerin hangi
dtypeile eğitildiği bilinmemektedir - modelin makalesini kontrol etmeyi veya yazarlarla iletişime geçerek bu bilgiyi model kartına eklemelerini ve hub'dakiconfig.jsondosyasınadtypeveyatorch_dtypegirdisini eklemelerini istemeyi deneyebilirsiniz. -
- device_map (
strveyadict[str, Union[int, str, torch.device]]veyaintveyatorch.device, isteğe bağlı) — Her alt modülün nereye yerleştirileceğini belirten bir eşleme. Her parametre/buffer adının ayrı ayrı tanımlanmasına gerek yoktur; bir modül adı bir kez dahil edildiğinde, onun tüm alt modülleri aynı cihaza gönderilir. Sadece cihazı iletirseke.g.,"cpu","cuda:1","mps", veya modelin tahsis edileceği GPU sıra numarası gibi1) cihazı belirtirsek, cihaz eşlemesi tüm modeli bu cihaza eşler.device_map = 0tüm modelin GPU 0 üzerinde tutulması anlamına gelir.Accelerate'in en optimize
device_mapdeğerini otomatik olarak hesaplamasını sağlamak içindevice_map="auto"ayarlayın. Her seçenek hakkında daha fazla bilgi için cihaz haritası tasarımı bölümüne bakın. - max_memory (
Dict, isteğe bağlı) —device_mapkullanılıyorsa cihaz tanımlayıcısından maksimum belleğe giden bir sözlük. Ayarlanmazsa, varsayılan olarak her GPU için kullanılabilir maksimum bellek ve kullanılabilir CPU RAM'i olur. - distributed_config (DistributedConfig, isteğe bağlı) —
Tensor paralelliği veya FSDP2 ile yerel dağıtık yükleme yapılandırması. Modelin önceden tanımlı tensor paralel planını kullanmak için
DistributedConfig(tp_size=N), bir tensor paralel planı belirtmek içinDistributedConfig(tp_plan=...)veya FSDP2 içinDistributedConfig(fsdp_size=N)geçin.tp_size > 1veyafsdp_size > 1olduğundatorchrunve başlatılmış bir süreç grubu gerektirir.device_mapile birbirini dışlar. - device_mesh (
torch.distributed.DeviceMesh, isteğe bağlı) — Bir torch cihaz ızgarası. Verilmezse varsayılan olarak dünya boyutuna (world size) ayarlanır. Şu an yalnızca tensor paralelliği için kullanılır. Verildiği takdirde, 1 boyuttan büyükse"tp"adında bir boyut içermelidir; bu boyut tensor paralelliği için kullanılacaktır. - offload_folder (
strveyaos.PathLike, isteğe bağlı) —device_mapiçinde"disk"değeri varsa, ağırlıkların taşınacağı klasör. - offload_buffers (
bool, isteğe bağlı) — Model parametreleriyle birlikte tamponların (buffers) taşınacak (offload) olup olmayacağı. - quantization_config (
Union[QuantizationConfigMixin,Dict], isteğe bağlı) — Kantizasyon için (ör. bitsandbytes, gptq) yapılandırma parametreleri sözlüğü veya bir QuantizationConfigMixin nesnesi. - subfolder (
str, isteğe bağlı, varsayılan"") — İlgili dosyalar huggingface.co üzerindeki model deposunun bir alt klasöründe konumlanıyorsa, klasör adını burada belirleyebilirsiniz. - variant (
str, isteğe bağlı) — Belirtilirse ağırlıklarvariantdosya adından yüklenir, ör. pytorch_model..bin. - use_safetensors (
bool, isteğe bağlı, varsayılanNone) —safetensorskontrol noktalarının kullanılıp kullanılmayacağı. Varsayılan olarakNone'dir. Belirtilmezse vesafetensorskurulu değilse,Falseolarak ayarlanır. - weights_only (
bool, isteğe bağlı, varsayılanTrue) — Unpickler'ın yalnızca tensörler, ilkel tipler, sözlükler ve torch.serialization.add_safe_globals() ile eklenen tipleri yüklemesiyle sınırlı olup olmadığını belirtir. False olarak ayarlandığında, sarmalayıcı tensör alt sınıfı ağırlıkları yüklenebilir. - disable_mmap (
bool, isteğe bağlı) — safetensors checkpoint'leri yüklerken bellek eşlemesinin (memory mapping) devre dışı bırakılıp bırakılmayacağı.None(varsayılan) olduğunda, checkpoint birhf-mountFUSE dosya sisteminde (HF Spaces/Endpoints tarafından kullanılır) bulunuyorsa, mmap + paralel sayfa hatalarının (page-faults) ölü kilit (deadlock) oluşturabilmesi nedeniyleTrueolarak otomatik algılanır.Trueolduğunda, dosyalar tamamen belleğe okunur vesafetensors.torch.loadile ayrıştırılır.Falseolduğunda, her zaman varsayılan bellek eşlemeli yükleyici kullanılır. - fusion_config (
dict[str, bool | dict[str, Any]], isteğe bağlı) — Model örneklenmeden önce uygulanacak isteğe bağlı füzyon yapılandırması. Her anahtar bir füzyon ailesini etkinleştirir ve değeri, o füzyonu varsayılan seçeneklerle etkinleştirmek içinTrueveya aileye özgü seçeneklerin bir sözlüğü olabilir. Örneğin,{"patch_embeddings": True}yama gömme füzyonunu etkinleştirir. Bu, çıktıları hafifçe değiştirebileceğinden yalnızca çıkarım optimizasyonu olarak kullanılmalıdır. Atlanırsa,from_pretrained()mevcut olduğundaconfig.fusion_configdeğerine geri döner. Daha fazla ayrıntı içindocs/source/en/fusion_mapping.mdiçindeki füzyon eşleme kılavuzuna bakın. - key_mapping (`dict[str, str], isteğe bağlı) — Hub'da, Transformers mimarisiyle uyumlu ancak buna göre dönüştürülmemiş bir model kullanılıyorsa, ağırlık adları için olası bir eşleme.
- kwargs (anahtar kelime argümanlarının kalan sözlüğü, isteğe bağlı) —
Yapılandırma nesnesini (yüklenmesinin ardından) güncellemek ve modeli başlatmak için kullanılabilir (ör.
output_attentions=True). configconfigsağlanıp sağlanmadığına veya otomatik olarak yüklenip yüklenmediğine göre farklı davranır:configile bir yapılandırma sağlanırsa,**kwargsdoğrudan alttaki modelin__init__yöntemine aktarılır (yapılandırmaya ilişkin tüm ilgili güncellemelerin zaten yapıldığı varsayılır)- Bir yapılandırma sağlanmazsa,
kwargsönce yapılandırma sınıfı başlatma işlevine (from_pretrained()) iletilir.kwargs'nın, bir yapılandırma özniteliğine karşılık gelen her anahtarı, ilgili özniteliğin belirtilenkwargsdeğeriyle değiştirilmesi için kullanılır. Hiçbir yapılandırma özniteliğine karşılık gelmeyen kalan anahtarlar, alttaki modelin__init__işlevine iletilir.
Önceden eğitilmiş bir model yapılandırmasından önceden eğitilmiş bir pytorch modeli örnekleyin.
Model, varsayılan olarak model.eval() kullanılarak değerlendirme moduna ayarlanır (Dropout modülleri devre dışı bırakılır). Modeli eğitmek için önce model.train() ile eğitim moduna geri almanız gerekir.
Weights from XXX not initialized from pretrained model uyarısı, XXX ağırlıklarının modelin geri kalanıyla birlikte önceden eğitilmiş olarak gelmediği anlamına gelir. Bu ağırlıkları bir aşağı akış ince ayar göreviyle eğitmek size kalmıştır.
Uyarı Weights from XXX not used in YYY, XXX katmanının YYY tarafından kullanılmadığı ve bu nedenle bu ağırlıkların atıldığı anlamına gelir.
Bu yöntemi, duvarlı bir ortamda kullanmak için özel “offline-mode” modunu etkinleştirin.
Örnekler:
>>> from transformers import BertConfig, BertModel
>>> # Download model and configuration from huggingface.co and cache.
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased")
>>> # Model was saved using *save_pretrained('./test/saved_model/')* (for example purposes, not runnable).
>>> model = BertModel.from_pretrained("./test/saved_model/")
>>> # Update configuration during loading.
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased", output_attentions=True)
>>> assert model.config.output_attentions == Trueget_compiled_call
< source >( compile_config: transformers.generation.configuration_utils.CompileConfig | None )
torch.compile ile derlenmiş bir self.__call__ sürümü döndürür. Bu, özellikle prefill aşamasında (yeni şekillerle grafı yeniden hesaplamaktan kaçınmak için derlenmiş sürümü kullanmak istemediğimizde) ve iteratif çözümleme aşamasında (statik şekillerle derlenmiş sürümün hızlanmalarından yararlanmak istediğimizde) çıkarım sırasında derlenmemiş/derlenmiş forward arasında dinamik olarak seçim yapabilmek için faydalıdır.
decoder modülünün en iyi çaba ile aranması.
Denemelerin sırası (mevcut kullanımın ~%85'ini kapsar):
self.decoder/self.language_model/self.text_modelself.base_model(birçok sarmalayıcı, decoder'ı burada saklar)self.base_model.get_decoder()(iç içe sarmalayıcılar)- fallback: özel bir kural gerektiren birkaç egzotik model için raise
encoder modülünün en iyi çaba ile aranması. modality argümanı sağlanırsa, çok modlu modellerde moda özgü bir kodlayıcı arar (ör. “image_encoder”). Varsayılan olarak fonksiyon, varsa modelin metin kodlayıcısını, yoksa self değerini döndürür.
modality için olası değerler “image”, “video” ve “audio”dur.
Sadece mevcut model için veya all_submodels=True durumunda tüm alt modeller için özyinelemeli olarak (yani tüm alt modeller için yapılandırma değerleri yeniden kontrol edilir) genişletilmiş bağlı ağırlık anahtarlarını (modüller veya regex desenleri içermeleri durumunda) döndürür.
Neredeyse tüm modeller için yalnızca gömme bağlaması (tie the embeddings) gereklidir, bu nedenle modelin _tied_weights_keys = {"lm_head.weight": "model.embed_tokens.weight"} içsel özelliği vardır. Bu durumda eşleme zaten “genişletilmiş”tir, yani tam parametreleri zaten içerir ve bu fonksiyon yalnızca özelliğin bir kopyasını döndürür.
DFineForObjectDetection gibi daha karmaşık desenler için aşağıdaki özeğe sahibiz
_tied_weights_keys = {
r"bbox_embed.(?![0])\d+": "bbox_embed.0",
r"class_embed.(?![0])\d+": "class_embed.0",
"model.decoder.class_embed": "class_embed",
"model.decoder.bbox_embed": "bbox_embed",
}şunları döndürür:
{
'bbox_embed.1.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'bbox_embed.1.layers.0.weight': 'bbox_embed.0.layers.0.weight',
'bbox_embed.1.layers.1.bias': 'bbox_embed.0.layers.1.bias',
'bbox_embed.1.layers.1.weight': 'bbox_embed.0.layers.1.weight',
'bbox_embed.1.layers.2.bias': 'bbox_embed.0.layers.2.bias',
'bbox_embed.1.layers.2.weight': 'bbox_embed.0.layers.2.weight',
'bbox_embed.2.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'bbox_embed.2.layers.0.weight': 'bbox_embed.0.layers.0.weight',
...
'class_embed.1.bias': 'class_embed.0.bias',
'class_embed.1.weight': 'class_embed.0.weight',
'class_embed.2.bias': 'class_embed.0.bias',
'class_embed.2.weight': 'class_embed.0.weight',
...
'model.decoder.class_embed.0.bias': 'class_embed.0.bias',
'model.decoder.class_embed.0.weight': 'class_embed.0.weight',
'model.decoder.class_embed.1.bias': 'class_embed.0.bias',
'model.decoder.class_embed.1.weight': 'class_embed.0.weight',
...
'model.decoder.bbox_embed.0.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'model.decoder.bbox_embed.0.layers.0.weight': 'bbox_embed.0.layers.0.weight',
'model.decoder.bbox_embed.0.layers.1.bias': 'bbox_embed.0.layers.1.bias',
'model.decoder.bbox_embed.0.layers.1.weight': 'bbox_embed.0.layers.1.weight',
...
}Bu modelin ve alt modellerinin uzman (experts) uygulamasını, set_experts_implementation tarafından kabul edilen biçimde bir dict olarak döndürür ("" bu model için, her sub_config için bir giriş). Bu, set_experts_implementation'in karşılığıdır; örneğin mevcut uygulamanın anlık görüntüsünü almak ve daha sonra geri yüklemek için kullanılır.
get_memory_footprint
< source >( return_buffers = True )
Parametreler
- return_buffers (
bool, isteğe bağlı, varsayılanTrue) — Hafıza ayak izinin hesaplanmasında tampon tensörlerinin boyutunun döndürülüp döndürülmeyeceği. Tamponlar, gradyan gerektirmeyen ve parametre olarak kaydedilmemiş tensörlerdir. Örneğin, batch norm katmanlarındaki ortalama ve standart sapma. Lütfen şuraya bakın: https://discuss.pytorch.org/t/what-pytorch-means-by-buffers/120266/2
Bir modelin bellek ayak izini alın. Bu, mevcut modelin bayt cinsinden bellek ayak izini döndürür. Mevcut modelin bellek ayak izini ölçmek ve bazı testler tasarlamak için faydalıdır. Çözüm, PyTorch tartışmalarından ilham alınarak oluşturulmuştur: https://discuss.pytorch.org/t/gpu-memory-that-model-uses/56822/2
target ile verilen parametreyi veya tamponu (buffer) varsa döndürür, yoksa bir hata fırlatır. Bu, get_parameter() ve get_buffer() işlevlerini tek bir kullanışlı fonksiyonda birleştirir. Hedef bir _extra_state özniteliği ise, modül tarafından sağlanan ek durumu döndürür. Dikkat edin, bu yalnızca target modelin bir yaprağı (leaf) ise çalışır.
activation_checkpointing_disable() için kullanımdan kaldırılmış bir takma ad, v6'da kaldırılacaktır.
activation_checkpointing_enable() için kullanımdan kaldırılmış bir takma ad, v6'da kaldırılacaktır.
Gerekirse ağırlıkları başlatın ve bağlayın. Özel bir PreTrainedModel kullanıyorsanız, başlatma mantığını _init_weights içinde uygulamanız gerekir.
Bu, self.apply(self._initialize_weights) çağrısına eşdeğerdir ancak bileşik modelleri doğru şekilde işler.
Bu işlev, modül grafiğinde özyineleme boyunca ilerledikçe modüllere doğru init_weights işlevini dinamik olarak yönlendirir. Belirli bir sayıda alt modelle başa çıkabilir. Bu işlev olmadan, her bileşik modelin en dıştaki _init_weights içinde tüm alt modeller üzerinde açıkça ikinci kez özyinelemesi gerekir ki bu son derece hata yapmaya yatkın ve verimsizdir.
Mevcut modelin özel kod olup olmadığını, yani kodun hub'dan yüklenmiş olup olmadığını veya herhangi bir kullanıcıya özel modül/oturumda tanımlanmış olup olmadığını döndürür.
Mevcut modelin özel kod olup olmadığını, yani hub'dan yüklenen kod veya register_for_auto_class ile kaydettiğimiz sınıf olup olmadığını döndürür.
Daha sonra bağlanacak (dolanacak) parametreler üzerinde _is_hf_initialized bayrağını ekler, böylece bunların başlatılması (inits) gereksiz yere yapılmaz.
Bu çok önemlidir çünkü çoğu gömme (embedding) bağlıdır ve bunlar devasa parametrelerdir (kelime dağları genellikle 256k'dır), dolayısıyla bunlar üzerinde başlatma işlemlerini çalıştırmak çok maliyetlidir.
named_buffers'a benzer, ancak yalnızca kalıcı olmayanları döndürür. Kalıcı olup olmadıklarını bilmek her zaman o kadar da açık olmadığından, bu özellik işe yarar.
Her Transformer modelinin başlatılmasının sonunda çalıştırılan, modelin modüllerinin düzgün şekilde başlatılmasını gerektiren kodu (ağırlık başlatma gibi) çalıştırmak için kullanılan bir yöntem. Bileşik modellerde (yani üst düzey modelin, bu özellikleri çocuklarından bilmesi gerektiği durumlarda) tüm doğru statik özelliklerin (paralelleştirme planları, tied_weights_keys, _keep_in_fp32_modules vb.) doğru şekilde elde edilmesi için de kullanılır.
register_for_auto_class
< source >( auto_class = 'AutoModel' )
Bu sınıfı, verilen bir otomatik sınıf ile kaydedin. Bu, kütüphanedeki sınıflar zaten bir otomatik sınıf ile eşlenmiş olduğu için yalnızca özel modeller için kullanılmalıdır.
resize_token_embeddings
< source >( new_num_tokens: int | None = Nonepad_to_multiple_of: int | None = Nonemean_resizing: bool = True ) → torch.nn.Embedding
Parametreler
- new_num_tokens (
int, isteğe bağlı) — Gömme matrisindeki yeni token sayısı. Boyutu artırmak, sona yeni başlatılmış vektörler ekler. Boyutu azaltmak, vektörleri sondan kaldırır. Verilmezse veyaNoneise, hiçbir işlem yapmadan modelintorch.nn.Embeddingmodülündeki girdi tokenlerine bir işaretçi döndürür. - pad_to_multiple_of (
int, isteğe bağlı) — Belirlenirse, gömme matrisi verilen değerin katına doldurulur.new_num_tokensdeğeriNoneolarak ayarlanırsa, gömme yalnızcapad_to_multiple_of.Bu, özellikle hesaplama yeteneği
>= 7.5(Volta) olan NVIDIA donanımlarında Tensor Core kullanımını etkinleştirmek veya 128'in katları olan dizi uzunluklarından faydalanan TPU'lar için son derece faydalıdır. Bu konudaki daha fazla ayrıntı için veya yeniden boyutlandırma için doğru değeri seçme konusunda yardım için bu kılavuza başvurun: https://docs.nvidia.com/deeplearning/performance/dl-performance-matrix-multiplication/index.html#requirements-tc - mean_resizing (
bool) — Eklenecek gömme değerlerinin, eski gömme değerlerinin ortalamasına ve kovaryansına sahip çok değişkenli normal dağılımdan mı yoksa ortalaması sıfır ve standart sapmasıconfig.initializer_range.mean_resizingparametresiniTrueolarak ayarlamak, nedensel dil modellerinin gömme boyutlarını büyütürken faydalıdır; çünkü yeni gömme vektörleri, eski gömme vektörlerinin ortalamasıyla başlatıldığında, yeni gömme vektörleri eklenmeden önce ve sonra bir sonraki token olasılığı arasındaki kl-divergence azalacağından, üretilen tokenlerin olasılıkları eklenen gömme vektörlerinden etkilenmez. Daha fazla bilgi için bu makaleye bakın: https://nlp.stanford.edu/~johnhew/vocab-expansion.html
Dönüş değeri
torch.nn.Embedding
Modelin girdi token'ları Gömme Modülü'ne işaretçi.
new_num_tokens != config.vocab_size ise modelin girdi token gömme matrisini yeniden boyutlandırır.
Model sınıfının tie_weights() metodu varsa, sonrasında ağırlık gömme bağlamasını (weight tying) gerçekleştirir.
save_pretrained
< source >( save_directory: str | os.PathLikeis_main_process: bool = Truestate_dict: dict | None = Nonepush_to_hub: bool = Falsemax_shard_size: int | str = '50GB'variant: str | None = Nonetoken: str | bool | None = Nonesave_peft_format: bool = Truesave_original_format: bool = Truedistributed_checkpoint: bool = False**kwargs )
Parametreler
- save_directory (
strveyaos.PathLike) — Kaydedilecek dizin. Var değilse oluşturulur. - is_main_process (
bool, isteğe bağlı, varsayılanTrue) — Bu fonksiyonu çağıran sürecin ana süreç olup olmadığı. TPU'lar gibi dağıtık eğitim senaryolarında ve bu fonksiyonun tüm süreçlerde çağrılması gerektiğinde kullanışlıdır. Bu durumda, yarış durumlarını (race condition) önlemek içinis_main_process=Truedeğerini yalnızca ana süreçte ayarlayın. - state_dict (
torch.Tensoriçeren iç içe sözlük) — Kaydedilecek modelin durum sözlüğü. Varsayılan olarakself.state_dict()kullanılır, ancak modelin yalnızca belirli kısımlarının kaydedilmesi veya modelin durum sözlüğünün geri yüklenirken özel önlemler alınması gerektiğinde (model paralelliği kullanılırken olduğu gibi) kullanılabilir. - push_to_hub (
bool, isteğe bağlı, varsayılanFalse) — Modelinizi kaydettikten sonra Hugging Face model hub'ına gönderip göndermeyeceğinizi belirtir. Göndermek istediğiniz depoyurepo_idile belirtebilirsiniz (varsayılan olarak ad alanınızdakisave_directoryadını kullanır). - max_shard_size (
intveyastr, isteğe bağlı, varsayılan olarak"50GB") — Bir checkpoint'in parçalanmadan önceki maksimum boyutu. Parçalanan checkpoint'lerin her biri bu boyuttan küçük olacaktır. Dize olarak ifade ediliyorsa, birimden (örneğin"5MB").Modelin tek bir ağırlığı
max_shard_sizedeğerinden büyükse, kendi checkpoint diliminde yer alır ve bu dilimmax_shard_sizedeğerinden büyük olur. - variant (
str, isteğe bağlı) — Belirtilirse, ağırlıklar model..safetensors biçiminde kaydedilir. - token (
strveyabool, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton.Trueise veya belirtilmezse,hf auth loginçalıştırıldığında oluşturulan jeton (~/.huggingfaceiçinde saklanır) kullanılır. - save_peft_format (
bool, isteğe bağlı, varsayılanTrue) — PEFT kütüphanesiyle geriye dönük uyumluluk için, modelde adaptör ağırlıkları varsa, adaptörlerin durum sözlüğündeki tüm anahtarların başınabase_model.modeleklenmelidir. Gelişmiş kullanıcılar,save_peft_formatdeğeriniFalseolarak ayarlayarak bu davranışı devre dışı bırakabilir. - save_original_format (
bool, isteğe bağlı, varsayılanTrue) —transformers'in önceki sürümleriyle geriye dönük uyumluluk için kontrol noktasını ters eşlemesiyle birlikte kaydedebilirsiniz. Model, None eski bir kontrol noktasından yüklendiğinde bile ters eşlemenin var olması gerekir. - distributed_checkpoint (
bool, isteğe bağlı, varsayılanFalse) — FSDP veya TP ile bölünmüş bir modeli kaydederken, ağırlıkları önce CPU'ya toplamak yerine dağıtık denetim noktası (DCP) ile safetensors yazdırır. Her rank bu yöntemi çağırmalıdır.Falseolduğunda, yazdırılmadan önce ağırlıklargather_full_state_dictile rank 0'da CPU'ya toplanır. Yalnızca eğitimden kaydetmek ve kaldırmak için tasarlanmıştır; tamsave_pretrainedözelliklerini istiyorsanızFalseolarak ayarlayın.push_to_hub=Trueile rank 0, denetim noktasınıconsolidated/alt dizininde birleştirir ve bu dizini yükler.torch>=2.7gerektirir. - kwargs (
dict[str, Any], isteğe bağlı) — push_to_hub() yöntemine iletilen ek anahtar kelime argümanları.
Bir modeli ve yapılandırma dosyasını bir dizine kaydedin; böylece from_pretrained() sınıf yöntemi kullanılarak yeniden yüklenebilir.
set_attn_implementation
< source >( attn_implementation: str | dictallow_all_kernels: bool = False )
Parametreler
- attn_implementation (
strveyadict) — Bu model için ayarlanacak dikkat uygulaması. Birstrolabilir; bu durumda ilgili tüm alt modellere yönlendirilir. Ya da anahtarları sub_configs adları olan birdictolabilir; bu durumda her alt model, kendisine ve içindeki tüm alt modellere karşılık gelen değeri yönlendirir. Bir değer, aynı formatta birdictde olabilir; bu, o alt modelin sub_configs'lerini hedeflemek içindir (iç içe geçmiş birattn_implementationdict'i ile bir config başlatırken olduğu gibi). - allow_all_kernels (
bool, isteğe bağlı) —attn_implementation,kernels-communityhub deposunun dışında özel bir çekirdekse, doğrulanmamış hub depolarından çekirdeklerin yüklenip yüklenmeyeceğini belirtir.
Bu model için istenen attn_implementation değerini ayarlayın.
Simetrik ayarlayıcı. get_decoder içinde kullanılan arama mantığını yansıtır.
Simetrik ayarlayıcı. get_encoder içinde kullanılan arama mantığını yansıtır.
set_experts_implementation
< source >( experts_implementation: str | dict )
Bu model için istenen experts_implementation değerini ayarlayın.
set_use_kernels
< source >( use_kernelskernel_config: transformers.utils.kernel_config.KernelConfig | None = Nonemode: Mode | None = None )
Parametreler
- use_kernels (
bool) — Modelin bazı katmanlarını kernelize etmek içinkernelskütüphanesinin kullanılıp kullanılmayacağı. - kernel_config (
KernelConfig, isteğe bağlı) — Modeli kernelize etmek için kullanılacak kernel yapılandırması.Noneise varsayılan kernel eşlemesi kullanılır. - mode (
Mode, isteğe bağlı) —kernelizesırasında uygulanacak mod. İsteğe bağlıdır; varsayılan olarak, dahilitrainingbayrağına göre eğitim veya çıkarım modu olarak ayarlanır.
Modelin bazı katmanlarını çekirdeklemek için kernels kütüphanesinin kullanılıp kullanılmayacağını belirleyin.
Model ağırlıklarını bağlayın. recompute_mapping=False ise (içsel olarak çağrıldığında varsayılan), bağlı parametreler için {target: source} eşlemesini içeren model.all_tied_weights_keys özniteliğine güvenecektir.
recompute_mapping=True ise, bağlanması gereken parametreleri belirlemek için tüm iç alt modelleri ve yapılandırmalarını yeniden kontrol edecektir. Bu, yapılandırma değerleri bir yerde değiştirilmiş olabileceğinden, __init__ ve from_pretrained dışında model.tie_weights() tek başına çağrıldığında varsayılandır.
Not edin ki from_pretrained sırasında bağlama işlemi simetriktir: eşleme “tie target -> source” derken source checkpoint'te eksikse ve target mevcutsa, her şeyi aslında var olan parametreye bağlayabilmek için kaynak ve hedefi değiştiririz.
Noktalı bir yol için sahte bir değer (ör. torch.float32): öznitelik erişim zincirleri, çağrılar geçiş (pass-through) dekoratörleri gibi davranır, repr noktalı yoldur ve bir taban sınıf olarak kullanıldığında düz bir type tabanı yerine geçer (PEP 560 __mro_entries__), böylece gerçek alt sınıflar normal bir meta sınıfı korur ve inspect.signature sahtenin yerine gerçek __init__ değerlerini okur.
Girdi input_ids dolgular içeriyor gibi görünüyorsa ve dikkat maskesi verilmediyse, tek seferlik bir uyarı gösterir.
Özel modeller, superfast init'in ilgili modele uygulanıp uygulanamayacağını belirleyen _supports_assign_param_buffer öğesini de içermelidir. Modelinizin buna ihtiyacı olduğuna dair işaretler, test_save_and_load_from_pretrained başarısız olduğunda görülür. Bu durumda, bu değeri False olarak ayarlayın.
ModuleUtilsMixin
torch.nn.Modules için, bir mixin olarak kullanılacak birkaç yardımcı araç.
num_parameters
< source >( only_trainable: bool = Falseexclude_embeddings: bool = False ) → int
Modüldeki (isteğe bağlı olarak, eğitilebilir veya gömme olmayan) parametre sayısını alın.
Hub'a İtme
Hub'a bir model veya tokenizer gönderme işlevselliğini içeren bir Mixin.
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Parametreler
- repo_id (
str) — {object} nesnesini göndermek istediğiniz depoyun adı. Belirli bir organizasyona gönderim yaparken organizasyon adınızı içermelidir. - commit_message (
str, isteğe bağlı) — İterken iletilecek mesaj. Varsayılan olarak"Upload {object}"olur. - commit_description (
str, isteğe bağlı) — Oluşturulacak commit'in açıklaması - private (
bool, isteğe bağlı) — Deponun özel yapılıp yapılmayacağı.None(varsayılan) ise, organizasyonun varsayılanı özel değilse depo herkese açık olur. Depo zaten mevcutsa bu değer yok sayılır. - token (
boolveyastr, isteğe bağlı) — Uzak dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton.True(varsayılan) ise,hf auth loginçalıştırıldığında oluşturulan jeton (~/.huggingfaceiçinde saklanır) kullanılır. - revision (
str, isteğe bağlı) — Yüklenen dosyaların itileceği dal. - create_pr (
bool, isteğe bağlı, varsayılanFalse) — Yüklenen dosyalarla bir PR oluşturulup oluşturulmayacağı veya doğrudan commit atılıp atılmayacağı. - max_shard_size (
intveyastr, isteğe bağlı, varsayılan"50GB") — Yalnızca modeller için geçerlidir. Bir kontrol noktasının parçalanmadan önceki maksimum boyutu. Parçalanan kontrol noktalarının her biri bu boyuttan küçük olacaktır. Bir dize olarak ifade ediliyorsa, birimden (ör."5MB") önce rakamlar içermelidir. - tags (
list[str], isteğe bağlı) — Hub'a itilecek etiketlerin listesi.
{object_files} dosyalarını 🤗 Model Hub'a yükleyin.
Örnekler:
from transformers import {object_class}
{object} = {object_class}.from_pretrained("google-bert/bert-base-cased")
# Push the {object} to your namespace with the name "my-finetuned-bert".
{object}.push_to_hub("my-finetuned-bert")
# Push the {object} to an organization with the name "my-finetuned-bert".
{object}.push_to_hub("huggingface/my-finetuned-bert")