客製化 Amazon Nova 模型以提升工具利用率

透過工具使用擴展 LLM 的能力

大型語言模型 (LLMs) 在各種自然語言處理任務中展現了卓越的能力。然而,它們真正的潛力在於與外部工具(例如 API 和計算框架)的無縫整合。這些工具使 LLM 能夠訪問實時數據、執行特定領域的計算並檢索精確的信息,從而增強它們的可靠性和多功能性。

想像一下整合一個天氣 API,使 LLM 能夠提供準確且最新的天氣預報。同樣,維基百科 API 可以使 LLM 能夠訪問龐大的信息庫,使它們能夠更準確地響應複雜的查詢。在科學環境中,計算器和符號引擎等工具可以幫助 LLM 克服數值不準確性,使其在複雜的計算中更加可靠。

通過與這些工具的無縫整合,LLM 演變為強大且具備領域感知能力的系統,能夠處理具有實際應用價值的動態和專業化任務。

Amazon Nova 模型和 Amazon Bedrock

Amazon Nova 模型於 2024 年 12 月在 AWS re:Invent 上推出,旨在提供卓越的性價比。這些模型在關鍵的文本理解基準測試中提供最先進的性能,同時保持成本效益。該系列包含三個變體:

  • Micro: 一個僅限文本的模型,針對邊緣使用進行了優化,提供超高效的性能。
  • Lite: 一個多模態模型,在多功能性和性能之間取得了平衡。
  • Pro: 一個高性能多模態模型,專為應對複雜任務而設計。

Amazon Nova 模型可用於各種任務,包括生成和代理工作流程的開發。這些模型能夠通過稱為工具調用的過程與外部工具或服務進行交互。可以通過 Amazon Bedrock 控制台和 Converse 和 Invoke 等 API 訪問此功能。

除了使用預訓練模型外,開發人員還可以選擇使用多模態數據(Pro 和 Lite)或文本數據(Pro、Lite 和 Micro)來微調這些模型。這種靈活性使開發人員能夠達到所需的準確度、延遲和成本效益水平。此外,開發人員可以利用 Amazon Bedrock 控制台和 API 執行自助客製化微調,並將較大模型提煉成較小模型。

解決方案概述

該解決方案涉及準備專門為工具使用而設計的自定義數據集。然後,使用此數據集通過 Amazon Bedrock 評估 Amazon Nova 模型的性能,利用 Converse 和 Invoke API。隨後,使用 Amazon Bedrock 通過準備好的數據集對 AmazonNova Micro 和 Amazon Nova Lite 模型進行微調。完成微調過程後,通過佈建的輸送量評估這些客製化模型。

工具

LLM 中的工具使用包含兩個基本操作:工具選擇和參數提取或生成。例如,考慮一個旨在檢索特定位置天氣信息的工具。當遇到諸如“倫敦現在的天氣如何?”之類的查詢時,LLM 會評估其可用的工具,以確定是否存在適當的工具。如果確定了合適的工具,模型會選擇它並提取必要的參數 - 在這種情況下為“倫敦” - 以構建工具調用。

每個工具都經過精心定義,並具有正式規範,概述了其預期功能、強制性和可選參數以及相關的數據類型。這些精確的定義(稱為 工具配置)確保工具調用正確執行,並且參數解析與工具的操作要求一致。按照此要求,本示例中使用的數據集定義了八種不同的工具,每種工具都有其自己的參數和配置,所有這些工具都以 JSON 格式構建。定義的八個工具如下:

  • weather_api_call: 一個用於檢索天氣信息的客製化工具。
  • stat_pull: 一個用於識別統計信息的客製化工具。
  • text_to_sql: 一個用於將文本轉換為 SQL 查詢的客製化工具。
  • terminal: 一個用於在終端環境中執行腳本的工具。
  • wikipedia: 一個用於搜索維基百科頁面的維基百科 API 工具。
  • duckduckgo_results_json: 一個使用 DuckDuckGo 執行搜索的互聯網搜索工具。
  • youtube_search: 一個用於搜索視頻列表的 YouTube API 搜索工具。
  • pubmed_search: 一個用於搜索 PubMed 摘要的 PubMed 搜索工具。

數據集

本解決方案中使用的數據集是一個合成工具調用數據集,借助 Amazon Bedrock 的基礎模型 (FM) 創建,隨後經過手動驗證和調整。開發此數據集是為了之前討論的八個工具,旨在生成各種問題和工具調用,使另一個模型能夠從這些示例中學習並推廣到未見過的工具調用。

