發表文章

目前顯示的是有「AI」標籤的文章

AI-RAN: E3 Interface & dApp OCUDU 的實作

圖片
在前面的文章中, 我們介紹了 OAI E3 interface 與 dApp 的基本架, 也進一步介紹 Nvidia Aerial Testbed 如何利用 Data Lake 與 Shared Memory, 減少大量 Layer 1 資料透過 E3 message 傳輸所造成的負擔. 在上述的 E3/ dApp 的架構中, dApp 是依附在 AI-RAN 之外的應用, 對 Spectrum Sensing, ISAC, Positioning 等應用來說, 這樣的架構相當合理. 而今天我們要介紹的是 DeepSig 與 OCUDU 在 2026 年提出另一種 dApp runtime 架構: 在他們提出的架構中, 根據 dApp 的 timing requirement, 分成 Class A、Class B 與 Class C. OCUDU 論文將三者分別定義成: - Class A:Resident Inline L1 - Class B:Bounded Real-Time Control - Class C:Asynchronous Observation and Advisory OCUDU 仍然在 DU 中放置 Embedded E3 Agent 進行控制,  負責 lifecycle、configuration、model management、telemetry 與 RAN control. 針對 Class A/B/C 的 dApp 的執行, 則依據時間需求放置不同地方: Class A 進入 PHY processing pipeline,  Class B 在 MAC scheduler 的 decision boundary 被直接呼叫, Class C 則取得資料進行非同步分析, 可以部署在 DU process 內, 也可以放在外部 process. 如下圖所示: 在圖中, 紫色虛線表示 E3 管理路徑, 實線表示資料或執行路徑. Class A, Class B 與 Native Class C 位於 DU process 中,  Supervised Class C 使用同主機的獨立 worker, Portable Class C 則透過 E3 取得資料. Class C 的受准許結果可由 host ...

AI-RAN: E3 Interface & dApp Nvidia 的實作

圖片
在 Nvidia ATB (Aerial TestBed) 中, 也針對 dApp 與 E3 介面實作, 不同於 OAI 以 E2/E3 介面實作 dApp 的資料交換, 在 Nvidia 的 dApp 實作中, 考慮了底層的系統實作與 AI-RAN 的架構, 搭配了 DataLake (資料庫) 以及共享記憶體, 來避免大資料的搬移. 我們先以 Nvidia 的圖來說明其架構, 原始連結如下: https://docs.nvidia.com/aerial/testbed/latest/text/product_description/index.html#software-components 來自: Nvidia ATB 在圖中, 我們可以看到 Nvidia 實作的 dApp 主要是對 DU 動作, 並可分成 4 部分: DU-low, 包含 Layer 1 的服務, E3 Agent 以及 DataLake DU-high, 包含 Layer 2 的服務, 範例中以 OAI 進行示範 共享記憶體 (CPU Shared Memory, CPU SHM) dApp 應用服務 在 Nvidia 的框架中, 針對 dApp 與 DU-low 的部分進行設計, 針對 DU-high 則保有原本 OAI 的 E3 框架. 這樣的設計架構有兩個好處: 1) 可以復用原本 E3/dApp 的註冊/通訊方式, 不會重複定義. 2) 針對感測資料量最大的 DU-low 服務 (raw IQ, 通道估測, 等), 設計更有效的架構. 接下來, 我們進一步看 Nvidia 如何實作 dApp 與 DU-low 之間的資料交換. 從架構上來看,Nvidia 仍然使用 E3 作為 dApp 與 RAN 之間的主要介面. 在 ATB 中, Nvidia 實作了一個 E3 Agent, dApp 可以透過 E3 完成: 1. Setup 2. Subscription 3. Indication 4. Control 也就是說, dApp 啟動之後, 可以先與 E3 Agent 建立連線, 接著訂閱自己需要的 RAN 資料. 當資料更新時, E3 Agent 再透過 E3 Indication 通知 dApp. dApp 完成分析或 AI inference 後, 也可以再透過 E3 Co...

AI-RAN: E3 Interface & dApp 的資料格式與參數

