HuggingGPT:解決處理AI任務的秘密武器
簡介
人工通用智能(AGI)可以被認為是一個人工智能系統(tǒng),它能夠像人類一樣理解、處理和響應智力任務。這是一項具有挑戰(zhàn)性的任務,需要深入了解人腦的工作方式,以便我們能夠復制它。然而,ChatGPT的出現(xiàn)引起了研究界對開發(fā)此類系統(tǒng)的巨大興趣。微軟已經(jīng)發(fā)布了這樣一個由AI驅動的關鍵系統(tǒng),名為HuggingGPT(Microsoft Jarvis)。
在深入了解HuggingGPT的新內(nèi)容以及它工作原理的相關細節(jié)之前,讓我們首先了解ChatGPT的問題,以及為什么它在解決復雜的AI任務方面很困難。像ChatGPT這樣的大型語言模型擅長于解釋文本數(shù)據(jù)和處理一般任務。然而,它們經(jīng)常在特定任務中掙扎,并可能產(chǎn)生荒謬的反應。你可能在解決復雜的數(shù)學問題時遇到過來自ChatGPT的虛假答復。另一方面,我們有專家級的AI模型,如Stable Diffusion和DALL-E等,它們對各自的學科領域有更深入的了解,但在更廣泛的任務上卻舉步維艱。除非我們在LLM和專業(yè)AI模型之間建立起聯(lián)系,否則我們無法完全利用LLM的潛力來解決具有挑戰(zhàn)性的AI任務。這就是HuggingGPT所做的,它結合了兩者的優(yōu)勢,創(chuàng)造了更有效、更準確、更多的AI系統(tǒng)。
什么是HuggingGPT?
根據(jù)微軟最近發(fā)表的一篇論文,HuggingGPT利用LLM的強大功能,把它作為控制器,將其與機器學習社區(qū)(HuggingFace)中的各種AI模型連接起來,使它能夠使用外部工具,以提高工作效率。HuggingFace是一個為開發(fā)人員和研究人員提供大量工具和資源的網(wǎng)站。它還擁有各種各樣的專業(yè)和高精確度的模型。HuggingGPT將這些模型用于不同領域和模式的復雜AI任務,從而取得了令人印象深刻的結果。在涉及文本和圖像時,它具有與OPenAI GPT-4類似的多模式功能。但是,它也將你連接到互聯(lián)網(wǎng)上,你可以提供一個外部Web鏈接來詢問有關問題。
假設你想讓模型對寫在圖像上的文字進行音頻閱讀。HuggingGPT將使用最適合的模型串行地執(zhí)行這項任務。首先,它將從圖像中導出文本,并將其結果用于音頻生成??梢栽谙旅娴膱D片中查看響應詳細信息。簡直太神奇了!
對視頻和音頻模式的多模式合作進行定性分析
HuggingGPT是如何工作的?
HuggingGPT是一個協(xié)作系統(tǒng),它使用LLM作為接口,向專家模型發(fā)送用戶請求。從用戶提示到模型直到收到響應的完整過程可以分解為以下不連續(xù)的步驟:
1.任務規(guī)劃
在這個階段,HuggingGPT利用ChatGPT來理解用戶的提示,然后將查詢分解為小的可操作任務。它還確定了這些任務的依賴關系,并定義了它們的執(zhí)行順序。HuggingGPT有四個插槽用于任務解析,即任務類型、任務ID、任務依賴性和任務參數(shù)。HuggingGPT和用戶之間的聊天記錄被記錄下來并顯示在顯示資源歷史的屏幕上。
2.模型選擇
基于用戶環(huán)境和可用的模型,HuggingGPT使用一個上下文中的任務-模型分配機制,為一個特定的任務選擇最合適的模型。根據(jù)這一機制,模型的選擇被認為是一個單選題,它最初根據(jù)任務的類型篩選出模型。之后,根據(jù)下載次數(shù)對模型進行排名,因為它被認為是反映模型質量的可靠措施。Top-K模型是根據(jù)這個排名選擇的。這里的K只是一個反映模型數(shù)量的常數(shù),例如,如果它被設置為3,那么它將選擇下載次數(shù)最多的3個模型。
3.任務執(zhí)行
在這里,任務被分配給一個特定的模型,它對其進行推理并返回結果。為了提高這個過程的效率,HuggingGPT可以同時運行不同的模型,只要它們不需要相同的資源即可。例如,如果給出一個提示,生成貓和狗的圖片,那么不同的模型可以并行運行來執(zhí)行這個任務。然而,有時模型可能需要相同的資源,這就是為什么HuggingGPT維護一個<resource>屬性以保持對資源的跟蹤。它確保資源被有效地使用。
4.生成響應
最后一步是生成對用戶的響應。首先,它整合了前幾個階段的所有信息和推理結果。這些信息以一種結構化的格式呈現(xiàn)。例如,如果提示是檢測圖像中獅子的數(shù)量,它將繪制具有檢測概率的適當?shù)倪吔缈颉H缓?,LLM(ChatGPT)使用這種格式,并以人類友好的語言呈現(xiàn)它。
設置HuggingGPT
HuggingGPT建立在Hugging Face最先進的GPT-3.5架構之上,它是一個深度神經(jīng)網(wǎng)絡模型,可以生成自然語言文本。以下是如何在本地計算機上設置它的步驟:
系統(tǒng)要求
默認配置需要Ubuntu 16.04 LTS,至少24GB的VRAM,至少12GB(最?。?、16GB(標準)或80GB(完整)的RAM,以及至少284GB的磁盤空間。此外,需要42GB的空間用于damo-vilab/text-to-video-ms-1.7b,126GB用于ControlNet,66GB用于stable-diffusion-v1-5,50GB用于其他資源。對于“l(fā)ite”配置,只需要Ubuntu 16.04 LTS。
開始使用的步驟
首先,將server/configs/config.default.yaml文件中的OpenAI Key和Hugging Face Token替換為你的密鑰?;蛘?,你可以將它們分別放在環(huán)境變量OPENAI_API_KEY和HUGGINGFACE_ACCESS_TOKEN中
運行以下命令:
對于Server:
- 設置Python環(huán)境并安裝所需的依賴項。
# 設置環(huán)境
cd server
conda create -n jarvis pythnotallow=3.8
conda activate jarvis
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
pip install -r requirements.txt
- 下載所需的模型。
# 下載模型。確保`git-lfs`已經(jīng)安裝。
cd models
bash download.sh # required when `inference_mode` is `local` or `hybrid`.
- 運行服務器
# 運行服務器
cd ..
python models_server.py --config configs/config.default.yaml # required when `inference_mode` is `local` or `hybrid`
python awesome_chat.py --config configs/config.default.yaml --mode server # for text-davinci-003
現(xiàn)在你可以通過向Web API端點發(fā)送HTTP請求來訪問Jarvis的服務。發(fā)送請求到:
- /hugginggpt端點,使用POST方法訪問完整的服務。
- /tasks端點,使用POST方法訪問階段1的中間結果。
- /results端點,使用POST方法訪問階段1-3的中間結果。
這些請求應該是JSON格式的,應該包括代表用戶輸入的信息列表。
對于Web:
- 在服務器模式下啟動應用程序awesome_chat.py后,在計算機上安裝node js和npm。
- 導航到web目錄并安裝以下依賴項:
cd web
npm install
npm run dev
- 將http://{LAN_IP_of_the_server}:{port}/設置為web/src/config/index.ts的HUGGINGGPT_BASE_URL,以防你在其他機器上運行Web客戶端。
- 如果要使用視頻生成功能,請使用H.264手動編譯ffmpeg。
# 可選:安裝 ffmpeg
# 這個命令需要在沒有錯誤的情況下執(zhí)行。
LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/ffmpeg -i input.mp4 -vcodec libx264 output.mp4
- 雙擊設置圖標,切換回ChatGPT。
對于CLI:
使用CLI設置Jarvis是非常簡單的。只需運行下面提到的命令:
cd server
python awesome_chat.py --config configs/config.default.yaml --mode cli
對于Gradio:
Gradio演示也在Hugging Face Space上托管。你可以在輸入OPENAI_API_KEY和HUGGINGFACE_ACCESS_TOKEN后進行試驗。
要在本地運行它:
- 安裝所需的依賴項,從Hugging Face Space克隆項目存儲庫,然后導航到項目目錄
- 使用以下命令啟動模型服務器,然后啟動Gradio演示:
python models_server.py --config configs/config.gradio.yaml
python run_gradio_demo.py --config configs/config.gradio.yaml
- 在瀏覽器中通過http://localhost:7860訪問演示,并通過輸入各種輸入進行測試
- 作為選擇,你也可以通過運行以下命令以Docker鏡像的形式運行該演示:
docker run -it -p 7860:7860 --platform=linux/amd64 registry.hf.space/microsoft-hugginggpt:latest python app.py
注意:如果有任何問題,請參考官方Github Repo(https://github.com/microsoft/JARVIS)。
最后的思考
HuggingGPT也有某些需要在此強調(diào)一下的局限性。例如,系統(tǒng)的效率是一個主要瓶頸,在前面提到的所有階段,HuggingGPT都需要與LLM進行多次交互。這些交互會導致用戶體驗的降低和延遲的增加。同樣,最大的上下文長度也受到允許的令牌數(shù)量的限制。另一個問題是系統(tǒng)的可靠性,因為LLM可能會誤解提示并產(chǎn)生一個錯誤的任務序列,這反過來又會影響整個過程。盡管如此,它在解決復雜的AI任務方面具有很大的潛力,并且是AGI的一個很好的進步。一起期待這項研究會把AI的未來帶向哪個方向吧!