如何在 AO 上打造 AI 應用?
發表於 2024-09-12 12:34 作者: PermaDAO
來源:PermaDAO
AO 是爲鏈上 AI 設計的異步通信網絡,通過與 Arweave 的結合,實現高性能鏈下計算和永久數據存儲。文章介紹了在 AO 上運行 AI 進程的步驟,盡管目前僅支持小型模型,但未來將支持更復雜的計算能力,AI 在鏈上的發展前景廣闊。
什么是 AO 上的 AI?
AO 天生就是爲鏈上 AI 設計的
2023 年被稱爲 AI 的元年,各種大模型以及 AI 的應用層出不窮。Web3 的世界中,AI 的發展也是關鍵的一環。但是一直以來,“區塊鏈不可能三角”讓區塊鏈的計算一直處於昂貴、擁堵的狀態,阻礙了 AI 在 Web 3 上的發展。但是現在這種情況在 AO 上已經得到了初步改善,並且展現了無限的潛力。
AO 被設計爲一個消息驅動的異步通信網絡。基於存儲共識範式(SCP),AO 運行在 Arweave 之上,實現了與 Arweave 的無縫集成。在這種創新的範式中,存儲(共識)與計算被有效地分離,使得鏈下計算和鏈上共識成爲可能。
高性能計算:智能合約的計算在鏈下執行,不再受制於鏈上的區塊共識過程,從而大大擴展了計算性能。不同節點上的各個進程可以獨立地執行並行計算和本地驗證,而無需像傳統的 EVM 架構中那樣等待所有節點完成重復計算和全局一致性驗證。Arweave 爲 AO 提供了所有指令、中間狀態和計算結果的永久存儲,作爲 AO 的數據可用層和共識層。因此,高性能計算(包括使用 GPU 進行運算)都成爲了可能。
永存的數據:這是 Arweave 一直以來所致力於做的事情。我們知道 AI 的訓練中很關鍵的一個環節就是訓練數據的收集,而這正好是 Arweave 的強項。至少 200 年時間的數據永存,讓 AO + Arweave 的生態中擁有了豐富的數據集。
此外,AO 和 Arweave 的創始人 Sam 在今年 6 月的一次發布會上演示了第一個基於 aos-llama 的 AI 進程。爲了保證性能,並沒有使用之前一直使用的 Lua,而是使用了 C 編譯的 wasm。
使用的模型是 huggingface 上开源的 llama 2。可以在 Arweave 上下載模型,是一個約 2.2GB 的模型文件。
Llama land
Llama Land 是一款前沿的大型多人在线(MMO)遊戲,它以 AI 技術爲核心,構建於先進的 AO 平台之上。也是在 AO + Arweave 生態上的首個 AI 應用。其中最主要的特徵就是 llama coin 的發行,是 100% AI 控制的,也就是用戶跟 Llama king 祈愿,得到 Llama king 賞賜的 llama coin。另外,地圖中的 Llama Joker、Llama oracle 也都是基於 AI 進程完成的 NPC。
那么接下來我們看看如何自己在 AO 上跑一個 AI 進程。
AI Demo
1. 整體介紹
我們是利用 Sam 已經在 AO 上部署好的 AI 服務來實現我們自己 AI 應用。Sam 部署的 AI 服務由兩部分組成:llama-herd、llama-worker(多個 llama-worker)。其中 llama-herd 負責 AI 任務的分派,AI 任務的定價。llama-worker 則是真正跑大模型的進程。然後,我們的 AI 應用是通過請求 llama-herd 來實現 AI 能力的,在請求的同時也會需要支付一定的 wAR。
注意:或許你會疑惑,我們爲什么不自己跑 llama-worker 來實現自己的 AI 應用呢?因爲 AI 的 module 在實例化爲進程的時候,需要 15GB 的內存,我們自己實例化會出現內存不足的報錯。
2. 創建進程並充值 wAR
首先,我們需要創建進程,並盡量把進程都升級到最新版本,再進行後續的操作。可以避免一些錯誤,節約很多時間。
運行 AI 進程需要耗費少量的 wAR。通過 arconnect 轉成功以後,會在進程中看到 Action = Credit-Notice 的一條消息。執行一次 AI 需要消耗 wAR,但是消耗的並不多,作爲 demo 之用的話,向進程轉 0.001 wAR 即可。
注意:wAR 可以通過 AOX 跨鏈橋獲取,跨鏈需要 3 ~ 30 分鐘。
可以通過以下命令查看當前進程中 wAR 的余額。下面是我執行了 5 次左右還剩下的 wAR。消耗的數量跟 token 的長度以及當前運行一次大模型的實時價格有關系。另外,如果當前請求處於擁堵狀態,那么也會需要一個額外的費用。(在文章最後,我會根據代碼詳細解析下費用計算,感興趣的小夥伴可以看看)
注意:這裏小數點爲 12 位,也就是說 999999673 表示的是 0.000999999673 個 wAR。
3. 安裝/更新 APM
APM 全稱爲 ao package management,構建 AI 進程的話,需要通過 APM 安裝對應的包。執行上述命令,出現對應的提示,就是安裝/更新 APM 成功了。
4. 安裝 Llama Herder
執行完成以後,在進程內會有一個 Llama 對象,可以通過輸入 Llama 進行訪問,那么 Llama Herder 就是安裝成功了。
注意:這裏如果運行的進程中沒有足夠的 wAR 則 Llama.run 方法是無法執行的,會出現 Transfer Error。需要按照第一步充值 wAR。
5. Hello Llama
接下來我們做一個簡單的交互。問一下 AI 進程“生命的意義是什么?”,限定了最多生成 20 個 token。然後把結果放到 OUTPUTS 中。AI 進程的執行需要幾分鐘的時間,如果有 AI 任務排隊的話,則需要等待更久。
如下面代碼中的返回,AI 回復“生命的意義是一個深刻而哲學的問題,一直吸引着人類。”
注意:這裏如果運行的進程中沒有足夠的 wAR 則 Llama.run 方法是無法執行的,會出現 Transfer Error。需要按照第一步充值 wAR。
6. 做一個 Llama Joker
更加深入一步,我們來看下 Llama Joker 的實現。(由於篇幅有限,僅展示 AI 相關的核心代碼。)
構建一個 Llama Joker 其實相當簡單,與你在 Web 2 的 AI 應用中構建一個聊天機器人類似。
首先,用 <|system|> / <|user|> / <|assistant|> 在構建的 Prompt 中區分不同角色。
其次,確定好固定的提示語部分。Llama Joker 的例子中就是 <|system|> 的內容 “Tell a joke on the given topic”。
最後,構建 Llama Joker Npc 與用戶進行交互。但是這裏爲了篇幅,直接定義了變量 local userContent = "cats"。說明了用戶想聽一個與貓咪相關的笑話。
是不是 so easy 呢。
更多
在鏈上實現 AI 的能力,在之前是無法想象的東西。現在已經可以在 AO 上,基於 AI 實現了完成度較高的應用,其前景讓人期待,也給與了大家無限的想象空間。
但是就目前而言,局限也是比較明顯的。目前只能支持 2 GB 左右的“小語言模型”,尚不能利用 GPU 進行運算等。不過值得慶幸的是,AO 的架構設計中也都對這些短板有着對應解決方案。例如,編譯一個可以利用 GPU 的 wasm 虛擬機。
期待在不久的將來,AI 可以在 AO 的鏈上,开放出更加絢爛的花朵。
附錄
前面留下的一個坑,一起看下 Llama AI 的費用計算。
下面是初始化好以後的 Llama 對象,分別對重要的對象給出一個我的理解。
M.herder: 存儲了 Llama Herder 服務的標識符或地址。
M.token: 用於支付 AI 服務的 token。
M.feeBase: 基礎費用,用於計算總費用的基礎值。
M.feeToken: 每個 token 對應的費用,用於根據請求中的 token 數量計算額外費用。
M.lastMultiplier: 上一次交易費用的乘數因子,可能用於調整當前費用。
M.queueLength: 當前請求隊列的長度,影響費用計算。
M.feeBump: 費用增長因子,默認設置爲 1.005,意味着每次增加 0.5%。
M.feeBase 初始值爲 0。
通過 M.getPrices 函數向 Llama Herder 請求最新價格信息。
其中 M.feeBase、feeToken、M.lastMultiplier、M.queueLength 都是向 M.herder 請求,並接收到 Info-Response 消息後,實時變動的。確保了總是保持最新的價格相關的字段值。
計算費用的具體步驟:
根據 M.feeBase 加上 feeToken 與 token 數量的乘積,得到一個初始的費用。
在初始費用的基礎上,再乘以 M.lastMultiplier。
最後,如果存在請求排隊的情況,會再乘以 M.feeBump,也就是 1.005 得到最後的費用。
引用鏈接
1. Arweave 上的模型地址:
https://arweave.net/ISrbGzQot05rs_HKC08O_SmkipYQnqgB1yC3mjZZeEo
2. aos llama 源碼:
https://github.com/samcamwilliams/aos-llama
3. AOX 跨鏈橋:
https://aox.arweave.dev/
標題:如何在 AO 上打造 AI 應用?
地址:https://www.coinsdeep.com/article/160721.html
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。