Transformers documentation

Decision Transformer

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Model ini dipublikasikan di HF papers pada 2021-06-02 dan disumbangkan ke Hugging Face Transformers pada 2022-03-23.

Decision Transformer

Ikhtisar

Model Decision Transformer diusulkan dalam Decision Transformer: Reinforcement Learning via Sequence Modeling
oleh Lili Chen, Kevin Lu, Aravind Rajeswaran, Kimin Lee, Aditya Grover, Michael Laskin, Pieter Abbeel, Aravind Srinivas, Igor Mordatch.

Abstrak dari makalah tersebut adalah sebagai berikut:

Kami memperkenalkan sebuah kerangka kerja yang mengabstraksi Reinforcement Learning (RL) sebagai masalah pemodelan sekuens. Hal ini memungkinkan kami untuk memanfaatkan kesederhanaan dan skalabilitas arsitektur Transformer, serta kemajuan terkait dalam pemodelan bahasa seperti GPT-x dan BERT. Secara khusus, kami menyajikan Decision Transformer, sebuah arsitektur yang memandang masalah RL sebagai pemodelan sekuens bersyarat. Berbeda dengan pendekatan RL sebelumnya yang menyesuaikan fungsi nilai atau menghitung gradien kebijakan, Decision Transformer secara sederhana mengeluarkan aksi optimal dengan memanfaatkan Transformer yang diberi masker kausal. Dengan mengondisikan model autoregresif pada return (reward) yang diinginkan, keadaan masa lalu, dan aksi, model Decision Transformer kami dapat menghasilkan aksi masa depan yang mencapai return yang diinginkan. Meskipun sederhana, Decision Transformer menyamai atau melampaui kinerja baseline offline RL model-free terkini pada tugas-tugas Atari, OpenAI Gym, dan Key-to-Door.

Versi model ini ditujukan untuk tugas di mana state berupa vektor.

Model ini disumbangkan oleh edbeeching. Kode aslinya dapat ditemukan di sini.

DecisionTransformerConfig

kelas transformers.DecisionTransformerConfig

< >

( 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 = Nonestate_dim: int = 17act_dim: int = 4hidden_size: int = 128max_ep_len: int = 4096action_tanh: bool = Truevocab_size: int = 1n_positions: int = 1024n_layer: int = 3n_head: int = 1n_inner: int | None = Noneactivation_function: str = 'relu'resid_pdrop: float | int = 0.1embd_pdrop: float | int = 0.1attn_pdrop: float | int = 0.1layer_norm_epsilon: float = 1e-05initializer_range: float = 0.02scale_attn_weights: bool = Trueuse_cache: bool = Truebos_token_id: int | None = 50256eos_token_id: int | list[int] | None = 50256scale_attn_by_inverse_layer_idx: bool = Falsereorder_and_upcast_attn: bool = Falseadd_cross_attention: bool = False )

