作者 /Google DeepMind AI DevX, Juyeong Ji
在智能體 AI 領(lǐng)域,工具調(diào)用能力是將自然語言轉(zhuǎn)化為可執(zhí)行軟件操作的關(guān)鍵。此前,我們發(fā)布了專門針對函數(shù)調(diào)用而特別優(yōu)化的Gemma 3 270M模型版本FunctionGemma。該模型旨在協(xié)助開發(fā)者構(gòu)建響應(yīng)快速且具高性價比的智能體,以將自然語言轉(zhuǎn)化為可執(zhí)行的 API 操作。
特定的應(yīng)用場景往往需要專用的模型。在本文中,我們將展示如何通過微調(diào) FunctionGemma,來應(yīng)對工具選擇歧義問題,即模型如何應(yīng)對從一個或多個看似相似的函數(shù)中做出調(diào)用選擇的情形。此外,我們還將介紹 "FunctionGemma Tuning Lab",這款演示工具讓開發(fā)者無需編寫任何訓(xùn)練代碼即可完成微調(diào)過程。
FunctionGemma Tuning Lab
https://huggingface.co/spaces/google/functiongemma-tuning-lab
為什么要對工具調(diào)用進(jìn)行微調(diào)?
如果 FunctionGemma 現(xiàn)已支持工具調(diào)用,為何還需進(jìn)行微調(diào)?
答案在于語境和特定策略。通用模型無法理解您的業(yè)務(wù)規(guī)則。常見的微調(diào)應(yīng)用場景包括:
消除選擇歧義: 如果用戶提問: "差旅策略是什么?",基礎(chǔ)模型可能會默認(rèn)執(zhí)行 Google 搜索。然而,企業(yè)級模型則應(yīng)搜索內(nèi)部知識庫。
極致專業(yè)化: 您可以訓(xùn)練模型,使其掌握公開數(shù)據(jù)中未涵蓋的特定任務(wù)或?qū)S懈袷剑缣幚硖囟I(lǐng)域的 Mobile Actions(如控制設(shè)備功能) 或解析內(nèi)部 API 以構(gòu)建高度復(fù)雜的監(jiān)管報告。
模型蒸餾: 您可以使用大模型來生成合成訓(xùn)練數(shù)據(jù),然后對規(guī)模更小但速度更快的模型進(jìn)行微調(diào),從而更高效地運行此特定工作流程。
特定領(lǐng)域的 Mobile Actions
https://ai.google.dev/gemma/docs/mobile-actions
案例分享:
內(nèi)部文檔與 Google 搜索
讓我們通過技術(shù)指南中的一個實例,來了解如何使用Hugging Face TRL庫對 FunctionGemma 進(jìn)行微調(diào)。
技術(shù)指南
https://ai.google.dev/gemma/docs/functiongemma/finetuning-with-functiongemma
Hugging Face TRL
https://huggingface.co/docs/trl/index
挑戰(zhàn)
我們的目標(biāo)是訓(xùn)練模型,使其能夠區(qū)分兩種特定工具:
search_knowledge_base(內(nèi)部文檔)
search_google(公開信息)
當(dāng)被問及 "使用 Python 編寫簡單遞歸函數(shù)的最佳實踐是什么?" 時,通用模型會默認(rèn)使用 Google 搜索。但對于 "差旅餐飲的報銷限額是多少?" 這類查詢,模型需要分辨出這是一個內(nèi)部策略問題。
解決方案
為了評估性能,我們使用了bebechien/SimpleToolCalling數(shù)據(jù)集,當(dāng)中包含需要在search_knowledge_base與search_google兩種工具中做出選擇的樣本對話示例。
bebechien/SimpleToolCalling
https://huggingface.co/datasets/bebechien/SimpleToolCalling
我們將此數(shù)據(jù)集劃分為訓(xùn)練集和測試集,同時單獨保存測試集,以便針對 "未見過的" 數(shù)據(jù)對模型進(jìn)行評估,確保該模型了解底層路由邏輯,而非僅僅記住特定示例。
當(dāng)我們按照 50/50 的比例劃分訓(xùn)練集與測試集以評估基礎(chǔ) FunctionGemma 模型時,結(jié)果并不理想。該基礎(chǔ)模型要么選擇了錯誤的工具,要么提議 "討論" 策略,而非執(zhí)行函數(shù)調(diào)用。
關(guān)于數(shù)據(jù)分布的重要說明
在準(zhǔn)備數(shù)據(jù)集時,數(shù)據(jù)拆分方式與數(shù)據(jù)本身同樣重要。
fromdatasetsimportload_dataset dataset = load_dataset("bebechien/SimpleToolCalling", split="train") # Convert dataset to conversational format dataset = dataset.map(create_conversation, remove_columns=dataset.features, batched=False) # Split dataset into 50% training samples and 50% test samples dataset = dataset.train_test_split(test_size=0.5, shuffle=False)
在此案例研究中,指南采用了50/50 訓(xùn)練-測試劃分方式,并禁用了隨機(jī)打亂功能 (shuffle=False)。雖然實際生產(chǎn)環(huán)境通常采用 80/20 的劃分方式,但此處選擇等分是為了突出顯示模型在面對大量未見過的數(shù)據(jù)時表現(xiàn)出的性能提升。
然而,這里存在一個陷阱:
由于數(shù)據(jù)集已預(yù)先打亂,因此,本案例特意禁用了隨機(jī)打亂功能。但如果您的源數(shù)據(jù)是按類別排序 (例如首先顯示所有search_google示例,隨后顯示所有search_knowledge_base示例),使用shuffle=False將導(dǎo)致模型訓(xùn)練完全在一種工具上完成,而測試則在另一種工具上完成。這種訓(xùn)練階段缺乏多樣性的情況容易導(dǎo)致糟糕的性能表現(xiàn),因為模型從未學(xué)習(xí)過如何區(qū)分不同的類別。
最佳實踐:
在對自定義數(shù)據(jù)集應(yīng)用此最佳實踐時,請務(wù)必確保您的源數(shù)據(jù)經(jīng)過預(yù)先混合。如果分布順序未知,您必須將此參數(shù)更改為shuffle=True,以確保模型能在訓(xùn)練期間均衡學(xué)習(xí)所有工具的表征。
結(jié)果
我們使用SFTTrainer(監(jiān)督式微調(diào)) 對模型進(jìn)行了 8 個周期的微調(diào)。訓(xùn)練數(shù)據(jù)明確地向模型說明了不同查詢所屬的領(lǐng)域。

