在 Ampere A2 叢集上執行量化 GGUF 大型語言模型

由於缺乏運算基礎架構,使區域 AI 的劃分日益增加。大多數現代大型語言模型 (LLM) 需要大量專業且高效能的 GPU 來有效訓練。由於每部伺服器可能有六大價格,且全球供應鏈面臨壓力,因此許多人將無法存取這些基本資源。在探索不斷增長的 AI 劃分解決方案的同時,GPU 瓶頸的替代方案是卓越的 Ampere A2 處理器。在潛力中,我們設計了完全建置在 Ampere A2 叢集上的 LLM 實作。結果非常卓越。雖然與尖端 GPU 陣列的原始馬力不符,但這些系統可以成功為每小時營運的僅數罰款提供實用的檢索增強生成 (RAG) 應用程式。

架構

此 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 免費。

探索更多資訊

深入瞭解如何在 Oracle Cloud Infrastructure 中的 Ampere A2 叢集上執行 GGUF LLM。

請複查這些其他資源:

確認

  • 作者Badr Tharwat