TRL 文件

模型

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

模型

TRL 透過 `AutoModelForCausalLMWithValueHead` 類支援 transformers 中的所有解碼器模型架構,如 GPT-2、OPT 和 GPT-Neo。此外,透過 `AutoModelForSeq2SeqLMWithValueHead`,您可以使用編碼器-解碼器架構,如 T5。TRL 還需要參考模型,它們是所訓練模型的凍結副本。使用 `create_reference_model`,您可以輕鬆建立一個凍結副本,並在兩個模型之間共享層以節省記憶體。

PreTrainedModelWrapper

class trl.PreTrainedModelWrapper

< >

( pretrained_model = None score_module = None supports_rm_adapter = False rm_adapter_name = None **kwargs )

引數

  • pretrained_model (transformers.PreTrainedModel) — 要包裝的模型。
  • parent_class (transformers.PreTrainedModel) — 要包裝的模型的父類。
  • supported_args (list) — 包裝器類支援的引數列表。

一個圍繞 (`transformers.PreTrainedModel`) 的包裝類,以相容 (`~transformers.PreTrained`) 類,從而保留 (`~transformers.PreTrainedModel`) 類的某些屬性和方法。

add_and_load_reward_modeling_adapter

< >

( pretrained_model adapter_model_id adapter_name = 'reward_model_adapter' token = None )

新增並載入一個獎勵建模介面卡。僅當模型是 `PeftModel` 並且您已使用 `reward_modeling_adapter_id` 引數(指向獎勵建模介面卡的ID)初始化模型時,才能使用此方法。後者還需要包含分數頭才能產生獎勵。

compute_reward_score

< >

( input_ids attention_mask = None **kwargs )

計算給定輸入的獎勵分數。該方法首先必須啟用介面卡,然後計算獎勵分數。之後,模型將停用獎勵建模介面卡並重新啟用預設的 ppo 介面卡。

from_pretrained

< >

( pretrained_model_name_or_path *model_args **kwargs )

引數

  • pretrained_model_name_or_path (str or transformers.PreTrainedModel) — 預訓練模型的路徑或其名稱。
  • *model_args (list, optional)) — 傳遞給底層模型的 `from_pretrained` 方法的額外位置引數。
  • **kwargs (dict, optional) — 傳遞給底層模型的 `from_pretrained` 方法的額外關鍵字引數。我們還會預處理 kwargs 以提取特定於 `transformers.PreTrainedModel` 類和 trl 模型的引數。kwargs 還支援 `peft` 庫中的 `prepare_model_for_kbit_training` 引數。

從 `transformers` 中的預訓練模型例項化一個新模型。預訓練模型使用 `transformers.PreTrainedModel` 類的 `from_pretrained` 方法載入。特定於 `transformers.PreTrainedModel` 類的引數會傳遞給此方法並從 `kwargs` 引數中過濾掉。

post_init

< >

( *args **kwargs )

後初始化方法。此方法在模型例項化並從檢查點載入後呼叫。它可用於執行其他操作,如載入 state_dict。

push_to_hub

< >

( *args **kwargs )

引數

  • *args (list, optional) — 傳遞給底層模型的 `push_to_hub` 方法的位置引數。
  • **kwargs (dict, optional) — 傳遞給底層模型的 `push_to_hub` 方法的關鍵字引數。

將預訓練模型推送到 Hub。此方法是 `transformers.PreTrainedModel.push_to_hub` 的包裝器。有關更多資訊,請參閱 `transformers.PreTrainedModel.push_to_hub` 的文件。

save_pretrained

< >

( *args **kwargs )

引數

  • *args (list, optional) — 傳遞給底層模型的 `save_pretrained` 方法的位置引數。
  • **kwargs (dict, optional) — 傳遞給底層模型的 `save_pretrained` 方法的關鍵字引數。

將預訓練模型儲存到目錄。此方法是 `transformers.PreTrainedModel.save_pretrained` 的包裝器。有關更多資訊,請參閱 `transformers.PreTrainedModel.save_pretrained` 的文件。

state_dict

< >

( *args **kwargs )

返回預訓練模型的 state_dict。

AutoModelForCausalLMWithValueHead

class trl.AutoModelForCausalLMWithValueHead

< >

( pretrained_model **kwargs )

一個自迴歸模型,除了語言模型頭外,還有一個價值頭。這個類繼承自 `~trl.PreTrainedModelWrapper` 幷包裝了一個 `transformers.PreTrainedModel` 類。這個包裝類支援諸如 `from_pretrained`、`push_to_hub` 和 `generate` 等經典函式。要呼叫被包裝模型的方法,只需操作該類的 `pretrained_model` 屬性即可。