上圖展示了 "損失值" (錯誤率) 隨時間推移下降的情況。初期的急劇下降表明該模型正在快速適應(yīng)新的路由邏輯。
經(jīng)過微調(diào)后,該模型的行為發(fā)生了巨大變化,并且學(xué)會了嚴(yán)格遵守企業(yè)策略。當(dāng)被問到相同的問題,如 "如何創(chuàng)建一個新的 Jira 項目?" 時,經(jīng)過微調(diào)的模型可正確執(zhí)行以下調(diào)用:
call:search_knowledge_base{query: Jira project creation process }
隆重推出
FunctionGemma Tuning Lab
并非所有人都愿意管理 Python 依賴項、配置SFTConfig,或從頭開始編寫訓(xùn)練循環(huán)。為此,我們推出了FunctionGemma Tuning Lab。

FunctionGemma Tuning Lab
https://huggingface.co/spaces/google/functiongemma-tuning-lab
FunctionGemma Tuning Lab 是一款用戶友好型的演示工具,托管于 Hugging Face Spaces,可簡化向模型傳授特定函數(shù)架構(gòu)的整個過程。
關(guān)鍵功能
無代碼界面: 您無需編寫 Python 腳本,可以直接在界面中定義函數(shù)架構(gòu) (JSON)。
自定義數(shù)據(jù)導(dǎo)入: 您只需上傳包含用戶提示詞、工具名稱和工具參數(shù)的 CSV 文件即可。
一鍵微調(diào): 借助滑塊靈活配置學(xué)習(xí)速率和學(xué)習(xí)周期,隨后立即開始訓(xùn)練。我們提供了一組默認(rèn)配置,這些配置經(jīng)過精心設(shè)計,可適配大多數(shù)標(biāo)準(zhǔn)應(yīng)用場景。
實時可視化: 實時查看訓(xùn)練日志和損失曲線的動態(tài)變化,確保模型順利收斂。
自動評估: Tuning Lab 會在訓(xùn)練前后自動評估性能,讓您能夠獲得改進(jìn)效果的即時反饋。
Tuning Lab 入門指南
如要在本地使用 Tuning Lab,您可以借助hf CLI克隆代碼庫,并通過幾個簡單的命令運行該應(yīng)用:
hf download google/functiongemma-tuning-lab --repo-type=space --local-dir=functiongemma-tuning-lab cdfunctiongemma-tuning-lab pip install -r requirements.txt python app.py
hf CLI
https://huggingface.co/docs/huggingface_hub/en/guides/cli
結(jié)論
無論您選擇使用 TRL 編寫專屬訓(xùn)練腳本,還是利用 FunctionGemma Tuning Lab 的演示可視化界面,微調(diào)都是充分發(fā)揮 FunctionGemma 潛力的關(guān)鍵所在。它可將通用助理轉(zhuǎn)化為專業(yè)智能體,同時能夠遵守嚴(yán)格的業(yè)務(wù)邏輯并處理復(fù)雜的私有數(shù)據(jù)結(jié)構(gòu)。
參考文獻(xiàn)
博文
從 "對話" 邁向 "行動": 利用 FunctionGemma 打造下一代端側(cè)智能體
代碼示例
使用 FunctionGemma 進(jìn)行微調(diào)
https://ai.google.dev/gemma/docs/functiongemma/finetuning-with-functiongemma
微調(diào) FunctionGemma 以執(zhí)行 Mobile Actions
https://ai.google.dev/gemma/docs/mobile-actions
HuggingFace Space
FunctionGemma Tuning Lab
https://huggingface.co/spaces/google/functiongemma-tuning-lab
歡迎您持續(xù)關(guān)注 "谷歌開發(fā)者" 微信公眾號,及時了解更多開發(fā)技術(shù)和產(chǎn)品更新等資訊動態(tài)。
-
AI
+關(guān)注
關(guān)注
91文章
39759瀏覽量
301366 -
模型
+關(guān)注
關(guān)注
1文章
3751瀏覽量
52099 -
函數(shù)調(diào)用
+關(guān)注
關(guān)注
0文章
20瀏覽量
2747
原文標(biāo)題:實戰(zhàn)指南 | 輕松微調(diào),解鎖 FunctionGemma 的無限潛力
文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
谷歌最新識別系統(tǒng):擠眉弄眼解鎖手機(jī)屏幕
怎么才能發(fā)揮FPGA設(shè)計的無限潛力呢?
AR在移動領(lǐng)域有著無限的潛力
谷歌模型怎么用手機(jī)打開
谷歌模型訓(xùn)練軟件有哪些?谷歌模型訓(xùn)練軟件哪個好?
谷歌模型框架是什么軟件?谷歌模型框架怎么用?
Pixel 9系列遭Root與解鎖限制,AI功能受阻
解鎖全球網(wǎng)絡(luò):探索海外靜態(tài)IP的無限可能
解鎖Chiplet潛力:封裝技術(shù)是關(guān)鍵
谷歌AI模型點亮開發(fā)無限可能
解鎖CC3235MODx與CC3235MODAx模塊的無限潛力
借助谷歌FunctionGemma模型構(gòu)建下一代端側(cè)智能體
解鎖谷歌FunctionGemma模型的無限潛力
評論