Transformers documentation
Model
Model
Kelas dasar PreTrainedModel mengimplementasikan metode umum untuk memuat/menyimpan model baik dari file atau direktori lokal, maupun dari konfigurasi model pretrained yang disediakan oleh pustaka (diunduh dari HuggingFace’s Hub).
PreTrainedModel juga mengimplementasikan beberapa metode yang umum di antara semua model untuk:
- ubah ukuran embedding token input ketika token baru ditambahkan ke dalam kosakata
Metode lain yang umum untuk setiap model didefinisikan di ModuleUtilsMixin dan GenerationMixin.
PreTrainedModel
Kelas dasar untuk semua model.
PreTrainedModel menangani penyimpanan konfigurasi model serta menangani metode untuk memuat, mengunduh, dan menyimpan model, serta beberapa metode yang umum untuk semua model:
- resize embedding input
Atribut kelas (ditimpa oleh kelas turunan):
- config_class (PreTrainedConfig) — Subkelas dari PreTrainedConfig yang digunakan sebagai kelas konfigurasi untuk arsitektur model ini.
- base_model_prefix (
str) — String yang menunjukkan atribut yang terkait dengan model dasar pada kelas turunan dari arsitektur yang sama yang menambahkan modul di atas model dasar. - main_input_name (
str) — Nama input utama model (sering kaliinput_idsuntuk model NLP,pixel_valuesuntuk model visi, daninput_valuesuntuk model ucapan). - 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 )
Parameter
- repo_id (
str) — Nama repositori tempat Anda ingin mendorong model Anda. Seharusnya berisi nama organisasi Anda saat mendorong ke organisasi tertentu. - commit_message (
str, opsional) — Pesan untuk commit saat push. Secara default akan menjadi"Upload model". - commit_description (
str, opsional) — Deskripsi dari commit yang akan dibuat - private (
bool, opsional) — Apakah membuat repo menjadi privat. JikaNone(default), repo akan menjadi publik kecuali default organisasi adalah privat. Nilai ini diabaikan jika repo sudah ada. - token (
boolataustr, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. JikaTrue(default), akan menggunakan token yang dihasilkan saat menjalankanhf auth login(disimpan di~/.huggingface). - revision (
str, opsional) — Cabang untuk mendorong file yang diunggah. - create_pr (
bool, opsional, defaultFalse) — Apakah akan membuat PR dengan file yang diunggah atau langsung melakukan commit. - max_shard_size (
intataustr, opsional, default"50GB") — Hanya berlaku untuk model. Ukuran maksimum checkpoint sebelum di-shard. Setiap shard checkpoint akan memiliki ukuran lebih kecil dari nilai ini. Jika dinyatakan sebagai string, harus berupa angka diikuti satuan (seperti"5MB"). - tags (
list[str], opsional) — Daftar tag untuk didorong ke Hub.
Unggah file model ke 🤗 Model Hub.
Contoh:
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")Menonaktifkan aktivasi checkpointing untuk model saat ini.
activation_checkpointing_enable
< source >( activation_checkpointing_kwargs = Noneevery_n_layers: int = 1offload: bool = False )
Parameter
- every_n_layers (
int, opsional, default 1) — Buat checkpoint hanya setiapevery_n_layerslapisan decoder, sementara sisanya tetap menyimpan aktivasi.1membuat checkpoint untuk setiap lapisan, yang merupakan perilaku all-or-nothing yang umum. Nilai yang lebih besar menukar memori kembali dengan kecepatan, yang sepadan setiap kali memori yang dibebaskan oleh checkpoint penuh tidak terpakai. - offload (
bool, opsional, defaultFalse) — Simpan aktivasi yang disimpan untuk recompute di memori host yang di-pin alih-alih di akselerator. Ini membebaskanlayers x sequence x hiddenbyte memori perangkat, yang mendominasi pada panjang sekuens yang panjang, dan menimbulkan biaya salinan perangkat-ke-host di forward dan salinan host-ke-perangkat di backward. Kedua salinan berjalan di stream komputasi, sehingga langkah menjadi lebih lambat. - activation_checkpointing_kwargs (dict, opsional) —
Argumen kata kunci tambahan yang diteruskan ke fungsi
torch.utils.checkpoint.checkpoint.
Mengaktifkan activation checkpointing untuk model saat ini.
Kami melewatkan metode __call__ dari modul, bukan forward, karena __call__ menempelkan semua hook dari modul tersebut. https://discuss.pytorch.org/t/any-different-between-model-input-and-model-forward-input/3690/2
add_model_tags
< source >( tags: list[str] | str )
Tambahkan tag kustom ke model yang didorong ke Hugging Face Hub. Tidak akan menimpa tag yang sudah ada di model.
can_generate
< source >( ) → bool
Mengembalikan
bool
Apakah model ini dapat menghasilkan rangkaian dengan .generate().
Mengembalikan apakah model ini dapat menghasilkan rangkaian dengan .generate(), dari GenerationMixin atau yang memiliki antarmuka serupa.
Di balik layar, pada kelas di mana fungsi ini mengembalikan True, beberapa perubahan yang spesifik untuk generasi dipicu:
misalnya, instance model akan memiliki atribut generation_config yang terisi.
Nilai mock untuk jalur bertitik (mis. torch.float32): rantai akses atribut,
pemanggilan berperilaku sebagai dekorator pass-through, repr adalah jalur bertitik, dan
penggunaannya sebagai kelas dasar menggantikan kelas dasar type polos (PEP 560 __mro_entries__), sehingga
subkelas asli tetap mempertahankan metakelas normal dan inspect.signature membaca __init__ asli mereka, bukan milik mock.
Potensi dekuantisasi model jika model tersebut telah dikuantisasi dengan metode kuantisasi yang mendukung dekuantisasi.
Menghapus _require_grads_hook.
Mengaktifkan gradien untuk input embeddings. Hal ini berguna untuk fine-tuning bobot adapter sambil menjaga bobot model tetap tetap.
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 )
Parameter
- pretrained_model_name_or_path (
stratauos.PathLike, opsional) — Dapat berupa:- String, model id dari model pretrained yang dihosting di dalam model repo di huggingface.co.
- Path ke direktori yang berisi bobot model yang disimpan menggunakan
save_pretrained(), misalnya
./my_model_directory/. Direktori yang disimpan dengansave_pretrained(..., distributed_checkpoint=True)akan terdeteksi dan dimuat dengan distributed checkpointing (DCP), mempertahankan mesh dan penempatan saat ini dari model. Hal ini membutuhkantorch>=2.7dan memuat secara ketat: setiap kunci model harus ada di checkpoint. Nonejika Anda menyediakan konfigurasi dan kamus state (masing-masing dengan argumen kata kunciconfigdanstate_dict).
- model_args (urutan argumen posisional, opsional) —
Semua argumen posisional yang tersisa akan diteruskan ke metode
__init__model yang mendasarinya. - config (
Union[PreTrainedConfig, str, os.PathLike], opsional) — Dapat berupa:- sebuah instance dari kelas yang diturunkan dari PreTrainedConfig,
- string atau path yang valid sebagai input untuk from_pretrained().
Konfigurasi untuk model yang akan digunakan sebagai pengganti konfigurasi yang dimuat secara otomatis. Konfigurasi dapat dimuat secara otomatis ketika:
- Model tersebut adalah model yang disediakan oleh pustaka (dimuat dengan string model id dari model pretrained).
- Model disimpan menggunakan save_pretrained() dan dimuat ulang dengan menyediakan direktori penyimpanan.
- Model dimuat dengan menyediakan direktori lokal sebagai
pretrained_model_name_or_pathdan file konfigurasi JSON bernama config.json ditemukan di direktori tersebut.
- state_dict (
dict[str, torch.Tensor], opsional) — Kamus state untuk digunakan sebagai pengganti kamus state yang dimuat dari file bobot yang disimpan. Opsi ini dapat digunakan jika Anda ingin membuat model dari konfigurasi pretrained tetapi memuat bobot Anda sendiri. Namun, dalam kasus ini, Anda sebaiknya memeriksa apakah menggunakan save_pretrained() dan from_pretrained() bukan opsi yang lebih sederhana.Opsi ini dapat digunakan jika Anda ingin membuat model dari konfigurasi pretrained tetapi memuat bobot Anda sendiri. Namun, dalam kasus ini, Anda sebaiknya memeriksa apakah menggunakan save_pretrained() dan from_pretrained() bukan merupakan opsi yang lebih sederhana.
- cache_dir (
Union[str, os.PathLike], opsional) — Path ke direktori tempat konfigurasi model pretrained yang diunduh harus di-cache jika cache standar tidak digunakan. - ignore_mismatched_sizes (
bool, opsional, defaultFalse) — Apakah akan melempar error jika beberapa bobot dari checkpoint tidak memiliki ukuran yang sama dengan bobot model (misalnya, jika Anda menginstansiasi model dengan 10 label dari checkpoint dengan 3 label). - force_download (
bool, opsional, defaultFalse) — Apakah akan memaksa (mengunduh ulang) bobot model dan file konfigurasi, menimpa versi yang sudah di-cache jika ada. - proxies (
dict[str, str], opsional) — Kamus server proxy yang digunakan berdasarkan protokol atau endpoint, misalnya{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Proxy digunakan pada setiap permintaan. - output_loading_info(
bool, opsional, defaultnyaFalse) — Apakah akan mengembalikan juga kamus yang berisi kunci yang hilang, kunci yang tidak terduga, dan pesan kesalahan. - local_files_only(
bool, opsional, defaultnyaFalse) — Apakah hanya melihat file lokal (yaitu, tidak mencoba mengunduh model). - token (
strataubool, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. JikaTrue, atau tidak ditentukan, akan menggunakan token yang dihasilkan saat menjalankanhf auth login(disimpan di~/.huggingface). - revision (
str, opsional, default ke"main") — Versi model spesifik yang akan digunakan. Bisa berupa nama branch, nama tag, atau commit id, karena kami menggunakan sistem berbasis git untuk menyimpan model dan artefak lainnya di huggingface.co, jadirevisionbisa berupa identifikasi apa pun yang diizinkan oleh git.Untuk menguji pull request yang Anda buat di Hub, Anda dapat meneruskan
revision="refs/pr/<pr_number>". - attn_implementation (
str, opsional) — Implementasi attention yang akan digunakan dalam model (jika relevan). Bisa berupa salah satu dari"eager"(implementasi manual dari perhatian)"sdpa"(menggunakanF.scaled_dot_product_attention)"flash_attention_2"(menggunakan Dao-AILab/flash-attention)"flash_attention_3"(menggunakan Dao-AILab/flash-attention/hopper)"flash_attention_4"(menggunakan Dao-AILab/flash-attention/flash_attn/cute). Secara default, jika tersedia, SDPA akan digunakan. Jika tidak, defaultnya adalah implementasi manual"eager".
Terima referensi kernel HF dalam bentuk:
/ [@ ][: ] dan adalah urutan apa pun yang bukan "/" dan bukan ":". - “@
” bersifat opsional (branch, tag, atau commit-ish), misalnya “@main”, “@v1.2.0”, “@abc123”. - ”:
” bersifat opsional dan memilih fungsi di dalam repo kernel. - Kedua opsi dapat muncul bersama dan hanya dalam urutan ini: @revision terlebih dahulu, kemudian :kernel_name.
- Kami sengaja mengizinkan prefiks ”
|” di awal (misalnya, “flash|…”) karena kode akan menghapusnya sebelum dimuat; karakter ’|’ tidak dikecualikan dalam kelas karakter di sini.
Contoh yang cocok: “org/model” “org/model@main” “org/model:custom_kernel” “org/model@v1.2.3:custom_kernel”
- experts_implementation (
str, opsional) — Implementasi experts yang akan digunakan dalam model (jika relevan). Bisa berupa salah satu dari:"eager"(implementasi berurutan dari perkalian matriks para ahli)."batched_mm"(menggunakantorch.bmm)."grouped_mm"(menggunakantorch.nn.functional.grouped_mm).
Secara default, jika model mendukungnya,
"grouped_mm"akan digunakan. Jika tidak, defaultnya adalah implementasi manual"eager".
Parameter untuk inferensi model besar
- dtype (
stratautorch.dtype, opsional, defaultnya"auto") — Timpa defaulttorch_dtypedan muat model dengandtype. Opsi yang tersedia:-
torch.float16atautorch.bfloat16atautorch.float: memuat dalamdtypeyang ditentukan, mengabaikanconfig.dtypemodel jika ada. Jika tidak ditentukan- model akan dimuat dalam
torch.float(fp32).
- model akan dimuat dalam
-
"auto"- Entridtypeatautorch_dtypedalam fileconfig.jsonmodel akan dicoba untuk digunakan. Jika entri ini tidak ditemukan, maka langkah berikutnya adalah memeriksadtypedari bobot pertama dalam checkpoint yang bertipe floating point dan menggunakannya sebagaidtype. Hal ini akan memuat model menggunakandtypeyang digunakan saat model disimpan di akhir pelatihan. Nilai ini tidak dapat dijadikan indikator tentang bagaimana model tersebut dilatih. Karena model mungkin dilatih dengan salah satu dtype presisi setengah, tetapi disimpan dalam fp32. -
String yang merupakan
torch.dtypeyang valid. Misalnya, “float32” memuat model dalamtorch.float32, “float16” memuat dalamtorch.float16, dan seterusnya.
Untuk beberapa model,
dtypeyang digunakan saat pelatihan tidak diketahui - Anda dapat mencoba memeriksa makalah model tersebut atau menghubungi para pengembangnya dan meminta mereka untuk menambahkan informasi ini ke kartu model serta menyisipkan entridtypeatautorch_dtypediconfig.jsonpada hub. -
- device_map (
strataudict[str, Union[int, str, torch.device]]atauintatautorch.device, opsional) — Peta yang menentukan ke perangkat mana setiap submodul harus ditempatkan. Peta ini tidak perlu dirinci hingga nama parameter/buffer; begitu nama modul tertentu dimasukkan, semua submodul di dalamnya akan dikirim ke perangkat yang sama. Jika hanya perangkat yang diberikan (e.g.,"cpu","cuda:1","mps", atau peringkat ordinal GPU seperti1) yang akan digunakan untuk alokasi model, peta perangkat akan memetakan seluruh model ke perangkat ini. Mengirimkandevice_map = 0berarti menempatkan seluruh model di GPU 0.Untuk membuat Accelerate menghitung
device_mapyang paling teroptimasi secara otomatis, aturdevice_map="auto". Untuk informasi lebih lanjut tentang setiap opsi, lihat mendesain device map. - max_memory (
Dict, opsional) — Kamus pengidentifikasi perangkat ke memori maksimum jika menggunakandevice_map. Akan secara default menggunakan memori maksimum yang tersedia untuk setiap GPU dan RAM CPU yang tersedia jika tidak disetel. - distributed_config (DistributedConfig, opsional) —
Konfigurasi untuk pemuatan terdistribusi native dengan tensor parallelism atau FSDP2. Luluskan
DistributedConfig(tp_size=N)untuk menggunakan rencana tensor parallel yang telah ditentukan sebelumnya pada model,DistributedConfig(tp_plan=...)untuk menentukan rencana tensor parallel, atauDistributedConfig(fsdp_size=N)untuk FSDP2. Memerlukantorchrundan grup proses yang telah diinisialisasi ketikatp_size > 1ataufsdp_size > 1. Saling eksklusif dengandevice_map. - device_mesh (
torch.distributed.DeviceMesh, opsional) — Mesh perangkat torch. Jika tidak disediakan, akan secara default menggunakan world size. Saat ini hanya digunakan untuk tensor parallel. Jika disediakan, harus berisi dimensi bernama"tp"jika dimensinya > 1, dimensi ini akan digunakan untuk tensor parallelism - offload_folder (
stratauos.PathLike, opsional) — Jikadevice_mapberisi nilai"disk", folder tempat bobot akan di-offload. - offload_buffers (
bool, opsional) — Apakah buffer dengan parameter model akan di-offload atau tidak. - quantization_config (
Union[QuantizationConfigMixin,Dict], opsional) — Kamus parameter konfigurasi atau objek QuantizationConfigMixin untuk kuantisasi (misalnya bitsandbytes, gptq). - subfolder (
str, opsional, defaultnya"") — Jika file yang relevan berada di dalam subfolder dari repo model di huggingface.co, Anda dapat menentukan nama folder di sini. - variant (
str, opsional) — Jika ditentukan, muat bobot dari nama filevariant, mis. pytorch_model..bin. - use_safetensors (
bool, opsional, defaultnyaNone) — Apakah akan menggunakan checkpointsafetensorsatau tidak. DefaultnyaNone. Jika tidak ditentukan dansafetensorstidak terinstal, nilainya akan diset keFalse. - weights_only (
bool, opsional, defaultTrue) — Menunjukkan apakah unpickler harus dibatasi untuk hanya memuat tensor, tipe primitif, kamus, dan tipe apa pun yang ditambahkan melalui torch.serialization.add_safe_globals(). Ketika diset ke False, kita dapat memuat bobot subclass tensor wrapper. - disable_mmap (
bool, opsional) — Apakah akan menonaktifkan memory mapping saat memuat checkpoint safetensors. KetikaNone(default), nilainya dideteksi secara otomatis menjadiTrueketika checkpoint berada pada sistem berkas FUSEhf-mount(yang digunakan oleh HF Spaces/Endpoints), di mana mmap + parallel page-faults dapat menyebabkan deadlock. KetikaTrue, file dibaca sepenuhnya ke dalam memori dan diurai dengansafetensors.torch.load. KetikaFalse, loader memory-mapped default selalu digunakan. - fusion_config (
dict[str, bool | dict[str, Any]], opsional) — Konfigurasi fusion opsional yang diterapkan sebelum instansiasi model. Setiap kunci mengaktifkan keluarga fusion dan nilainya bisa berupaTrueuntuk mengaktifkan fusion tersebut dengan opsi default, atau kamus berisi opsi spesifik keluarga. Sebagai contoh,{"patch_embeddings": True}mengaktifkan fusion patch embedding. Ini hanya harus digunakan sebagai optimasi inferensi, karena dapat sedikit mengubah output. Jika diabaikan,from_pretrained()akan kembali keconfig.fusion_configjika tersedia. Lihat panduan pemetaan fusion didocs/source/en/fusion_mapping.mduntuk detail lebih lanjut. - key_mapping (`dict[str, str], opsional) — Pemetaan potensial untuk nama bobot jika menggunakan model di Hub yang kompatibel dengan arsitektur Transformers, tetapi belum dikonversi secara sesuai.
- kwargs (kamus sisa argumen kata kunci, opsional) —
Dapat digunakan untuk memperbarui objek konfigurasi (setelah dimuat) dan menginisiasi model (mis.,
output_attentions=True). berperilaku berbeda tergantung pada apakahconfigdisediakan atau dimuat secara otomatis:- Jika konfigurasi disediakan dengan
config,**kwargsakan diteruskan langsung ke metode__init__dari model yang mendasarinya (kami asumsikan semua pembaruan yang relevan pada konfigurasi sudah dilakukan) - Jika konfigurasi tidak disediakan,
kwargsakan terlebih dahulu diteruskan ke fungsi inisialisasi kelas konfigurasi (from_pretrained()). Setiap kunci darikwargsyang sesuai dengan atribut konfigurasi akan digunakan untuk menimpa atribut tersebut dengan nilaikwargsyang diberikan. Kunci-kunci tersisa yang tidak sesuai dengan atribut konfigurasi apa pun akan diteruskan ke fungsi__init__model yang mendasarinya.
- Jika konfigurasi disediakan dengan
Instansiasi model pytorch pretrained dari konfigurasi model pre-trained.
Model secara default diatur dalam mode evaluasi menggunakan model.eval() (modul Dropout dinonaktifkan). Untuk melatih model, Anda harus terlebih dahulu mengembalikannya ke mode pelatihan dengan model.train().
Peringatan Weights from XXX not initialized from pretrained model berarti bahwa bobot dari XXX tidak disertakan sebagai pralatih bersama bagian lain dari model. Anda yang bertanggung jawab untuk melatih bobot tersebut dengan tugas penyesuaian halus (fine-tuning) turunan.
Peringatan Weights from XXX not used in YYY berarti bahwa layer XXX tidak digunakan oleh YYY, sehingga bobot tersebut dibuang.
Aktifkan “offline-mode” khusus untuk menggunakan metode ini di lingkungan yang terisolasi oleh firewall.
Contoh:
>>> 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 )
Kembalikan versi torch.compile dari self.__call__. Hal ini berguna untuk memilih secara dinamis antara
forward yang tidak dikompilasi/dikompilasi selama inferensi, terutama untuk beralih antara prefill (di mana kami tidak
ingin menggunakan versi yang dikompilasi untuk menghindari penghitungan ulang graf dengan bentuk baru) dan decoding iteratif
(di mana kami menginginkan percepatan dari versi yang dikompilasi dengan bentuk statis).
Pencarian terbaik (best-effort) untuk modul decoder.
Urutan percobaan (menutupi ~85 % penggunaan saat ini):
self.decoder/self.language_model/self.text_modelself.base_model(banyak wrapper menyimpan decoder di sini)self.base_model.get_decoder()(wrapper bersarang)- fallback: raise untuk beberapa model eksotis yang memerlukan aturan khusus
Pencarian terbaik (best-effort) untuk modul encoder. Jika diberikan argumen modality,
fungsi ini mencari encoder yang spesifik untuk modalitas pada model multimodal (misalnya “image_encoder”).
Secara default, fungsi ini mengembalikan encoder teks model jika ada, dan jika tidak, mengembalikan self.
Nilai modality yang mungkin adalah “image”, “video”, dan “audio”.
Kembalikan kunci bobot terikat yang diperluas (jika berisi modul atau pola regex) hanya untuk model saat ini, atau secara rekursif untuk semua submodel jika all_submodels=True (yaitu, nilai konfigurasi untuk semua submodel akan diperiksa ulang).
Untuk hampir semua model, kami hanya perlu mengikat embedding, sehingga model memiliki properti internal _tied_weights_keys = {"lm_head.weight": "model.embed_tokens.weight"}. Dalam kasus ini, pemetaan sudah
“diperluas”, yaitu sudah berisi parameter lengkap, dan fungsi ini akan sekadar mengembalikan salinan dari properti tersebut.
Untuk pola yang lebih kompleks, misalnya untuk DFineForObjectDetection, kami memiliki atribut berikut
_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",
}mengembalikan hal berikut:
{
'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',
...
}Kembalikan implementasi pakar dari model ini dan submodelnya, sebagai dict dalam bentuk yang diterima oleh set_experts_implementation ("" untuk model ini, dan satu entri per sub_config). Ini adalah pasangan dari set_experts_implementation, misalnya untuk mengambil snapshot implementasi saat ini dan memulihkannya kemudian.
get_memory_footprint
< source >( return_buffers = True )
Parameter
- return_buffers (
bool, opsional, defaultnyaTrue) — Apakah akan mengembalikan ukuran tensor buffer dalam perhitungan jejak memori. Buffer adalah tensor yang tidak memerlukan gradien dan tidak terdaftar sebagai parameter. Misalnya, mean dan std pada lapisan batch norm. Silakan lihat: https://discuss.pytorch.org/t/what-pytorch-means-by-buffers/120266/2
Dapatkan jejak memori (memory footprint) dari sebuah model. Ini akan mengembalikan jejak memori dari model saat ini dalam byte. Berfungsi untuk melakukan benchmark jejak memori dari model saat ini dan merancang beberapa pengujian. Solusi terinspirasi dari diskusi PyTorch: https://discuss.pytorch.org/t/gpu-memory-that-model-uses/56822/2
Kembalikan parameter atau buffer yang diberikan oleh target jika ada, jika tidak lempar error. Fungsi ini menggabungkan get_parameter() dan get_buffer() dalam satu fungsi yang praktis. Jika target adalah atribut _extra_state,
fungsi ini akan mengembalikan extra state yang disediakan oleh modul. Perhatikan bahwa ini hanya berfungsi jika target adalah daun dari model.
Alias yang tidak didukung lagi dari activation_checkpointing_disable(), akan dihapus di v6.
Alias yang tidak didukung lagi dari activation_checkpointing_enable(), akan dihapus di v6.
Inisialisasi dan ikat bobot jika diperlukan. Jika menggunakan PreTrainedModel kustom, Anda perlu mengimplementasikan logika inisialisasi apa pun di _init_weights.
Ini setara dengan memanggil self.apply(self._initialize_weights), tetapi menangani model komposit dengan benar.
Fungsi ini secara dinamis mendispatch fungsi init_weights yang tepat ke modul-modul saat kita maju di
graf modul sepanjang rekursi. Fungsi ini dapat menangani jumlah sub-model yang arbitrer. Tanpanya, setiap model
komposit harus melakukan rekursi kedua pada semua sub-model secara eksplisit di _init_weights terluar, yang
sangat rawan kesalahan dan tidak efisien.
Mengembalikan apakah model saat ini adalah kode kustom, yaitu kode yang dimuat dari hub, atau yang didefinisikan di modul/sesi khusus pengguna mana pun.
Mengembalikan apakah model saat ini adalah kode kustom, yaitu kode yang dimuat dari hub, atau kelas yang baru saja didaftarkan melalui register_for_auto_class.
Menambahkan flag _is_hf_initialized pada parameter yang akan diikat, untuk menghindari inisialisasi mereka
kemudian karena mereka akan diikat (ditimpa) anyway.
Hal ini sangat penting karena sebagian besar embedding diikat, dan mereka adalah parameter yang besar (kosakata sering kali 256k), sehingga
menjalankan inisialisasi pada mereka sangat mahal.
Mirip dengan named_buffers, tetapi hanya menghasilkan yang non-persisten. Hal ini berguna karena tidak sepenuhnya mudah untuk mengetahui apakah buffer tersebut persisten atau tidak.
Metode yang dijalankan di akhir inisialisasi setiap model Transformer, untuk mengeksekusi kode yang membutuhkan modul model terinisialisasi dengan benar (seperti inisialisasi bobot). Metode ini juga digunakan untuk memperoleh semua properti statis yang benar (parallelism plans, tied_weights_keys, _keep_in_fp32_modules, dll) dengan tepat dalam kasus model komposit (yaitu, model tingkat atas harus mengetahui properti tersebut dari anak-anaknya).
register_for_auto_class
< source >( auto_class = 'AutoModel' )
Daftarkan kelas ini dengan kelas auto yang diberikan. Ini hanya harus digunakan untuk model kustom karena model-model di dalam pustaka sudah dipetakan dengan kelas auto.
resize_token_embeddings
< source >( new_num_tokens: int | None = Nonepad_to_multiple_of: int | None = Nonemean_resizing: bool = True ) → torch.nn.Embedding
Parameter
- new_num_tokens (
int, opsional) — Jumlah token baru dalam matriks embedding. Meningkatkan ukuran akan menambahkan vektor yang baru diinisialisasi di bagian akhir. Mengurangi ukuran akan menghapus vektor dari bagian akhir. Jika tidak diberikan atauNone, hanya mengembalikan pointer ke modultorch.nn.Embeddingtoken input dari model tanpa melakukan apa pun. - pad_to_multiple_of (
int, opsional) — Jika diset, matriks embedding akan di-pad hingga menjadi kelipatan dari nilai yang diberikan. Jikanew_num_tokensdiset keNonehanya akan mem-pad embedding menjadi kelipatan daripad_to_multiple_of.Ini sangat berguna untuk memungkinkan penggunaan Tensor Cores pada perangkat keras NVIDIA dengan compute capability
>= 7.5(Volta), atau pada TPU yang diuntungkan dari panjang sekuens yang merupakan kelipatan 128. Untuk detail lebih lanjut tentang hal ini, atau bantuan dalam memilih nilai yang benar untuk resizing, lihat panduan ini: https://docs.nvidia.com/deeplearning/performance/dl-performance-matrix-multiplication/index.html#requirements-tc - mean_resizing (
bool) — Apakah inisialisasi embedding yang ditambahkan dilakukan dari distribusi normal multivariat yang memiliki mean dan kovarians dari embedding lama, atau dari distribusi normal dengan mean nol dan std sama denganconfig.initializer_range.Menetapkan
mean_resizingkeTrueberguna saat meningkatkan ukuran embeddings dari model bahasa kausal, di mana probabilitas token yang dihasilkan tidak akan terpengaruh oleh embeddings yang ditambahkan karena menginisialisasi embeddings baru dengan rata-rata embeddings lama akan mengurangi kl-divergence antara probabilitas token berikutnya sebelum dan sesudah penambahan embeddings baru. Lihat artikel ini untuk informasi lebih lanjut: https://nlp.stanford.edu/~johnhew/vocab-expansion.html
Mengembalikan
torch.nn.Embedding
Pointer ke modul Embeddings token input dari model.
Mengubah ukuran matriks embedding token input model jika new_num_tokens != config.vocab_size.
Menangani pengikatan bobot embedding setelahnya jika kelas model memiliki metode tie_weights().
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 )
Parameter
- save_directory (
stratauos.PathLike) — Direktori tempat menyimpan. Akan dibuat jika belum ada. - is_main_process (
bool, opsional, defaultTrue) — Apakah proses yang memanggil ini adalah proses utama atau tidak. Berguna saat pelatihan terdistribusi seperti TPU dan perlu memanggil fungsi ini di semua proses. Dalam kasus ini, setelis_main_process=Truehanya di proses utama untuk menghindari kondisi balapan. - state_dict (nested dictionary of
torch.Tensor) — Kamus status dari model yang akan disimpan. Secara default akan menggunakanself.state_dict(), tetapi dapat digunakan untuk hanya menyimpan sebagian dari model atau jika tindakan pencegahan khusus perlu diambil saat memulihkan kamus status dari sebuah model (seperti saat menggunakan model parallelism). - push_to_hub (
bool, opsional, defaultFalse) — Apakah model Anda akan didorong ke Hugging Face model hub setelah disimpan. Anda dapat menentukan repository yang ingin Anda tuju denganrepo_id(defaultnya adalah namasave_directorydi namespace Anda). - max_shard_size (
intataustr, opsional, defaultnya"50GB") — Ukuran maksimum untuk checkpoint sebelum di-shard. Setiap shard checkpoint kemudian akan berukuran lebih kecil dari ukuran ini. Jika dinyatakan sebagai string, harus berupa angka diikuti oleh satuan (seperti"5MB").Jika satu bobot model lebih besar dari
max_shard_size, bobot tersebut akan berada di shard checkpoint tersendiri yang ukurannya lebih besar darimax_shard_size. - variant (
str, opsional) — Jika ditentukan, bobot disimpan dalam format model..safetensors. - token (
strataubool, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. JikaTrue, atau tidak ditentukan, akan menggunakan token yang dihasilkan saat menjalankanhf auth login(disimpan di~/.huggingface). - save_peft_format (
bool, opsional, defaultTrue) — Untuk kompatibilitas mundur dengan pustaka PEFT, jika bobot adapter terlampir pada model, semua kunci dari state dict adapter perlu diberi awalanbase_model.model. Pengguna lanjutan dapat menonaktifkan perilaku ini dengan mengatursave_peft_formatkeFalse. - save_original_format (
bool, opsional, defaultnyaTrue) — Untuk kompatibilitas mundur dengan versi sebelumnya daritransformers, Anda dapat menyimpan checkpoint dengan pemetaan terbaliknya. Pemetaan terbalik harus ada meskipun model dimuat dari checkpoint legacy None. - distributed_checkpoint (
bool, opsional, defaultFalse) — Saat menyimpan model yang di-shard dengan FSDP atau TP, tulis safetensors dengan distributed checkpointing (DCP) alih-alih mengumpulkan bobot ke CPU terlebih dahulu. Setiap rank harus memanggil metode ini. JikaFalse, bobot dikumpulkan ke CPU pada rank 0 melaluigather_full_state_dictsebelum ditulis. Fitur ini hanya ditujukan untuk menyimpan dan melanjutkan pelatihan; atur keFalsejika Anda menginginkan fitur lengkapsave_pretrained. Denganpush_to_hub=True, rank 0 mengonsolidasikan checkpoint dalam subdirektoriconsolidated/dan mengunggah direktori tersebut. Memerlukantorch>=2.7. - kwargs (
dict[str, Any], opsional) — Argumen kata kunci tambahan yang diteruskan ke metode push_to_hub().
Simpan model dan file konfigurasinya ke sebuah direktori, sehingga dapat dimuat ulang menggunakan metode kelas from_pretrained().
set_attn_implementation
< source >( attn_implementation: str | dictallow_all_kernels: bool = False )
Parameter
- attn_implementation (
strataudict) — Implementasi attention yang akan diset untuk model ini. Nilainya bisa berupastr, yang dalam hal itu akan diteruskan ke semua submodel jika relevan, atau berupadictdi mana kuncinya adalah nama sub_configs, yang dalam hal itu setiap submodel akan meneruskan nilai yang sesuai (ke dirinya sendiri dan semua submodel yang bersarang di dalamnya). Nilainya sendiri bisa berupadictdalam format yang sama, untuk menargetkan sub_configs dari submodel tersebut (seperti saat menginisialisasi config dengan dictattn_implementationyang bersarang). - allow_all_kernels (
bool, opsional) — Apakah akan memuat kernel dari repositori hub yang tidak terverifikasi, jikaattn_implementationadalah kernel kustom di luar repositori hubkernels-community.
Atur attn_implementation yang diminta untuk model ini.
Setter simetris. Meniru logika pencarian yang digunakan di get_decoder.
Setter simetris. Mencerminkan logika pencarian yang digunakan di get_encoder.
set_experts_implementation
< source >( experts_implementation: str | dict )
Parameter
- experts_implementation (
strataudict) — Implementasi experts yang akan diset untuk model ini. Nilainya bisa berupastr, yang dalam hal itu akan diteruskan ke semua submodel jika relevan, ataudictdi mana kuncinya adalah nama sub_configs, yang dalam hal itu setiap submodel akan meneruskan nilai yang sesuai.
Atur experts_implementation yang diminta untuk model ini.
set_use_kernels
< source >( use_kernelskernel_config: transformers.utils.kernel_config.KernelConfig | None = Nonemode: Mode | None = None )
Parameter
- use_kernels (
bool) — Apakah akan menggunakan pustakakernelsuntuk meng-kernelisasi beberapa lapisan model. - kernel_config (
KernelConfig, opsional) — Konfigurasi kernel yang akan digunakan untuk meng-kernelisasi model. JikaNone, pemetaan kernel default akan digunakan. - mode (
Mode, optional) — The mode that should be applied duringkernelize. Optional, defaults to either training or inference mode based on the internaltrainingflag.
Atur apakah akan menggunakan pustaka kernels untuk mengkernelisasi beberapa lapisan model.
Ikat bobot model. Jika recompute_mapping=False (default saat dipanggil secara internal), ia akan mengandalkan atribut model.all_tied_weights_keys, yang berisi pemetaan {target: source} untuk parameter yang terikat.
Jika recompute_mapping=True, ia akan memeriksa ulang semua submodel internal dan konfigurasinya untuk menentukan parameter
yang perlu diikat. Ini adalah default saat model.tie_weights() dipanggil secara mandiri, di luar __init__ dan from_pretrained, dalam hal nilai konfigurasi telah diubah di suatu tempat.
Perhatikan bahwa selama from_pretrained, pengikatan bersifat simetris: jika pemetaan menyatakan “tie target -> source” tetapi source tidak ada di checkpoint sementara target ada, kami mengubah posisi source dan target sehingga kami tetap dapat mengikat semuanya ke parameter yang benar-benar ada.
Nilai mock untuk jalur bertitik (mis. torch.float32): rantai akses atribut,
pemanggilan berperilaku sebagai dekorator pass-through, repr adalah jalur bertitik, dan
penggunaannya sebagai kelas dasar menggantikan kelas dasar type polos (PEP 560 __mro_entries__), sehingga
subkelas asli tetap mempertahankan metakelas normal dan inspect.signature membaca __init__ asli mereka, bukan milik mock.
Menampilkan peringatan sekali jika input_ids tampaknya berisi padding dan tidak ada attention mask yang diberikan.
Model kustom juga harus menyertakan _supports_assign_param_buffer, yang menentukan apakah superfast init dapat diterapkan pada model tertentu. Tanda bahwa model Anda membutuhkan ini adalah jika test_save_and_load_from_pretrained gagal. Jika demikian,
setel ini ke False.
ModuleUtilsMixin
Beberapa utilitas untuk torch.nn.Modules, untuk digunakan sebagai mixin.
num_parameters
< source >( only_trainable: bool = Falseexclude_embeddings: bool = False ) → int
Dapatkan jumlah parameter (secara opsional, yang dapat dilatih atau non-embeddings) dalam modul.
Mendorong ke Hub
Mixin yang berisi fungsionalitas untuk mendorong model atau tokenizer ke hub.
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 )
Parameter
- repo_id (
str) — Nama repositori tempat Anda ingin mendorong {object}. Seharusnya berisi nama organisasi Anda saat mendorong ke organisasi tertentu. - commit_message (
str, opsional) — Pesan untuk commit saat push. Akan default ke"Upload {object}". - commit_description (
str, opsional) — Deskripsi dari commit yang akan dibuat - private (
bool, opsional) — Apakah membuat repo menjadi privat. JikaNone(default), repo akan menjadi publik kecuali default organisasi adalah privat. Nilai ini diabaikan jika repo sudah ada. - token (
boolataustr, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. JikaTrue(default), akan menggunakan token yang dihasilkan saat menjalankanhf auth login(disimpan di~/.huggingface). - revision (
str, opsional) — Cabang untuk mendorong file yang diunggah. - create_pr (
bool, opsional, defaultFalse) — Apakah akan membuat PR dengan file yang diunggah atau langsung melakukan commit. - max_shard_size (
intataustr, opsional, default"50GB") — Hanya berlaku untuk model. Ukuran maksimum checkpoint sebelum di-shard. Setiap shard checkpoint akan memiliki ukuran lebih kecil dari nilai ini. Jika dinyatakan sebagai string, harus berupa angka diikuti satuan (seperti"5MB"). - tags (
list[str], opsional) — Daftar tag untuk didorong ke Hub.
Unggah {object_files} ke 🤗 Model Hub.
Contoh:
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")