發表文章

AI-RAN: DPU (Data Processing Unit) 與他的分類 (1)

圖片
由於近日工作有所插斷, 所以就來改看一些 DPU 的文章, DPU (Data Processing Unit) 是 Nvidia 生態圈中比較不亮眼的一支, 但卻也是一個建構新型態運算的重要角色. 在 Nvidia 的新型態運算框架中,  主要的目標就是要從以 CPU 為主的計算架構, 改成以 GPU 為主的架構,  這其中有一個困難處, 就是計算透過網路平行化的效能, 為了處理大量的資料, 資料中心必須考慮多個節點的資料平行化, 這些平行運算的資料, 就需要透過網路在各節點中透過 CPU 處理並交換, 因此, 整體運算的瓶頸仍是在 CPU 的運算上. 為了打破這樣的架構, Nvidia 在 2019 年收購了 Mellanox, 並開始開發 DPU 的產品, 用意在直接串連 GPU 的運算算力,  提供資料中心以 GPU 為基礎的計算架構. 來自: https://docs.oracle.com/zh-tw/learn/gpudirect-rdma-ib-write-bw/index.html#introduction 為了達成以 GPU 為核心的平行計算架構,  Nvidia 使用 RDMA (R emote Direct Memory Access, RDMA ) 技術來串聯 GPU, 並透過 DPU 與 GPU 之間的 PCIe 匯流技術 ( Direct Memory Access, DMA ), 繞開 CPU 端到端間的存取, 讓不同節點上的 GPU 可以進行資料交換, 進而提供跨節點的 GPU 平行化計算框架.  來自:  https://developer.nvidia.com/blog/demystifying-doca/ 和發展 CUDA 的策略類似, Nvidia 也希望發展 DPU 的環境形成業界標準. 相對於 CUDA 主要為 CPU 的核心平行化, DPU 這邊的環境稱為: DOCA (Data-Center-Infrastructure-On-A-Chip Architecture), 我們以上圖作為參考的實作框架, 左邊為 GPU 右邊為 DPU, 兩者透過 CUDA 協作,  在 DPU 的框架中, 我們看到有一個 DOCA Runtime, 運作在 D...

AI-RAN: Nvidia Areial RAN - Sionna (2)

圖片
我們就從 Sionna 的安裝開始吧! Sionna 可以簡單的用 Google Co-lab 開啟, 但我們還是開立一個新的 linux 環境來進行安裝. 主要的操作, 請參考:  https://nvlabs.github.io/sionna/installation.html 首先, 先建立一個 conda 環境, 並進入: conda create -n sionna conda activate sionna 接著, 透過 pip 安裝 Sionna 相關套件, Sionna 的相依套件已封裝至 sionna 這個軟體安裝組合中, 除了 sionna 之外, 為了進行圖形化顯示, 我們還需要安裝 jupyter notebook, 提供圖形的顯示, 安裝指令如下: (sionna) ov2@ov2:~$ pip install sionna Defaulting to user installation because normal site-packages is not writeable  Collecting sionna [...] (sionna) ov2@ov2:~$ pip install --upgrade ipykernel jupyterlab jupyter 這邊 jupyter notebook 還需要一些額外的設置, 使外部的編輯需求可以連入, 考慮到此處的設定和伺服器相關, 便不再詳述, 主要步驟即是設定對外 IP 並對 port 進行 NAT 轉換. 安裝完成後, 我們先透過 python 的介面檢查 Sionna 是否可以正確引入, 其對應的指令如下: (sionna) ov2@ov2:~$ python3 Python 3.10.12 (main, Jan 17 2025, 14:35:34) [GCC 11.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sionna >>> print(sionna.__version__) 0.19.1 這邊我們可以看到可以正...

AI-RAN: Nvidia Areial RAN - Sionna (1)