圖片
在上一篇文章中, 我們介紹了 dApp 和 E3 介面在 O-RAN 框架中的定位. 接著, 我們介紹一下 E3 的資料格式與參數, 接著我們來介紹 E3 介面的細節, 說明此介面設定如何乘載大量且即時的感測資訊. 首先, E3 interface 目前是 dApp 架構中的延伸介面, 用來讓部署在 O-DU / O-CU 附近的 dApp 與 RAN function 做 超低延遲資料交換與控制. 和 E2 介面連結 nearRT-RIC 和 RAN 不同, E3 直接實作於 RAN (CU/ DU) 之中, 不過在 E3 介面的設計上, 和 E2 有許多雷同之處, E3 也可以拆成 3 層來看: E3 logical interface: E3 是整體 southbound 介面,連接 dApp <=> RAN node E3AP (E3 Application Protocol): E3AP 負責程序與封包類型, 類似 E2AP 在 E2 裡扮演的角色 E3SM (E3 Service Models): E3SM 負責 dApp 資料/控制的定義, 類似 E2SM 也和 E2 介面類似, E3 介面主要有兩個建立關聯的步驟: E3 Setup, E3 Subscription. 我們先從 E3 Setup 開始說明: 這張流程交換的圖示, 應該很有印象,  基本上, 把 xApp/ dApp 以及 E3 Agent/ E2 Agent 的角色調換一下, 就是 E2 介面的 Setup 流程,  在 E3 介面中用來做初始配對, 認證, 建立 dApp 與 RAN node 關聯. 考慮到我們主要要介紹 E3 介面的資料格式與 dApp 功能,  我們先略過 Setup 的介紹, 來花篇幅介紹更重要的 E3 Subscription. 和 E2 介面類似, E3 Subscription 的流程也是先定義了需要的資源, 此處的資源可以是回報的數值, 例如: SRS 回報, 也可以是被控制的功能, 例如: PRB 分配. 在確保了 CU/ DU 有 dApp 所需的支援之後, 接著進行以下的流程: E3 Indication MessageRAN => dApp: 傳遞 tele...

AI-RAN: E3 Interface & dApp 系統架構與資料流

圖片
很就沒有來看 O-RAN 的變革, 雖說知道有 dApp 的出現, 提供 realtime App 的應用, 但沒有發現到針對 dApp 也有一個專屬的介面: E3 interface. 我想就找個機會來整理並介紹. 首先, dApp 和 E3 interface 是 O-RAN 社群在 nGRG / research report 中提出的延伸架構, 不是像 E2/ O1/ A1/ F1/ Open Fronthaul 那樣已經是大家熟知的介面. 它的目的是補足現有 rApp/xApp 架構兩個缺口: 無法直接處理 user-plane/ IQ symbol/ reference-signal 級資料 難以做到 10 ms 以下的 real-time control. 我們先以一張圖來表示 dApp, E3 以及其他元件的關係: 在這張圖中, 我們介紹一下各個元件的關係: rApp 在 Non-RT RIC,時間尺度通常 > 1 s xApp 在 Near-RT RIC,時間尺度通常 10 ms ~ 1 s dApp 不在 RIC 裡,而是直接部署在 O-DU / O-CU-CP / O-CU-UP  E3 是 dApp <=> DU/CU 的即時資料與控制介面 E2 仍然是 Near-RT RIC/xApp <=> E2 node (DU/CU) 的介面 如果用角色來分, 各元件的功能如下: rApp: 慢速策略, 模型管理, 長時間尺度 (>1s) 最佳化 xApp: 近即時控制, 跨 cell/RU 之間的協調 dApp: 超低延遲, 貼近協定堆疊, 直接處理 SRS/IQ/CIR/封包等即時大量資料 DU/CU/RU: 真正執行無線與協定功能的 RAN 節點 接著, 我們來看各元件之間的資料交換流程, 並以 SRS 回報為例, 在相關論文中, 明確寫到 SRS 可由 O-DU 透過 E3 提供給 dApp, 定位 use case 則是使用 UL CIR. 所以整體的流程是: SRS => O-DU channel estimation => CIR/features => dApp inference. 我們以下圖來表示整體資料交換流程: 整體的流程可分成 6 步驟: dApp 先用...