Parameter

  • state_dim (int, opsional, default 17) — Ukuran state untuk lingkungan RL
  • act_dim (int, opsional, defaultnya 4) — Ukuran ruang aksi output
  • hidden_size (int, opsional, default 128) — Dimensi dari representasi tersembunyi.
  • max_ep_len (int, opsional, default 4096) — Panjang maksimum episode di lingkungan
  • action_tanh (bool, opsional, default True) — Apakah akan menggunakan aktivasi tanh pada prediksi aksi
  • vocab_size (int, opsional, default 1) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan oleh input_ids.
  • n_positions (int, opsional, default 1024) — Panjang maksimum urutan yang mungkin digunakan dengan model ini.
  • n_layer (int, opsional, default 3) — Jumlah lapisan tersembunyi dalam decoder Transformer.
  • n_head (int, opsional, default 1) — Jumlah kepala perhatian untuk setiap lapisan perhatian dalam decoder Transformer.
  • n_inner (int, opsional) — Dimensi dari representasi MLP.
  • activation_function (str, opsional, defaultnya relu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya, "gelu", "relu", "silu", dan sebagainya.
  • resid_pdrop (Union[float, int], opsional, default 0.1) — Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder, dan pooler.
  • embd_pdrop (Union[float, int], opsional, default 0.1) — Rasio dropout untuk embedding.
  • attn_pdrop (Union[float, int], opsional, default 0.1) — Rasio dropout untuk probabilitas perhatian.
  • layer_norm_epsilon (float, opsional, defaultnya 1e-05) — Epsilon yang digunakan oleh lapisan normalisasi lapisan.
  • initializer_range (float, opsional, defaultnya 0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.
  • scale_attn_weights (bool, opsional, default True) — Skalakan bobot perhatian dengan membaginya dengan sqrt(hidden_size).
  • use_cache (bool, opsional, defaultnya True) — Apakah model harus mengembalikan perhatian kunci/nilai terakhir (tidak digunakan oleh semua model). Hanya relevan jika config.is_decoder=True atau ketika model adalah model generatif yang hanya decoder.
  • bos_token_id (int, opsional, default 50256) — ID token yang digunakan untuk penanda awal aliran (beginning-of-stream) dalam kosakata.
  • eos_token_id (Union[int, list[int]], opsional, default 50256) — ID token yang digunakan untuk end-of-stream dalam kosakata.
  • scale_attn_by_inverse_layer_idx (bool, opsional, default False) — Apakah bobot perhatian akan diskalakan tambahan dengan 1 / layer_idx + 1.
  • reorder_and_upcast_attn (bool, opsional, default False) — Apakah akan menskalakan kunci (K) sebelum menghitung perhatian (dot-product) dan menaikkan tipe data dot-product/softmax perhatian ke float() saat melatih dengan presisi campuran.
  • add_cross_attention (bool, opsional, default False) — Apakah lapisan cross-attention harus ditambahkan ke model.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari DecisionTransformerModel. Kelas ini digunakan untuk membuat model Decision Transformer sesuai dengan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari

Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.

Contoh:

>>> from transformers import DecisionTransformerConfig, DecisionTransformerModel

>>> # Initializing a DecisionTransformer configuration
>>> configuration = DecisionTransformerConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = DecisionTransformerModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

DecisionTransformerGPT2Model

kelas transformers.DecisionTransformerGPT2Model

< >

( config: DecisionTransformerConfig )

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: typing.Optional[torch.Tensor] = Noneencoder_attention_mask: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> )

DecisionTransformerModel

kelas transformers.DecisionTransformerModel

< >

( config: DecisionTransformerConfig )

Parameter

  • config (DecisionTransformerConfig) — 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 Decision Transformer

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

< >

( states: typing.Optional[torch.Tensor] = Noneactions: typing.Optional[torch.Tensor] = Nonerewards: typing.Optional[torch.Tensor] = Nonereturns_to_go: typing.Optional[torch.Tensor] = Nonetimesteps: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Noneoutput_attentions: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DecisionTransformerOutput or tuple(torch.Tensor)

Parameter

  • states (torch.Tensor dengan bentuk (batch_size, episode_length, state_dim)) — State untuk setiap langkah dalam trajektori
  • actions (torch.Tensor dengan bentuk (batch_size, episode_length, act_dim)) — Aksi yang diambil oleh kebijakan “expert” untuk keadaan saat ini, yang dimasker untuk prediksi auto regressive
  • rewards (torch.Tensor dengan bentuk (batch_size, episode_length, 1)) — Hadiah untuk setiap keadaan dan aksi
  • returns_to_go (torch.Tensor dengan bentuk (batch_size, episode_length, 1)) — Return untuk setiap state dalam trajektori
  • timesteps (torch.LongTensor dengan bentuk (batch_size, episode_length)) — Timestep untuk setiap langkah dalam trajektori
  • attention_mask (torch.Tensor dengan 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.

    Apa itu attention mask?

  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.

Mengembalikan

DecisionTransformerOutput atau tuple(torch.Tensor)

DecisionTransformerOutput atau tuple dari torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (DecisionTransformerConfig) dan input.

Metode forward dari DecisionTransformerModel menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • state_preds (torch.Tensor dengan bentuk (batch_size, sequence_length, state_dim)) — Prediksi state lingkungan

  • action_preds (torch.Tensor dengan bentuk (batch_size, sequence_length, action_dim)) — Prediksi aksi model

  • return_preds (torch.Tensor dengan bentuk (batch_size, sequence_length, 1)) — Return yang diprediksi untuk setiap state

  • hidden_states (torch.Tensor, opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.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 (torch.Tensor, opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.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).

  • last_hidden_state (torch.Tensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Urutan hidden-states pada keluaran lapisan terakhir model.

Contoh:

>>> from transformers import DecisionTransformerModel
>>> import torch

>>> model = DecisionTransformerModel.from_pretrained("edbeeching/decision-transformer-gym-hopper-medium")
>>> # evaluation
>>> model = model.to(device)
>>> model.eval()

>>> env = gym.make("Hopper-v3")
>>> state_dim = env.observation_space.shape[0]
>>> act_dim = env.action_space.shape[0]

>>> state = env.reset()
>>> states = torch.from_numpy(state).reshape(1, 1, state_dim).to(device=device, dtype=torch.float32)
>>> actions = torch.zeros((1, 1, act_dim), device=device, dtype=torch.float32)
>>> rewards = torch.zeros(1, 1, device=device, dtype=torch.float32)
>>> target_return = torch.tensor(TARGET_RETURN, dtype=torch.float32).reshape(1, 1)
>>> timesteps = torch.tensor(0, device=device, dtype=torch.long).reshape(1, 1)
>>> attention_mask = torch.zeros(1, 1, device=device, dtype=torch.float32)

>>> # forward pass
>>> with torch.no_grad():
...     state_preds, action_preds, return_preds = model(
...         states=states,
...         actions=actions,
...         rewards=rewards,
...         returns_to_go=target_return,
...         timesteps=timesteps,
...         attention_mask=attention_mask,
...         return_dict=False,
...     )
Update on GitHub