圖片
在一系列文章的最後, 我們進入 Sionna 的介紹, 考慮到 Sionna 只有少數的硬體需求, 我們在此系列文章中, 將介紹 Sionna 的安裝, 環境建立, 以及模擬. 在整體 Sionna 的介紹中, 我們也將側重兩個部分: 光跡追蹤 (Ray-tracing) 通道模型 通道參數對於 5G/6G 通訊應用的轉換 在開啟一系列文章之前, 我們還是先看看 Sionna 如何介紹自己: 來自: https://nvlabs.github.io/sionna/ Sionna 是用以發展 5G 與 6G 相關的研究套件, 支持: MIMO link-level 模擬, LDPC/Polar 編碼解碼, OFDM 通道估測與分配 Sionna 基於 Tensor-flow 開發, 可以使用 GPU 加速, 但也可以單獨使用 CPU 可以使用 Google Co-lab 與 Jupyter 環境編譯操作  來自:  https://developer.nvidia.com/blog/jumpstarting-link-level-simulations-with-sionna/ 事實上, Sionna 的整體實作核心是光跡追蹤的通道模型, 對於此部分的通道模擬機制, Sionna 有單獨的文件介紹:  https://nvlabs.github.io/sionna/em_primer.html 透過此通道模型, Sionna 可以進行 CIR (Channel Impluse Response) 的計算, 並據此取得 5G/6G 通訊環境中, OFDM symbol 的強度響應, 進行後續的資源分配與網速的分析. 基於光跡追蹤模型, Sionna 也提供了 RIS (Reconfigurable Intelligent Surfaces) 的模擬套件, 用以提供 6G 架構下, ISAC (Integrated Sensing and Communications) 的演算法開發, 針對通訊演算法部分,  Sionna 側重通道估測, 以及編碼-解碼設計, 希望透過以 GPU 加速的 5G/6G 通道模擬系統, 加速 5G/6G AI RAN (Radio Access Network) 的發展.

AI-RAN: Nvidia Areial RAN - cuRAN (5)

圖片
在這一系列文章中, 我們跟隨著教學文件"安裝"了 cuRAN 的環境, 列出了一些需要注意的事項, 也介紹了 cuRAN 的架構, 雖然, 這畢竟不是真的安裝, 可以預期真實安裝應該會遇到更多問題, 尤其在版本相依的障礙下, Nvidia 並沒有花太多時間測試相容性問題, 或許, 最快的方法就是買一套 Supermicro GH200 + BF3 的設備, 按照官方步驟進行系統建立. 因此, 在最後一篇 cuRAN 的文章中,  我們先回顧一下 cuRAN 的架構, 如下圖所示 (Open Air Interface): 來自:  https://openairinterface.org/news/openairinterface-demonstrates-5g-virtual-ran-with-nvidia-aerial-sdk/ 在上圖 OAI 的實作中, 使用的是標準的 cuRAN 架構, 可以提供 4T4R 的 O-RU 與 4T4R 的使用者裝置對接, 考慮到 cuRAN 中的 cuMAC 和 cuPHY 源自於原有 OAI 的實作, 在 OAI 與 Nvidia 的合作中, 著重在系統的串接, 提供了 O-CU, 部分 O-DU 以及 Core Network 的 OAI 解決方案. 透過 cuRAN 的 E2E 測試可以達成怎樣的效能呢? Nvidia 也對其效能測試建立了如下的效能指標 (ARC-OTA 1.5): MIMO layers DL: 2 layers -> 4 layers Peak throughput SMC-GH (新架構) DL: ~1.03 Gbps UL: ~125 Mbps Dell R750 / Gigabyte Edge E251-U70 DL: ~800 Mbps 說實話, 上述的效能指標,  大概就是一般的 O-CU/O-DU 連上 O-RU 的效能, 甚至還更低一些 (通常 DL E2E 測試應可到達 1.7 Gbps), 在此看來, AI-RAN 無法將這些高階 GPU 的計算效能, 轉換成通訊效能, 這一部分是由於當前的技術限制 (OAI 原有的限制), 另一方面, 單基站 E2E 的測試原本即非 Nvidia 計算框架的強項. 在 Nvidia 的設想中...

AI-RAN: Nvidia Areial RAN - cuRAN (4)

圖片
針對 O-RAN 架構下的網路同步, 可以分成以下 4 架構: LLS-C1 Configuration (DU-RU 對接, DU 為同步源) LLS-C2 Configuration (DU-RU 透過 fronthaul switch 對接, DU 為同步源) LLS-C3 Configuration (DU-RU 透過 fronthaul switch 對接, fronthaul switch 為同步源) LLS-C4 Configuration (DU-RU 對接, DU/RU 各自和 GPS 同步) 其中, LLS 代表 Lower Layer Split, 這邊是因為 3GPP 雖然定義了 CU/ DU 間的切分位置, 但是, DU 和 RU 間的功能切分並沒有統一的規範, 而給各廠家不同實作的空間, 4 種不同同步架構也就是在不同網路框架下, 設定不同同步訊號源的方式, 其中, 主要的同步訊號源 (Grand Master) 都是 GPS 訊號, 其他同步裝置 (client) 則透過 PTP (Precision Time Protocol) 方式進行精確同步. 4 種不同的同步架構可以表示如下圖: 來自:  https://www.techplayon.com/o-ran-fronthaul-transport-synchronization-configurations/ 在實作中, 常用的架構包括 C1 和 C3, 對應不同的應用情境, 在 C1 的實作中, GPS 訊號源接入 DU 裝置, RU 透過 PTP 和 DU 同步, 在此架構下, 適合由單一 DU 接出多個 RU 裝置同步, 同時, 每個 RU 的訊號獨立接入 DU, 可以設立獨立的 PCI, 作為單獨的 Cell, 相對的, 在 C3 的架構下, 同步的中心是一個額外的 T-GM (Telecom Grand Master), 並連上 DU 和 RU 間的 fronthaul switch, DU 和 RU 都和 T-GM 進行 PTP 同步, 此架構對應的是 Cell-free 的網路框架, 所有的 RU 共享相同的 PCI, 進行通訊. 若是使用 C1 的框架, 對 DU 所在的硬體就有作為 T-GM 的需求, 也會增加 cuRAN 的實作複雜度,...