[AIML] Model Context Protocol 介紹 (1)

圖片
在目前 LLM 模型的發展下, 一個共通的模型還有一段距離, 取而代之的是, 各家各有擅長的模型, 同時, 對於 Agentic AI 的需求, 我們對於 AI 也不再是處理文字訊息, 而是希望其可以融合各式模型的能力, 自動判斷使用者意圖, 進而操作各式模型, 已完成使用者意圖中的目標. 老慮到這樣的需求, 如何定義這些 AI 模型的介面, 也就變成一個問題, 對此, MCP (Model Context Protocol) 也就順應而生. MCP 是由 Anthropic 於2024 年11 月推出的開放標準,  目標是在讓 LLM 能夠透過標準化的方式與外部工具, 資料庫和應用程式, 透過 MCP 定義的 API 介面進行安全, 結構化地溝通. 在 MCP 的架構中, 有三個主要的角色: Host, Server, Client, 其架構如下圖: 來自: https://www.geeksforgeeks.org/artificial-intelligence/model-context-protocol-mcp/ 其中, Host 為 MCP 的平台, 提供 AI 應用或代理執行環境,  例如: 聊天介面, IDE 外掛, 桌面助理等, 為使用者操作的介面. Host 負責協調多個 client, 管理工作階段, 並把結果回饋給使用者. 然而, Host 不直接跟各種資料源與 AI 模型溝通, 而是透過 client 進行. MCP Client 在 MCP 架構下, 並非服務的使用者, 而是 AI 模型的代理. 其連線代理由 Host 發起, 同時每個 client 維持與一個 MCP server 的連線, 負責把 Host 的需求翻成 MCP 訊息, 處理握手/重試/能力宣告等需求, 並把 MCP Server 的回應再轉給 Host. 最後, MCP Server 是真實真正提供服務的地方, 有以下功能: 1) 對外宣告可用的 resources (資料), tools (函式庫), prompts (提示範本). Server 可以在本機或遠端, 也可由不同團隊維護, 已達成擴充性需求.

[AIML] 深度學習模型的封裝: ONNX

圖片
 ONNX (Open Neural Network Exchange) 是一個開放格式, 用來表示深度學習模型與傳統機器學習模型的計算圖結構, 讓不同的深度學習框架 (如 PyTorch、TensorFlow、Scikit-learn) 之間可以互通, 使模型的部署與交換更加方便. 來自: https://github.com/1010code/onnx-mlir-tutorial 透過 ONNX, 我們可以完成以下的目標: 模型跨平台轉換與交換 可將模型從 PyTorch、TensorFlow、Scikit-learn 等框架導出為 ONNX 格式 便於在不同工具或設備之間共享與重用模型 跨硬體部署 (CPU、GPU、FPGA、NPU) ONNX 模型可以在多種硬體平台執行,不需重新訓練 搭配 ONNX Runtime、TensorRT、OpenVINO 等工具,實現高效推理 推理優化與加速 可結合 TensorRT、ONNX Runtime 等進行圖優化 (Graph Optimization) 與推理加速 適用於邊緣設備、嵌入式系統、高性能伺服器等場景 多模型整合與模組化設計 可將多個子模型整合為一個 ONNX 模型,便於部署與管理 適合構建複雜管線 (例如預處理 → 模型 A → 模型 B → 後處理) 在 ONNX 架構中, 事實上是把模型拆解成計算圖 (GraphProto), 在計算圖中, 包含了以下 4 種角色: node: 每個節點代表一個操作 (如: matmul、relu、add) input: 圖的輸入 (例如: 影像、感測器資料) output: 圖的輸出 (例如: 分類結果、控制訊號) initializer: 模型的參數 (例如: 權重、bias 等) 來自:  https://onnx.ai/onnx/intro/concepts.html 透過上述運算子, ONNX 可以把原有的運算, 轉化成 Directed Acyclic Graph (DAG), 再放到不同計算平台進行運算. 然而, 也是由於計算圖 (GraphProto) 的原因, ONNX 有以下限制: 1. 無法封裝任意 Python 程式邏輯 ONNX 只能表示靜態的計算圖 (computational graph), 不支援像 Python 中的...