發表文章

[LTE 筆記] OFDM 系統下的通道估測與誤差

圖片
在本文中, 我們預期從 5G NR 的 OFDM 通訊行為來分析通道與同步造成的收訊誤差與扭曲. 我們將以 SRS (Sound Reference Signal) 為例,  SRS 並不是未知的資料訊號, 而是一種已知的 reference signal. 系統會先透過高層或 PHY 層配置決定 SRS 的參數, 例如: numerology, 子載波間距, SRS bandwidth, comb factor, 傳送的 OFDM symbol 位置等. 這些參數決定了 SRS 會出現在 resource grid 的哪些 resource elements 上. 在頻域中, SRS 會先形成一串已知序列 (Z-C Sequence), 接著映射到指定的子載波上.  之後, OFDM transmitter 透過 IFFT 將頻域 resource grid 轉為 time-domain samples. 為了降低多路徑延遲造成的 inter-symbol interference,  系統會將 OFDM symbol 尾端的一小段複製到前方, 形成 cyclic prefix.  最後, 這段含有 CP 的時域訊號會經由 RF front-end 與天線送入無線通道. 接收端取得 time-domain IQ samples 後,  會先進行時間與頻率同步, 再移除 CP, 並透過 FFT 回到頻域. 由於接收端知道 SRS 的時頻位置與原始序列, 因此可以從接收到的頻域訊號中抽取 SRS RE, 並將接收值除以已知的 SRS 符號, 得到該子載波上的 channel frequency response, 也就是 CFR. 如果進一步對 CFR 做 IFFT, 則可以得到 delay-domain 的 channel impulse response, 也就是 CIR. 整體的資料傳輸流程如下圖所示: 在圖中顯示了以 SRS 為例的 OFDM 訊號流程: SRS 先在頻域產生與映射, 經 IFFT 與 CP insertion 形成時域 waveform, 經過無線通道後, 接收端再透過 FFT 回到頻域. 利用已知 SRS 估測 CFR, 並可進一步轉換為 CIR. 透過上述的通道模型,  雖然在頻域...

[LTE筆記] CSI-Based User Positioning with an NVIDIA 5G Testbed (2)

圖片
在上一篇文章中, 我們整理了 ARC-OTA → DataLake → CSI 的兩段式流程: 線上把 FH I/Q + FAPI 落到 DataLake DB 離線用 pyAerial 重跑 PUSCH receiver + channel estimator 取得 CSI/CFR 在這一篇文章中, 我們繼續跟隨論文的脈絡, 並嘗試說明以下兩點: 介紹 ARC-OTA 對 SRS 的支援, 以及為何此論文以 DMRS 進行實作  介紹使用 CFR 的三種應用, 以及每種應用的資料處理流程, 演算法, 與應用成果  我們先從第一點開始: 為何這篇論文用 DMRS (PUSCH) 而非 SRS 來進行 CFR 取值? 這並不是因為 ARC-OTA 不支持 SRS 取得 CFR 的功能, 而是因為這篇論文的主軸是在標準 5G NR 通訊鏈路上進行操作, 並把 sensing 當成副產品. 也因此, 它把資料源鎖定在 uplink 的 PUSCH,  並用 PUSCH 內建的 DMRS 做通道估測, 減少 Sensing (SRS) 對通訊資源的消耗. 這樣做的好處是: 不需要另外開一條量測信號: UE 只要照常送 uplink traffic, 就自然有 DMRS 可以估通道. CSI 更新率主要由 TDD pattern + SCS + scheduler 決定, 論文指出其配置下最密可到 2.5 ms,  時間尺度上也與 SCS=30 kHz (slot=0.5 ms) 及 3DSU 的週期性設定相符 同一個 PUSCH slot 內, 有 3 個 DMRS symbols, 可以觀察 CSI 在不同 OFDM symbol 的變化 如果根據 NVIDIA Aerial (ARC-OTA 底層堆疊) 的文件,  SRS 的支援是從 PHY 到 FAPI 一路打通的, 其實作的功能包含: PHY / pyAerial: 有 SRS Tx/Rx pipeline pyAerial 的 SRS 模組已經提供 SrsTx / SrsRx, 並且有官方 notebook 示範如何跑 SRS Tx/Rx. SCF FAPI:支援 UL_TTI.request 的 SRS PDU + SRS.indication Aerial cu...

