語言模型在廣泛的應用中已被證明是有效的,但最複雜的模型通常是專有的。例如,OpenAI的GPT-4和Anothropic的各種模型不僅昂貴,而且消耗大量能源。與此相比,開源社群已經生產了能夠競爭的模型,如Llama3。此外,為特定領域如法律、醫療或金融任務定製的較小的語言模型,已在效能上超越了它們的專有對手。本文介紹了一種新的方法,採用functional token整合了多個開源模型,每個模型都針對特定任務進行了最佳化。我們新開發的Octopus v4模型利用functional token智慧地將使用者查詢引導至最合適的垂直模型,並重新格式化查詢以實現最佳效能。Octopus v4是Octopus v1、v2和v3模型的演化,擅長於選擇和引數理解與重組。此外,我們還探索了使用圖作為一種多功能資料結構,有效地協調多個開源模型,利用Octopus模型和functional token的能力。透過啟用大約 100 億引數的模型,我們在同級別模型中實現了 74.8 的 SOTA MMLU 分數。
Octopus-V4-3B 是一款先進的開源語言模型,擁有30億引數,作為 Nexa AI 設想中的語言模型圖的主節點。該模型專為 MMLU 基準測試話題定製,能夠高效地將使用者查詢轉換成專業模型可以有效處理的格式。它擅長將這些查詢正確引導至相應的專業模型,確保精確且有效的查詢處理。
📱 緊湊尺寸:Octopus-V4-3B 體積緊湊,使其能在智慧裝置上高效、迅速地執行。
🐙 準確性:Octopus-V4-3B 利用functional token設計準確地將使用者查詢對映到專業模型,提高了其精度。
💪 查詢重格式化:Octopus-V4-3B 幫助將自然人類語言轉換為更專業的格式,改善了查詢描述,從而獲得更準確的響應。
我們誠邀全球的開發者和技術愛好者參與此開源專案,一起創造一個強大的圖語言模型,構建最經濟最高效的模型解決方案,並聯合所有垂類開源模型一起達到閉源模型的效果。
試用Octopus v4模型:https://huggingface.co/NexaAIDev/Octopus-v4
開源的GitHub: https://github.com/NexaAI/octopus-v4
論文標題:Octopus v4: Graph of language models
論文連結:https://arxiv.org/pdf/2404.19296
大型語言模型(LLMs)的迅速發展徹底革新了自然語言處理領域,使人工智慧系統能夠以驚人的準確度理解和生成類似人類的文字。像GPT-4和Anothropic這樣的模型,經過大量資料集訓練,能夠捕捉到語言、語境和意義的細微差別,因此在不同行業中具有廣泛的潛在應用。這些模型在多種子任務中表現出色,例如高精度的語言翻譯、情感分析以評估客戶意見和監控品牌聲譽、利用廣泛知識庫進行問答以及總結長篇文件和文章。在醫療保健領域,LLMs能夠處理病患資料和醫學文獻,以支援疾病診斷、治療規劃和藥物發現,甚至生成個性化的病人報告。金融行業利用LLMs進行風險評估、欺詐檢測和自動化財務報告生成,法律領域則受益於合同分析、法律研究和檔案起草的簡化。LLMs在教育領域也顯示出重大潛力,提供個性化學習體驗、生成內容並提供即時反饋。隨著LLMs的持續進步,它們在各個領域的影響預計將顯著增長,自動化任務、增強決策制定並推動創新。
自Meta在2023年推出Llama3模型及其後續產品Llama2以來,開源大型語言模型(LLMs)的景觀顯著增長。這一轉變催生了眾多創新的LLMs,每個模型都以前所未有的速度釋出。作為這一動態領域的關鍵參與者,這些模型已顯著影響自然語言處理。我們突出介紹了最具影響力的開源LLMs,包括Mistral的稀疏專家混合模型Mixtral-8x7B、阿里巴巴雲的多語言Qwen1.5系列、Abacus AI的Smaug以及01.AI的Yi模型,專注於資料質量。其他值得注意的模型包括Databricks的精細MoE模型DBRX、Upstage AI的深度擴充套件SOLAR-10.7B、艾倫人工智慧研究所的對齊焦點TULU 2以及合作的OLMo系列、微軟的由Evol-Instruct驅動的WizardLM、伯克利的Starling-7B、谷歌DeepMind的以Gemini為靈感的Gemma模型、xAI的Grok以及Deci AI的高效率DeciLM-7B。在2024年4月,我們見證了迄今為止最強大的開源模型,Meta的Llama3,其70B引數版本在Groq上實現了約300代幣/秒的印象深刻推理速度。此後不久,更多功能強大的開源裝置模型釋出,包括微軟的3.8億引數的Phi-3-mini和蘋果的OpenELM系列模型,引數範圍從10億到30億不等。這些多樣化的模型適應各種用例,使使用者可以根據用例選擇最佳模型。
圖資料結構已經成為表示各個領域複雜關係和依賴性的強大工具。在電腦科學中,一個圖由一組節點(或頂點)組成,透過邊連線,這些邊可以是有向的或無向的。這種靈活的結構允許表示線性或表格格式難以捕捉的複雜連線和層次結構。圖提供了比其他資料結構更多的優勢,包括高效的遍歷、模式發現以及能夠模擬現實世界的網路。許多著名公司已經利用基於圖的方法增強了他們的產品和服務。例如,Pinterest使用圖結構表示使用者、看板和別針之間的關係,實現個性化內容推薦和改善使用者互動。同樣,像Facebook和LinkedIn這樣的社交網路依賴圖表表示來模擬使用者連線,促進如好友建議和專業網路等功能。在整合開源語言模型的上下文中,圖結構可以用來表示不同模型之間的關係、它們的能力和最佳用例。透過將每個語言模型視為圖中的一個節點,並根據它們的相容性、互補特性或任務特定效能建立邊,我們可以建立一個用於無縫模型整合、智慧查詢路由和最佳化效能的強大框架。
在裝置上的AI模型的出現徹底改變了自然語言處理的格局,與傳統的基於雲的方法相比,提供了許多優勢。這些模型,例如Google的Gemma2B和Llama7B模型,旨在直接在使用者裝置上執行,透過在本地處理查詢來確保資料隱私,並消除了與遠端伺服器的網路通訊的需要。這種本地處理不僅增強了安全性,還減少了延遲,使實時互動和改善使用者體驗成為可能。例如Octopus v2、v3等在裝置上的AI代理利用這些能力提供智慧助理。然而,在裝置上的AI的真正潛力在於它與基於雲的模型的無縫整合,這種“雲-在裝置上”協作觀念的崛起。透過利用在裝置上和基於雲的模型的力量,AI系統可以實現前所未有的效能、可擴充套件性和靈活性水平。這種協作允許高效分配計算資源,由在裝置上的模型處理較輕和私有任務,而由基於雲的模型處理更復雜或資源密集的操作。此外,物聯網(IoT)在啟用此類協作中發揮了關鍵作用,連線了廣泛的裝置網路並促進了在裝置上和基於雲的模型之間的資料和洞察交換。在裝置上的AI、基於雲的模型和IoT的整合代表了AI發展的正規化轉變。這種方法結合了每個組成部分的優勢,建立了一個能夠適應使用者和應用程式多樣化需求的協同生態系統。隨著我們繼續探索“雲-在裝置上”協作的潛力,我們可以期待在AI領域看到重大進展。
在本文中,我們介紹了一種使用語言模型的新框架,透過構建一個以不同垂直語言模型為節點的圖。我們使用Octopus v2模型的特性,並將其用作協調器。從單一模型推理到多節點推理的轉變在圖(1)中展示。
圖資料格式和圖演算法已成為電腦科學中的基本研究領域,應用範圍從社會網路分析到推薦系統和生物資訊學。經典圖演算法,如廣度優先搜尋(BFS)和深度優先搜尋(DFS),已被廣泛研究並最佳化以適應各種圖形表示。Dijkstra的最短路徑演算法及其變體在解決路由問題和在加權圖中找到最優路徑方面至關重要。PageRank演算法,由Google用於網頁排名,已革命化資訊檢索領域並激發了無數基於圖的排名技術。最近在圖神經網路(GNNs)方面的進展推動了基於圖的學習的邊界,使得處理圖結構資料的任務,如節點分類、連結預測和圖生成成為可能。這一領域的前沿研究包括開發更具表達力和效率的GNN架構,如圖注意網路(GATs)和圖卷積網路(GCNs),它們在各種圖相關任務上都取得了最先進的效能。
增強AI代理的functional token,基於Octopus系列(v1到v3)的研究,透過利用functional token,擴充套件了AI代理的能力,並將所有開源模型統一起來。這些早期版本有效地利用了這些令牌來實現高階功能。我們現在研究它們在整合不同開源語言模型中的擴充套件用途。我們的研究表明,functional token在分類任務中不僅僅是提高精確度,例如選擇適當的功能或模型來處理查詢。重要的是,它們增強了Octopus模型解釋和重塑使用者查詢為指定功能的最優格式的能力,從而提高效能。functional token與Octopus模型在分類和查詢重構方面的能力的協同作用已進一步應用於圖結構。在這裡,一個關鍵方面涉及到在節點之間轉移資訊並選擇適當的鄰域進行此轉移。我們增強的Octopus模型有效地選擇最佳鄰居,重新結構當前節點的資訊,並將最佳化的資訊傳輸給後續節點。
多代理LLMs標誌著AI的關鍵進化,透過整合多個專門的代理來促進協作解決問題。與傳統的單代理LLMs不同,這些多代理系統從專門領域的代理中汲取集體智慧。這種協作方法為複雜問題提供了更全面的解決方案。多代理LLMs在提供領域特定的專業知識、增強解決問題的能力以及提供魯棒性、可靠性和適應性方面表現出色。這些系統承諾將在醫療保健、金融、教育和客戶服務等領域產生變革性的影響,透過提供定製的專業知識、個性化互動和高效的決策過程。然而,部署多代理LLMs涉及一些挑戰,如整合困難、資料共享問題和保持代理之間順暢協調。正在進行的多代理LLMs研究正在探索跨領域專業知識和實時協作的可能性,同時考慮倫理方面。此外,我們的論文也受到多代理系統的啟發,採用圖架構。透過自連線和透過圖遍歷順序處理動作,可以實現如並行函式呼叫等高階功能,提高其操作效率和可擴充套件性。
LLMs的規模化法則已經徹底改變了我們對模型大小、資料集大小、計算資源和效能之間關係的理解。這些法則表明,訓練在龐大資料集上的較大模型通常表現優於較小的模型。然而,隨著LLMs的繼續擴充套件,它們面臨與伺服器容量和能耗相關的重大挑戰,這些挑戰限制了它們進一步的擴充套件。我們提出的架構透過利用分散式計算和節點擴充套件技術,解決了這些可擴充套件性問題,實現了幾乎無限的節點可擴充套件性。透過增加更多節點,我們可以建立更強大的語言模型系統,繞過伺服器數量和電源供應的限制。
本節概述瞭如何將語言模型作為圖中的節點加以整合,並提供了針對實際應用定製的系統架構的詳細資訊。此外,還討論了使用合成資料集對Octopus模型進行訓練的策略。我們也會強調這種語言模型圖在生產環境中的系統設計。
3.1 從Octopus v2提取的用於分類的語言模型
在Octopus v2的論文中,我們介紹了一種名為functional token的分類方法。Octopus v2模型有效地處理了這一任務:
𝑃(𝑓,params∣𝑞)
其中 𝑓 表示從集合 𝐹 中選擇,params 代表從查詢 𝑞 中重構的資訊。本文演示了這種方法在函式呼叫任務中的應用。此外,functional token還可以適應其他需要從指定池中選擇最優選項並重新格式化查詢以向後續節點傳遞資訊的類似場景。在涉及預定義圖的典型用例中,每個節點,代表一個語言模型,都有固定數量的鄰居。為了進行語言模型推斷,選擇最佳的相鄰節點,並將資訊從當前節點傳遞到下一個節點。因此,Octopus v2模型非常適合處理這一問題,如Octopus v2論文中所記錄的,顯示了快速執行和高精度。
3.2 圖中的語言模型作為節點
考慮一個定義為:
𝐺=(𝑁,𝐸)
其中 𝑁 代表圖中的各種節點,𝐸 代表連線這些節點的邊。節點分為兩種型別:主節點 𝑁𝑚,它們透過將查詢定向到合適的工作節點 𝑁𝑤 並傳遞執行任務所需的資訊來協調查詢;工作節點接收來自主節點的資訊並執行所需的任務,使用Octopus模型來促進進一步的協調。節點資訊傳輸過程如圖所示。為了處理使用者查詢 𝑞 並生成響應 𝑦,我們將機率建模為:
𝑃(𝑦∣𝑞)=𝑃(𝑦∣𝑞;𝐺)
對於只涉及一個工作節點的單步任務,該過程可以定義為:
𝑃(𝑦∣𝑞;𝐺)=𝑃(𝑁𝑤,𝑞ℎ∣𝑞;𝑁𝑚)×𝑃(𝑦∣𝑞ℎ;𝑁𝑤)
這裡,𝑃(𝑁𝑤,𝑞ℎ∣𝑞;𝑁𝑚) 使用Octopus v2模型為 𝑁𝑚 選擇最佳的相鄰工作節點並重新格式化查詢為 𝑞ℎ,這是重構的查詢。這個表示式是一個典型的問題,可以由Octopus模型解決,其結構與方程相同。機率 𝑃(𝑦∣𝑞ℎ;𝑁𝑤) 由位於工作節點的語言模型計算。
對於多步任務,通常在多代理工作流中,該過程涉及多個節點之間的幾次順序互動,如下:
𝑃(𝑦∣𝑞;𝐺)=∏𝑖=0𝑘−1𝑃(𝑁𝑤𝑖,𝑞ℎ𝑖∣𝑞;𝑁𝑚𝑖)×𝑃(𝑦∣𝑞ℎ𝑖;𝑁𝑤𝑖)
這個公式將單步任務擴充套件為多步驟,每一步可能由不同的工作節點處理,由各自的主節點協調。每一步處理查詢的一部分並貢獻到最終結果,其中 𝑘 表示多代理過程中的步驟或互動次數。這種方法示範了在基於圖的框架中多個專業代理的協調和執行模式,利用多個專門代理的能力。
3.3 使用圖進行多步驟操作的任務規劃
在多步驟任務規劃中,包含多個步驟是必要的。傳統上,所有可用功能都列在上下文中並提交給語言模型,隨後生成基於使用者查詢的計劃。然而,當語言模型,尤其是引數少於10B的模型,嘗試處理長功能描述時,這種方法存在侷限性。這些模型難以有效把握大量的描述。此外,此方法沒有考慮不同功能描述之間的固有相關性。為了應對這些挑戰,構建一個圖對映各節點(語言模型/代理)之間的相關性提供了一種可行的解決方案。這種基於圖的方法確保只考慮與特定節點相關的鄰近節點,與總功能描述數量相比,顯著減少了選擇的複雜性。透過利用Octopus v2模型的功能,這種策略提高了效率,使得快速的查詢重定向和重格式化成為可能。實際上,我們有兩層抽象。首先,對於每個語言模型,我們可以應用functional token使其作為一個單一的AI代理進行單一功能呼叫。或者,單一節點/語言模型可以是像Llama3或Phi3這樣的普通語言模型,能進行問答、編寫等。另一層抽象是,我們還可以建立另一個Octopus v3模型來從不同節點中進行選擇。這兩層抽象在圖(3)中展示。
3.4 functional token和資料集收集
類似於Octopus v2中的functional token架構,我們將每個模型概念化為一個獨立的功能,使用functional token啟用特定模型的使用。這種方法簡化了語言模型的功能設計,只需要一個輸入引數和一個輸出結果。此外,對於特定模型,我們可以在功能的文件字串中詳細說明所需的提示模板。這使得Octopus v4模型能夠重新構建原始查詢以匹配預期的格式。例如,專門處理法律資訊的功能可能被描述如下:
Python |
此外,當我們使用類似於Octopus v2論文中描述的方法構建資料集時。遵循Octopus v2論文中概述的方法,我們可以訓練多個functional token以對應於各種自定義語言模型。如在Octopus v2論文中,資料集收集過程涉及使用合成資料來訓練functional token。為了更好地適應多樣化的查詢,提高資料生成過程中的溫度可能是有益的。這種調整有助於捕獲使用者查詢中常見的變異性和潛在的格式不一致。
3.5 語言模型圖的系統設計
本節詳細說明了複雜圖中每個節點代表一個語言模型的系統架構,利用多個Octopus模型進行協調。在我們準備生產部署時,整合一個負載均衡器以有效管理系統需求至關重要。下面,我們將系統劃分為幾個可管理的元件,強調核心方法:
- 工作節點部署:每個工作節點 𝑁𝑤 對應一個單獨的語言模型。我們建議為這些節點採用無伺服器架構,特別推薦使用Kubernetes進行基於記憶體使用和工作負載的強大自動縮放。
- 主節點部署:主節點應使用不超過10B引數的基礎模型(我們的實驗中使用3B模型),以便在邊緣裝置上部署。每個工作節點與一個Octopus模型介面,以增強協調。如Octopus v2所示,可以整合一個緊湊的Lora模型以擴充套件functional token的能力。我們建議使用單一基礎模型並補充多個Loras,每個工作節點一個。推薦使用開源的LoraX庫來管理這種配置的推理操作。
- 通訊:工作節點和主節點分佈在不同裝置上,不限於單一裝置。因此,網際網路連線對於節點之間的資料傳輸至關重要。雖然主節點可能位於智慧裝置上,工作節點則託管在雲端或其他裝置上,結果返回智慧裝置。為了支援資料快取需求,包括聊天曆史儲存,我們推薦使用Redis,一個高效能的記憶體資料庫,促進分散式快取。
整體系統設計架構在圖(4)中展示。
本節詳細介紹了我們使用的框架進行的實驗,目的是透過多節點協作提高語言模型的效能。我們展示了我們的框架如何使用 MMLU 基準測試評估來提升語言模型的效果。我們採用了17種不同的模型進行 MMLU 任務。接收使用者查詢後,Octopus v4模型將查詢定向到相關的專業模型,然後適當地重新格式化它。以下實驗採用了一個簡單的圖;更復雜的圖將在我們的GitHub倉庫中提供。並且最終的圖需要整個社群的努力。
4.1 專業模型
多工多語言理解(MMLU)包含57個獨特的任務,進一步分為17個整合組,如作者所建議。例如,研究生級別和高中數學任務已被歸入更廣泛的數學類別。任務分佈如下:
- STEM:物理、化學、生物、電腦科學、數學、工程;
- 人文學科:歷史、哲學、法律;
- 社會科學:政治、文化、經濟、地理、心理學;
- 其他:雜項、商業、健康。
專業模型是根據基準得分、人氣和使用者推薦從 Hugging Face 精選的。並非所有專業任務都有相應的模型;例如,人文學科和社會科學目前尚無專門的模型。儘管如此,Llama3模型,透過定製系統提示調整,用以模擬專業能力而無需直接微調。以下17個模型要麼透過提示特別微調,要麼透過提示自定義:
- 物理:Weyaxi/Einstein-v6.1-Llama3-8B,針對物理資料集進行微調;
- 生物:jondurbin/bagel-8b-v1.0,針對生物資料集進行微調;
- 電腦科學:Llama-3-Smaug-8B,針對各種電腦科學論壇定製;
- 數學:Open-Orca/Mistral-7B-OpenOrca,針對數學進行最佳化;
- 工程:phi-2-electrical-engineering,針對電氣工程資料集進行微調;
- 法律:AdaptLLM/law-chat,針對法律資料集進行微調;
- 健康:AdaptLLM/medicine-chat,針對醫療資料進行最佳化;
- 心理學、歷史、哲學、政治、文化、地理、商業、化學、經濟:目前沒有可用的專業模型。使用Llama3和CoT技術透過系統提示模擬專業模型。
4.2 MMLU 基準評估
本節介紹了對Octopus v4系統的基準評估,比較了其效能與其他著名模型使用MMLU基準的表現,以展示我們模型的有效性。在我們的推理系統中,我們使用兩個緊湊的語言模型:3B引數的Octopus v4模型和一個不超過8B引數的另一個工作語言模型。比較展示在圖(5)中。推理過程在圖(2)中演示。
一個使用者查詢的例子如下:
查詢:告訴我當 x 為 2 時 x^3 的導數結果是什麼?
響應:<nexa_4>('確定函式 f(x) = x^3 在 x 等於 2 的點的導數,並在變化率和切線斜率的上下文中解釋結果。')<nexa_end>
注意 <nexa_4> 是一個functional token,對映到數學 gpt。
在本節中,我們強調了如何培訓專業模型的教程。同時,我們也概述了我們團隊的未來計劃。
5.1 如何培訓垂直模型
為了有效地對大型語言模型進行微調以適應特定領域的專業知識,首先需要收集大量的高質量、領域相關的資料。這些資料應包括教科書、研究論文、文章和其他相關材料,充分覆蓋模型預期的領域知識。確保資料多樣性、組織良好並體現模型所需的領域知識是至關重要的。然後,使用這些預處理的領域特定資料對預訓練的大型語言模型進行微調。這一過程調整了模型的引數,使其專注於您選擇的領域,有效地嵌入必要的專業知識。可選地,考慮使用知識蒸餾技術,從更大模型的API中轉移洞見到更小、更高效的模型。對於這一微調階段,我們推薦使用 Hugging Face 提供的 SFT 訓練器進行監督微調,隨後進行直接最佳化。
5.2 未來工作
我們當前的 GitHub 專案專注於開發語言模型的圖形框架,目前處於起始階段。我們計劃透過整合多種垂直特定模型並加入先進的 Octopus v4 模型來增強這一框架,以多代理能力為特徵。未來版本將在此儲存庫中展示更強大的圖形表示。GitHub倉庫將由 Nexa AI 小心維護。與更大模型的縮放法則、資料集相比,我們的框架無限制,並且我們可以建立一個大型圖。
此外,我們正在開發 Octopus 3.5,一個多模態模型,能夠處理視覺、音訊和影片資料。後續版本將將這個 AI 代理納入我們的圖形框架。Nexa AI 也旨在為多種垂直領域開發緊湊、專門化的模型。