Transformers documentation
Code World Model (CWM)
<— Hak cipta 2025 Tim HuggingFace. Hak cipta dilindungi undang-undang.
Berlisensi di bawah Apache License, Versi 2.0 (“Lisensi”); Anda tidak boleh menggunakan file ini kecuali sesuai dengan Lisensi. Anda dapat memperoleh salinan Lisensi di
http://www.apache.org/licenses/LICENSE-2.0
Kecuali diwajibkan oleh hukum yang berlaku atau disepakati secara tertulis, perangkat lunak yang didistribusikan di bawah Lisensi didistribusikan dengan dasar “SEBAGAIMANA ADANYA” (AS IS), TANPA JAMINAN ATAU SYARAT APA PUN, baik yang dinyatakan maupun yang tersirat. Lihat Lisensi untuk bahasa spesifik yang mengatur izin dan pembatasan di bawah Lisensi.
⚠️ Perhatikan bahwa file ini dalam format Markdown tetapi berisi sintaks khusus untuk doc-builder kami (mirip dengan MDX) yang mungkin tidak dirender dengan benar di viewer Markdown Anda.
—> Model ini disumbangkan ke Hugging Face Transformers pada 2025-10-09.
Code World Model (CWM)
Ikhtisar
Model Code World Model (CWM) diusulkan dalam CWM: An Open-Weights LLM for Research on Code Generation with World Models oleh Meta FAIR CodeGen Team. CWM adalah LLM untuk generasi kode dan penalaran tentang kode yang, secara khusus, telah dilatih untuk merepresentasikan dan menalar bagaimana kode dan perintah memengaruhi status program atau sistem dengan lebih baik. Secara spesifik, kami melakukan mid-training CWM pada sejumlah besar trajektori observasi-aksi dari jejak eksekusi Python dan interaksi agentic di lingkungan yang dikontainerkan. Kami melakukan post-training dengan RL multi-tugas yang luas di lingkungan coding yang dapat diverifikasi, matematika, dan rekayasa perangkat lunak multi-turn.
Abstrak dari makalah tersebut adalah sebagai berikut:
Kami merilis Code World Model (CWM), sebuah LLM open-weights dengan 32 miliar parameter, untuk memajukan penelitian tentang generasi kode dengan world models. Untuk meningkatkan pemahaman kode melampaui apa yang dapat dipelajari dari pelatihan pada kode statis saja, kami melakukan mid-training CWM pada sejumlah besar trajektori observasi-aksi dari interpreter Python dan lingkungan Docker agentic, serta melakukan RL penalaran multi-tugas yang ekstensif dalam lingkungan coding yang dapat diverifikasi, matematika, dan rekayasa perangkat lunak multi-turn. Dengan CWM, kami menyediakan testbed yang kuat bagi peneliti untuk mengeksplorasi peluang yang ditawarkan oleh world modeling untuk meningkatkan generasi kode dengan penalaran dan perencanaan di lingkungan komputasi. Kami menyajikan langkah awal tentang bagaimana world models dapat menguntungkan coding agentic, memungkinkan simulasi langkah demi langkah dari eksekusi kode Python, dan menunjukkan hasil awal tentang bagaimana penalaran dapat diuntungkan oleh hal terakhir tersebut. CWM adalah LLM decoder-only yang padat, dilatih dengan ukuran konteks hingga 131 k token. Independen dari kemampuannya dalam world modeling, CWM menawarkan kinerja yang kuat pada tugas coding dan matematika umum: mencapai skor pass@1 sebesar 65,8 % pada SWE-bench Verified (dengan test-time scaling), 68,9 % pada LiveCodeBench, 96,6 % pada Math-500, dan 76,0 % pada AIME 2024. Untuk mendukung penelitian lebih lanjut tentang code world modeling, kami merilis checkpoint model setelah mid-training, SFT, dan RL.
Tips:
CWM memerlukan prompt sistem khusus untuk berfungsi secara optimal selama inferensi. Tanpa konfigurasi prompt yang tepat, kualitas output CWM dapat menurun secara signifikan. Berikut adalah prompt sistem default untuk tugas penalaran. Untuk alur kerja agentic, tambahkan spesifikasi alat yang relevan setelah prompt dasar ini. Lihat repositori kode asli untuk detail lebih lanjut.
You are a helpful AI assistant. You always reason before responding, using the following format: <think> your internal reasoning </think> your external response
Model ini disumbangkan oleh Meta FAIR CodeGen Team. Kode aslinya dapat ditemukan di sini.
Contoh penggunaan
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = 'facebook/cwm'
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto"
)
system_prompt = """
You are a helpful AI assistant. You always reason before responding, using the following format:
<think>
your internal reasoning
</think>
your external response
""".strip()
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": "Write a haiku about recursion in programming."}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=True, # Switches between thinking and non-thinking modes. Default is True.
preserve_previous_think=True, # Switches between keeping thinking blocks from previous messages or not. Default is True.
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=1024
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
print(tokenizer.decode(output_ids))Produces the following output:
Oke, saya perlu menulis haiku tentang rekursi dalam pemrograman. Mari kita mulai dengan mengingat apa itu rekursi. Rekursi adalah teknik pemrograman di mana sebuah fungsi memanggil dirinya sendiri dalam definisinya, sering digunakan untuk menyelesaikan masalah yang dapat dipecah menjadi sub-masalah yang lebih kecil dan serupa.
Haiku adalah puisi tiga baris dengan jumlah suku kata 5-7-5. Jadi, saya perlu menangkap esensi rekursi dengan cara yang ringkas dan puitis. Mari kita pikirkan elemen-elemen kunci rekursi: fungsi yang memanggil dirinya sendiri, kasus dasar yang menghentikan rekursi, dan ide memecah masalah menjadi bagian-bagian yang lebih kecil.
Mungkin saya bisa menggunakan imaji yang berkaitan dengan cermin atau refleksi, karena rekursi sering melibatkan fungsi yang memantulkan atau mengulang dirinya sendiri. Sebagai alternatif, saya bisa menggunakan imaji alam seperti spiral atau pohon, yang menunjukkan pola yang serupa dengan dirinya sendiri.
…
Panggilan fungsi terhadap dirinya sendiri Kasus dasar menghentikan loop tanpa akhir Spiral kode
Hmm, itu baru permulaan. Tapi mungkin saya bisa membuatnya lebih puitis. Mari kita pikirkan ide sebuah fungsi yang memanggil dirinya sendiri sebagai semacam loop tak berujung, tetapi dengan kasus dasar yang menghentikannya. Itu seperti spiral yang membuka di pusatnya.
Sudut pandang lain: rekursi sering digunakan untuk masalah yang memiliki struktur rekursif, seperti penelusuran pohon atau perhitungan faktorial. Mungkin saya bisa menggunakan gambar alami untuk merepresentasikan hal tersebut.
Bagaimana dengan:
Cabang-cabang terpecah lagi Daun-daun terbentang dalam tarian tanpa akhir Akar-akar memegang kasus dasar
Itu sedikit lebih puitis. Percabangan yang terpecah mewakili panggilan rekursif, daun yang mengembang bisa mewakili pemrosesan setiap sub-masalah, dan akar yang memegang kasus dasar adalah yang menghentikan rekursi.
Sebagai alternatif, mungkin sesuatu yang lebih sederhana:
Cermin di dalam cermin Refleksi tak berujung dalam Kasus dasar memecahkan kaca
Ini menggunakan metafora cermin untuk merepresentasikan fungsi yang memanggil dirinya sendiri, dengan kasus dasar sebagai titik di mana rekursi berhenti, memutus refleksi yang tak berujung.
Saya rasa saya lebih menyukai ide cermin. Izinkan saya menyempurnakannya:
Cermin di dalam cermin Refleksi tak terbatas menari Kasus dasar memecahkan kaca
Ya, itu tampaknya menangkap ide rekursi dengan baik. Cermin mewakili fungsi yang memanggil dirinya sendiri, pantulan tak berujung adalah panggilan rekursif, dan kasus dasar yang memecahkan kaca adalah yang menghentikan rekursi.
Izinkan saya memeriksa jumlah suku kata:
Cermin di dalam cermin (5 suku kata: Cer-min-di-da-lam-cer-min) Refleksi tak berujung menari (7 suku kata: Re-flek-si-tak-ber-u-jung-me-na-ri) Kasus dasar memecahkan kaca (5 suku kata: Ka-sus-da-sar-me-pe-cah-kan-ka-ca)
Ya, itu sesuai dengan struktur 5-7-5. Saya rasa itu haiku yang bagus tentang rekursi.
</think> Mirror within mirror Infinite reflections dance Base case shatters glass<|eot_id|>CwmConfig
kelas transformers.CwmConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 128256hidden_size: int = 6144intermediate_size: int = 21504num_hidden_layers: int = 64num_attention_heads: int = 48num_key_value_heads: int = 8hidden_act: str = 'silu'max_position_embeddings: int = 131072initializer_range: float = 0.02rms_norm_eps: float = 1e-05use_cache: bool = Truepad_token_id: int | None = Nonebos_token_id: int = 128000eos_token_id: int | list[int] | None = Nonepretraining_tp: int = 1tie_word_embeddings: bool = Falserope_parameters: dict | None = Noneattention_dropout: float | int = 0.0mlp_bias: bool = Falsehead_dim: int = 128sliding_window: int = 8192layer_types: list[str] | None = None )
Parameter
- vocab_size (
int, opsional, default128256) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids. - hidden_size (
int, opsional, default6144) — Dimensi dari representasi tersembunyi. - intermediate_size (
int, opsional, default21504) — Dimensi representasi MLP. - num_hidden_layers (
int, opsional, default64) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default48) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - num_key_value_heads (
int, opsional, default8) — Ini adalah jumlah key_value heads yang harus digunakan untuk mengimplementasikan Grouped Query Attention. Jikanum_key_value_heads=num_attention_heads, model akan menggunakan Multi Head Attention (MHA), jikanum_key_value_heads=1model akan menggunakan Multi Query Attention (MQA), selain itu GQA yang digunakan. Saat mengkonversi checkpoint multi-head menjadi checkpoint GQA, setiap group key dan value head harus dibangun dengan meanpooling semua head asli di dalam grup tersebut. Untuk detail lebih lanjut, lihat paper ini. Jika tidak ditentukan, akan default kenum_attention_heads. - hidden_act (
str, opsional, defaultnyasilu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - max_position_embeddings (
int, opsional, default131072) — Panjang maksimum urutan yang mungkin digunakan dengan model ini. - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - rms_norm_eps (
float, opsional, defaultnya1e-05) — Epsilon yang digunakan oleh lapisan normalisasi rms. - use_cache (
bool, opsional, defaultnyaTrue) — Apakah model harus mengembalikan perhatian kunci/nilai terakhir (tidak digunakan oleh semua model). Hanya relevan jikaconfig.is_decoder=Trueatau ketika model adalah model generatif yang hanya decoder. - pad_token_id (
int, opsional) — ID token yang digunakan untuk padding dalam kosakata. - bos_token_id (
int, opsional, default128000) — ID token yang digunakan untuk awal aliran (beginning-of-stream) dalam kosakata. - eos_token_id (
Union[int, list[int]], opsional) — ID token yang digunakan untuk akhir aliran dalam kosakata. - pretraining_tp (
int, opsional, default1) — Fitur eksperimental. Rank tensor parallelism yang digunakan selama pretraining. Silakan lihat dokumen ini untuk memahaminya lebih lanjut. Nilai ini diperlukan untuk memastikan reproduktibilitas hasil pretraining secara persis. Silakan lihat isu ini. - tie_word_embeddings (
bool, opsional, defaultFalse) — Apakah akan mengikat bobot embedding sesuai dengan pemetaantied_weights_keysmodel. - rope_parameters (
dict, opsional) — Kamus yang berisi parameter konfigurasi untuk embedding RoPE. Kamus tersebut harus berisi nilai untukrope_thetadan secara opsional parameter yang digunakan untuk penskalaan jika Anda ingin menggunakan RoPE denganmax_position_embeddingsyang lebih panjang. - attention_dropout (
Union[float, int], opsional, default0.0) — Rasio dropout untuk probabilitas perhatian. - mlp_bias (
bool, opsional, defaultFalse) — Apakah akan menggunakan bias pada lapisan up_proj, down_proj, dan gate_proj di dalam lapisan MLP. - head_dim (
int, opsional, default128) — Dimensi head perhatian. Jika None, nilainya akan default ke hidden_size // num_attention_heads - sliding_window (
int, opsional, default8192) — Ukuran jendela untuk sliding window attention. JikaNone, sliding window tidak diterapkan. - layer_types (
list[str], opsional) — Daftar yang secara eksplisit memetakan setiap indeks layer dengan tipe layernya. Jika tidak disediakan, daftar ini akan dibuat secara otomatis berdasarkan nilai config.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari CwmModel. Kelas ini digunakan untuk membuat instans model Cwm berdasarkan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari facebook/cwm
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
>>> from transformers import CwmModel, CwmConfig
>>> # Initializing a Cwm cwm-7b style configuration
>>> configuration = CwmConfig()
>>> # Initializing a model from the cwm-7b style configuration
>>> model = CwmModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configCwmPreTrainedModel
kelas transformers.CwmPreTrainedModel
< source >( config: PreTrainedConfig*inputs**kwargs )
Parameter
- config (PreTrainedConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
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.
CwmModel
kelas transformers.CwmModel
< source >( config: CwmConfig )
Parameter
- config (CwmConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Cwm polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CwmModelOutputWithPast or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values).
Mengembalikan
CwmModelOutputWithPast atau tuple(torch.Tensor)
CwmModelOutputWithPast atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (CwmConfig) dan input.
Metode forward dari CwmModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.Jika
past_key_valuesdigunakan, hanya hidden-state terakhir dari sekuens dengan bentuk(batch_size, 1, hidden_size)yang dioutput.past_key_values (
Cache, opsional, dikembalikan saatuse_cache=Truedilewatkan atau saatconfig.use_cache=True) — Ini adalah instance Cache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Berisi hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention, dan secara opsional jika
config.is_encoder_decoder=Truedi blok cross-attention) yang dapat digunakan (lihat inputpast_key_values) untuk mempercepat decoding berurutan.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
CwmForCausalLM
kelas transformers.CwmForCausalLM
< source >( config: CwmConfig )
Parameter
- config (CwmConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model Cwm untuk pemodelan bahasa kausal.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutputWithPast or tuple(torch.Tensor)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - labels (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Label untuk menghitung kerugian pemodelan bahasa yang disamarkan (masked language modeling). Indeks harus berada dalam[0, ..., config.vocab_size]atau -100 (lihat docstringinput_ids). Token dengan indeks yang disetel ke-100diabaikan (disamarkan), kerugian hanya dihitung untuk token dengan label dalam[0, ..., config.vocab_size]. - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values). - logits_to_keep (
Union[int, torch.Tensor], opsional, default0) — Jika berupaint, hitung logits untuklogits_to_keeptoken terakhir. Jika0, hitung logits untuk semuainput_ids(kasus khusus). Hanya logits token terakhir yang diperlukan untuk generasi, dan menghitungnya hanya untuk token tersebut dapat menghemat memori, yang menjadi cukup signifikan untuk urutan panjang atau ukuran kosakata besar. Jika berupatorch.Tensor, harus 1D yang sesuai dengan indeks yang akan dipertahankan pada dimensi panjang urutan. Ini berguna saat menggunakan format tensor terpadu (satu dimensi untuk batch dan panjang urutan).
Mengembalikan
CausalLMOutputWithPast atau tuple(torch.Tensor)
A CausalLMOutputWithPast atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (CwmConfig) dan input.
Metode forward dari CwmForCausalLM menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss pemodelan bahasa (untuk prediksi token berikutnya).logits (
torch.Tensordengan bentuk(batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa (skor untuk setiap token kosakata sebelum SoftMax).past_key_values (
Cache, opsional, dikembalikan saatuse_cache=Truedilewatkan atau saatconfig.use_cache=True) — Ini adalah instance Cache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Berisi hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention) yang dapat digunakan (lihat input
past_key_values) untuk mempercepat decoding berurutan.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
Contoh:
>>> from transformers import AutoTokenizer, CwmForCausalLM
>>> model = CwmForCausalLM.from_pretrained("meta-cwm/Cwm-2-7b-hf")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-cwm/Cwm-2-7b-hf")
>>> prompt = "Hey, are you conscious? Can you talk to me?"
>>> inputs = tokenizer(prompt, return_tensors="pt")
>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."