[LTE筆記] CSI-Based User Positioning with an NVIDIA 5G Testbed (1)

圖片
以下的內容主要來自於此篇文章: CSI-Based User Positioning, Channel Charting, and Device Classification with an NVIDIA 5G Testbed ArXiv:  https://arxiv.org/abs/2512.10809v1 針對此篇文章的內容預計分成兩篇來撰寫, 在第一篇文章中, 我們將介紹在 Nvidia 系統中, 如何取的 CSI 的資訊, 以及取得 CSI 資訊的格式, 方法, 以及對應的實驗量測環境. 在第二篇文章中, 則會說明 CSI 資訊的應用. 首先, 先說明一下, CSI 有兩種方法可以取得, 除了之前說的 SRS 之外, 另一個則是透過 DMRS 來取得. DMRS 全稱為 Demodulation Reference Signal,  是在 5G 通訊中, 用以進行通道估測與輔助解調 OFDM 的參考訊號, 在上行的 PUSCH (Physical Uplink Shared Channel) 中, UE 裝置可以每 7/14 OFDM symbol 發送一組基礎的 DMRS 參考, 當然, DMRS 訊號可以有類似 comb 的編排機制 (在頻域上間隔出現), 我們在此先以基礎的設定 (使用所有 3276 個 sub-carrier 傳輸) 作為當前設定. 考慮到 DMRS 在 PUSCH 中的配置和 SRS 頗為一致, 在此就不贅述. 在 5G NR 系統中, DMRS 也是由基站通知手機端發送, 因此 DMRS 的回報間隔來自於基站的排程時間. 在這篇論文中, 他們的系統配置讓 CSI sample 至少每 10 ms 或 20 ms 進行回報, 最短的回報時間則是 2.5 ms (TDD pattern=3DSU, 因此, 0.5*5=2.5ms). 同時, 在此系統中, DMRS 在同一個 PUSCH slot 裡被配置 3 次, 換句話說, 在系統配置中, 可以看不同 OFDM symbol 的 CSI 變化. 比較可惜的是, 論文中並未明說這三個 OFDM symbol 配置的順序, 因此, 對於 OFDM RADAR 等應用會缺乏一些資訊. 基於上述的設定, 我們可以整理此系統的時序設定如下所述...

[2026] 新年新計畫

圖片
今天是 1/11, 遲到的說一聲新年快樂, 在過去的一年中, 這個部落格約略是以每月兩篇的速度更新. 在撰寫文章的同時, 不免俗的, 我也藉助了越來越多大語言模型的幫助, 不論是資料的收集, 文章的邏輯脈絡, 論點組織, 等,  都藉立了許多大語言模型 (主要是 GPT) 的幫助, 雖然, 可以保證的是, 最後文章中每個字詞都是自己審閱/寫作, 但是, 現在的寫作越來越接近事與 GPT 協作的成果, 初擬, 討論, 意見回饋, 修改, 最後產生一篇文章. 必須說明的是, 在這過程中, 也逐漸發現大型語言模型的進步, 從一開始, 較小段落的輔助, 同時必須要給予資料提示, 到最後, 常常可以提出超出我知識範圍內的內容與資料, 都讓自己反思, 自己部落格的存在價值: 假如面對疑惑, 使用 GPT 半小時就可以有一篇深入完全的研究, 那麼技術部落格的價值是甚麼呢? 時到如今, 我可能還能夠提供幫助的大概是論點的組織, 資料方向上的取捨, 以及資料不一致時的重新釐清, 不過, 搞不好在 2027 年的此時, 也都將被 GPT 所超越. 考慮到這樣的殘酷現實, 因此, 我們也提早做出一些改變, 首先是介紹的內容目標, 我們將轉以有趣的論文發表為主, 一方面, 針對舊有習知的技術,  GPT 可以以其搜索能力提供完整的資料論述與組織, 另一方面, 針對提問者的面向, 提供更即時與客製化的回應, 這是靜態部落格所比不上的. 既然如此, 也只有往深度與新穎興去做比較吧? 第二, 是更新頻率部分, 可能會減緩到每個月一篇, 不過, 這也是為了上述深度問題所做的取捨. Stackoverflow 的貼文 (Post) 數量, 以及 GPT 的出現 來自:  https://medium.com/tech-ai-chat/did-ai-kill-stack-overflow-i-hope-it-survives-798f66d9a6da 以上, 就是 2026 年的部落格轉型與規劃, 根據網站後台統計, 多數的連入都來自於搜尋, 換句話說, 也就是關鍵字式的詢問與反響, 也因此, 預期這篇文章也不會有多少讀者真的看到. 不過, 也是記錄下一個文字工作者 (?) 面臨科技的掙扎與轉型, 回顧初心, 當初希望為台灣的環境留下更多技術內容的整理, 然而, 看到 st...