類屬性

  • transformers_parent_class (transformers.PreTrainedModel) — 被包裝模型的父類。對於這個類,應將其設定為 `transformers.AutoModelForCausalLM`。
  • supported_args (tuple) — 一個字串元組,用於標識 `ValueHead` 類支援的引數。目前支援的引數有
    • summary_dropout_prob (float, optional, 預設為 None) — `ValueHead` 類的 dropout 機率。
    • v_head_initializer_range (float, optional, 預設為 0.2) — 如果選擇了特定的初始化策略,則為 `ValueHead` 的初始化範圍。
    • v_head_init_strategy (str, optional, 預設為 None) — `ValueHead` 的初始化策略。目前支援的策略有
      • `None` — 使用隨機分佈初始化 `ValueHead` 的權重。這是預設策略。
      • “normal” — 使用正態分佈初始化 `ValueHead` 的權重。

__init__

< >

( pretrained_model **kwargs )

引數

  • pretrained_model (transformers.PreTrainedModel) — 要包裝的模型。它應該是一個因果語言模型,例如 GPT2,或任何對映在 `AutoModelForCausalLM` 類中的模型。
  • kwargs (dict, optional) — 傳遞給 `ValueHead` 類的附加關鍵字引數。

初始化模型。

forward

< >

( input_ids = None past_key_values = None attention_mask = None return_past_key_values = False **kwargs )

引數

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 詞彙表中輸入序列標記的索引。
  • past_key_values (tuple(tuple(torch.FloatTensor)), optional) — 包含由模型計算的預計算隱藏狀態(注意力塊中的鍵和值),以加速順序解碼(參見 *past_key_values* 輸入)。
  • attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), optional) — 掩碼,用於避免在填充標記索引上執行注意力。掩碼值選擇在 [0, 1] 中:
    • 1 表示**未被遮蔽**的標記,
    • 0 表示**被遮蔽**的標記。
  • return_past_key_values (bool) — 指示是否應返回計算的隱藏狀態的標誌。
  • kwargs (dict, optional) — 傳遞給被包裝模型的附加關鍵字引數。

對被包裝的模型應用前向傳播,並返回價值頭的 logits。

生成

< >

( *args **kwargs )

引數

  • *args (list, optional) — 傳遞給被包裝模型的 `generate` 方法的位置引數。
  • **kwargs (dict, optional) — 傳遞給被包裝模型的 `generate` 方法的關鍵字引數。

被包裝模型 `generate` 方法的一個簡單包裝器。有關支援的引數的更多資訊,請參閱被包裝模型的 `generate` 方法。

_init_weights

< >

( **kwargs )

引數

  • **kwargs (dict, optional) — 傳遞給 `ValueHead` 類的附加關鍵字引數。這些引數可以包含 `v_head_init_strategy` 引數以及 `v_head_initializer_range` 引數。

初始化價值頭的權重。預設的初始化策略是隨機的。使用者可以透過在呼叫 `.from_pretrained` 時傳遞 `v_head_init_strategy` 引數來傳遞不同的初始化策略。支援的策略有

  • normal:使用正態分佈初始化權重。

AutoModelForSeq2SeqLMWithValueHead

class trl.AutoModelForSeq2SeqLMWithValueHead

< >

( pretrained_model **kwargs )

引數

  • pretrained_model (transformers.PreTrainedModel) — 要包裝的模型。它應該是一個因果語言模型,例如 GPT2,或任何對映在 `AutoModelForSeq2SeqLM` 類中的模型。
  • kwargs — 傳遞給 `ValueHead` 類的附加關鍵字引數。

一個帶有價值頭的 seq2seq 模型,除了語言模型頭之外。這個類繼承自 `~trl.PreTrainedModelWrapper` 幷包裝了一個 `transformers.PreTrainedModel` 類。這個包裝類支援諸如 `from_pretrained` 和 `push_to_hub` 等經典函式,並提供一些額外的功能,如 `generate`。

__init__

< >

( pretrained_model **kwargs )

forward

< >

( input_ids = None past_key_values = None attention_mask = None return_past_key_values = False **kwargs )

生成

< >

( *args **kwargs )

我們在被包裝的模型上呼叫 `generate`。

_init_weights

< >

( **kwargs )

我們初始化價值頭的權重。

create_reference_model

trl.create_reference_model

< >

( model: PreTrainedModelWrapper num_shared_layers: typing.Optional[int] = None pattern: typing.Optional[str] = None ) PreTrainedModelWrapper

引數

  • model (PreTrainedModelWrapper) — 要複製的模型。
  • num_shared_layers (int, optional) — 兩個模型之間共享並保持凍結的初始層數。
  • pattern (str, optional) — 共享層透過字串模式選擇(例如,對於 GPT2 是 “transformer.h.{layer}”),如果需要自定義模式,可以在此處傳遞。

返回

PreTrainedModelWrapper

建立一個模型的靜態參考副本。請注意,模型將處於 .eval() 模式。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.