用於微調的基礎模型和超參數 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

用於微調的基礎模型和超參數

基礎模型耗費大量計算,並且在一個大型的無標籤語料庫上進行過訓練。微調預先訓練過的基礎模型是一種經濟實惠的方式,可以利用其廣泛的功能,又能在您自己的小型語料庫上自訂模型。微調是一種涉及進一步訓練的自訂方法,並且會改變模型的權重。

有以下需求時,微調可能對您有用:

  • 根據特定業務需求自訂您的模型

  • 您的模型可以成功使用網域特定的語言,例如行業術語、技術術語或其他專業詞彙

  • 針對特定任務增強效能

  • 應用程式中的準確、相對和上下文感知回應

  • 更以事實為基礎,毒性更低,更符合特定要求的反應

根據您的使用案例和選擇的基礎模型,您可以採取兩種主要方法進行微調。

  1. 如果您有興趣在特定網域資料上微調模型,請參閱使用網域適應性微調大型語言模型 (LLM)

  2. 如果您對使用提示詞和回應範例的指令式微調感興趣,請參閱使用提示指示微調大型語言模型 (LLM)

可用於微調的基礎模型

您可以微調下列任何 JumpStart 基礎模型:

  • Bloom 3B

  • Bloom 7B1

  • BloomZ 3B FP16

  • BloomZ 7B1 FP16

  • Code Llama 13B

  • Code Llama 13B Python

  • Code Llama 34B

  • Code Llama 34B Python

  • Code Llama 70B

  • Code Llama 70B Python

  • Code Llama 7B

  • Code Llama 7B Python

  • CyberAgentLM2-7B-Chat (CALM2-7B-Chat)

  • Falcon 40B BF16

  • Falcon 40B Instruct BF16

  • Falcon 7B BF16

  • Falcon 7B Instruct BF16

  • Flan-T5 基本

  • Flan-T5 大

  • Flan-T5 小

  • Flan-T5 XL

  • Flan-T5 XXL

  • Gemma 2B

  • Gemma 2B Instruct

  • Gemma 7B

  • Gemma 7B Instruct

  • GPT-2 XL

  • GPT-J 6B

  • GPT-Neo 1.3B

  • GPT-Neo 125M

  • GPT-NEO 2.7B

  • LightGPT Instruct 6B

  • Llama 2 13B

  • Llama 2 13B Chat

  • Llama 2 13B Neuron

  • Llama 2 70B

  • Llama 2 70B Chat

  • Llama 2 7B

  • Llama 2 7B Chat

  • Llama 2 7B Neuron

  • Mistral 7B

  • Mixtral 8x7B

  • Mixtral 8x7B Instruct

  • RedPajama INCITE Base 3B V1

  • RedPajama INCITE Base 7B V1

  • RedPajama INCITE Chat 3B V1

  • RedPajama INCITE Chat 7B V1

  • RedPajama INCITE Instruct 3B V1

  • RedPajama INCITE Instruct 7B V1

  • Stable Diffusion 2.1

通常支援的微調超參數

微調時,不同的基礎模型支援不同的超參數。以下是常見的支援超參數,可在訓練期間進一步自訂您的模型:

推論參數 Description

epoch

模型在訓練期間通過微調資料集的次數。必須是大於 1 的整數。

learning_rate

處理完每批微調訓練範例後,模型權重更新的速率。必須是大於 0 的正浮點數。

instruction_tuned

是否指示訓練模型。必須是 'True''False'

per_device_train_batch_size

用於訓練的每個 GPU 核心或 CPU 其批次大小。必須為正整數。

per_device_eval_batch_size

用於評估的每個 GPU 核心或 CPU 其批次大小。必須為正整數。

max_train_samples

為了偵錯或加速訓練,請將訓練範例的數量截斷至此值。值 -1 表示模型使用所有的訓練範例。必須為正整數或 -1。

max_val_samples

為了偵錯或加速訓練,請將驗證範例的數量截斷至此值。值 -1 表示模型使用所有的驗證範例。必須為正整數或 -1。

max_input_length

記號化後的總輸入序列長度上限。超過此長度的序列將被截斷。如果為 -1,則 max_input_length 會設定為 1024 和記號器所定義 model_max_length 的最小值。如果設定為正值,則 max_input_length 會設定為所提供值和記號器所定義 model_max_length 的最小值。必須為正整數或 -1。

validation_split_ratio

如果沒有驗證管道,則訓練-驗證比率會從訓練資料中分割出來。必須介於 0 到 1 之間。

train_data_split_seed

如果驗證資料不存在,這會固定將輸入訓練資料隨機分割至模型所使用的訓練和驗證資料。必須是整數。

preprocessing_num_workers

用於預先處理的程序數目。如果為 None,則主要程序會用於預先處理。

lora_r

低秩適應 (LoRA) r 值,做為權重更新的擴展因素。必須為正整數。

lora_alpha

低秩適應 (LoRA) alpha 值,做為權重更新的擴展因素。通常為 lora_r 大小的 2 到 4 倍。必須為正整數。

lora_dropout

低秩適應 (LoRA) 層的捨棄值必須是介於 0 到 1 之間的正浮點數。

int8_quantization

如果為 True,則模型會以 8 位元精確度載入以進行訓練。

enable_fsdp

如果為 True,則訓練會使用完全碎片資料平行處理。

您在 Studio 中微調模型時,可以指定超參數值。如需詳細資訊,請參閱在 Studio 中微調模型

您在使用 SageMaker Python SDK 微調模型時,也可以覆寫預設超參數值。如需詳細資訊,請參閱使用 JumpStartEstimator 類別微調公開可用的基礎模型