LTE筆記: 3GPP Positioning Reference Signal (PRS) -4

圖片
在前幾篇 PRS 文章中ㄝ,  我們把 PRS 當成由 TRP/gNB 下行發送, 由 UE 量測的定位參考訊號, 並整理了 PRS 相較 SRS 的幾個差異, 例如: muting, 較高功率, 彈性的 comb/symbol, 可做 burst, 同步要求更高等, 以及 PRS 在實作上 (OAI / STARE) 目前的實作成果. 接著, 我們把問題延伸一些, 也就是利用 NTN 衛星網路來進行定位, 為什麼要用 NR-NTN 來進行定位呢? 從標準來說, 3GPP 在 Rel-18 開了方向為 network verified UE location for NR-NTN (TR 38.882), 在需求與 use case 層面把位置驗證當成一個 NTN 會面對的議題. 這代表, 以 NTN 進行定位, 的確被列入未來 5G NR 網路發展的需求, 那麼, 就技術面來說, 為何 NTN 會是一個定位的好選擇呢? 相較於 GPS 系統, 雖然 NTN 時間精準度 (振盪器) 不比 GPS,  但是, NTN 對應的低軌衛星在數量與高度上都更有優勢,  有機會做到更好的定位誤差. 來自:  https://www.ultrontek.com/news_detail/5g-ntn-challenges-architecture-overview 如果比較對象是一般的基站或是地面通訊,  考慮到 NTN 衛星網路的特徵, 會為定位帶來以下問題: 1. 傳播延遲大很多 以 LEO 衛星常見高度範圍 (例如 300–1500 km) 來看,  就算只考慮高度, 單程傳播時間就是毫秒等級,  用 𝑡=𝑑/𝑐 粗估:300 km 約 1.0 ms, 而實際斜距會更長. 2. Doppler 會非常明顯 LEO 相對速度很大,所以 f_d≈(v/c)f_c, 粗估若 𝑣≈7.5 km/s, 在 2 GHz 約 50 kHz, 4.7 GHz 約 118 kHz (只是量級, 實際看軌道與仰角) 這會直接影響 matched filter / delay estimation 時的搜尋範圍與 tracking 難度. 3. 多衛星/多 beam 同頻干擾更容易變成主因 地面 OTDOA 的 PRS 已...

LTE筆記: 3GPP Positioning Reference Signal (PRS) -3

圖片
在前兩篇中, 不論是 SRS 或是 PRS 的定位框架, 我們主要討論的是以時間為基礎 (time-based) 的定位方法, 例如: OTDOA, RTT,  在這些方法中, 其核心概念都是將距離差轉換成時間差, 再由時間差 (多點或是單點) 推回裝置的位置資訊, 這類方法在遇到一個根本限制: 時間解析度直接受限於系統可用頻寬. 以 5G NR 的系統而言, 我們可以簡單估算一下: 假設系統頻寬為 100 MHz, 對應的時間解析度約為: 10 ns 乘上光速後, 我們可以得到距離的解析度為 3 公尺, 換句話說, 這種方法在原理上即不可能達成公尺內的定位誤差. 考慮到這樣的限制, PRS 在 Release 18 中, 加入了以相位 (phase) 的定位量測, 此方法稱為: Phase-based Measurement, 此量測包含了: Carrier Phase measurement Phase Difference between TRPs 其核心轉變在於, 我們不只是關心什麼時候收到 PRS 訊號, 也開始關心收到 PRS 的載波是什麼相位. 這個轉變, 使得定位精度的上限, 從頻寬 (e.g., 100 MHz) 轉向載波波長, 以 4.7 GHz 為例, 波長為 6.38 公分, 在此範圍內我們皆可看到相位的變化, 然而, 使用相位資訊進行定位也會有對應的問題, 考慮到相位變化隨波長周期性變化, 單一觀察到的相位將產生大量的重複解, 也因此, 在進行定位時, 實際上需要同時考慮時間, 相位, 甚至是強度資訊, 我們以下圖表示:   來自:  https://arxiv.org/abs/2209.01183 這張圖說明 Carrier Phase 在不同定位解法中所扮演的角色差異: 左側示意在角度式定位架構下, 來自同一 gNB 的多天線訊號. 其接收相位差可與到達角度 (AoA) 結合, 用以提升角度估計的解析度. 此時相位資訊主要作為空間量測的輔助維度. 右側則示意在時間式定位架構中, 多個 gNB 的到達時間 (ToA) 仍構成主要的定位幾何, 而載波相位則可用於細化距離估計, 降低時間量測受限於頻寬所帶來的誤差. 需要特別強調的是, Carrier Phase 本身並非獨立的定位方法, 而是一種高解析度...

