

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

# 用於微調的基礎模型和超參數
<a name="jumpstart-foundation-models-fine-tuning"></a>

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

有以下需求時，微調可能對您有用：
+ 根據特定業務需求自訂您的模型
+ 您的模型可以成功使用網域特定的語言，例如行業術語、技術術語或其他專業詞彙
+ 針對特定任務增強效能
+ 應用程式中的準確、相對和上下文感知回應
+ 更以事實為基礎，毒性更低，更符合特定要求的反應

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

1. 如果您有興趣在特定網域資料上微調模型，請參閱[使用網域適應性微調大型語言模型 (LLM)](jumpstart-foundation-models-fine-tuning-domain-adaptation.md)。

1. 如果您對使用提示詞和回應範例的指令式微調感興趣，請參閱[使用提示指示微調大型語言模型 (LLM)](jumpstart-foundation-models-fine-tuning-instruction-based.md)。

## 可用於微調的基礎模型
<a name="jumpstart-foundation-models-fine-tuning-models"></a>

您可以微調下列任何 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

## 通常支援的微調超參數
<a name="jumpstart-foundation-models-fine-tuning-hyperparameters"></a>

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


| 推論參數 | 說明 | 
| --- | --- | 
| `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 中微調模型](jumpstart-foundation-models-use-studio-updated-fine-tune.md)。

您在使用 SageMaker Python SDK 微調模型時，也可以覆寫預設超參數值。如需詳細資訊，請參閱[使用 `JumpStartEstimator` 類別微調公開可用的基礎模型](jumpstart-foundation-models-use-python-sdk-estimator-class.md)。