譯者 | 朱先忠
審校 | 重樓
當今時代,各種人工智能模型的能力整合到一起已經釋放出一股巨大的潛力。這種力量已經涉及到從需要視覺、語音、寫作和合成等多種能力的復雜任務自動化到增強決策過程等諸多領域。然而,如何高效協調這些合作?無論在管理內部關系還是在管理依賴性方面都提出了重大挑戰。傳統的線性管理方案往往達不到要求,難以管理各種模型和動態依賴關系的復雜性。
通過將機器學習工作流程轉換為圖形式,我們可以更為直觀地了解每個模型間的相互作用,并為把自然語言處理、計算機視覺和語音模型共同整合到一起的整體效果發揮作用。在使用圖方法的過程中,節點表示模型或任務,邊定義它們之間的依賴關系。這種基于圖的映射提供了幾個優勢,可以識別哪些模型依賴于其他模型的輸出,并利用并行處理來完成獨立任務。此外,我們可以根據任務優先級使用現有的圖導航策略(如廣度優先或深度優先)來執行任務。
然而,通往和諧的人工智能模型協作之路并非沒有障礙。想象一下,指揮一個管弦樂隊,每個人都會說不同的語言,樂器獨立演奏,等等。這一挑戰反映了集成不同人工智能模型時的溝通差距;因此,急需一個框架來管理關系以及確定哪些模型可以接收每種輸入格式。
多模型協作典型使用場景
基于圖論技術的多模型編排方法為各個領域的激動人心的可能性應用敞開了無數的大門:
藥物發現領域的協作任務
作為數據分析任務中部分任務的三模型協作圖
研究人員可以使用一系列人工智能助理來加速藥物發現過程。例如,使用三步法發現任務,每個AI助理都是為特定任務設計的。第一步涉及一個語言模型,該模型負責掃描大量科學數據,以突出與特定疾病密切相關的潛在蛋白質靶點。然后是一個視覺模型,以解釋復雜的圖表或圖像,提供對已識別蛋白質結構的詳細觀察。這一視覺效果對于理解潛在藥物如何與蛋白質相互作用至關重要。最后,第三個模型整合了語言和視覺模型的輸入,以預測化合物可能如何影響靶蛋白,為研究人員有效把控這一過程提供寶貴洞察力。
不過,在交付整個管道的模型集成過程中,也將出現一些挑戰。從掃描內容中提取相關圖像并將該圖像輸入到視覺模型中并不像看上去那么簡單。例如,在文本掃描和視覺任務之間需要使用一個中間處理器來過濾相關圖像。其次,分析任務本身往往需要合并多個輸入:數據掃描輸出、視覺模型的解釋和用戶指定的指令。這需要通過一個模板來組合語言模型的這些信息,以便處理所有相關信息。接下來后面的內容中,我們將介紹如何利用一個開源Python框架Intelli來處理這些復雜的關系。
創造性的內容生成
用于生成動畫的四個任務之間的關系示意圖
模型協作可以通過集成音樂創作、動畫和設計模型等元素來生成動畫場景,從而促進交互式內容創建。例如,在基于圖的協作方法中,第一個任務可以像導演一樣規劃場景,并傳遞每個音樂和圖像生成任務的輸入。最后,動畫模型將使用藝術和音樂模型的輸出來生成短視頻。
為了優化這一過程,我們的目標是實現音樂和圖形生成的并行執行,因為它們是獨立的任務。因此,音樂不需要等待圖形的完成。此外,我們需要通過動畫任務處理不同的輸入格式。雖然像Stable Video Diffusion這樣的一些模型只能處理圖像,但音樂數據可以使用一種后處理器組合到一起。
其實,上面這些例子只是展示了模型集成過程中運用圖技術潛力的小小的一瞥。總之,圖集成方法允許您根據特定需求定制多個任務,并提出一些創新性解決方案。
通過開源Intelli框架并運用圖技術編排人工智能模型
用圖表示的任務
Intelli是一個開源Python模塊,它通過三個關鍵組件并利用圖形學原理來編排人工智能工作流程:
- 代理(Agents):代表人工智能模型,開發者可以通過指定其類型(文本、圖像、視覺或語音)、提供商(如OpenAI、Gemini、Agents、Mistral等)和任務共三部分信息來定義每個代理。
- 任務(Tasks):是人工智能工作流程中的單個單元。每個任務都利用代理來執行特定操作,并使用用戶提供的自定義預處理和后處理方案。
- 流(Flow):負責將所有內容綁定在一起,協調任務的執行,遵守通過圖結構建立的依賴關系。流管理確保任務以正確的順序高效執行,盡可能實現順序和并行處理。
當連接多個模型時,使用流組件將任務關系作為圖方式管理會帶來一些好處。但是,對于僅有一個任務的情況,這種方式可能有些浪費,直接調用模型就足夠了。
擴展(Scaling):隨著項目復雜性的增加,添加更多的模型和任務需要重復的代碼更新,以解決數據格式不匹配和復雜的依賴關系。圖方法通過定義一個表示任務的新節點來簡化這一過程,并且可以由框架來自動解決輸入/輸出差異,以協調數據流。
動態適應(Dynamic Adaptation):對于傳統方法,復雜任務的更改將影響整個工作流程,需要進行調整。使用流時,它可以自動處理添加、刪除或修改連接這樣的任務。
可解釋性(Explainability):圖方案通過可視化模型的交互方式,使開發人員能夠更深入地了解人工智能工作流程,并優化任務路徑導航。
【說明】作者本人也參與了Intelli框架的設計和開發,這個框架是一個擁有Apache許可證的開源項目。
Intelli框架入門
首先,確保您已經安裝了Python 3.7+,因為Intelli框架利用了最新的Python異步功能,安裝命令如下:
pip install intelli
代理:任務執行器
Intelli框架中的代理被設計為與特定的人工智能模型接口。每個代理都包括一個統一的輸入層,用于訪問任何模型類型,并提供一個字典,允許向模型傳遞自定義參數,如最大尺寸、溫度和模型版本等。
from intelli.flow.agents import Agent
# 定義執行各類AI任務的代理
text_agent = Agent(
agent_type="text",
provider="openai",
missinotallow="write social media posts",
model_params={"key": OPENAI_API_KEY, "model": "gpt-4"}
)
任務:構建塊
任務表示要由代理執行的單個工作單元或操作,并包括處理前一個任務的輸出邏輯。每項任務都可以是一個簡單的操作,比如生成文本,也可以是更復雜的過程,比如分析用戶反饋的情緒。
from intelli.flow.tasks import Task
from intelli.flow.input import TextTaskInput
#定義生成文本的任務
task1 = Task(
TextTaskInput("Create a post about AI technologies"),
text_agent,
log=True
)
處理器:協調I/O任務
通過定義負責任務輸入的定制前處理和負責輸出任務的后處理,處理器實現了一個額外的控制層。下面的示例代碼演示了在調用圖模型之前創建一個函數來縮短前一步的文本輸出。
class TextProcessor:
@staticmethod
def text_head(text, size=800):
retupytrn text[:size]
task2 = Task(
TextTaskInput("Generate image about the content"),
image_agent,
pre_process=TextProcessor.text_head,
log=True,
)
流:指定依賴項
流負責將您的人工智能工作流程轉換為有向無循環圖(DAG),并利用圖技術進行依賴性管理。這使您能夠輕松地可視化任務關系,并優化任務的執行順序。
from intelli.flow.flow import Flow
flow = Flow(
tasks={
"title_task": title_task,
"content_task": content_task,
"keyword_task": keyword_task,
"theme_task": description_theme_task,
"image_task": image_task,
},
map_paths={
"title_task": ["keyword_task", "content_task"],
"content_task": ["theme_task"],
"theme_task": ["image_task"],
},
)
output = await flow.start()
上述代碼中,map_path規定了任務的依賴關系,指導流(Flow)編排執行順序,并確保每個任務都能從其前置任務接收到必要的輸出。
以下是使用流導航節點的原理:
- 映射流:流(Flow)使用任務作為節點,使用依賴項作為邊來構建DAG。此可視化表示闡明了任務執行順序和數據流。
- 拓撲排序:流負責分析圖以便確定最佳執行順序。沒有傳入依賴項的任務會被優先排序,確保每個任務在執行前都能從前置任務接收到必要的輸入。
- 任務執行:框架迭代經過排序的任務,使用相應的輸入執行每個任務。根據依賴關系圖,輸入可能來自以前的任務輸出和用戶定義的值。
- 輸入準備:在執行之前,任務應用為任務定義的任何預處理功能,根據需要修改輸入數據并調用指定的代理。
- 輸出管理:代理返回一個輸出,該輸出存儲在以任務名稱為關鍵字的字典中,并返回給用戶。
下面代碼展示了如何將流可視化為圖形:
flow.generate_graph_img()
任務和分配代理的可視化(Intelli圖函數)
結論
總之,通過引入圖論技術,能夠實現不同模型之間的協作,從而改變編排人工智能模型的傳統線性方法。
借助于像Intelli這樣的開源框架,可以將開發過程中的工作流程轉換為可視化表示。其中,任務成為節點,依賴關系映射為邊,從而創建整個流程的概覽,最終把復雜的任務自動化。
上述這種方法可以擴展到需要協作人工智能模型的許多不同領域,包括科學研究、商業決策自動化和交互式內容創建等等。然而,如何有效地管理模型之間的數據交換的規模還需要進一步細化。
參考文獻
- Intelli框架git代碼倉庫:https://github.com/intelligentnode/Intelli。
- 圖論知識:https://www.britannica.com/topic/graph-theory。
譯者介紹
朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。
原文標題:Graph Theory to Harmonize Model Integration,作者:Ahmad Albarqawi