LTE筆記: 3GPP Positioning Reference Signal (PRS) -2

圖片
針對 PRS 的系統實作, 雖然 3GPP 已在 R16 定義, 同時, 在 RAN 端與手機端也都已有支援, 舉例來說,  Ericsson:  https://www.ericsson.com/en/blog/2020/12/5g-positioning--what-you-need-to-know Amarisoft: https://www.5ghubvaasa.fi/wp-content/uploads/2023/10/5G-positioning-on-interactive-map.pdf Mediatek: https://www.rohde-schwarz.com/uk/about/news-press/all-news/rohde-schwarz-and-mediatek-verify-5g-lbs-release-16-features-on-the-r-s-ts-lbs-test-solution-press-release-detailpage_229356-1238101.html 我們可以看到不論是 RAN (Ericsson) 或是手機晶片 (Mediatek) 都支援 PRS, 然而, 在現實生活中, 我們卻很難看到 PRS 真實於場域中的應用, 這樣的落差主要是來自於在 3GPP 中 PRS 屬於 LMF (Location Mgmt. Function) 的應用, 這部分是額外要訂閱或是付費, 但卻沒有相對應的應用,  因此, PRS 或是 5G NR 的定位技術, 在目前公網的環境, 沒有普及的應用. 相較之下, 定位在企業專網 (Private Network) 中有比較可行的應用, 主要是在企業/工廠的應用場域中, 可能有更多精密定位的需求, 因此, 不論是 Nokia/Ericsson 的白皮書中, 都強調在企業專網的應用. 另一方面, 在開源的社群 (Open Air Interface/ srsRAN) 中, 對 PRS 的支援如何呢? 我們先從 OAI 開始, OAI 從 2022 年開始支援 PRS,  不同於 SRS 有實作整個 NRPPa 的控制信令, OAI 對 PRS 的支援主要是透過 PHY 層的實作來完成, 主要包含兩個函式: nr_generate_prs():...

LTE筆記: 3GPP Positioning Reference Signal (PRS) -1

圖片
在之前的文章中, 我們介紹了 3GPP 中 SRS 的訊號以及定位方法, SRS 主要是上行的定位訊號, 由 UE 進行發送, gNB 進行量測, 與之對偶的是 PRS (Positioning Reference Signal), 由 gNB 發送 UE 量測, 這樣的 PRS 訊號是在 3GPP R16 中被引入, 透過 gNB 廣播的 PRS 資訊, 用以提供進行裝置為基礎的定位方法. 相較於 SRS, PRS 的訊號有以下的差異: 1) PRS 考慮的是基地台間的協作, 因此有 muting 的機制, 使基地台可以分時多工 2) 考慮到基地台的覆蓋範圍, PRS 使用較高的傳輸功率, 並不支援分碼多工 3) PRS 提供較稀疏的 comb 與 OFDM symbol 設定, 可依據設定提供彈性配置 4) 在基站間的 PRS 配置, 可以透過 RRC 曾進行協同, 避免進行基地台間的 PRS 干擾 5) PRS 比起 SRS 在同步上要求更高, 以相位為基礎的定位在 R18 才被提出 6) PRS 支援 burst 配置 (數百 ms, 甚至數秒才發送一次 PRS) 圖來自: https://www.mathworks.com/help/5g/ug/5g-new-radio-prs.html 在這邊值得注意的是, 雖然上述文字中使用 gNB/基地台代稱傳送端, 但是, 實際於 3GPP 標準中的用語是 TRP (Tx/Rx Point), 不只可以對應於一組小基站, 也可以對應於基站的不同傳輸天線, 透過 PRS 的訊號, 我們可以實現以下的定位方法: OTDOA (Observed Time Difference of Arrival): 利用多個基站下行發送的定位參考信號 (PRS), 由 UE 測量相鄰基站與參考基站之信號到達時間差 (RSTD) 進行定位. 最早在 3GPP Release 9 (LTE) 引入, 在 5G NR 中於 R16 支援.  AoD (Angle of Departure): UE 通過測量多基站的 PRS 下行信號不同波束的接收功率, 確定來自每個基站訊號的發射方向角, 用以進行定位 此技術同時需要波束成形與 PRS 支援, 在 3GPP Release 16 中加入標準. RTT 定位 (Round Trip T...

