基于開(kāi)源Agent框架,可自動(dòng)解決復(fù)雜數(shù)據(jù)科學(xué)問(wèn)題的Agent來(lái)了!
具體來(lái)說(shuō),Data Science Assistant(以下稱(chēng)DS Assistant)是基于Modelscope-Agent框架開(kāi)發(fā)的數(shù)據(jù)科學(xué)助手。
有了它,我們只需給需求,這個(gè)助手就能自己跑完探索性數(shù)據(jù)分析(EDA)、數(shù)據(jù)預(yù)處理、特征工程、模型訓(xùn)練,模型評(píng)估等步驟。
當(dāng)然,除了本文將重點(diǎn)提到的DS Assistant,它背后的Modelscope-Agent框架也值得說(shuō)道。
這個(gè)框架由阿里開(kāi)源,主要特點(diǎn)包括:
- 可通過(guò)vllm、ollama等工具接入各主流開(kāi)源模型,也可以直接調(diào)用模型API;
- 提供RAG組件支持開(kāi)發(fā)者快速接入知識(shí)庫(kù);
- 工具生態(tài)豐富,支持大量的Modelscope社區(qū)模型作為工具,也支持直接調(diào)用langchain的工具,還接入了各類(lèi)常用的工具,如web-browsing、文生圖、code-interpreter等;
更妙的是,Modelscope-Agent框架允許開(kāi)發(fā)者無(wú)需編碼即可交互式地創(chuàng)建Agent助理。
這不,啪的一下,咱們的數(shù)據(jù)科學(xué)助手“誕生”了~
復(fù)雜數(shù)據(jù)科學(xué)任務(wù)自動(dòng)化
實(shí)現(xiàn)復(fù)雜數(shù)據(jù)科學(xué)任務(wù)自動(dòng)化一直存在挑戰(zhàn)。
傳統(tǒng)的ReAct(Reasoning and Action)框架對(duì)于簡(jiǎn)單的任務(wù)比較有效,但是有以下缺點(diǎn):
- 每次工具調(diào)用都需要一個(gè)LLM調(diào)用。
- LLM一次僅計(jì)劃1個(gè)子問(wèn)題。這可能會(huì)導(dǎo)致任務(wù)的軌跡更加不可控,因?yàn)樗粫?huì)被迫“推理”整個(gè)任務(wù)。
而DS Assistant使用了plan-and-excute框架,這是一種新興的Agent框架,通過(guò)明確計(jì)劃和執(zhí)行步驟高效完成復(fù)雜任務(wù)。
langchain官網(wǎng)對(duì)Plan-and-execute Agent的描述:https://blog.langchain.dev/planning-agents/
具體而言,其工作流程包括以下幾個(gè)步驟:
1、任務(wù)計(jì)劃:Agent接收用戶輸入的任務(wù)描述,進(jìn)行語(yǔ)義理解,將任務(wù)分解為多個(gè)可執(zhí)行子任務(wù)。
2、子任務(wù)調(diào)度:基于任務(wù)之間的依賴關(guān)系和優(yōu)先級(jí),智能調(diào)度子任務(wù)的執(zhí)行順序。
3、任務(wù)執(zhí)行:每個(gè)子任務(wù)分配給特定的模塊執(zhí)行。
4、結(jié)果整合:匯總各子任務(wù)的結(jié)果,形成最終輸出,并反饋給用戶。
基于上述框架,咱們接著看整個(gè)系統(tǒng)架構(gòu),DS Assistant整套系統(tǒng)有4個(gè)主要模塊。
先說(shuō)右側(cè)的DS Assistant,它作為整個(gè)系統(tǒng)的大腦,負(fù)責(zé)調(diào)度整個(gè)系統(tǒng)的運(yùn)轉(zhuǎn)。
而Plan模塊負(fù)責(zé)根據(jù)用戶的需求生成一系列Task列表,并對(duì)Task先后順序進(jìn)行拓?fù)渑判颉?/p>
在這一階段,DS Assistant根據(jù)用戶輸入的復(fù)雜數(shù)據(jù)科學(xué)問(wèn)題,自動(dòng)將其分解為多個(gè)子任務(wù)。
這些子任務(wù)根據(jù)依賴關(guān)系和優(yōu)先級(jí)被組織和調(diào)度,確保執(zhí)行順序符合邏輯且高效。
接下來(lái)到了Execution模塊,負(fù)責(zé)任務(wù)的具體執(zhí)行,保存任務(wù)執(zhí)行結(jié)果。
在這里,每個(gè)子任務(wù)被具體化為可執(zhí)行的操作,如數(shù)據(jù)預(yù)處理、模型訓(xùn)練等。
最后是Memory management模塊,負(fù)責(zé)記錄任務(wù)中間執(zhí)行結(jié)果,代碼,數(shù)據(jù)詳情等信息。
在所有Task執(zhí)行完成后,DS Assistant會(huì)將中間數(shù)據(jù)的執(zhí)行情況 ( 包括每個(gè)task生成的代碼和結(jié)果,消耗token數(shù),任務(wù)時(shí)間 ) 保存為文件。
案例實(shí)戰(zhàn)
下面,我們以一個(gè)具體的例子來(lái)了解DS Assistant的執(zhí)行過(guò)程。
我們選用Kaggle上的一個(gè)比賽任務(wù)ICR - Identifying Age-Related Conditions作為示例:
該任務(wù)是一項(xiàng)機(jī)器學(xué)習(xí)任務(wù),主要目的是通過(guò)分析各種數(shù)據(jù)(如醫(yī)療記錄、基因數(shù)據(jù)、生活方式數(shù)據(jù)等),識(shí)別與年齡相關(guān)的健康狀況。
最終結(jié)果將用來(lái)幫助醫(yī)療專(zhuān)業(yè)人員及早發(fā)現(xiàn)老年人群中常見(jiàn)的健康問(wèn)題,并提供個(gè)性化的預(yù)防和治療方案。
廢話不多說(shuō),我們這就開(kāi)始~
首先,對(duì)于選用的LLM,我們需要配置一下。
我們引入MetaGPT的Data Science工具和Tool Recommender,可以根據(jù)任務(wù)類(lèi)型向DS Assistant推薦合適的數(shù)據(jù)科學(xué)工具。
接著,我們需要將任務(wù)的具體要求傳給DS Assistant。需要注意的是,在要求中需向DS Assistant指明數(shù)據(jù)文件的路徑:
在Plan階段,DS Assistant會(huì)根據(jù)用戶需求生成任務(wù)列表,將整個(gè)數(shù)據(jù)處理流程進(jìn)行分解,接著對(duì)任務(wù)列表進(jìn)行按順序處理。
可以看到,DS Assistant生成了5個(gè)任務(wù),分別是數(shù)據(jù)探索,數(shù)據(jù)預(yù)處理,特征工程,模型訓(xùn)練和預(yù)測(cè)。
然后這5個(gè)任務(wù)進(jìn)入了Execute階段,下面咱們挨個(gè)看一下。
Task 1: 數(shù)據(jù)探索
可以看到生成的代碼在執(zhí)行時(shí)報(bào)了如下錯(cuò)誤,原因是沒(méi)有引入numpy包。
DS Assistant根據(jù)報(bào)錯(cuò)進(jìn)行了反思,并重新生成代碼并執(zhí)行,成功輸出數(shù)據(jù)探索的結(jié)果。
最后,code judge會(huì)對(duì)代碼進(jìn)行質(zhì)檢,確保本次生成代碼邏輯正確。
Task 2: 數(shù)據(jù)預(yù)處理
在數(shù)據(jù)預(yù)處理階段,DS Assistant分別對(duì)數(shù)值型數(shù)據(jù)和類(lèi)別型數(shù)據(jù)進(jìn)行了合適的缺失值處理,并清除了ID列。
Task 3:特征工程
在修復(fù)了兩次錯(cuò)誤后,DS Assistant對(duì)數(shù)據(jù)進(jìn)行了特征工程的處理,對(duì)類(lèi)別型變量進(jìn)行編碼。
同時(shí)對(duì)之前定義的categorical_columns變量進(jìn)行了更新,去除了ID列。
Task 4:模型訓(xùn)練
DS Assistant主動(dòng)安裝了合適的依賴,并選擇了多個(gè)模型(隨機(jī)森林,梯度提升,邏輯回歸)進(jìn)行訓(xùn)練,并選擇了結(jié)果最好的模型。
Task 5:模型驗(yàn)證
DS Assistant選擇了訓(xùn)練集中F1分?jǐn)?shù)最高的模型對(duì)驗(yàn)證集進(jìn)行測(cè)試,并計(jì)算了這個(gè)模型在驗(yàn)證集上的F1分?jǐn)?shù),成功地完成了任務(wù)。
執(zhí)行完以上任務(wù)后,DS Assistant支持將運(yùn)行結(jié)果保存為Jupyter Notebook類(lèi)型的文件,并記錄運(yùn)行的中間過(guò)程。
△Jupyter Notebok
△中間過(guò)程記錄JSON文件
實(shí)驗(yàn)效果
我們使用ML-Benchmark作為測(cè)試集(指路論文“Data Interpreter: An LLM Agent For Data Science”),分別從Normalized Performance Score (NPS) ,total time,total token三個(gè)維度對(duì)DS Assistant效果進(jìn)行評(píng)測(cè)。
其中NPS是一種將不同任務(wù)或模型的性能指標(biāo)標(biāo)準(zhǔn)化的方法,使得不同指標(biāo)之間可以進(jìn)行比較。
它的計(jì)算通常涉及以下步驟:
步驟1:確定指標(biāo)優(yōu)化方向,判斷性能指標(biāo)是“越大越好”還是“越小越好”。
步驟2:規(guī)范化計(jì)算。如果指標(biāo)是“越大越好”(如準(zhǔn)確率、F1分?jǐn)?shù)、AUC),NPS等于原始值;如果指標(biāo)是“越小越好”(如損失值),則需要將原始值映射到接近1的較高NPS值。
規(guī)范化后的性能得分范圍通常是0到1,其中1表示最優(yōu)性能,0表示最差性能。
實(shí)驗(yàn)任務(wù)詳情和結(jié)果如下(綠色代表當(dāng)前任務(wù)下最優(yōu)指標(biāo) ):
可以看到,在部分復(fù)雜的數(shù)據(jù)科學(xué)任務(wù)上,DS Assistant在規(guī)范化性能得分(NPS),任務(wù)時(shí)間,消耗token數(shù)的指標(biāo)上取得超過(guò)開(kāi)源SOTA的效果。(其中開(kāi)源SOTA效果指MetaGPT實(shí)測(cè)值)
完整實(shí)驗(yàn)日志:https://modelscope-agent.oss-cn-hangzhou.aliyuncs.com/resources/DS_Assistant_results.zip
總結(jié)
對(duì)不同的人來(lái)說(shuō),DS assistant有不同作用:
- 不熟悉數(shù)據(jù)分析流程但是又有需要的同學(xué),可以快速根據(jù)生成的任務(wù)以及處理過(guò)程,了解處理數(shù)據(jù)的思路,以及技術(shù)點(diǎn)。
- 對(duì)于了解數(shù)據(jù)分析流程的同學(xué),可以通過(guò)詳細(xì)的描述,來(lái)影響數(shù)據(jù)處理的方法,方便做不同的實(shí)驗(yàn)參照比較。
- 對(duì)于所有人,可以自動(dòng)化的快速實(shí)現(xiàn)對(duì)于當(dāng)前手上文件的更深層次的理解,僅需提問(wèn)即可。
下一步,DS assistant將從三個(gè)方向展開(kāi)優(yōu)化:
1、進(jìn)一步提高任務(wù)執(zhí)行成功率:
a)對(duì)于Code Agent來(lái)說(shuō),傳入信息量過(guò)大(報(bào)錯(cuò)信息,中間數(shù)據(jù)信息,已生成代碼信息)會(huì)導(dǎo)致模型生成代碼正確率下降,可以在未來(lái)考慮使用LLM進(jìn)行總結(jié),對(duì)信息進(jìn)行篩選。
b)同一個(gè)Task可進(jìn)行進(jìn)一步的分解,以降低對(duì)LLM推理能力的要求。
2、對(duì)話交互式,可以將任務(wù)和任務(wù)的執(zhí)行展示分開(kāi),通過(guò)對(duì)話的方式推進(jìn)任務(wù),并影響執(zhí)行結(jié)果。
3、支持批處理相同任務(wù)多批文件的場(chǎng)景。
更多細(xì)節(jié)可進(jìn)一步查看Modelscope-Agent官方倉(cāng)庫(kù)中Data Sciecne Assistant示例。
熱門(mén)跟貼