數據集中的每個條目都構建為 JSON 對象,其中包含定義問題(模型的自然語言用戶查詢)、回答用戶查詢所需的真實工具、其參數(包含執行該工具所需的參數的字典)以及其他約束(例如 order_matters: boolean,指示參數的順序是否重要,以及 arg_pattern: optional,用於參數驗證或格式化的正則表達式 (regex))的鍵值對。這些真實標籤用於監督預訓練的 Amazon Nova 模型的訓練,使它們適應工具的使用。此過程稱為監督微調,將在以下各節中進一步探討。

訓練集包含 560 個問題,而測試集包含 120 個問題。測試集的結構為每個工具類別包含 15 個問題,總計 120 個問題。

為 Amazon Nova 準備數據集

為了有效地將此數據集與 Amazon Nova 模型一起使用,必須根據特定的聊天模板格式化數據。原生工具調用包含一個轉換層,該轉換層將輸入格式化為適當的格式,然後將其傳遞給模型。在此解決方案中,採用了 DIY 工具使用方法,採用了自定義提示模板。具體來說,必須將系統提示、嵌入工具配置的用戶消息以及真實標籤添加為助手消息。

將數據集上傳到 Amazon S3

此步驟對於使 Amazon Bedrock 能夠在微調過程中訪問訓練數據至關重要。可以通過 Amazon Simple Storage Service (Amazon S3) 控制台或以程式方式上傳數據集。

通過 Amazon Bedrock API 使用基本模型進行工具調用

創建並根據需要格式化工具使用數據集後,即可用於測試 Amazon Nova 模型。Converse 和 Invoke API 都可用於 Amazon Bedrock 中的工具使用。Converse API 實現了動態的、具有上下文感知能力的對話,允許模型進行多輪對話,而 Invoke API 允許用戶在 Amazon Bedrock 中調用和與底層模型進行交互。

要使用 Converse API,消息、系統提示(如果有)和工具配置將直接發送到 API。

為了從 LLM 響應中解析工具和參數,請考慮以下問題:“嘿,巴黎現在的溫度是多少?”。將解析輸出以識別回答該問題所需的工具和參數。

微調 Amazon Nova 模型以增強工具使用

微調是使 Amazon Nova 等預訓練語言模型適應特定任務的關鍵步驟。通過在專為所需應用設計的數據集上訓練模型,該模型可以學習以更高的準確性和效率執行任務。在工具使用的上下文中,微調可以顯著提高模型選擇適當工具和提取正確參數的能力。

微調過程涉及調整模型的內部參數,以最小化其預測與訓練數據集中的真實標籤之間的差異。這通常是通過一個迭代過程實現的,在該過程中,模型會重複暴露於訓練數據,並且其參數會根據觀察到的錯誤進行調整。

準備微調數據集

應仔細策劃微調數據集,以反映模型預計在現實場景中處理的問題和工具調用類型。數據集應包括各種示例,涵蓋不同的工具類別和參數模式。

數據集中的每個示例應包含一個問題、要調用的相應工具以及執行該工具所需的參數。參數應以結構化方式格式化,通常作為 JSON 對象。

微調過程

可以使用 Amazon Bedrock 控制台或 API 執行微調過程。該過程涉及指定要微調的模型、微調數據集以及所需的訓練參數。

訓練參數控制微調過程的各個方面,例如學習率、批次大小和 epoch 數。學習率決定了每次迭代期間進行的參數調整幅度。批次大小決定了每次迭代中處理的示例數。epoch 數決定了模型暴露於整個訓練數據集的次數。

評估微調後的模型

微調過程完成後,評估微調後的模型的性能至關重要。這可以通過在未在微調過程中使用的單獨測試數據集上測試模型來完成。

測試數據集應代表模型預計在現實場景中處理的問題和工具調用類型。可以通過測量準確度、精確度、召回率和 F1 分數等指標來評估模型的性能。

客製化 Amazon Nova 模型以用於工具使用的優勢

客製化 Amazon Nova 模型以用於工具使用具有以下幾個優勢:

  • 提高準確度: 在特定於任務的數據集上微調模型可以顯著提高工具選擇和參數提取的準確度。
  • 提高效率: 微調後的模型通常可以比預訓練模型更有效地執行工具使用任務。
  • 增強適應性: 微調允許模型適應特定的領域和用例。
  • 降低成本: 在某些情況下,微調可以減少執行工具使用任務所需的計算資源。

結論

客製化 Amazon Nova 模型以用於工具使用是一種有價值的技術,可以增強 LLM 的性能和適應性。通過在特定於任務的數據集上微調模型,開發人員可以顯著提高工具使用應用程序的準確性、效率和適應性。隨著各行各業對能夠做出明智決策的 AI 解決方案的需求不斷增長,LLM 客製化以用於工具使用將變得越來越重要。