隨著客戶對生成式人工智慧的需求不斷增加,許多公司開始將其應用於業務中。許多案例涉及使用預訓練的大型語言模型(LLMs),例如透過檢索增強生成(RAG)的方法。然而,對於一些進階的、特定領域的任務,或是需要特定格式的情況,有時需要進行模型的自訂化,例如微調。亞馬遜基石(Amazon Bedrock)提供了自訂領先基礎模型(FMs)的能力,例如Anthropic的Claude 3 Haiku和Meta的Llama 3.1。
亞馬遜基石是一項完全管理的服務,透過API使來自領先人工智慧初創公司的FMs和亞馬遜的FMs可用,讓你可以從多種FMs中選擇最適合你業務需求的模型。亞馬遜基石提供無伺服器的體驗,讓你可以快速開始,私下使用自己的數據自訂FMs,並利用AWS工具將其整合並部署到你的應用程式中,而無需管理任何基礎設施。
微調是一個監督式訓練過程,使用標記的提示和回應對來進一步訓練預訓練的模型,以提高其在特定用例中的表現。微調的一個持續痛點是缺乏有效自訂這些模型的數據。收集相關數據是困難的,維持其質量也是另一個挑戰。此外,微調LLMs需要大量的資源投入。在這種情況下,合成數據生成提供了一個有希望的解決方案。你可以使用較大的語言模型生成合成訓練數據,並用它來微調較小的模型,這樣可以更快地完成。
在這篇文章中,我們探討如何使用亞馬遜基石生成合成訓練數據來微調LLM。此外,我們還提供具體的評估結果,展示在數據稀缺時合成數據在微調中的強大能力。
解決方案概述
解決方案包括兩個主要步驟:
使用亞馬遜基石的InvokeModel API生成合成數據。
使用亞馬遜基石的自訂模型進行微調。
在合成數據生成中,我們使用較大的語言模型(例如亞馬遜基石上的Anthropic的Claude 3 Sonnet)作為教師模型,並使用較小的語言模型(例如亞馬遜基石上的Anthropic的Claude Instant 1.2或Claude 3 Haiku)作為學生模型進行微調。我們使用較大的教師模型根據其知識生成新數據,然後用這些數據訓練較小的學生模型。這個概念類似於深度學習中的知識蒸餾,不過我們是使用教師模型生成新的數據集,而不是直接修改學生模型的架構。
以下圖示說明了解決方案的整體流程。
最後,我們分享了實驗結果,將使用合成數據微調的模型的表現與基準(未微調)模型以及使用相同數量的原始訓練數據微調的模型進行比較。
前置條件
要使用亞馬遜基石生成合成數據並微調模型,首先需要創建一個具有適當權限的AWS身份與訪問管理(IAM)服務角色。這個角色將由亞馬遜基石用來代表你訪問必要的資源。
有關創建服務角色的說明,請參閱為模型自訂創建服務角色。此外,確保該角色具有bedrock:InvokeModel操作的權限。
如果你使用亞馬遜SageMaker筆記本實例運行此代碼,請編輯附加到筆記本的IAM角色(例如,AmazonSageMaker-ExecutionRole-XXX),而不是創建新的角色。請遵循為模型自訂創建服務角色來修改信任關係並添加S3存儲桶權限。此外,在角色的權限標籤上,創建以下內聯策略:
策略名稱:bedrock-customization
策略名稱:iam-pass-role
SageMaker執行角色的最終權限策略應如下所示,包括AmazonSageMaker-ExecutionPolicy、AmazonSageMakerFullAccess、bedrock-customization和iam-pass-role。
使用亞馬遜基石的InvokeModel API生成合成數據
我們使用亞馬遜基石的InvokeModel API生成合成數據以進行微調。你可以使用API以程式化的方式向你選擇的模型發送推理(文本生成)請求。你只需要一個針對數據合成精心設計的提示。我們為我們的用例使用了以下示例提示:
我們的用例目標是微調模型,以根據給定的參考文件和問題生成相關且連貫的答案。RAG是一種流行的技術,常用於這類問答任務;然而,RAG的一個主要挑戰是可能檢索到不相關或無關的文件,這可能導致不準確的回應。你可以應用微調來引導模型更好地關注文件與問題的相關性,而不是在沒有上下文的情況下使用提供的文件來回答問題。
我們的數據集包括有關AWS服務的問答對,每個樣本最多有五個參考文件作為上下文,並跟隨一個單行問題。以下表格顯示了一個示例。
document
上下文:
文件1:
步驟1:準備使用AWS CodeStar專案
在這一步中,你需要創建一個AWS CodeStar服務角色和一個Amazon EC2金鑰對,這樣你就可以開始創建和使用AWS CodeStar專案。如果你之前使用過AWS CodeStar,請跳到步驟2。
步驟2:在AWS CodeStar中創建一個專案。
對於這一步,請遵循AWS CodeStar用戶指南中的設置AWS CodeStar的說明。不要在這些說明中創建新的AWS帳戶、IAM用戶或IAM組。使用在AWS Cloud9的團隊設置中創建或識別的角色。當你完成這些說明後,返回到這個主題。
文件2:
設置AWS CodeStar
在你開始使用AWS CodeStar之前,必須完成以下步驟。
主題:
步驟1:創建一個帳戶
步驟2:創建AWS CodeStar服務角色
步驟3:配置用戶的IAM權限
步驟4:為AWS CodeStar專案創建Amazon EC2金鑰對
步驟5:打開AWS CodeStar控制台
下一步
文件3:
我該如何開始使用AWS CodeStar?
要開始使用AWS CodeStar:
按照設置AWS CodeStar中的步驟準備使用AWS CodeStar。
通過遵循AWS CodeStar入門教程中的步驟來實驗AWS CodeStar。
通過遵循將團隊成員添加到AWS CodeStar專案中的步驟與其他開發人員共享你的專案。
通過遵循將IDE與AWS CodeStar一起使用的步驟來整合你最喜愛的IDE。
文件4:
步驟2:在AWS CodeStar中創建一個專案
在這一步中,你需要在AWS CodeStar中創建一個專案。
如果你已經有一個想要使用的AWS CodeStar專案,請跳到步驟3:創建AWS Cloud9開發環境並將其連接到專案。
對於這一步,請遵循AWS CodeStar用戶指南中的在AWS CodeStar中創建專案的說明。在AWS CodeStar創建專案的向導中,當你到達設置工具頁面或連接到你的源代碼庫頁面時,選擇跳過,然後返回到這個主題。
文件5:
在AWS CodeStar中創建一個專案
你使用AWS CodeStar控制台創建一個專案。如果你使用專案模板,它會為你設置所需的資源。該模板還包括你可以用來開始編碼的示例代碼。
要創建專案,請使用具有AWSCodeStarFullAccess策略或等效權限的IAM用戶登錄AWS管理控制台。更多信息,請參見設置AWS CodeStar。
注意:在完成本主題中的程序之前,必須完成設置AWS CodeStar中的步驟。
主題
在AWS CodeStar中創建一個專案(控制台)
在AWS CodeStar中創建一個專案(AWS CLI)
請根據你的能力回答以下問題。如果答案在上下文中,請使用並改述該信息。否則,依賴你的知識和記憶。
question
我該如何開始使用AWS CodeStar?
answer
要開始使用AWS CodeStar,請遵循以下步驟:
1. 準備使用AWS CodeStar專案:
a. 按照AWS CodeStar用戶指南中的“設置AWS CodeStar”(文件2)的說明創建AWS CodeStar服務角色。
b. 按照同一指南中的說明為AWS CodeStar專案創建Amazon EC2金鑰對。
2. 在AWS CodeStar中創建一個專案:
a. 使用具有AWSCodeStarFullAccess策略或等效權限的IAM用戶登錄AWS管理控制台。
b. 在AWS CodeStar控制台中,選擇可用的專案模板之一,該模板將自動為你的專案配置所有所需的資源。
c. 一旦你的專案配置完成,你可以從應用程序端點瓷磚中查看正在運行的應用程序。
3. 連接到你的專案的AWS CodeCommit源代碼庫:
a. 使用AWS CodeStar控制台中提供的步驟連接到你的專案的AWS CodeCommit源代碼庫。
b. 開始編碼並對你的專案的源代碼進行更改。
4. 在發布過程中跟蹤和管理變更:
a. 使用專案儀表板跟蹤和管理發布過程中的變更。
b. 在儀表板上查看最近的專案活動。
5. 與其他開發人員共享你的專案:
a. 按照“將團隊成員添加到AWS CodeStar專案”的步驟與其他開發人員共享你的專案。
6. 整合你最喜愛的IDE:
a. 按照“將IDE與AWS CodeStar一起使用”的步驟將你喜愛的集成開發環境(IDE)與AWS CodeStar整合。
[1] https://docs.aws.amazon.com/codestar/latest/userguide/setting-up.html
[2] https://docs.aws.amazon.com/codestar/latest/userguide/create-project.html
[3] https://docs.aws.amazon.com/codestar/latest/userguide/getting-started.html
對於數據合成,我們要求模型為每個參考文件生成三組新的問答對。然而,你可以根據需要調整數量。關鍵是讓模型深入思考各種主題。因為生成合成數據的目的是豐富訓練數據集,因此讓模型查看文件的不同部分並創建與原始數據不同主題的問答對會更有益。
以下示例顯示如何使用亞馬遜基石的InvokeModel API生成合成數據。我們用Anthropic的Claude 3 Sonnet測試了前面的提示。如果你想測試不同的模型,請從亞馬遜基石模型ID中檢索相應的模型ID,並在函數中替換modelId變數。
前面的函數返回三個JSONL記錄,包含問題、答案和主題作為鍵。以下parse_llm_output函數加載字符串並使用正則表達式檢索生成的問題和答案。然後,create_synthetic_samples函數結合這兩個功能以生成最終的合成訓練樣本。
以下腳本結合了所有前面的函數,並為你提供最終的訓練集,包括原始和合成樣本。我們使用to_customization_format函數將樣本轉換為自訂工作所需的格式,並將其保存為train.jsonl。假設輸入數據是一個包含三列:document、question和answer的CSV文件。
使用亞馬遜基石的自訂模型進行微調
現在你已經生成了由教師模型生成的合成數據以及你的原始數據,是時候訓練學生模型了。我們使用亞馬遜基石的自訂模型功能對學生模型進行微調。
模型自訂化是向FM提供訓練數據以提高其在特定用例中表現的過程。亞馬遜基石目前提供三種模型自訂化方法:
微調
繼續預訓練
蒸餾(預覽)。
你可以通過亞馬遜基石控制台或API使用這些方法創建自己的自訂模型。欲了解有關支持的模型和各種自訂方法的AWS區域的更多信息,請參見模型自訂用戶指南。在本節中,我們將重點介紹如何使用API進行模型微調。
要在亞馬遜基石中創建微調作業,請完成以下前置條件步驟:
為你的訓練數據創建一個亞馬遜簡單存儲服務(Amazon S3)存儲桶,並為你的輸出數據創建另一個(名稱必須唯一)。
將jsonl文件上傳到訓練數據存儲桶。
確保你已創建IAM角色,如前置條件中所述。
當這些步驟完成後,運行以下代碼以提交新的微調作業。在我們的用例中,學生模型是Anthropic的Claude Instant 1.2。撰寫時,Anthropic的Claude 3 Haiku已經普遍可用,我們建議使用Anthropic的Claude 3 Haiku來跟隨其餘代碼。關於發布公告,請參見亞馬遜基石中Anthropic的Claude 3 Haiku的微調現在普遍可用。
如果你想嘗試不同的模型,必須自己檢查模型提供者的服務條款。許多提供者限制使用其模型來訓練競爭模型。最新的模型支持信息,請參見模型自訂的支持區域和模型,並相應地替換baseModelIdentifier。不同模型有不同的超參數。欲了解更多信息,請參見自訂模型超參數。
當狀態變更為完成時,你的微調學生模型就可以使用了。要使用此自訂模型進行推理,你需要購買已配置的吞吐量。對於自訂模型,提供了一個靈活的無承諾選項,可以在不使用時關閉,並按小時計費。在購買已配置的吞吐量之前,控制台會提供成本估算。
在亞馬遜基石控制台中,選擇導航窗格中的自訂模型。選擇你微調的模型並選擇購買已配置的吞吐量。
模型名稱和類型會自動為你選擇。選擇無承諾作為承諾期限。在你做出此選擇後,將顯示預估成本。如果你對價格滿意,請選擇確認購買。
當已配置的吞吐量可用時,檢索已配置自訂模型的ARN並運行推理:
評估
在這一部分,我們分享了實驗結果,以提供數據點,說明教師模型生成的合成數據如何提高學生模型的表現。對於評估方法,我們使用了LLM作為評判者的方法,讓評判模型比較來自兩個不同模型的回應,並選擇更好的回應。此外,我們對一小部分進行了人工評估,以評估LLM作為評判者和人類評判者的偏好是否一致。
我們進行了控制實驗,將四個不同的模型進行比較:為第四個模型生成了1,500個合成訓練樣本,這些樣本是由Anthropic的Claude 3 Sonnet生成的,並且我們為每個原始參考文件創建了三個合成樣本(3個樣本 * 500個原始參考文件 = 1,500個合成樣本)。
Instant base model
Anthropic的Claude Instant未經任何自訂
Fine-tuned 500 original
Anthropic的Claude Instant使用500個原始訓練樣本進行微調
Fine-tuned 2,000 original
Anthropic的Claude Instant使用2,000個原始訓練樣本進行微調
Fine-tuned with synthetic
Anthropic的Claude Instant使用500個原始訓練樣本加上1,500個合成訓練樣本進行微調
LLM作為評判者的結果
LLM輸出評估是開發生成式人工智慧應用的重要步驟,但如果手動進行,會非常昂貴且耗時。系統性評估大量輸出質量的另一種解決方案是LLM作為評判者的方法,使用LLM來評估另一個LLM的回應。
對於我們的用例,我們使用了Anthropic的Claude 3 Sonnet和Meta的Llama 3 70B作為評判者。我們要求LLM評判者比較來自兩個不同模型的輸出,並選擇其中一個或聲明平局。以下圖表總結了評判者的決策。每個數字代表相應模型被選為提供更好答案的百分比,排除平局情況。測試集包含343個樣本。
如前圖所示,Anthropic的Claude 3 Sonnet評判者更喜歡使用合成示例微調的模型的回應,超過了Anthropic的Claude Instant基礎模型(84.8%的偏好)和使用500個原始樣本微調的模型(72.3%的偏好)。然而,評判者得出結論,使用2,000個原始示例微調的模型比使用合成示例的微調模型更受青睞(32.3%的偏好)。這與預期一致,當有大量高質量的原始數據可用時,使用準確反映目標數據分佈的大型訓練數據會更好。
Meta Llama評判者得出了類似的結論。如前圖所示,它更喜歡使用合成樣本微調的模型的回應,超過了Anthropic的Claude Instant基礎模型(75.6%的偏好)和使用500個原始示例微調的模型(76.4%的偏好),但使用2,000個原始示例微調的模型是最終的勝者。
人類評估結果
為了補充LLM作為評判者的結果,我們進行了兩位人類評判者的人工評估。我們要求兩位人類評估者執行與LLM評判者相同的成對比較任務,但針對20個示例。以下圖表總結了結果。
如前圖所示,兩位人類評估者得出了類似的結論,強化了LLM作為評判者的結果。使用合成示例微調的模型生成的輸出比Anthropic的Claude Instant基礎模型和使用500個原始示例微調的模型更受青睞;然而,它並未超越使用2,000個原始示例的微調模型。
這些來自LLM評判者和人類評判者的比較評估結果強烈展示了在訓練數據稀缺時使用數據合成的力量和潛力。此外,通過使用教師模型的高質量數據,我們可以有效地訓練學生模型,這對於在生產環境中的部署來說是輕量且具成本效益的。
亞馬遜基石評估
使用亞馬遜基石進行LLM作為評判者和人類評估變得更加容易。亞馬遜基石上的模型評估允許你評估、比較和選擇最適合你用例的FMs。人類評估工作流程可以使用你自己的員工或AWS管理的團隊作為評審者。欲了解如何設置人類評估工作流程的更多信息,請參見創建你的第一個使用人類工作者的模型評估。最新功能LLM作為評判者現在處於預覽階段,允許你評估多個質量維度,包括正確性、有用性和負責任的AI標準,例如拒絕回答和有害性。欲了解逐步說明,請參見亞馬遜基石中的新RAG評估和LLM作為評判者的能力。
清理
確保刪除以下資源以避免產生費用:
自訂模型的已配置吞吐量
訓練_bucket和輸出_bucket S3存儲桶
結論
在這篇文章中,我們探討了如何使用亞馬遜基石生成合成訓練數據,使用大型教師語言模型微調較小的學生模型。我們提供了使用亞馬遜基石InvokeModel API生成合成數據和使用亞馬遜基石自訂模型微調學生模型的說明。我們的評估結果,基於LLM作為評判者的方法和人類評估,展示了合成數據在原始訓練數據有限時改善學生模型表現的有效性。
儘管使用大量高質量的原始數據進行微調仍然是理想的方法,但我們的發現突顯了在面對數據稀缺時,合成數據生成作為可行解決方案的良好潛力。這種技術可以促進更高效且具成本效益的模型自訂,適用於特定領域或專業用例。
如果你有興趣與AWS生成式AI創新中心合作,並了解更多有關LLM自訂和其他生成式AI用例的信息,請訪問生成式AI創新中心。
關於作者
Sujeong Cha是AWS生成式AI創新中心的深度學習架構師,專注於模型自訂和優化。她在利用生成式AI以及傳統AI/ML解決方案解決客戶業務用例方面擁有豐富的實踐經驗。Sujeong擁有紐約大學的數據科學碩士學位。
Arijit Ghosh Chowdhury是AWS生成式AI創新中心的科學家,專注於模型自訂和優化。在他的角色中,他致力於微調和模型評估的應用研究,以使生成式AI能夠應用於各行各業。他擁有伊利諾伊大學香檳分校的計算機科學碩士學位,研究重點是問題回答、搜索和領域適應。
Sungmin Hong是亞馬遜生成式AI創新中心的高級應用科學家,幫助加速AWS客戶的各種用例。在加入亞馬遜之前,Sungmin曾是哈佛醫學院的博士後研究員。他擁有紐約大學的計算機科學博士學位。在工作之外,Sungmin喜歡健行、閱讀和烹飪。
Yiyue Qian是AWS生成式AI創新中心的應用科學家II,開發生成式AI解決方案以滿足AWS客戶的需求。她的專業包括設計和實施創新的AI驅動和深度學習技術,專注於自然語言處理、計算機視覺、多模態學習和圖形學習。Yiyue擁有聖母大學的計算機科學博士學位,研究重點是先進的機器學習和深度學習方法。在工作之外,她喜歡運動、健行和旅行。
Hannah Marlowe是AWS生成式AI創新中心的模型自訂高級經理。她的團隊專注於幫助客戶利用其獨特和專有數據開發具有差異化的生成式AI解決方案,以實現關鍵的商業成果。她擁有愛荷華大學的物理博士學位,專注於天文X射線分析和儀器開發。在工作之外,她喜歡在科羅拉多州的山區健行、山地騎行和滑雪。
本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!