Transformers documentation
Beam
Model ini disumbangkan ke Hugging Face Transformers pada 2026-10-16.
Beam
Ikhtisar
Beam adalah model open-weight pertama dari Reflection, yaitu model bahasa sparse mixture-of-experts (MoE) dengan total 501B parameter dan 23B parameter aktif per token, yang dibangun untuk workload coding, penalaran, dan agentic. Model ini dipretrain pada 23,8T token dan dipost-train menggunakan reinforcement learning asinkron berskala besar. Beam hanya mendukung teks, dan ia melakukan penalaran sebelum setiap jawaban. Pengaturan reasoning effort dalam chat template mengontrol seberapa dalam penalaran tersebut.
Beam memiliki 52 lapisan decoder dan menggabungkan fitur-fitur berikut:
- Perhatian geser hibrida dan penuh. Setiap lapisan keenam dan lapisan terakhir menggunakan perhatian penuh, sedangkan lapisan lainnya memperhatikan
sliding_window(512) token terbaru.layer_typesmengatur polanya. - RoPE pada lapisan sliding, NoPE pada lapisan penuh.
rope_parametersmenggunakan tipe lapisan sebagai kunci, danNonemenandai tipe lapisan tanpa encoding posisi. Lapisan full-attention justru menskalakan query (softmax yang dapat diskalakan): query pada posisin(berbasis 1) dikalikan dengan(1 + n / 2048) ** 0.1, yang menjaga agar attention tidak mendatar seiring bertambahnya konteks. - Atensi bergerbang. Atensi kueri berkelompok dengan 48 kepala kueri dan 8 kepala kunci/nilai, serta RMSNorm pada setiap kepala kueri dan kunci. Gerbang sigmoid yang dihitung dari masukan atensi, dengan bias yang dipelajari per kepala, menskalakan keluaran atensi secara elemen demi elemen sebelum proyeksi keluaran.
- MoE Sparse. Tiga lapisan pertama menggunakan MLP SwiGLU padat, dan 49 lapisan sisanya merutekan setiap token ke 8 dari 256 ahli, tanpa ahli bersama (
mlp_layer_typesmengatur polanya). Router memberi skor pada ahli dengan sigmoid, menyeimbangkan beban dengan bias per-ahli yang dipelajari alih-alih kerugian tambahan, dan membatasi setiap token ketopk_groupterbaik darin_groupgrup ahli. Bobot routing dinormalisasi, dan keluaran MoE diskalakan denganrouted_scaling_factor. - Norm sandwich dengan residual yang diskalakan berdasarkan kedalaman. Setiap blok attention dan MLP dibungkus dengan RMSNorm sebelum dan sesudah. Penambahan residual diskalakan ulang sehingga, setelah
kkontribusi (menghitung embeddings sebagai yang pertama), aliran residual adalah jumlah mereka dibagi dengansqrt(k). - Softcapping logit akhir. Logits dibatasi dengan
30 * tanh(logits / 30)(final_logit_softcapping).
Implementasi menghitung penskalaan RMSNorm, aktivasi SwiGLU, RoPE, penskalaan query, routing, dan softcapping dalam FP32 agar sesuai dengan numerik yang digunakan saat Beam dilatih dan disajikan. Bobot router dan bias ahli dipertahankan dalam FP32 saat dimuat, dan logits yang dikembalikan selalu dalam FP32.
Anda dapat menemukan semua checkpoint Beam asli di bawah organisasi Reflection.
Model ini disumbangkan oleh yonigozlan.
Contoh penggunaan
Template chat Beam memformat percakapan dalam format Harmony milik Beam, dan template respons-nya mengurai teks yang dihasilkan kembali menjadi pesan dengan bidang thinking, content, dan tool_calls. Contoh di bawah ini menghasilkan balasan dengan Pipeline atau kelas AutoModelForCausalLM.
Checkpoint BF16 berukuran sekitar 1 TB, sehingga contoh membaginya ke 8 perangkat, menempatkan seluruh routed experts di setiap perangkat dengan expert parallelism. Jalankan dengan torchrun --nproc-per-node 8 <script.py>.
from transformers import DistributedConfig, pipeline
pipe = pipeline(
task="text-generation",
model="reflection/Beam-1.0-501B-A23B",
model_kwargs={"distributed_config": DistributedConfig(tp_size=8, ep_size=8)},
)
messages = [{"role": "user", "content": "Explain in one sentence why the sky is usually blue."}]
output = pipe(messages, max_new_tokens=2048)
reply = output[0]["generated_text"][-1]
print(reply["thinking"])
print(reply["content"])from transformers import AutoModelForCausalLM, AutoTokenizer, DistributedConfig
model_id = "reflection/Beam-1.0-501B-A23B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, distributed_config=DistributedConfig(tp_size=8, ep_size=8))
messages = [{"role": "user", "content": "Explain in one sentence why the sky is usually blue."}]
inputs = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, return_tensors="pt", return_dict=True, reasoning_effort="low"
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=2048)
generated = tokenizer.decode(outputs[0, inputs["input_ids"].shape[1] :])
message = tokenizer.parse_response(generated, prefix=inputs["input_ids"][0])
print(message["thinking"])
print(message["content"])Gunakan ini alih-alih device_map="auto", yang menempatkan seluruh lapisan di setiap perangkat, menjalankannya satu perangkat pada satu waktu, dan dapat kehabisan memori saat memuat.
Contoh generasi dengan temperature=0.7 dan top_p=0.99 yang direkomendasikan Beam, yang ditetapkan sebagai nilai default oleh GenerationConfig checkpoint. Luluskan do_sample=False untuk melakukan dekoding secara greedy.
Usaha penalaran
Lewatkan reasoning_effort ke apply_chat_template() untuk mengontrol seberapa banyak Beam melakukan penalaran. Parameter ini menerima anggaran berupa bilangan bulat atau salah satu label di bawah ini. Beam tidak dilatih dengan effort di bawah 8, sehingga nilai yang lebih kecil tidak dihormati.
| Label | minimal | low | medium | high | xhigh | max |
|---|---|---|---|---|---|---|
| Usaha | 8 | 32 | 64 | 128 | 256 | 512 |
Ketika reasoning_effort tidak disetel, template menggunakan max. Jika max_new_tokens habis selama penalaran, pesan yang diurai memiliki thinking tetapi tidak ada content.
Percakapan multi-pusing
Lampirkan pesan yang telah diurai ke dalam riwayat apa adanya. Output Beam akan menurun tanpa penalaran sebelumnya, yang dibaca oleh template chat dari thinking (reasoning_content dan reasoning juga diterima). Secara default, giliran asisten tanpa penalaran akan dirender dengan blok penalaran kosong. Lewatkan allow_missing_thinking=False untuk memicu error sebagai gantinya ketika add_generation_prompt=True, yang direkomendasikan saat menyajikan Beam.
messages.append(message)
messages.append({"role": "user", "content": "And why are sunsets red?"})
inputs = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, return_tensors="pt", return_dict=True
).to(model.device)Pemanggilan alat
Lewatkan tools ke apply_chat_template() dan parse_response(). Dengan tools, argumen yang diurai akan dicetak ke tipe data dalam skema masing-masing tool; tanpa itu, setiap argumen berupa string.
def get_weather(city: str):
"""
Get the current weather in a city.
Args:
city: The city name.
"""
return "Sunny, 22 C"
messages = [{"role": "user", "content": "What's the weather like in Paris right now?"}]
inputs = tokenizer.apply_chat_template(
messages, tools=[get_weather], add_generation_prompt=True, return_tensors="pt", return_dict=True
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=2048)
generated = tokenizer.decode(outputs[0, inputs["input_ids"].shape[1] :])
message = tokenizer.parse_response(generated, prefix=inputs["input_ids"][0], tools=[get_weather])
print(message["tool_calls"])
# [{'type': 'function', 'function': {'name': 'get_weather', 'arguments': {'city': 'Paris'}}}]
messages.append(message)
for call in message["tool_calls"]:
result = get_weather(**call["function"]["arguments"])
messages.append({"role": "tool", "name": call["function"]["name"], "content": result})Lalu, generate lagi dari messages untuk mendapatkan jawaban akhir. Tool call yang di-parse tidak memiliki id, dan formatnya mencocokkan hasil dengan panggilan berdasarkan posisi, sehingga kembalikan hasil tool sesuai urutan panggilannya. Generation berhenti setelah jawaban akhir (<|return|>) atau tool call (<|call|>); generation_config.json mencantumkan keduanya.
Untuk streaming, get_response_parser() mengembalikan parser yang Anda feed() dengan potongan teks saat mereka dihasilkan. Lihat Parsing respons untuk detail lebih lanjut.
Catatan
- Argumen template. Selain
reasoning_effort, template chat menerimamodel_identity(menggantikan baris pertama pesan sistem),builtin_tools, danallow_missing_thinking.builtin_toolshanya boleh menyebut alatsearchdanbrowse, dan hanya dengan definisi yang digunakan saat pelatihan Beam. Alat lain hanya memerlukantools. Pesansystemdandeveloperhanya dirender di awal percakapan. - Pelatihan. Template chat menandai output asisten untuk
apply_chat_template(..., return_dict=True, return_assistant_tokens_mask=True), sehinggaSFTConfig(assistant_only_loss=True)dari TRL hanya melatih pada token asisten. Masker mencakup penalaran, jawaban, dan panggilan tool dari setiap giliran asisten. - Tidak ada loss tambahan. Router menyeimbangkan beban pakar melalui bias-nya, sehingga
BeamForCausalLMtidak menghitung loss penyeimbangan beban.output_router_logits=Truetetap mengembalikan logits router.
BeamConfig
kelas transformers.BeamConfig
< 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 = 151936hidden_size: int = 5120intermediate_size: int = 20480num_hidden_layers: int = 52num_attention_heads: int = 48num_key_value_heads: int = 8hidden_act: str = 'silu'max_position_embeddings: int = 8192initializer_range: float = 0.02rms_norm_eps: float = 1e-06use_cache: bool = Truetie_word_embeddings: bool = Falserope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneattention_bias: bool = Falsesliding_window: int | None = 512attention_dropout: float | int = 0.0moe_intermediate_size: int = 2560num_experts_per_tok: int = 8num_experts: int = 256norm_topk_prob: bool = Trueoutput_router_logits: bool = Falsepad_token_id: int | None = Nonebos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonehead_dim: int = 128layer_types: list[str] | None = Nonemlp_layer_types: list[str] | None = Nonen_group: int | None = 8topk_group: int | None = 4routed_scaling_factor: int | float = 2.5final_logit_softcapping: int | float | None = 30.0 )
Parameter
- vocab_size (
int, opsional, default151936) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids. - hidden_size (
int, opsional, default5120) — Dimensi dari representasi tersembunyi. - intermediate_size (
int, opsional, default20480) — Dimensi representasi MLP. - num_hidden_layers (
int, opsional, default52) — 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, default8192) — 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-06) — 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. - tie_word_embeddings (
bool, opsional, defaultFalse) — Apakah akan mengikat bobot embedding sesuai dengan pemetaantied_weights_keysmodel. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, 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_bias (
bool, opsional, defaultFalse) — Apakah akan menggunakan bias pada lapisan proyeksi query, key, value, dan output selama self-attention. - sliding_window (
int, opsional, default512) — Ukuran jendela untuk sliding window attention. JikaNone, sliding window tidak diterapkan. - attention_dropout (
Union[float, int], opsional, default0.0) — Rasio dropout untuk probabilitas perhatian. - moe_intermediate_size (
int, opsional, default2560) — Ukuran intermediate dari MLP expert yang di-rutekan. - num_experts_per_tok (
int, opsional, default8) — Jumlah expert yang akan menerima setiap token. Ini adalah nilai top-k untuk routing pemilihan token. - num_experts (
int, opsional, default256) — Jumlah expert yang di-rutekan pada lapisan MoE. - norm_topk_prob (
bool, opsional, defaultTrue) — Apakah akan menormalisasi bobot dari para ahli yang dirutekan. - output_router_logits (
bool, opsional, defaultFalse) — Apakah logits router harus dikembalikan oleh model. Mengaktifkan ini juga akan memungkinkan model untuk mengoutput loss tambahan, termasuk load balancing loss dan router z-loss. - pad_token_id (
int, opsional) — ID token yang digunakan untuk padding dalam kosakata. - bos_token_id (
int, opsional) — 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. - head_dim (
int, opsional, default128) — Dimensi head perhatian. Jika None, nilainya akan default ke hidden_size // num_attention_heads - 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. - mlp_layer_types (
list[str], opsional) — Jenis MLP per lapisan,"dense"untuk MLP SwiGLU atau"sparse"untuk blok MoE. Panjangnya harus sama dengannum_hidden_layers. Secara default, tiga lapisan dense diikuti oleh lapisan sparse. - n_group (
int, opsional, default 8) — Jumlah grup untuk pakar yang dirutekan. - topk_group (
int, opsional, default4) — Jumlah grup yang dipilih untuk setiap token (untuk setiap token, memastikan pakar yang dipilih hanya berada di dalamtopk_groupgrup). - routed_scaling_factor (
Union[int, float], opsional, defaultnya2.5) — Faktor penskalaan untuk pakar yang di-rutekan. - final_logit_softcapping (
Union[int, float], opsional, default30.0) — Nilai soft-capping yang diterapkan pada logits akhir sebelum menghitung distribusi probabilitas. Logits diskalakan dengantanh(logit / cap) * cap.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari BeamModel. Kelas ini digunakan untuk membuat instans model Beam sesuai dengan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari reflection/Beam-1.0-501B-A23B
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
BeamModel
kelas transformers.BeamModel
< source >( config: BeamConfig )
Parameter
- config (BeamConfig) — 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 Beam 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.FloatTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeModelOutputWithPast or tuple(torch.FloatTensor)
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.FloatTensordengan 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
MoeModelOutputWithPast atau tuple(torch.FloatTensor)
MoeModelOutputWithPast atau tuple dari
torch.FloatTensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (BeamConfig) dan input.
Metode forward dari BeamModel 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.FloatTensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.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.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(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.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(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).
router_logits (
tuple(torch.FloatTensor), opsional, dikembalikan ketikaoutput_router_probs=Truedanconfig.add_router_probs=Truediteruskan atau ketikaconfig.output_router_probs=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan) dengan bentuk(batch_size, sequence_length, num_experts).Logit router mentah (setelah softmax) yang dihitung oleh router MoE; istilah-istilah ini digunakan untuk menghitung auxiliary loss pada model Mixture of Experts.
BeamForCausalLM
kelas transformers.BeamForCausalLM
< source >( config: BeamConfig )
Parameter
- config (BeamConfig) — 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 Beam 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.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeCausalLMOutputWithPast or tuple(torch.FloatTensor)
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.FloatTensordengan 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
MoeCausalLMOutputWithPast atau tuple(torch.FloatTensor)
MoeCausalLMOutputWithPast atau tuple dari
torch.FloatTensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (BeamConfig) dan input.
Metode forward dari BeamForCausalLM 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.FloatTensordengan bentuk(1,), opsional, dikembalikan saatlabelsdisediakan) — Loss pemodelan bahasa (untuk prediksi token berikutnya).logits (
torch.FloatTensordengan bentuk(batch_size, sequence_length, config.vocab_size)) — Skor prediksi dari kepala pemodelan bahasa (skor untuk setiap token kosakata sebelum SoftMax).aux_loss (
torch.FloatTensor, opsional, dikembalikan ketikaoutput_router_logits=Truedilewatkan atau ketikaconfig.output_router_logits=True, dan model melatih router-nya dengan load-balancing loss) — Load-balancing auxiliary loss untuk modul sparse. Model yang menyeimbangkan expert-nya dengan router bias sebagai gantinya (DeepSeek-V3 dan arsitektur yang diturunkan darinya) mengembalikanNonedi sini sambil tetap mengembalikanrouter_logits.router_logits (
tuple(torch.FloatTensor), opsional, dikembalikan saatoutput_router_logits=Truedilewatkan atau saatconfig.output_router_logits=True) — Tuple daritorch.FloatTensor(satu untuk setiap lapisan sparse) dengan bentuk(batch_size * sequence_length, num_experts).Logit router mentah yang dihitung oleh router MoE. Logit ini dapat digunakan untuk menghitung kerugian penyeimbangan beban (load-balancing loss) atau untuk memeriksa bagaimana token didistribusikan ke para ahli (experts).
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.FloatTensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.FloatTensor(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.FloatTensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.FloatTensor(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).