[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 可以在本機或遠端, 也可由不同團隊維護, 已達成擴充性需求.

LTE筆記: Time Difference of Arrival form Uplink SRS (4)

圖片
在上一篇文章的後續, OAI 團隊將此 SRS 的量測實驗延伸到室內, 並提供了更多實驗的細節, 後續的發表可以看此篇文章: Experimental Insights from OpenAirInterface 5G Positioning Testbeds: Challenges and Solutions link:  https://arxiv.org/abs/2508.19736 在文章中, 提到了 3 個實驗場域, 如下表所示: 圖、OAI SRS 實驗場域 (作者整理) 在三個場域中, 我們可以看到室外場域就是上一篇論文的環境, 此外, 又新增了兩個室內的場域, 對應智慧製造的應用, 這些場域的資料中, 作者公開了室外場域的量測, 放在 Gitlab 上提供下載: https://gitlab.eurecom.fr/ahadi/5g-srs-datasets  這些場域量測的資料已經經過預先的資料前處理, 分成三個部分: ToA Filtering, TDoA Averaging, TDoA Filtering. ToA Filtering: 使用統計方法過濾 ToA 資料, 以去除離群值, 增強測量準確度 TDoA Averaging: 在所有天線間進行TDoA資料的平均, 以提升測量的穩健性 TDoA Filtering: 經過平均化後, TDoA資料會透過位置資訊進行過濾, 提高定位精度 以上三個資料處理流程, 主要針對 SRS 轉換出來的 ToA 進行處理, 主要的目標是增加 ToA/ TDoA 的強韌性, 避免大幅的定位資訊跳動, 其資料前處理的流程圖如下圖所示: 圖、來自論文 比較可惜的是, 若是檢視提供的資料集資料, 看起來已經將不同 RU 間最大的 peak 數值對齊, 這邊我們需要進行額外的檢視, 以確定如何將 ToA 的資料取出: 圖、公開資料集的格式以及 CIR 繪圖成果  

LTE筆記: Time Difference of Arrival form Uplink SRS (3)

圖片
在 SRS 的系統中, 我們介紹了資料傳輸的流程, 也就是基地台如何設定 UE 傳送 SRS, 以及鄰近基站如何識別要量測的鄰近 UE 裝置. 事實上, 針對 SRS 的信令, 仍有另一個重要的控制資訊, 也就是基地台設定 UE 在哪幾個 Resource Block (RB) 上傳送參考訊號, 以及參考訊號如何編成. 我們先說參考訊號的部分吧! SRS 採用 Zadoff–Chu (ZC) 序列產生基底序列,  ZC 序列具備恆定能量大小與良好的正交特性. 為了對不同 UE 產生 SRS 的參考訊號, 要針對 UE 指定序列 ID (sequenceId), 初始化 ZC 基底序列後, 經由離散傅立葉轉換展開至頻域子載波, 最終對應到特定的 RB 位置. 接著, 是關於這些參考訊號的 RB 配置, SRS 主要可以透過兩個方式配置用以傳送參考訊號的 RB,  在時間上 (OFDM symbol) 與頻域上 (sub-carrier), 如下圖所示: 來自:  https://www.mathworks.com/help/5g/ug/nr-sounding-reference-signals.html 在 OAI 的這一篇論文中, 並沒有明確說明 SRS 的設置, 所以我們近一步從公開程式庫取得原始碼: 以 git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git  複製 OpenAirInterface 5G 專案, 進入專案後切換至 NRPPA_Procedures 分支,並透過 git submodule update --init –recursive 完成子模組初始化 接著,在專案路徑 /openairinterface5g/openair2/RRC/NR/nr_rrc_config.c 中, 可以找到與 SRS 配置相關的核心函式: 其中 configure_periodic_srs() 用於設定週期性 SRS 的資源參數, static struct NR_SRS_Resource__resourceType__periodic *configure_periodic_srs(const NR_ServingCellConfigCommon_t *...

LTE筆記: Time Difference of Arrival form Uplink SRS (2)

圖片
在通訊系統中, 透過 SRS 取得通道的量測數值是一個挑戰, 另一個挑戰是如何透過相鄰基站, 偕同量測 SRS 資訊. 不同於 RSRP 的回報是由 UE 進行量測週期廣播的 SSB 訊號, SRS 資訊由 UE 發出, 並由基站量測上行的通道變化. 這也意味著, 基站也必須共享 SRS 的設定,  這些 SRS 的配置涵蓋了頻域與時域的資源分配, 傳送週期性等參數, 並犧牲一部分的上行通訊資源, 以達成 SRS 定位的協作.  在 OAI 的實作中, 在 FAPI interface 裡新增了一種類型的 SRS report: Localization report type, 以及新增一種 SRS 類型 (type 5) 來標示該用途, 用來區別普通 SRS measurement 與為定位用途的 neighbour/serving 測量. FAPI 用以界接 MAC/ PHY 的功能, 如下圖所示: 來自:  https://www.telecomhall.net/t/which-split-options-are-used-in-5g-and-open-ran/18075 如果在 split 7.2x 的架構下, DU 包含 high-PHY 和 MAC 功能, 因此, FAPI 的實作位於 DU 之內. 此外, 為了讓 neighbour gNB/TRP 知道要接收哪個 UE 的 SRS, OAI 為 neighbour 測量引入一個 special RNTI (Radio Network Temporary Identifier), 填入於在 MAC → PHY 的 SRS PDU 中的 UL TTI request, 以標記 SRS 測量的需求. 同時, 在 PHY → MAC 的 SRS.indication 中, 除了 reserved RNTI,  還有 SRS resource ID / UE ID context 可以綁定該測量屬於哪個 UE. 在解出來 ToA 後, OAI 的實作也必須將此數值往上回報, 他們把從多個 TRP 收到的 Timing advance offset (ns) 帶回 MAC/LMF, 這些 offset 用來計算 ToA 差異 (TDoA),  並設計一組 TLV ...

LTE筆記: Time Difference of Arrival form Uplink SRS (1)

圖片
針對 LTE (4G)/5G 這樣的行動通訊系統而言, TDoA (Time Difference of Arrival) 大概算是最常見的定位量測資訊, 然而, TDoA 的資訊事實上來自於使用者的傳輸訊號, 需要搭配 SRS (Sounding Reference Signal) 的傳輸進行量測, 在過去, 由於此部分的公開資料有些少, 所以我們並沒有許多實作的細節, 最近, OAI (Open Air Interface) 實作了 TDoA 與 LMF (Location Mgmt. Function), 讓我們可以一窺 TDoA 的取得方式與實作機制. 我們在第一篇文章中, 先介紹以 SRS 實作 TDoA 的基本概念, 本文主要的內容來自於: arXiv:2409.05217 From Concept to Reality: 5G Positioning with Open-Source Implementation of UL-TDoA in OpenAirInterface 來自:  https://arxiv.org/html/2409.05217v3 在以上的流程圖中, 介紹了 OAI 實作中, 如何發起 SRS 的量測: LMF (Location Management Function) 是定位的核心控制單元 LMF 先透過 API 接收到定位請求(包含 UE 的 IMSI/SUPI、NCGI 等資訊) LMF 透過 NRPPa 協議 向 serving gNB 發送 Positioning Information Request, 要求 UE 傳送 Sounding Reference Signal (SRS) serving gNB 配置 SRS 資源, 並回報其 SRS 配置給 LMF LMF 再下達 Positioning Activation Request, 正式觸發 UE 傳送 SRS 其他鄰近的 gNB/TRP 透過相同的配置接收 UE 的 SRS, 並回傳量測結果給 LMF 接著, 透過取得的 SRS 量測數值,  gNB 的 PHY 層利用 UE 的上行 SRS 進行通道估計與 ToA (Time of Arrival) 計算: 使用 Zadoff-Chu 序列的 SRS 進行相關運算與 IFFT, 得到通...

[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 中的...

LTE筆記: Time Advance in Positioning

圖片
在很久之前的文章中 ( 這裡 ),  我們介紹定位方法時, 提到了 Time Advance (TA) 的量測. 最近正好讀到相關內容, 就整理一下 TA 的原理以及潛在的定位應用. Timing Advance (TA)  是一種用於 5G 網路中, 讓用戶設備 (UE) 在正確時間發送上行訊號的機制. 其主要目的是為了補償訊號從 UE 傳送到基地台 (gNB) 之間的傳輸延遲, 以避免來自不同距離的 UE 訊號在基地台接收端未按照排程對齊, 產生干擾. 我們可以以下圖做為範例說明: 來自: https://www.telecomhall.net/t/parameter-timing-advance-ta/6390/5 左圖是在沒有使用 TA 下進行傳輸,  在此情形下, UE 收到 downlink 訊號就直接回 uplink 傳輸, 由於不同距離產生的訊號延遲, 導致不同 UE 間的 uplink 訊號不同步, 在右圖, 透過 TA 機制彌補傳輸訊號延遲後,  對基站而言, downlink 和 uplink 的傳輸時間即可對齊. TA 為基站所計算, 根據 UE 傳來的時間資訊估算距離與延遲, 透過 RAR (RACH Response) 或 MAC 層的 TA Command 下達 Timing Advance 值, UE 根據 TA 調整自己上行符號的發送時機, 基站便能在自己的時間基準上, 準確地接收所有 UE 的上行訊號. 考量到 TA 資訊隱含了距離的資訊, 透過量測 UE 的 TA 值, 可推算 UE 到基地台的粗略距離. 在下圖中, 即展示了不同使用者位置對應的服務基站與 TA 數值: 來自:  https://www.sharetechnote.com/html/Handbook_LTE_TimingAdvance.html 然而, TA 作為定位資訊也有以下的限制: 1) TA 只能由 Serving Cell 量測與控制: 由於 TA 是針對 uplink 傳輸同步的參數, 非 Serving Cell 並未接收 UE 的上行訊號, 無法估計或是取得 TA 資訊, 無法實行多個基站的偕同定位 2) 因 TA 值有一定的精度限制, 只能作為粗略定位參考: 此數值和...

GenAI: 如何讓你的 GPT 更聰明 (3)

圖片
在之前的文章中, 說明了如何透過 prompting 的方式訓練 LLM 模型, 事實上, 在這邊說 "訓練 (training)" 有點奇怪, 因為 LLM 模型的權重並沒有產生任何改變, prompting 比較像是提供範例學習 (few-shot learning),  讓 LLM 增進回答的精確度, 或者, 更貼近使用者想要的回答. 當然, 針對特定的應用領域, 例如: 法律, 通訊, 客服, 等 擁有大量語意資料, 同時, 擁有特殊的領域資訊,  我們可以透過微調 (fine-tuning) 方式, 來調整 LLM 模型的權重, 在此架構下, LLM 模型的權重將被改變, 而可以記憶放入學習的資料, 以下是兩種方法的比較表:   在過往, 對 LLM 模型的微調相對複雜, 通常我們會基於開源的基礎模型 (base model), 如: LLaMa 進行調整, 主因大概有兩個: 第一、微調需要大量資料, 以及對應的資料前處理, 第二, 微調需要不少算力, 有能力建立者皆可自行訓練 LLM 模型. 同時, 微調後的 LLM 模型, 也被視為重要產出, 對應目標的應用領域. 不過, 我們還是可以從現有的 LLM 模型 API 中一窺 fine-tuning 的方法, 我們一樣以 Gemini 為範例, Gemini 提供了 fine-tuning 的 API, 如下: https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini-use-supervised-tuning 其中, 第一個重點即是準備訓練資料與文本, 其範例如下: {    "input_text": "這是輸入文本。",   "output_text": "這是期望的輸出文本。" } 當然, 我們也可以結合之前 prompting 的資訊,  給予訓練資料更多的角色定義, 例如: {   "systemInstruction": {     "role": "system",     "parts": [ { "text": ...

GenAI: 如何讓你的 GPT 更聰明 (2)

圖片
我們在上一篇文章中介紹了如何有系統地提供問題資訊, 讓 GPT 或是其他 LLM 模型可以更精確地回答, 考慮到 LLM 在各應用中的便利性, 以及其高昂的訓練成本, 透過提示 (prompting) 提升回答精確度的方法, 被廣泛的應用與討論, 其中, 最基本也最廣為人知的也就是 RAG (Retrieval-Augmented Generation). Retrieval-Augmented Generation 於 2020 年由 Facebook AI 提出,  是將生成式模型 (Generative Model) 與檢索模型 (Retrieval Model) 結合的架構. 其設計的核心任務包含了: 解決 LLM 記憶受限問題 (context window 大小限制) 提升回應準確性與可追溯性 (根據外部知識檢索來源回答) 減少 hallucination (幻覺生成) 現象 RAG 的工作流程, 包含了以下的步驟: Query Encoding: 將輸入的問題進行向量化 (embedding), 使用相容的 embedding model 處理 Retrieval: 透過向量相似度搜尋 (vector similarity search) 從外部知識庫檢索最相關的段落 Context Fusion: 將檢索結果與原始 query 進行 prompt engineering,形成完整輸入 Generation: 將結合 context 的 prompt 輸入 LLM, 生成基於外部知識與語言模型推理的答案 來自:  https://medium.com/data-science/retrieval-augmented-generation-rag-from-theory-to-langchain-implementation-4e9bd5f6a4f2 (2,3 併入 Augment 步驟) 和上一篇文章中介紹的 prompting 技術比較, RAG 技術最大的技術特點即是在設計時是針對一個普及的使用. 為了面對多樣不同的查詢, 用以提供範例的資料庫也將十分龐大, 因此, 如何根據當前的資料查詢, 找到相對應的範例就是一個重要的問題. 在 RAG 中使用兩個技術: embedding 將輸入的語意編碼, vecto...

GenAI: 如何讓你的 GPT 更聰明 (1)

圖片
這一系列的文章, 預計會寫個幾篇, 說實話, 這大概連技術文件都說不上, 就是紀錄一些現有熟知的技巧, 在專有名詞部分, 標題的 GPT 其實可借代成任何 LLM (Large Language Model), 這些模型, 以昂貴的訓練成本, 不開源的存取方式稱著, 當然, 他們會收集我們在網頁上的輸入以及反饋,  以免費存取作為代價, 以全人類的資料, 進一步優化這些生財工具, 但是, 對於個人而言, 我們如何客製化一個我們想要的 LLM? 首先, 我們先談談這是否必要? 針對多數的應用中, GPT 或是其他 LLM 其實都已對應大眾使用行為進行調整, 撇開幻覺生成 (Hallucination), 以及過於順從的問題, 在多數的時候, 不論你詢問星座或是 python coding, 他們都可以表現得不錯, 原因無他, 因為在網路上已有大量的相關資料供 LLM 學習. 然而, 若我們考慮一個小範圍且專業的領域呢? 或是, 當我們資訊的提供, 無法以文字或是圖片有效傳達該怎模辦呢? 我們不太可能重新訓練一個 LLM, 而是想借力於一個已經訓練好的 LLM 能力, 針對我們設想的任務優化, 通常來說, 我們有兩種方式可以達成, 分別是: 提示工程 (prompting) 以及模型優化 (fine-tuning). 我們先從最基本的提示工程開始吧! 為了要有一個準確的回答, 首先, 我們需要一個好的問題, 那麼, 一個好的問題需要提供那些資訊呢? 以下是 Gemini 提供的一些指引:  https://ai.google.dev/gemini-api/docs/prompting-strategies 1. 明確的指示(Clear instructions) 使用清楚、具體、直白的語句。 說明任務是什麼、要用什麼格式輸出。 若任務有多步驟,建議拆解並分別列出。 2. 上下文(Context) 提供必要背景資訊(如任務目標、角色、使用者需求)。 可加入範例、定義或限定條件讓模型更準確理解。 3. 角色扮演(Role prompting) 指定模型扮演的角色(例如:「你是資深數據分析師」)。 讓模型以特定觀點或風格作答,提高一致性與專業度。 4. Few-shot 示範(Few-shot prompting) 提供1~3個範例作為輸入與期望輸出格式。 ...