在 Ampere A2 叢集上執行量化 GGUF 大型語言模型
架構
此 Arm 式架構提供卓越價值的 LLM 實作,以少量的傳統 AI 基礎架構成本執行。使用此架構,以符合預算的方式開始使用 AI。
OCI 公用負載平衡器位在前方,將內送流量分配到運算實例集區。有 Ampere A2 節點的實例集區。每個節點都是執行 Ubuntu 的雙核心 Arm 式運算執行處理。節點是在 OCI 執行處理集區中管理,因此可隨著流量成長輕鬆水平調整。網際網路閘道可視需要公開存取負載平衡器和後端執行處理。
每個 Ampere A2 運算執行處理都會執行 Ubuntu 22.04 (Arm)、使用 llama.cpp 在本機提供的量化 GPT 產生統一格式 (GGUF) LLM (例如 TinyLlama 或 Phi-2)、透過 NGINX 提供的簡單 HTML/JS 登陸頁面,以及以 Python 為基礎的後端配線至 llama-cpp-python,以處理 UI 的提示,並將模型輸出串流回頁面。
集區中的每個運算節點都是設計成輕量型且完全自我不足。啟動時,它會使用 Cloud-init 命令檔自行啟動安裝並執行從頭開始服務 LLM 所需的一切。節點的設定方式如下:
- 安裝相依性:會自動安裝相依性,例如建置必要、cmake、git、NGINX 以及 python3-pip。lama-cpp-python 會從來源編譯,以確保 ARM64 的完整相容性。
- 組建:節點會從 GitHub 提取最新版本的 llama.cpp,並使用 OpenBLAS 建置以最佳化 CPU 推論,同時將所有內容保持在本機狀態 - 沒有 GPU 或推論 API 的外部程式實際執行相依性。
- 下載模型:從 Hugging Face 直接擷取量化 GGUF 模型 (TinyLlama 或類似版本),然後放在
models
目錄中。 - 提供登陸頁面:最少的 HTML/JavaScript UI 是透過 NGINX 在連接埠 80 提供。UI 可讓使用者直接從瀏覽器提交提示並檢視 LLM 回應。
- 透過 Python 處理推論:小型的 Python 後端使用 llama-cpp-python 與本機模型互動。它會顯示
/generate
端點,當使用者送出問題時,登陸頁面會傳送 POST 要求給此端點。 - 啟動時開始:所有項目都包裝在
systemd
服務中,因此推論會在執行處理重新啟動或失敗時自動重新啟動 - 不需要手動操作。
下圖說明此參照架構。
gen-ai-ampere-gguf-llm-arch.zip
此架構具有下列元件:
- 地區
OCI 區域是本地化的地理區域,包含一或多個代管可用性網域的資料中心。區域獨立於其他地區,且遠距離能夠分離它們 (跨國家,甚至是大陸)。
- 可用性網域
可用性網域是區域內獨立的資料中心。每個可用性網域中的實體資源會與其他可用性網域中的資源隔離,以提供容錯能力。可用性網域不會共用基礎架構,例如電源或冷卻系統,或內部可用性網域網路。因此,一個可用性網域發生故障不應影響該區域中的其他可用性網域。
- 容錯域
容錯域是將硬體和基礎架構群組在可用性網域內。每個可用性網域都具有三個獨立電源和硬體的容錯域。當您將資源分散到多個容錯域時,您的應用程式就可以容忍容錯域內的實體伺服器故障、系統維護,以及電源故障。
- 虛擬雲端網絡 (VCN) 與子網路
VCN 是您在 OCI 區域中設定的可自訂軟體定義網路。與傳統資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的無類別網域間路由 (CIDR) 區塊,您可以在建立 VCN 之後變更這些區塊。您可以將 VCN 分隔到子網路中,而子網路的作用領域可以調整到某個區域或可用性網域。每個子網路都是由連續的位址範圍所組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用網路或專用網路。
- 負載平衡器
Oracle Cloud Infrastructure Load Balancing 提供從單一進入點到多部伺服器的自動化流量分配功能。
- 網際網路閘道
網際網路閘道允許 VCN 中公用子網路與公用網際網路之間的流量。
- 執行處理集區
執行處理集區是區域內的一組執行處理,這些執行處理是從相同的執行處理組態建立,並以群組方式管理。
注意事項
實作此架構之前,請考慮下列事項。
- Ampere A2 運算實例成本
每個節點都會執行具有 2 個 OCPU 和 16GB RAM 的 Ampere A2。此 OCPU 的價格目前為每小時每一 OCPU $0.01 美元。每月的費用高達 $14.40,1 個節點永遠開啟。
- 負載平衡器費用
公用負載平衡器 (小型資源配置) 的價格目前為每小時約 $0.029 美元。每月的費用約為 21 美元。您可以在另一個 Ampere 執行處理上設定自訂負載平衡器,以進一步降低成本。
- 儲存成本
每個節點都會儲存作業系統、llama.cpp,以及大約 5-6GB 的模型。預設開機磁碟區約為 50GB。請注意,每月的前 200GB 免費。