AI-RAN: Nvidia Areial RAN - cuRAN (3)

圖片
在做 Open Source 的專案時, 常常覺得 Open Source 就像是迷宮, 要在大量的資料以及討論串中, 尋找有用的資源. 總是想到著名的大教堂與市集的比喻,  作為一個初始的開發者, 總是沒辦法貢獻市場甚麼, 頂多就是作為一個有經驗的迷航者, 未來尋路的旅人指指方向. 科隆大教堂聖誕市集(照片:Shutterstock) 回歸正題, 在一系列尋找後, 我們可以找到當年的安裝文件, https://docs.nvidia.com/aerial/archive/cuda-accelerated-ran/24-1/aerial_cubb/cubb_install/installing_tools.html 在文件中, 我們可以看到其安裝的需求, 包含如下: Install the GPU card and CX6-DX NIC (GA100 + CX6-DX MCX623106AE-CDAT). Connect the CX6-DX port 0 on both servers using a 100GbE cable. (另一邊為 RU 模擬器, 皆需要 CX6-DX 網卡) Connect the Internet port to the local network. 針對 CX6-DX 網卡 driver 的安裝, 可以參考: https://docs.nvidia.com/aerial/archive/cuda-accelerated-ran/24-1/aerial_cubb/cubb_install/installing_tools.html#install-rshim-and-mellanox-firmware-tools-on-the-host CX6-DX 網卡為 Nvidia 收購 mellanox 後推出的產品, 有其自己特殊的 driver 設定,  在安裝好 CX6-DX 網卡後, 要把 MAC 為只填入對應的設定檔.  針對 GPU 的安裝, 在此範例中, 使用的 CUDA 版本為: 535.54.03, 同時, 還需要停止 Nouveau 並安裝額外的 GDRCopy Driver, 用以進行低延遲記憶體搬移. [更新] 這邊需要注意一下, GDRCopy 對 cuRAN 是必須功...

AI-RAN: Nvidia Areial RAN - cuRAN (2)

圖片
我們先來介紹一下 cuRAN 所需要的安裝環境, 在現有的架構中, Nvidia 一共有在 三個硬體框架 下進行實作: SMC-GH: Supermicro Server ARS-11GL-NHR (Config 2) Dell PowerEdge R750 Server + A100X Gigabyte Edge E251-U70 Server 其中, 3. 是在 Intel CPU 與 GPU (GA100) 協作的架構下完成, 而 1. 則是透過 ARM-based CPU (NVIDIA Grace) 與 GPU (GH200) 協作, 2. 的架構則把計算都整合至 A100X GPU 加速卡. 來自:  https://docs.nvidia.com/aerial/aerial-ran-colab-ota/current/text/installation_guide/procure_the_hardware.html   在 Nvidia 提出的架構中, 為了最大化其 CUDA 平台的計算, 我們可以看到其計算的重心一路從: CPU 架構下的 GPU 運算協作 (架構 3),  變成以 GPU 架構為主的計算 (架構 2), 整合 ARM-based CPU 提供整體運算平台 (架構 1). 這樣計算框架的演進, 也展示了近幾年運算框架的改變, 與 Nvidia 的雄心. 不過, 相對的, 為了讓我們更快的了解 cuRAN 需求, 我們從架構 3 進行說明. 在架構 3 的應用中, 我們需要的元件包含: Intel CPU (Intel Xeon Gold 6240R) RAM (96GB DDR4) GPU (Nvidia GA100) NIC (MLX CX6-DX MCX623106AE-CDAT) 其中, 最特別的是網路卡的需求, 我們來看一下這張網卡的細節, 根據官網敘述, 這張網卡的功能如下: ConnectX-6 Dx EN adapter card, 100GbE, Dual-port QSFP56, PCIe 4.0 x16, Crypto, No Secure Boot, Tall Bracket 來自:  https://www.gotodirect.com/mcx623106ae-cdat-m...