Transformers documentation
xLSTM
Model ini dipublikasikan di HF papers pada 2024-05-07 dan disumbangkan ke Hugging Face Transformers pada 2025-07-25.
xLSTM
Ikhtisar
Model xLSTM diusulkan dalam xLSTM: Extended Long Short-Term Memory oleh Maximilian Beck, Korbinian Pöppel, Markus Spanring, Andreas Auer, Oleksandra Prudnikova, Michael Kopp, Günter Klambauer, Johannes Brandstetter, dan Sepp Hochreiter. xLSTM memperbarui arsitektur LSTM asli agar mampu bersaing dengan model Transformer dengan memperkenalkan exponential gating, ekspansi memori matriks, serta pelatihan dan ingestion yang dapat diparalelkan.
Varian model 7B dilatih oleh tim xLSTM, yaitu Maximilian Beck, Korbinian Pöppel, Phillip Lippe, Richard Kurle, Patrick Blies, Sebastian Böck, dan Sepp Hochreiter di NXAI.
Abstrak dari makalah tersebut adalah sebagai berikut:
Pada tahun 1990-an, *constant error carousel* dan *gating* diperkenalkan sebagai ide sentral dari Long Short-Term Memory (LSTM). Sejak saat itu, LSTM telah bertahan diuji waktu dan berkontribusi pada banyak kisah sukses *deep learning*, khususnya karena mereka merupakan Large Language Models (LLM) pertama. Namun, kemunculan teknologi Transformer dengan *self-attention* yang dapat diparalelkan sebagai intinya menandai fajar era baru, melampaui LSTM dalam skala besar. Kami kini mengajukan pertanyaan sederhana: Seberapa jauh kita bisa melangkah dalam pemodelan bahasa ketika menskalakan LSTM hingga miliaran parameter, memanfaatkan teknik-teknik terbaru dari LLM modern, tetapi memitigasi keterbatasan yang diketahui dari LSTM? Pertama, kami memperkenalkan *exponential gating* dengan normalisasi dan teknik stabilisasi yang tepat. Kedua, kami memodifikasi struktur memori LSTM, menghasilkan: (i) sLSTM dengan memori skalar, pembaruan skalar, dan pencampuran memori baru, (ii) mLSTM yang sepenuhnya dapat diparalelkan dengan memori matriks dan aturan pembaruan kovarians. Mengintegrasikan ekstensi LSTM ini ke dalam tulang punggung blok residual menghasilkan blok xLSTM yang kemudian ditumpuk secara residual menjadi arsitektur xLSTM. *Exponential gating* dan struktur memori yang dimodifikasi meningkatkan kemampuan xLSTM untuk berkinerja baik dibandingkan dengan Transformer dan State Space Models terkini, baik dalam performa maupun penskalaan.
Model ini disumbangkan oleh NX-AI. Kode aslinya dapat ditemukan di sini.
Catatan
- Gunakan padding kiri untuk generasi batched. Lihat Sisi padding.
xLSTMConfig
kelas transformers.xLSTMConfig
< 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 = 50304hidden_size: int = 4096embedding_dim: int | None = Nonenum_hidden_layers: int = 32num_blocks: int | None = Nonenum_heads: int = 8use_bias: bool = Falsenorm_reduction_force_float32: bool = Truetie_word_embeddings: bool = Falseadd_out_norm: bool = Truenorm_eps: float = 1e-06qk_dim_factor: float = 0.5v_dim_factor: float = 1.0chunkwise_kernel: typing.Literal['chunkwise--native_autograd', 'parallel--native_autograd'] = 'chunkwise--native_autograd'sequence_kernel: typing.Literal['native_sequence__native'] = 'native_sequence__native'step_kernel: typing.Literal['native'] = 'native'mode: typing.Literal['train', 'train_with_padding', 'inference'] = 'inference'chunk_size: int = 64return_last_states: bool = Trueautocast_kernel_dtype: typing.Literal['float32', 'bfloat16', 'float16'] = 'bfloat16'eps: float = 1e-06inference_state_dtype: typing.Literal['float32', 'bfloat16', 'float16'] = 'float32'ffn_proj_factor: float = 2.667ffn_round_up_to_multiple_of: int = 64gate_soft_cap: float = 15.0output_logit_soft_cap: float = 30.0weight_mode: typing.Literal['single', 'fused'] = 'single'use_cache: bool = Truepad_token_id: int | None = 1bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 2max_inference_chunksize: int = 16384 )
Parameter
- vocab_size (
int, opsional, default50304) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids. - hidden_size (
int, opsional, default4096) — Dimensi dari representasi tersembunyi. - embedding_dim (
int, opsional) — Dimensi dari embedding dan hidden states. - num_hidden_layers (
int, opsional, default32) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_blocks (
int, opsional, opsional, default 32) — Jumlah blok dari model xLSTM, gunakan num_hidden_layers jika None. - num_heads (
int, opsional, opsional, default 8) — Jumlah head untuk Layer/Cell xLSTM. - use_bias (
bool, opsional, opsional, defaultFalse) — Apakah akan menggunakan bias pada model xLSTM. - norm_reduction_force_float32 (
bool, opsional, opsional, defaultTrue) — Apakah akan memaksa operasi reduksi norm float32 untuk dilakukan dalam presisi fp32. - tie_word_embeddings (
bool, opsional, defaultFalse) — Apakah akan mengikat bobot embedding sesuai dengan pemetaantied_weights_keysmodel. - add_out_norm (
bool, opsional, opsional, defaultTrue) — Apakah akan menambahkan output norm setelah blok sebelum LMHead. - norm_eps (
float, opsional, default1e-06) — Epsilon yang digunakan oleh lapisan normalisasi lapisan. - qk_dim_factor (
float, opsional, opsional, default 0.5) — Faktor skala untuk dimensi query dan key. - v_dim_factor (
float, opsional, opsional, default 1.0) — Faktor skala untuk dimensi nilai. - chunkwise_kernel (
ChunkwiseKernelType, opsional, opsional, default"chunkwise--native_autograd") — Jenis kernel untuk mode pemrosesan chunkwise. - sequence_kernel (
SequenceKernelType, opsional, opsional, default"native_sequence__native") — Jenis kernel untuk mode pemrosesan sekuens. - step_kernel (
StepKernelType, opsional, opsional, default"native") — Jenis kernel untuk mode pemrosesan langkah. - mode (
BackendModeType, opsional, opsional, default"inference") — Mode operasi (inference diperlukan untuk generation). - chunk_size (
int, opsional, opsional, default 64) — Ukuran chunk internal. - return_last_states (
bool, opsional, opsional, defaultTrue) — Apakah akan mengembalikan state / cache terakhir secara internal. Harus diset ke True untuk proses generation. - autocast_kernel_dtype (
DtypeType, opsional, opsional, default"bfloat16") — Dtype kernel untuk state. - eps (
float, opsional, defaultnya1e-06) — Epsilon yang digunakan oleh lapisan normalisasi lapisan. - inference_state_dtype (
DtypeType, opsional, opsional, default"float32") — Dtype kernel untuk state dalam inferensi. - ffn_proj_factor (
float, opsional, opsional, default 2.667) — Faktor ukuran dari jaringan Feed Forward bergerbang pada proyeksi pasca-up. - ffn_round_up_to_multiple_of (
int, opsional, opsional, default 64) — Faktor ukuran pembulatan nilai untuk jaringan Feed Forward bergerbang pasca-proyeksi naik. - gate_soft_cap (
float, opsional, opsional, default 15.0) — Skala gate soft cap. - output_logit_soft_cap (
float, opsional, opsional, default 30.0) — Skala soft cap untuk logit output. - weight_mode (
Literal, opsional, default"single") — Apakah lapisan linear paralel dipisahkan atau digabungkan (single). - 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, default1) — ID token yang digunakan untuk padding dalam kosakata. - bos_token_id (
int, opsional, default0) — ID token yang digunakan untuk awal aliran (beginning-of-stream) dalam kosakata. - eos_token_id (
Union[int, list[int]], opsional, default2) — ID token yang digunakan untuk end-of-stream dalam kosakata. - max_inference_chunksize (
int, opsional, opsional, default 16384) — Membatasi ukuran chunk untuk inferensi guna menghemat memori.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari xLSTMModel. Kelas ini digunakan untuk membuat instans model Xlstm berdasarkan argumen yang ditentukan, sehingga mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari NX-AI/xLSTM-7b
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
Contoh:
>>> from transformers import xLSTMConfig, xLSTMModel
>>> # Initializing a xLSTM configuration
>>> configuration = xLSTMConfig()
>>> # Initializing a model (with random weights) from the configuration
>>> model = xLSTMModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configxLSTMModel
kelas transformers.xLSTMModel
< source >( config: xLSTMConfig )
Parameter
- config (xLSTMConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya saja. Lihat metode from_pretrained() untuk memuat bobot model.
Model Xlstm 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] = Noneinputs_embeds: typing.Optional[torch.LongTensor] = Nonecache_params: transformers.models.xlstm.modeling_xlstm.xLSTMCache | None = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → xLSTMOutput 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.
- inputs_embeds (
torch.LongTensordengan 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. - cache_params (
xLSTMCache, opsional) — xLSTMCache yang membawa status RNN. - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values).
Mengembalikan
xLSTMOutput atau tuple(torch.Tensor)
Sebuah xLSTMOutput atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (xLSTMConfig) dan input.
Metode forward dari xLSTMModel 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), opsional) — Urutan hidden-states pada keluaran lapisan terakhir model.cache_params (
~models.xlstm.modeling_xlstm.xLSTMCache, opsional) — Status model pada langkah waktu terakhir. Dapat digunakan dalam metode forward denganinput_idsberikutnya untuk menghindari penyediaaninput_idslama.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.
xLSTMLMHeadModel
kelas transformers.xLSTMForCausalLM
< source >( config: xLSTMConfig )
Parameter
- config (xLSTMConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya saja. Lihat metode from_pretrained() untuk memuat bobot model.
Model Xlstm 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] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonecache_params: transformers.models.xlstm.modeling_xlstm.xLSTMCache | None = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → xLSTMCausalLMOutput 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.
- 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. - cache_params (
xLSTMCache, opsional) — xLSTMCache yang membawa status RNN. - 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).
Mengembalikan
xLSTMCausalLMOutput atau tuple(torch.Tensor)
xLSTMCausalLMOutput atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (xLSTMConfig) dan input.
Metode forward dari xLSTMForCausalLM 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).cache_params (
xLSTMCache, opsional, membawa state RNN) — State model pada langkah waktu terakhir. Dapat digunakan dalam metode forward denganinput_idsberikutnya untuk menghindari penyediaaninput_idslama.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.