<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>GJJ’s  Blog</title>
        <link>https://blog.gaojj.cn/</link>
        <description>^_^</description>
        <lastBuildDate>Sat, 28 Feb 2026 09:29:31 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <copyright>All rights reserved 2026, GJJ</copyright>
        <item>
            <title><![CDATA[CS6.8540 lab1 - MapReduce]]></title>
            <link>https://blog.gaojj.cn/article/blog-108</link>
            <guid>https://blog.gaojj.cn/article/blog-108</guid>
            <pubDate>Wed, 19 Mar 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[CS6.8540学习]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-1bbd48c9439b80faab1be09f672e9f4b"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-1bbd48c9439b807eb6eec1a041ea96f9"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3Af4616d56-d078-4f98-90ae-1c1272d118ee%3Aimage.png?table=block&amp;id=1bbd48c9-439b-807e-b6ee-c1a041ea96f9&amp;t=1bbd48c9-439b-807e-b6ee-c1a041ea96f9" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-1bbd48c9439b806285fbe9ec39b60a2b"><b>MapReduce</b> is a <a target="_blank" rel="noopener noreferrer" class="notion-link" href="https://en.wikipedia.org/wiki/Programming_model">p</a>rogramming model and an associated implementation for processing and generating big data sets with a paradel and distributed algorithm on a cluster.</div><div class="notion-blank notion-block-1bbd48c9439b80f784addc9127d93205"> </div><div class="notion-text notion-block-1bbd48c9439b80739626e37bcb3dd2c6">A MapReduce framework is usually composed of three operations:</div><ol start="1" class="notion-list notion-list-numbered notion-block-1bbd48c9439b80f8872fd578d543aff7" style="list-style-type:decimal"><li><b>Map:</b> each worker node applies the map function to the local data, and writes the output to a temporary storage. A master node ensures that only one copy of the redundant input data is processed.</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-1bbd48c9439b80219015c60af71e2903" style="list-style-type:decimal"><li><b>Shuffle:</b> worker nodes redistribute data based on the output keys (produced by the map function), such that all data belonging to one key is located on the same worker node.</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-1bbd48c9439b807a8a44d5d88aba93b8" style="list-style-type:decimal"><li><b>Reduce:</b> worker nodes now process each group of output data, per key, in parallel.</li></ol><div class="notion-blank notion-block-1bbd48c9439b80ce9520f5e3f5f702a2"> </div><div class="notion-text notion-block-1bbd48c9439b804ba966fd8405b66658">Another way to look at MapReduce is as a 5-step parallel and distributed computation:</div><ol start="1" class="notion-list notion-list-numbered notion-block-1bbd48c9439b80fcae91c7a301d0e37c" style="list-style-type:decimal"><li><b>Prepare the Map() input</b> – the &quot;MapReduce system&quot; designates Map processors, assigns the input key <em>K1</em> that each processor would work on, and provides that processor with all the input data associated with that key.</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-1bbd48c9439b80c5bd08d1003058bc35" style="list-style-type:decimal"><li><b>Run the user-provided Map() code</b> – Map() is run exactly once for each <em>K1</em> key, generating output organized by key <em>K2</em>.</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-1bbd48c9439b80df9de9fad6d29d6d00" style="list-style-type:decimal"><li><b>&quot;Shuffle&quot; the Map output to the Reduce processors</b> – the MapReduce system designates Reduce processors, assigns the <em>K2</em> key each processor should work on, and provides that processor with all the Map-generated data associated with that key.</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-1bbd48c9439b802ba412ce9c6e4170a2" style="list-style-type:decimal"><li><b>Run the user-provided Reduce() code</b> – Reduce() is run exactly once for each <em>K2</em>key produced by the Map step.</li></ol><ol start="5" class="notion-list notion-list-numbered notion-block-1bbd48c9439b8073bb8cdfb7c3206a00" style="list-style-type:decimal"><li><b>Produce the final output</b> – the MapReduce system collects all the Reduce output, and sorts it by <em>K2</em> to produce the final outcome.</li></ol><div class="notion-blank notion-block-1bbd48c9439b80298c32f807f0ad1572"> </div><div class="notion-text notion-block-1bbd48c9439b801e854cdd214c72565a">Input and Output types of a MapReduce job:<div class="notion-text-children"><div class="notion-text notion-block-1bbd48c9439b808f9598c058eb907131">(input) &lt;k1, v1&gt; -&gt; <b>map</b> -&gt; &lt;k2, v2&gt; -&gt; <b>combine</b> -&gt; &lt;k2, v2&gt; -&gt; <b>reduce</b> -&gt; &lt;k3, v3&gt; (output)</div></div></div><div class="notion-blank notion-block-1bbd48c9439b80139150fae70d4233da"> </div><div class="notion-text notion-block-1bbd48c9439b8007837dcce455b99731">Dataflow:<div class="notion-text-children"><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b80b28906f358382ad802"><li>an <em>input reader</em></li></ul><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b80a89d00d55daab55363"><li>a <em>Map</em> function</li></ul><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b802e9242ec14baba8624"><li>a <em>partition</em> function</li></ul><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b80a98850dd41c3451725"><li>a <em>compare</em> function</li></ul><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b80578791de3242cf05fe"><li>a <em>Reduce</em> function</li></ul><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b8003bc0bf5b7121b84db"><li>an <em>output writer</em></li></ul></div></div><div class="notion-blank notion-block-1bbd48c9439b8054aec6cb0386042599"> </div><div class="notion-text notion-block-1bbd48c9439b80618966ce84be0e4866">Logical view：<div class="notion-text-children"><div class="notion-text notion-block-1bbd48c9439b8075bb69eaf1a2593c23">The  <em>Map</em> and <em>Reduce</em> functions of <em>MapReduce</em> are both defined with respect to data structured in (key, value) pairs. <em>Map</em> takes one pair of data with a type in one data domain, and returns a list of pairs in a different domain:</div><div class="notion-text notion-block-1bbd48c9439b8076abc9c639505ef965">The <em>Map</em> function is applied in parallel to every pair (keyed by <code class="notion-inline-code">k1</code>) in the input dataset. This produces a list of pairs (keyed by <code class="notion-inline-code">k2</code>) for each call. After that, the MapReduce framework collects all pairs with the same key (<code class="notion-inline-code">k2</code>) from all lists and groups them together, creating one group for each key.</div><div class="notion-text notion-block-1bbd48c9439b80729a3dd73c07a63465">The <em>Reduce</em> function is then applied in parallel to each group, which in turn produces a collection of values in the same domain:</div><div class="notion-text notion-block-1bbd48c9439b802f9862d3dee714274c">Each <em>Reduce</em> call typically produces either one key value pair or an empty return, though one call is allowed to return more than one key value pair. The returns of all calls are collected as the desired result list.</div><div class="notion-text notion-block-1bbd48c9439b80b6ab9bf802b5c2c8ed">Thus the MapReduce framework transforms a list of (key, value) pairs into another list of (key, value) pairs.This behavior is different from the typical functional programming map and reduce combination, which accepts a list of arbitrary values and returns one single value that combines <em>all</em> the values returned by map.</div><div class="notion-text notion-block-1bbd48c9439b801a9a1ee93c9b559c31">It is necessary but not sufficient to have implementations of the map and reduce abstractions in order to implement MapReduce. Distributed implementations of MapReduce require a means of connecting the processes performing the Map and Reduce phases. This may be a distributed file system. Other options are possible, such as direct streaming from mappers to reducers, or for the mapping processors to serve up their results to reducers that query them.</div></div></div><div class="notion-blank notion-block-1bbd48c9439b80e4ab59fa8be7f622ce"> </div><div class="notion-text notion-block-1bbd48c9439b80768635f1e3f68c45a5">Example：<div class="notion-text-children"><div class="notion-text notion-block-1bbd48c9439b80c4b529d8ca8489178b">Imagine that for a database of 1.1 billion people, one would like to compute the average number of social contacts a person has according to age. In <a target="_blank" rel="noopener noreferrer" class="notion-link" href="https://en.wikipedia.org/wiki/SQL">SQL</a>, such a query could be expressed as:</div><div class="notion-text notion-block-1bbd48c9439b8018a3c5c5b28ca22e63">Using MapReduce, the K1 key values could be the integers 1 through 1100, each representing a batch of 1 million records, the K2 key value could be a person&#x27;s age in years, and this computation could be achieved using the following functions:</div><div class="notion-text notion-block-1bbd48c9439b8009949fe42bab6ffdc9">Note that in the Reduce function, C is the count of people having in total N contacts, so in the Map function it is natural to write C=1, since every output pair is referring to the contacts of one single person.</div></div></div><div class="notion-blank notion-block-1bbd48c9439b8011a49ce2e9bb46fa76"> </div><div class="notion-text notion-block-1bbd48c9439b80ae9eb2eadb13ab2446"><b>LAB</b>：</div><div class="notion-text notion-block-1bbd48c9439b803196b2dbffaf14c63f">In this lab you&#x27;ll build a MapReduce system. You&#x27;ll implement a worker process that calls application Map and Reduce functions and handles reading and writing files, and a coordinator process that hands out tasks to workers and copes with failed workers. You&#x27;ll be building something similar to the <a target="_blank" rel="noopener noreferrer" class="notion-link" href="http://research.google.com/archive/mapreduce-osdi04.pdf">MapReduce paper</a>. (Note: this lab uses &quot;coordinator&quot; instead of the paper&#x27;s &quot;master&quot;.)</div><div class="notion-blank notion-block-1bbd48c9439b8026ae66c636c7baebd0"> </div><div class="notion-text notion-block-1bbd48c9439b805ea390de2aa4187634">已有的函数：<div class="notion-text-children"><div class="notion-text notion-block-1bbd48c9439b809dacbdc080fb2f97e9">coordinator.go<div class="notion-text-children"><div class="notion-text notion-block-1bbd48c9439b80429b03d6be7e01ba72">Done() → bool   // <em>记录工作是否完成</em></div><div class="notion-text notion-block-1bbd48c9439b80bdb9aff9a76f6b2e72">MakeCoordinator(files []string, nReduce int) → *Coordinato </div></div></div><div class="notion-text notion-block-1bbd48c9439b8057b2dddd05dbe6c13e">worker.go<div class="notion-text-children"><div class="notion-text notion-block-1bbd48c9439b80d19b2ee63b0ba9258d">Worker(mapf func(string, string) []KeyValue,    reducef func(string, []string) string) </div></div></div></div></div><div class="notion-blank notion-block-1bbd48c9439b8095993dcc177790527e"> </div><div class="notion-text notion-block-1bbd48c9439b80b3b5cfc47d695b1acf">需要关注的几个点：</div><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b80b582f3ce98fa0ef825"><li>如何将原文件转换成键值对</li></ul><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b80d9afc2dcc134da3a1e"><li>如何将键值对进行再次转换？</li></ul><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b800d8c52ef7af3645f85"><li>如何确定某个阶段任务完成？</li></ul><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b80eaa710d741cb24cb94"><li>结构体如何定义？</li></ul><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b80818a35fffef4a968a7"><li>任务队列如何定义</li></ul><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b80ba87dbe81339692a63"><li>中间输出如何定义</li><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b80ba87dbe81339692a63"><div class="notion-text notion-block-1bcd48c9439b8067a6ccfff5680c1d23">因为<code class="notion-inline-code">Map Task</code>分割采用的是统一的哈希函数<code class="notion-inline-code">ihash</code>, 所以相同的<code class="notion-inline-code">key</code>一定会被<code class="notion-inline-code">Map Task</code>输出到格式相同的中间文件上。例如在<code class="notion-inline-code">wc</code>任务中, <code class="notion-inline-code">Map Task 1</code>和<code class="notion-inline-code">Map Task 2</code>输入文件中都存在<code class="notion-inline-code">hello</code>这个词, <code class="notion-inline-code">Map Task 1</code>中所有的<code class="notion-inline-code">hello</code>会被输出到<code class="notion-inline-code">mr-out-1-5</code>这个中间文件, <code class="notion-inline-code">1</code>代表<code class="notion-inline-code">Map Task</code>序号, <code class="notion-inline-code">5</code>代表被哈希值取模的结果。那么，<code class="notion-inline-code">Map Task 2</code>中所有的<code class="notion-inline-code">hello</code>会被输出到<code class="notion-inline-code">mr-out-2-5</code>这个中间文件。那么<code class="notion-inline-code">Reduce Task 5</code>读取的就是形如<code class="notion-inline-code">mr-out-*-5</code>这样的文件。</div></ul></ul><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b80b6a3cec88ee5ffad15"><li>worker 如何将自己注册给coordinator</li></ul><ul class="notion-list notion-list-disc notion-block-1bcd48c9439b806fa3ffeb4f8405d4f3"><li>coordinator 如何管理 task？</li></ul><ul class="notion-list notion-list-disc notion-block-1bbd48c9439b80f3a863f8af2d9f9386"><li>并行性如何保证</li></ul><div class="notion-text notion-block-1bbd48c9439b805ab395f0a9b739f1d5">
Woker.go</div><div class="notion-text notion-block-1bcd48c9439b80ef8097f572121b2cdf">下边是我对 worker 的理解：</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-1bcd48c9439b80528afff265fe84f648"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/attachment%3A38b72764-15de-450d-96f3-27e5638f4d7b%3Aimage.png?table=block&amp;id=1bcd48c9-439b-8052-8aff-f265fe84f648&amp;t=1bcd48c9-439b-8052-8aff-f265fe84f648" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-1bcd48c9439b802e9c1ddc01fb49b4b2">所以对于 worker向 coordinator 发送的struct 可以这么定义：</div><div class="notion-text notion-block-1bcd48c9439b8073a6bfdbb8f74eab9f">消息的类型如下：</div><div class="notion-text notion-block-1bcd48c9439b80c597efc3df6b21fee1">woker 通过两个函数和coordinator 通信：</div><ul class="notion-list notion-list-disc notion-block-1bcd48c9439b8047874acf5c5c4d492f"><li>请求任务<code class="notion-inline-code">CallForTask() -&gt; *MessReply</code></li></ul><ul class="notion-list notion-list-disc notion-block-1bcd48c9439b80c887e8e2d216aaf369"><li>报告任务完成情况<code class="notion-inline-code">CallForReportStatus(succesType MsgType, taskID int) -&gt; error </code></li></ul><div class="notion-blank notion-block-1bcd48c9439b8084855dd91f9366a117"> </div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2025  plan]]></title>
            <link>https://blog.gaojj.cn/article/blog-107</link>
            <guid>https://blog.gaojj.cn/article/blog-107</guid>
            <pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-17cd48c9439b80869f21fda388351c58"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><table class="notion-simple-table notion-block-17fd48c9439b802fa5a3c669037cd48a"><tbody><tr class="notion-simple-table-row notion-brown_background notion-block-d0b6f5d0549646e3b3002511546338cb"><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Date</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Course</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Mission</b></div></td><td class="" style="width:120px"><div class="notion-simple-table-cell"><b>Paper</b></div></td></tr><tr class="notion-simple-table-row notion-block-0fe03dd8795444d198dd8b26c849fd78"><td class="" style="width:120px"><div class="notion-simple-table-cell">March ~ June</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">mit 6.824
cmu 15445
convex optimization</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">learn about LLM
Reinforcement learning</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">-</div></td></tr><tr class="notion-simple-table-row notion-block-9305fb3e9d9a4c1e84cd8eb075d01d3e"><td class="" style="width:120px"><div class="notion-simple-table-cell">July ~ Oct</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">cmu 10-414</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">IELTS</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">-</div></td></tr><tr class="notion-simple-table-row notion-block-17fd48c9439b80d28687f4c62937f57c"><td class="" style="width:120px"><div class="notion-simple-table-cell">Oct ~ Dec</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">stanford cs149</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">ㅤ</div></td><td class="" style="width:120px"><div class="notion-simple-table-cell">-</div></td></tr></tbody></table><div class="notion-blank notion-block-17fd48c9439b802fa7f8d13861a6b2f8"> </div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[论文精读：《LLM4CP: Adapting Large Language Models for Channel Prediction》使用大模型对信道进行预测]]></title>
            <link>https://blog.gaojj.cn/article/blog-105-AdaptingLargeLanguageModels forChannelPrediction</link>
            <guid>https://blog.gaojj.cn/article/blog-105-AdaptingLargeLanguageModels forChannelPrediction</guid>
            <pubDate>Fri, 27 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[论文精读]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-10dd48c9439b8095ae3eec80715eca8a"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><hr class="notion-hr notion-block-10ed48c9439b80a8bdd8df11660962d5"/><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-10ed48c9439b80c392b0f4ae0ca71696" data-id="10ed48c9439b80c392b0f4ae0ca71696"><span><div id="10ed48c9439b80c392b0f4ae0ca71696" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b80c392b0f4ae0ca71696" title="引言"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">引言</span></span></h2><ul class="notion-list notion-list-disc notion-block-111d48c9439b805e906ffdbe9394c4c4"><li>传统的CSI估计方法问题：尤其在高速环境中，面临着诸如信道时效性（CSI快速变化）以及在频分双工系统中由于上下行信道非互易性而导致的反馈开销增加等挑战</li></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b80bb88dfc2bcbdf578cf"><li>深度学习方法存在高复杂度和泛化性问题</li></ul><ul class="notion-list notion-list-disc notion-block-10ed48c9439b801d860becd469478fa8"><li>大语言模型（LLM），以其强大的跨模态迁移能力，成为了一个新的研究方向</li></ul><div class="notion-text notion-block-10ed48c9439b80c7bc2af62abcde8c2a">本文提出<b>LLM4CP，</b>将<b>预训练的大语言模型（如GPT-2）适配于信道预测任务</b></div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-10ed48c9439b806fb38de9e7c8b14596" data-id="10ed48c9439b806fb38de9e7c8b14596"><span><div id="10ed48c9439b806fb38de9e7c8b14596" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b806fb38de9e7c8b14596" title="系统模型"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">系统模型</span></span></h3><div class="notion-text notion-block-10ed48c9439b80b29c77f6a904c94243">本文讨论的系统模型是一个<b>多输入单输出正交频分复用（MISO-OFDM）系统。基站配备了一个双极化平面阵列天线（UPA）</b>，而移动用户配备了一个全向天线。系统能够在<b>时分双工</b>（TDD）和<b>频分双工</b>（FDD）模式下工作。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-10ed48c9439b809e8109e66232e3db38" data-id="10ed48c9439b809e8109e66232e3db38"><span><div id="10ed48c9439b809e8109e66232e3db38" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b809e8109e66232e3db38" title="信道模型"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">信道模型</span></span></h4><ul class="notion-list notion-list-disc notion-block-10ed48c9439b804686c5d871d0431f6f"><li>基站与用户之间的信道通过<b>簇状多径模型</b>来建模。在时间t和频率 f下的<b>下行CSI</b>表示为：</li><ul class="notion-list notion-list-disc notion-block-10ed48c9439b804686c5d871d0431f6f"><div class="notion-text notion-block-10ed48c9439b803e9db2e7707038d325"></div><div class="notion-text notion-block-10ed48c9439b80a7a09ae9cd5564ddf1">其中，<!-- -->是簇的数量，<!-- --> 是每个簇中的路径数量，<!-- -->、<!-- -->、<!-- --> 和<!-- -->分别表示路径增益、多普勒频移、时延和随机相位。</div></ul></ul><ul class="notion-list notion-list-disc notion-block-10ed48c9439b80d1b2b4fd1567cd3c03"><li>用户运动引起的<b>多普勒频移</b>计算公式为：</li><ul class="notion-list notion-list-disc notion-block-10ed48c9439b80d1b2b4fd1567cd3c03"><div class="notion-text notion-block-10ed48c9439b80328b76f9d221dd3b28"></div><div class="notion-text notion-block-10ed48c9439b80de9be0c8c48c7e9d94">其中，<!-- -->是用户的速度，<!-- -->是光速。<b>波束方向矢量</b> <!-- --> 表示信号的空间特性。</div></ul></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-10ed48c9439b80b1ab50d4fab297e79e" data-id="10ed48c9439b80b1ab50d4fab297e79e"><span><div id="10ed48c9439b80b1ab50d4fab297e79e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b80b1ab50d4fab297e79e" title="信号模型"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">信号模型</span></span></h4><ul class="notion-list notion-list-disc notion-block-10ed48c9439b8048b092d7c0c456063b"><li>在下行MISO-OFDM系统中，用户接收跨多个<b>子载波</b>的信号。第 <!-- --> 个子载波的下行CSI  <!-- --> 由估计或预测获得，接收的信号表示为：</li><ul class="notion-list notion-list-disc notion-block-10ed48c9439b8048b092d7c0c456063b"><div class="notion-text notion-block-10ed48c9439b80a79d02f30245f5e582"></div><div class="notion-text notion-block-10ed48c9439b80a78f17e28430b6622a">其中，<!-- -->是预编码向量，<!-- -->是发射信号，<!-- -->是加性噪声。</div></ul></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b8064848bce73bc40ec2c"><li>可实现的<b>频谱效率</b>（SE）表示为：</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b8064848bce73bc40ec2c"><div class="notion-text notion-block-10ed48c9439b80f398c2c9a905602792"></div></ul></ul><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-10ed48c9439b80fc8f92dff9b35da570" data-id="10ed48c9439b80fc8f92dff9b35da570"><span><div id="10ed48c9439b80fc8f92dff9b35da570" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b80fc8f92dff9b35da570" title="信道预测问题的形式化"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">信道预测问题的形式化</span></span></h3><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-10ed48c9439b80a9b0dcd7b68b255edd" data-id="10ed48c9439b80a9b0dcd7b68b255edd"><span><div id="10ed48c9439b80a9b0dcd7b68b255edd" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b80a9b0dcd7b68b255edd" title="基于信道预测的传输方案"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">基于信道预测的传输方案</span></span></h4><div class="notion-text notion-block-10ed48c9439b802b929dee291385d4e4">在传统系统中，CSI的获取通常通过<b>TDD</b>系统中的信道互易性或者<b>FDD</b>系统中的用户反馈来实现。这些方法带来了反馈延迟以及导频传输所消耗的资源问题。<b>信道预测</b>通过基于历史的上行CSI预测未来的下行CSI，消除了对频繁反馈的需求，提升了系统效率。</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-10ed48c9439b80528147e15fabb566ec" data-id="10ed48c9439b80528147e15fabb566ec"><span><div id="10ed48c9439b80528147e15fabb566ec" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b80528147e15fabb566ec" title="问题定义"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">问题定义</span></span></h4><div class="notion-text notion-block-10ed48c9439b805f8372d134a16b8151">任务是基于历史的上行CSI <!-- -->，准确预测未来的下行CSI <!-- -->。预测精度使用<b>归一化均方误差</b>（NMSE）进行度量：</div><div class="notion-text notion-block-10ed48c9439b80a79fb9d5a56d8b295b"></div><div class="notion-text notion-block-10ed48c9439b805d9899ef23b86e1ef5">目标是通过学习映射函数 <!-- -->来最小化<!-- -->，其中<!-- -->是模型参数</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-10ed48c9439b80ae9899ccc0d54d26af" data-id="10ed48c9439b80ae9899ccc0d54d26af"><span><div id="10ed48c9439b80ae9899ccc0d54d26af" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b80ae9899ccc0d54d26af" title="大语言模型在信道预测中的应用"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">大语言模型在信道预测中的应用</span></span></h3><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-117d48c9439b800cb68ce512e6ef22b5"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F12d0b112-a208-4597-abcc-c30eeb84dc9e%2F0d01bc18-7d5f-4508-a785-14eb1b78626a%2Fimage.png?table=block&amp;id=117d48c9-439b-800c-b68c-e512e6ef22b5&amp;t=117d48c9-439b-800c-b68c-e512e6ef22b5&amp;width=707.98291015625&amp;cache=v2" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-10ed48c9439b80359fc3ece97e98bc9c"><b>LLM4CP</b> 引入了几个模块，以将GPT-2应用于信道预测任务：</div><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-10ed48c9439b807f80becb3bda552ad3" data-id="10ed48c9439b807f80becb3bda552ad3"><span><div id="10ed48c9439b807f80becb3bda552ad3" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b807f80becb3bda552ad3" title="预处理模块"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">预处理模块</span></span></h4><ul class="notion-list notion-list-disc notion-block-10ed48c9439b806a8cc1cb20b5a70e4b"><li>由于CSI数据的维度较高，预处理模块通过并行化CSI处理简化了问题</li></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b80bcb58df5718be4fe77"><li>利用<b>逆离散傅里叶变换</b>（IDFT）提取时延域特征，并对其进行归一化处理，最终转换为适合神经网络输入的实值张量。</li></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b80df8f30f29751b968b7"><li>给定时间<!-- -->的上行CSI矩阵 <!-- -->，直接将其输入到模型中处理会<b>导致计算复杂度较高</b>，尤其是在天线和子载波数量较大的情况下。因此，本文对天线对（即发射和接收天线的组合）进行并行处理，并分别预测每个天线对的CSI</li></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b80409ac3e72a2017254b"><li>对于第 j 个发射天线，模型的输入样本为：</li><ul class="notion-list notion-list-disc notion-block-111d48c9439b80409ac3e72a2017254b"><div class="notion-text notion-block-111d48c9439b80c5ae5ccd6000fe2f61"></div><div class="notion-text notion-block-111d48c9439b80098512d3de1d17fca8">其中，<!-- -->表示第<!-- -->个天线的上行CSI数据。</div></ul></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b805e9421eb9ec4b202ef"><li>时延域是频域的对偶域，能够很好地表示每个多径分量的时延信息。因此，模型还通过逆离散傅里叶变换将频域表示<!-- -->转换为时延域表示：</li><ul class="notion-list notion-list-disc notion-block-111d48c9439b805e9421eb9ec4b202ef"><div class="notion-text notion-block-111d48c9439b804199b7f3a3dcb56626"></div><div class="notion-text notion-block-111d48c9439b80218560c04eeffa0885">其中<!-- -->是<!-- -->维的DFT矩阵。</div></ul></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b8079ae43c5deb02ae539"><li>因为神经网络通常处理的是实数，而不是复数，因此我们需要将频域表示<!-- -->和时延域表示 <!-- -->转换为实数张量，分别表示为<!-- -->和<!-- -->。</li></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b8018b6e4d735e6e9e387"><li>为了促进网络的训练和收敛，输入数据首先会经过归一化处理：</li><ul class="notion-list notion-list-disc notion-block-111d48c9439b8018b6e4d735e6e9e387"><div class="notion-text notion-block-111d48c9439b805eb32fd00a51a4395e">，</div><div class="notion-text notion-block-111d48c9439b8068b0d5e9f99a390315">其中 <!-- -->、<!-- -->和<!-- -->、<!-- --> 分别表示对应域的均值和标准差。</div></ul></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b804ca8ddfedb4303d468"><li>张量<!-- -->和 <!-- -->被重新排列为适合输入到神经网络的格式，即<!-- --> 和 </li></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-10ed48c9439b800c8efec78793d76da0" data-id="10ed48c9439b800c8efec78793d76da0"><span><div id="10ed48c9439b800c8efec78793d76da0" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b800c8efec78793d76da0" title="嵌入模块"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">嵌入模块</span></span></h4><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-117d48c9439b80538637d414cdef05dc"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:384px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F12d0b112-a208-4597-abcc-c30eeb84dc9e%2F8385cd13-b489-430a-a75e-f6d8744c7803%2Fimage.png?table=block&amp;id=117d48c9-439b-8053-8637-d414cdef05dc&amp;t=117d48c9-439b-8053-8637-d414cdef05dc&amp;width=384&amp;cache=v2" alt="notion image" loading="lazy" decoding="async"/></div></figure><ul class="notion-list notion-list-disc notion-block-10ed48c9439b80a69a97d5d0dc49192e"><li>嵌入模块通过CSI注意力机制提取特征，</li></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b803ab3a9c433428aa284"><li>受到图像处理中的相关技术启发</li></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b80f8a099fa5f914734d6"><li>注意力模块增强了对CSI数据中重要区域的特征提取</li></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b80da8c38f6f999aebf4e"><li>通过位置编码来处理CSI数据的时间结构，这与大语言模型处理文本时的方式相似。</li></ul><ul class="notion-list notion-list-disc notion-block-117d48c9439b80b2a2ced71269683664"><li>嵌入层在模型中<b>将原始数据转换为特征表示</b>，以便后续的神经网络能够有效地处理这些特征。对于论文中提到的信道预测任务，</li></ul><ul class="notion-list notion-list-disc notion-block-117d48c9439b80d5ab75d78379d6acc0"><li>嵌入层的核心作用是<em><b>从信道状态信息数据中提取有效特征，并为后续的大语言模型（LLM）处理做准备</b></em>。</li></ul><details class="notion-toggle notion-block-117d48c9439b80baa05ed30cc67943f3"><summary><em><b>嵌入层的输入和输出</b></em></summary><div><ul class="notion-list notion-list-disc notion-block-117d48c9439b8078bd4eda5b835bfd94"><li>输入是经过预处理的CSI数据，形式为<b>实数张量</b>，包含了经过归一化处理的频域和时延域表示。</li></ul><ul class="notion-list notion-list-disc notion-block-117d48c9439b80ba999cd07f56da29d7"><li>输入数据可能具有复杂的时空相关性，直接输入到大语言模型中可能无法充分利用其结构化信息。因此，嵌入层需要首先对这些数据进行特征提取。</li></ul><ul class="notion-list notion-list-disc notion-block-117d48c9439b8017b2cee85ededaae22"><li>嵌入层的输出是将原始的CSI数据表示为更紧凑的<b>高维特征向量</b>，这使得后续的LLM能够更高效地处理这些特征。</li></ul></div></details><details class="notion-toggle notion-block-117d48c9439b806c8198d3f8300f1a21"><summary><em><b>具体的操作流程</b></em></summary><div><ol start="1" class="notion-list notion-list-numbered notion-block-117d48c9439b80d0a5e2c9744d28cf77" style="list-style-type:decimal"><li><b>CSI注意力机制（CSI Attention Mechanism）</b></li><ol class="notion-list notion-list-numbered notion-block-117d48c9439b80d0a5e2c9744d28cf77" style="list-style-type:lower-alpha"><div class="notion-text notion-block-117d48c9439b802c9c77e27924e091d8">卷积网络通过卷积操作提取局部的时空特征，可以捕捉CSI数据中的<b>局部时频关系</b>。这一过程包括以下几个步骤：</div><ul class="notion-list notion-list-disc notion-block-117d48c9439b80ddb337ef70552cfefc"><li><b>卷积层（Convolution Layers）</b>：对输入的CSI张量进行卷积操作。卷积层通过不同大小的卷积核，提取CSI数据中的局部时空特征。这一步能够将高维输入数据压缩为低维特征表示，同时保留数据的关键信息。</li></ul><ul class="notion-list notion-list-disc notion-block-117d48c9439b80ee8265f1c32a27a2fa"><li><b>Squeeze-and-Excitation（SE）模块</b>：卷积网络中的一种增强机制，通过对卷积层输出的特征进行全局分析，生成不同特征片段的重要性权重。</li><ul class="notion-list notion-list-disc notion-block-117d48c9439b80ee8265f1c32a27a2fa"><div class="notion-text notion-block-117d48c9439b80da9fd3e3915cbf3539"><b>作用</b>：CSI注意力机制的作用是通过卷积操作和SE模块，从原始CSI数据中提取时空相关的特征，同时通过注意力权重提升关键特征的影响。这一部分帮助模型更好地理解信道中的复杂相关性。</div></ul></ul></ol></ol><ol start="2" class="notion-list notion-list-numbered notion-block-117d48c9439b80e18cf8d66107575e0d" style="list-style-type:decimal"><li> <b>位置嵌入（Positional Embedding）</b></li><ol class="notion-list notion-list-numbered notion-block-117d48c9439b80e18cf8d66107575e0d" style="list-style-type:lower-alpha"><div class="notion-text notion-block-117d48c9439b80aea1b5d5b1a9ae736c">由于CSI数据具有明显的时间和频率结构，位置嵌入在这里的作用是为网络提供这些结构信息。</div><ul class="notion-list notion-list-disc notion-block-117d48c9439b80959873f3e0da044dc2"><li><b>位置编码</b>：将时间和频率等位置信息编码为向量，并与输入数据结合。通过这种方式，模型不仅能“看到”当前时刻或频率下的CSI数据，还能了解这些数据在整个序列中的位置和关系。</li></ul><div class="notion-text notion-block-117d48c9439b8026b65bded7414c2883"><b>作用</b>：位置嵌入允许模型学习和利用CSI数据的时间序列和频率分布的结构信息。这使得模型可以处理具有时序和频域特征的复杂信道环境。</div></ol></ol><ol start="3" class="notion-list notion-list-numbered notion-block-117d48c9439b80d3a861c5fa12e1d905" style="list-style-type:decimal"><li><b>嵌入层的总体作用</b></li><ol class="notion-list notion-list-numbered notion-block-117d48c9439b80d3a861c5fa12e1d905" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-117d48c9439b80a6be42e4bf4fc99e78"><li><b>桥接原始数据与主干网络（GPT-2）之间的差距</b></li></ul><ul class="notion-list notion-list-disc notion-block-117d48c9439b80b9a0d1da3a928b461b"><li>通过嵌入层将原始的CSI数据转化为模型可以理解的特征表示。</li></ul><div class="notion-text notion-block-117d48c9439b8066a868fb7b5c8ac15b">具体作用总结如下：</div><ul class="notion-list notion-list-disc notion-block-117d48c9439b80f5b291d337219828d9"><li><b>特征增强</b>：通过SE模块对重要特征赋予更大的权重，提升模型对关键特征的关注。</li></ul><ul class="notion-list notion-list-disc notion-block-117d48c9439b80d78a7ef9ac6bdda325"><li><b>特征提取</b>：通过卷积网络（CNN）提取CSI数据中的时频局部特征。</li></ul><ul class="notion-list notion-list-disc notion-block-117d48c9439b807a890cf22a3cacf4f9"><li><b>位置感知</b>：通过位置嵌入，模型能够理解CSI数据的时序和频域结构。</li></ul><div class="notion-text notion-block-117d48c9439b80a3876df26b78340442">这些操作确保了原始CSI数据可以以一种结构化的方式进入GPT-2模型进行进一步的处理，最终实现高精度的信道预测。</div></ol></ol><ol start="4" class="notion-list notion-list-numbered notion-block-117d48c9439b8024b89ec4199e5872d8" style="list-style-type:decimal"><li><b>嵌入层在信道预测中的意义</b></li><ol class="notion-list notion-list-numbered notion-block-117d48c9439b8024b89ec4199e5872d8" style="list-style-type:lower-alpha"><div class="notion-text notion-block-117d48c9439b80458712d2494511db3d">嵌入层确保了模型能够理解信道数据的复杂特性</div><div class="notion-text notion-block-117d48c9439b80e29cd3cc119da50d0a">信道数据不仅具有频域和时域的相关性，还有多天线、多路径传播等特性。因此，嵌入层通过提取时空特征和增强关键特征，使得模型能够有效地应对这些复杂性，进而提升CSI预测的准确性和鲁棒性。</div></ol></ol></div></details><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-117d48c9439b80569c5afa76eeffc2c7" data-id="117d48c9439b80569c5afa76eeffc2c7"><span><div id="117d48c9439b80569c5afa76eeffc2c7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#117d48c9439b80569c5afa76eeffc2c7" title="主干网络"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">主干网络</span></span></h3><hr class="notion-hr notion-block-117d48c9439b80ae8053f137c8016eb4"/><ul class="notion-list notion-list-disc notion-block-10ed48c9439b800eacd2fb6c704dacfe"><li>预训练的<b>GPT-2</b>模型</li></ul><ul class="notion-list notion-list-disc notion-block-117d48c9439b8097b873f76f50a57ede"><li>大部分层被冻结</li></ul><ul class="notion-list notion-list-disc notion-block-117d48c9439b80bb8449fb61f88d0a14"><li>仅微调少数层（如<b>层归一化</b>和<b>位置嵌入层</b>），使模型能够适应信道预测任务，同时保留预训练模型中获取的通用知识。</li></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b80f0b5b9f235c3731ffa"><li>输出模块的作用是将LLM的输出特征转换为预测的下行CSI结果。首先，经过LLM的输出特征会通过两个全连接层进行转换：</li><ul class="notion-list notion-list-disc notion-block-111d48c9439b80f0b5b9f235c3731ffa"><div class="notion-text notion-block-111d48c9439b80ff9c36fc3ba8c728e3"></div><div class="notion-text notion-block-111d48c9439b80bfab51cb038aef6d4d">其中<!-- -->表示全连接层，<!-- -->是预测的时间长度。然后将输出<!-- -->重整为 <!-- -->，其第一维代表实部，第二维代表虚部。</div></ul></ul><ul class="notion-list notion-list-disc notion-block-111d48c9439b80829a24eb07a0e60c10"><li>为了得到最终的下行CSI预测结果，需要进行反归一化（De-normalization），恢复数据的原始尺度：</li><ul class="notion-list notion-list-disc notion-block-111d48c9439b80829a24eb07a0e60c10"><div class="notion-text notion-block-111d48c9439b803aa6dada5fa5bc3c9e"></div></ul></ul><ul class="notion-list notion-list-disc notion-block-117d48c9439b80ac9c2be1e1e639c5c5"><li>最后，预测的下行CSI <!-- --> 表示为：</li><ul class="notion-list notion-list-disc notion-block-117d48c9439b80ac9c2be1e1e639c5c5"><div class="notion-text notion-block-111d48c9439b800bb5a6d2ca2a2c0b70"></div><div class="notion-text notion-block-111d48c9439b805392fad91f75e50db7">其中， <!-- --> 是虚数单位，表示复数的虚部。</div></ul></ul><h4 class="notion-h notion-h3 notion-h-indent-2 notion-block-10ed48c9439b80849f78e26c95e7460e" data-id="10ed48c9439b80849f78e26c95e7460e"><span><div id="10ed48c9439b80849f78e26c95e7460e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b80849f78e26c95e7460e" title="输出模块"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">输出模块</span></span></h4><div class="notion-text notion-block-10ed48c9439b80819149fcaa684c4899">输出模块将GPT-2提取的特征转换为最终的CSI预测结果。通过两个<b>全连接层（FC layers）将LLM的输出转化为所需的CSI格式。最后，预测的CSI通过反归一化</b>恢复到实际CSI的尺度。</div><div class="notion-blank notion-block-10ed48c9439b804d8fa1dad6bbc637e5"> </div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-10ed48c9439b806f9f46c729e96ad97e" data-id="10ed48c9439b806f9f46c729e96ad97e"><span><div id="10ed48c9439b806f9f46c729e96ad97e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b806f9f46c729e96ad97e" title="PPT"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">PPT</span></span></h2><hr class="notion-hr notion-block-119d48c9439b80be811ef14d55d4c83d"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80fb8d97f3a011a9ca84" data-id="119d48c9439b80fb8d97f3a011a9ca84"><span><div id="119d48c9439b80fb8d97f3a011a9ca84" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80fb8d97f3a011a9ca84" title="系统模型"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>系统模型</b></span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80469db8daded273733e" data-id="119d48c9439b80469db8daded273733e"><span><div id="119d48c9439b80469db8daded273733e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80469db8daded273733e" title="系统概述"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">系统概述</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80afbd0ae3ff1f84605a"><li><b>系统类型</b>：单小区MISO-OFDM系统</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80eb84efe040de661b72"><li><b>系统组成</b>：</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b80eb84efe040de661b72"><li><b>基站（BS）</b>：配备双极化的<b>平面阵列天线</b>（UPA）</li><li><b>用户设备（UE）</b>：配备全向天线</li></ul></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b808ba419c3c5e9edd06a"><li><b>适用模式</b>：同时支持<b>时分双工（TDD）和频分双工（FDD）</b></li></ul><div class="notion-text notion-block-119d48c9439b8060ad4edf81b489f570"><b>天线结构</b>：</div><ul class="notion-list notion-list-disc notion-block-119d48c9439b803e81abf03c5fc8fbfd"><li>水平方向天线数：</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80938b2ef9cc76617e16"><li>垂直方向天线数：</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80018fa4f3eb49d09aec"><li>总天线数：</li></ul><hr class="notion-hr notion-block-119d48c9439b80efa5b6f349f295d0c2"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80319934e9281c935212" data-id="119d48c9439b80319934e9281c935212"><span><div id="119d48c9439b80319934e9281c935212" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80319934e9281c935212" title="信道模型（Channel Model）"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">信道模型（Channel Model）</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80348971fa8e5968127e"><li>本文采用<b>基于簇的多径信道模型</b>，来描述基站与用户之间的下行链路信道状态信息（CSI）。</li></ul><div class="notion-text notion-block-119d48c9439b809ab0f3f34905d1b46c"><b>公式</b>：
</div><ul class="notion-list notion-list-disc notion-block-119d48c9439b8038a3a7dc5ea92444a6"><li><b>变量含义</b>：</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b8038a3a7dc5ea92444a6"><li>：簇的数量</li><li>：第 n 簇中的路径数</li><li>：第 n 簇第 m 路径的<b>复路径增益</b></li><li>：第 n 簇第 m 路径的<b>多普勒频移</b></li><li>：第 n 簇第 m 路径的<b>时延</b></li><li>：第 n 簇第 m 路径的<b>随机相位</b></li><li>, <!-- -->：该路径的<b>波束成形向量</b></li></ul></ul><hr class="notion-hr notion-block-119d48c9439b80b1b724f4602c73c88f"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80ff8e51c71b57f80047" data-id="119d48c9439b80ff8e51c71b57f80047"><span><div id="119d48c9439b80ff8e51c71b57f80047" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80ff8e51c71b57f80047" title="多普勒频移计算"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">多普勒频移计算</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b8025b28ec8e2f7685677"><li>用户在移动时，信号的多普勒频移是信道随时间变化的主要原因。</li></ul><div class="notion-text notion-block-119d48c9439b801d8eb8e1e111636d57"><b>公式</b>：

<!-- -->
</div><ul class="notion-list notion-list-disc notion-block-119d48c9439b8026b27ae17ddde899a6"><li><b>变量含义</b>：</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b8026b27ae17ddde899a6"><li>：用户的即时速度</li><li>：载波频率</li><li>：速度方向与路径方向之间的夹角</li><li>：光速</li></ul></ul><hr class="notion-hr notion-block-119d48c9439b80cbb283c9609a1880e0"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b805a8887e4e6ed81d04a" data-id="119d48c9439b805a8887e4e6ed81d04a"><span><div id="119d48c9439b805a8887e4e6ed81d04a" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b805a8887e4e6ed81d04a" title="波束成形向量"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">波束成形向量</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80429310f559bf7545da"><li><b>波束成形向量</b> <!-- --> 描述了信号通过特定路径时的方向信息。</li></ul><div class="notion-text notion-block-119d48c9439b8021835ef2d730a8a56d"><b>公式</b>：

</div><ul class="notion-list notion-list-disc notion-block-119d48c9439b80319d9bd50991dcf25d"><li><b>水平方向的波束成形向量</b>：
</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b8089a28fe3ea9404501c"><li><b>垂直方向的波束成形向量</b>：
</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b807da309f46a52fc7f52"><li><b>变量含义</b>：</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b807da309f46a52fc7f52"><li>：天线水平间距</li><li>：天线垂直间距</li><li>：方位角</li><li>：俯仰角</li></ul></ul><hr class="notion-hr notion-block-119d48c9439b8022933acae8ac5095ce"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b8062961ef6cb01416e96" data-id="119d48c9439b8062961ef6cb01416e96"><span><div id="119d48c9439b8062961ef6cb01416e96" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b8062961ef6cb01416e96" title="信号模型（Signal Model）"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">信号模型（Signal Model）</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b807aa2bfcd99dab59d39"><li>系统使用<b>OFDM技术</b>，其中在下行链路传输中激活了<!-- -->个子载波。</li></ul><div class="notion-text notion-block-119d48c9439b80939a2ddeb15364dfbc"><b>公式</b>：</div><ul class="notion-list notion-list-disc notion-block-119d48c9439b804b820fc2c570dae992"><li>第<!-- --> 个子载波的下行链路CSI：
</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80b2a468f36d77702243"><li>用户在第 <!-- -->子载波上接收到的信号：
</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b80b2a468f36d77702243"><li>：传输预编码向量</li><li>：发送的符号</li><li>：加性高斯白噪声（AWGN）</li></ul></ul><hr class="notion-hr notion-block-119d48c9439b80a8a296d5bec2eff535"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80c8bd3aecaa536dbf8c" data-id="119d48c9439b80c8bd3aecaa536dbf8c"><span><div id="119d48c9439b80c8bd3aecaa536dbf8c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80c8bd3aecaa536dbf8c" title="系统频谱效率（SE）"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">系统频谱效率（SE）</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80058822db97af600f9e"><li><b>系统频谱效率</b>通过所有子载波的传输速率之和表示：</li></ul><div class="notion-text notion-block-119d48c9439b80179127d259c487b075"><b>公式</b>：
</div><ul class="notion-list notion-list-disc notion-block-119d48c9439b803f9c75db4bc38cca6f"><li><b>匹配滤波预编码器</b>：
</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80da80d6d28670b91afa"><li>如果<!-- -->不准确，会导致<!-- --> 的不匹配，从而降低系统的频谱效率。</li></ul><hr class="notion-hr notion-block-119d48c9439b803ca29fc46b1b57e0f6"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80839bd5c508ff5a1350" data-id="119d48c9439b80839bd5c508ff5a1350"><span><div id="119d48c9439b80839bd5c508ff5a1350" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80839bd5c508ff5a1350" title="信道预测的背景"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">信道预测的背景</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80989b34e3e414687f50"><li>在传统的无线通信系统中，信道状态信息（CSI）是通过在<b>TDD</b>模式下的信道互易性，或者在<b>FDD</b>模式下通过<b>用户反馈</b>获取的。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b801cb380c0b098d21df7"><li><b>问题</b>：</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b801cb380c0b098d21df7"><li>TDD系统依赖于信道互易性，在用户高速移动场景中<b>信道时变性</b>（Channel Aging）显著，影响性能。</li><li>FDD系统需要大量的上行链路反馈，<b>反馈开销</b>大，影响系统效率。</li></ul></ul><div class="notion-text notion-block-119d48c9439b80d48405fc61a7a08114"><b>解决方法</b>：通过<b>信道预测</b>来减少反馈开销，提升信道估计的精度。</div><hr class="notion-hr notion-block-119d48c9439b80e7b8dafe70195ef678"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b804498f5d0a4cdd0c027" data-id="119d48c9439b804498f5d0a4cdd0c027"><span><div id="119d48c9439b804498f5d0a4cdd0c027" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b804498f5d0a4cdd0c027" title="信道预测的目标"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">信道预测的目标</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b808eb607fd992028e3a0"><li>信道预测的目的是利用<b>历史上行CSI数据</b>，预测未来的<b>下行CSI</b>，从而减少对频繁反馈的依赖。</li></ul><div class="notion-text notion-block-119d48c9439b80b19a09d69803ba3fc4"><b>任务定义</b>：</div><ul class="notion-list notion-list-disc notion-block-119d48c9439b807698d8e1d9502513f2"><li><b>已知</b>：历史的上行CSI序列 </li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80c78b43d82553760602"><li><b>预测</b>：未来时刻的下行CSI  </li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80419b9aea54aa7467ef"><li><b>目标</b>：学习一个映射函数 </li><ul class="notion-list notion-list-disc notion-block-119d48c9439b80419b9aea54aa7467ef"><li>其中<!-- -->是模型的参数，<!-- --> 是预测的时序长度。</li></ul></ul><hr class="notion-hr notion-block-119d48c9439b80c6bb73ce3a20a3cb97"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b8005b129e132679db068" data-id="119d48c9439b8005b129e132679db068"><span><div id="119d48c9439b8005b129e132679db068" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b8005b129e132679db068" title="损失函数定义"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">损失函数定义</span></span></h4><div class="notion-text notion-block-119d48c9439b80e586a5d6f4255fb522">为了评估预测的精度，论文使用了<b>归一化均方误差（NMSE）</b>作为损失函数，来衡量预测的CSI与真实CSI之间的误差：</div><div class="notion-text notion-block-119d48c9439b804dbf64c9de3d19f6da"><b>归一化均方误差（NMSE）公式</b>：
</div><ul class="notion-list notion-list-disc notion-block-119d48c9439b800abdc1c4a80e279276"><li>：模型预测的未来时刻的下行CSI</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80d4b00dc3efce8971f5"><li>：真实的未来下行CSI</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80369690d28ddc8d4027"><li>：表示<b>弗罗贝尼乌斯范数</b>，即矩阵中元素的平方和开根号，用于衡量矩阵的误差大小。</li></ul><hr class="notion-hr notion-block-119d48c9439b80cabe75f0f8168c0ccb"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80e598c3ec26d895e26b" data-id="119d48c9439b80e598c3ec26d895e26b"><span><div id="119d48c9439b80e598c3ec26d895e26b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80e598c3ec26d895e26b" title="问题的挑战"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">问题的挑战</span></span></h4><div class="notion-text notion-block-119d48c9439b80abae24ef75e892b14e">在实际信道预测中，存在多个挑战：</div><ol start="1" class="notion-list notion-list-numbered notion-block-119d48c9439b80f28367e5a90a24d9da" style="list-style-type:decimal"><li><b>高维度CSI数据</b>：信道状态信息（CSI）是一个高维度的复数矩阵，包含大量时频信息，直接预测会非常复杂。</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-119d48c9439b8004b8d0de18e680769f" style="list-style-type:decimal"><li><b>信道的时变性</b>：随着时间变化，信道的特性（如增益、时延）也不断变化，这增加了预测的难度。</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-119d48c9439b80df8bd4f10ea8a67faa" style="list-style-type:decimal"><li><b>噪声与多径效应</b>：信道传播过程中可能受到噪声和多径干扰，增加了对真实CSI进行建模的难度。</li></ol><hr class="notion-hr notion-block-119d48c9439b80a298a4c27d3ea367f1"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b8032adcfe82bd0304cec" data-id="119d48c9439b8032adcfe82bd0304cec"><span><div id="119d48c9439b8032adcfe82bd0304cec" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b8032adcfe82bd0304cec" title="基于深度学习的解决方案"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">基于深度学习的解决方案</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b807a893dc74349eb5dd2"><li><b>深度学习模型的优势</b>：能够从历史数据中捕捉复杂的时频关系，并进行高效的CSI预测。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b800cae00f624fc4fb4e7"><li>本文提出的模型（LLM4CP）使用了<b>预训练的大语言模型（LLM）</b>，通过微调这些模型来进行信道预测，解决了以下问题：</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b800cae00f624fc4fb4e7"><li>高维数据的处理问题</li><li>信道的时变性建模</li><li>噪声的鲁棒性</li></ul></ul><hr class="notion-hr notion-block-119d48c9439b801f96c4f68732ec2952"/><hr class="notion-hr notion-block-119d48c9439b8001b6d4df01b62fa21e"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80499933c9682c7a0f54" data-id="119d48c9439b80499933c9682c7a0f54"><span><div id="119d48c9439b80499933c9682c7a0f54" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80499933c9682c7a0f54" title="LLM用于信道预测的概述"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">LLM用于信道预测的概述</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80b6b76ec0746097d203"><li><b>问题背景</b>：传统深度学习方法如RNN、LSTM和CNN虽然能进行信道预测，但存在高复杂度、泛化能力弱等问题。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b800a983fec9da6751696"><li><b>LLM（大语言模型）的引入</b>：通过预训练的<b>GPT-2</b>等大语言模型，利用其在自然语言处理中的强大建模能力，适应信道预测任务。</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b800a983fec9da6751696"><li><b>优点</b>：LLM具有强大的跨领域迁移能力，尤其适用于处理高维序列数据。</li><li><b>核心思想</b>：通过对大语言模型进行微调，利用历史的上行CSI数据预测未来的下行CSI。</li></ul></ul><hr class="notion-hr notion-block-119d48c9439b8003b72ec7e29fd590dc"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80549546ecd2f57ab711" data-id="119d48c9439b80549546ecd2f57ab711"><span><div id="119d48c9439b80549546ecd2f57ab711" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80549546ecd2f57ab711" title="LLM4CP模型架构"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">LLM4CP模型架构</span></span></h4><div class="notion-text notion-block-119d48c9439b8024b664c6d2cc938cb1">LLM4CP（Large Language Model for Channel Prediction）结构包含以下主要模块：</div><ol start="1" class="notion-list notion-list-numbered notion-block-119d48c9439b8059b5bae241aa4a3bc1" style="list-style-type:decimal"><li><b>预处理模块</b>：将高维的CSI数据进行降维处理，提取关键特征。</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-119d48c9439b808bac4eda1f7826544f" style="list-style-type:decimal"><li><b>嵌入模块</b>：将处理后的CSI数据嵌入到大语言模型的输入层，利用特定的CSI注意力机制。</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-119d48c9439b8016b2d6c3e82d66c718" style="list-style-type:decimal"><li><b>主干网络</b>：基于GPT-2的大语言模型，处理时序特征。</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-119d48c9439b801daf82fee2688e81f9" style="list-style-type:decimal"><li><b>输出模块</b>：将大语言模型的输出转化为未来时刻的CSI预测。</li></ol><hr class="notion-hr notion-block-119d48c9439b8035ab5ee0edf06c3eab"/><div class="notion-blank notion-block-119d48c9439b8015a0b7d1342db6f8d4"> </div><hr class="notion-hr notion-block-119d48c9439b80098b6ed01448521874"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80a0b442fc8b1d139f9d" data-id="119d48c9439b80a0b442fc8b1d139f9d"><span><div id="119d48c9439b80a0b442fc8b1d139f9d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80a0b442fc8b1d139f9d" title="频域数据的预处理"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>频域数据的预处理</b></span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80c09f40ef52eaaf1838" data-id="119d48c9439b80c09f40ef52eaaf1838"><span><div id="119d48c9439b80c09f40ef52eaaf1838" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80c09f40ef52eaaf1838" title="频域数据的基本概念"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">频域数据的基本概念</span></span></h4><div class="notion-text notion-block-119d48c9439b80818195f6354a8aaa18"><b>频域数据</b>表示信道在不同子载波频率下的响应信息，特别是在<b>OFDM</b>系统中，每个子载波上的信道状态信息（CSI）都会有所不同。</div><ul class="notion-list notion-list-disc notion-block-119d48c9439b80f6be4fdca77261e7fd"><li><b>复数矩阵形式</b>：频域数据通常表示为一个复数矩阵，每个元素包含了<b>增益（幅度）和相位</b>信息。公式如下：
<!-- -->
其中：</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b80f6be4fdca77261e7fd"><li><b>行维度</b>：表示不同的子载波频率。例如，在一个OFDM系统中，可能有48个子载波，每个子载波对应一个行。</li><li><b>列维度</b>：表示时间上的不同采样点，或者不同天线上的CSI信息。</li></ul></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b8016872dc27018bf7678" data-id="119d48c9439b8016872dc27018bf7678"><span><div id="119d48c9439b8016872dc27018bf7678" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b8016872dc27018bf7678" title="频域数据的特征"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">频域数据的特征</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80e293eae996a454c7f3"><li><b>复数形式</b>：每个元素 <!-- --> 是一个复数，它包含信号通过信道后的增益和相位变化，实部和虚部分别表示实际信号分量。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b8092a5a6c2ea2ef06992"><li><b>频率选择性</b>：由于信道的频率选择性衰落，不同频率子载波的CSI表现不同，因此频域数据可以有效反映信道在不同频率上的衰落特性。</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b8043b9e0dc0b84f047b9" data-id="119d48c9439b8043b9e0dc0b84f047b9"><span><div id="119d48c9439b8043b9e0dc0b84f047b9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b8043b9e0dc0b84f047b9" title="频域数据的意义"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">频域数据的意义</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b8039a891c63d87313d87"><li><b>信道估计</b>：频域数据用于在不同频率子载波上估计信道的状态，帮助系统了解每个子载波的信道特性。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80358988ea313e302d26"><li><b>频率选择性衰落补偿</b>：通过频域数据，系统可以识别频率选择性衰落的影响，并设计补偿策略，保证数据传输的稳定性和质量。</li></ul><hr class="notion-hr notion-block-119d48c9439b80d89fede54671578103"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b8076be43d849b8195efa" data-id="119d48c9439b8076be43d849b8195efa"><span><div id="119d48c9439b8076be43d849b8195efa" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b8076be43d849b8195efa" title="频域到时延域的转换"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>频域到时延域的转换</b></span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80349e97ef5d0c82c716" data-id="119d48c9439b80349e97ef5d0c82c716"><span><div id="119d48c9439b80349e97ef5d0c82c716" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80349e97ef5d0c82c716" title="时延域数据的基本概念"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">时延域数据的基本概念</span></span></h4><div class="notion-text notion-block-119d48c9439b80ca8196fde15da94034">为了更好地提取信号的<b>时延特性</b>，频域数据需要转换为<b>时延域数据</b>。时延域数据可以揭示信号通过不同路径到达接收端时所经历的时间延迟，帮助理解信道的<b>多径效应</b>。</div><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80c98a38c5e09864d9d9" data-id="119d48c9439b80c98a38c5e09864d9d9"><span><div id="119d48c9439b80c98a38c5e09864d9d9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80c98a38c5e09864d9d9" title=" 频域到时延域的转换公式"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"> 频域到时延域的转换公式</span></span></h4><div class="notion-text notion-block-119d48c9439b80388a50f2a6b61ef310">通过<b>逆离散傅里叶变换（IDFT）</b>，可以将频域数据转换为时延域数据：</div><ul class="notion-list notion-list-disc notion-block-119d48c9439b8024a029cd04cc4517ba"><li></li><ul class="notion-list notion-list-disc notion-block-119d48c9439b8024a029cd04cc4517ba"><li>是频域中的CSI数据。</li><li>DFT矩阵的共轭转置。</li><li>是时延域中的CSI数据。</li></ul></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80f2b304f4304e824327" data-id="119d48c9439b80f2b304f4304e824327"><span><div id="119d48c9439b80f2b304f4304e824327" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80f2b304f4304e824327" title="时延域数据的意义"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">时延域数据的意义</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b8081a33ad6bccb19fbed"><li><b>时延特性</b>：时延域数据中的每个元素表示信号通过不同路径到达接收端时的增益和时延。与频域数据相比，时延域数据更适合分析信道的多径效应。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80cf8571c7aebb700cfb"><li><b>路径分辨能力</b>：时延域数据能够帮助系统分辨出信号通过不同传播路径的具体时延信息，尤其是在复杂的传播环境中，如城市和室内环境，信号会经过多个反射面到达接收端。</li></ul><hr class="notion-hr notion-block-119d48c9439b80f7bd1aeb9b90838b45"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b8048a4e8d9dbf11a1059" data-id="119d48c9439b8048a4e8d9dbf11a1059"><span><div id="119d48c9439b8048a4e8d9dbf11a1059" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b8048a4e8d9dbf11a1059" title=" 数据格式的转换与归一化"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b> 数据格式的转换与归一化</b></span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b807aa28efb50e3adafe7" data-id="119d48c9439b807aa28efb50e3adafe7"><span><div id="119d48c9439b807aa28efb50e3adafe7" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b807aa28efb50e3adafe7" title="将复数形式的CSI数据转换为实数张量"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">将复数形式的CSI数据转换为实数张量</span></span></h4><div class="notion-text notion-block-119d48c9439b80d89bcad95e989d2899">由于神经网络通常处理的是实数数据，因此我们需要将复数形式的频域和时延域CSI数据转换为<b>实数张量</b>。</div><ul class="notion-list notion-list-disc notion-block-119d48c9439b8098b6acd58bbf736dd9"><li><b>频域表示</b>：
</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b8098b6acd58bbf736dd9"><li>实数张量的两个通道分别表示复数的实部和虚部。</li></ul></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b8043a289d52826c577fd"><li><b>时延域表示</b>：
</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b8043a289d52826c577fd"><li>将时延域中的复数数据转换为实数形式，便于后续的模型处理。</li></ul></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80f4ba7edb194488ceb1" data-id="119d48c9439b80f4ba7edb194488ceb1"><span><div id="119d48c9439b80f4ba7edb194488ceb1" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80f4ba7edb194488ceb1" title="数据归一化"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">数据归一化</span></span></h4><div class="notion-text notion-block-119d48c9439b80b5b8fecfd213e5acf4">为了保证模型在处理数据时的稳定性和效率，我们对CSI数据进行归一化处理，确保数据在标准正态分布下（即均值为0，标准差为1）。</div><div class="notion-text notion-block-119d48c9439b80d09203f6cc1a2f687a">归一化公式如下：
</div><ul class="notion-list notion-list-disc notion-block-119d48c9439b800bb649e9d027dd799a"><li><b> </b><b> 、</b><b> </b>：频域和时延域数据的均值。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80c78f5dd6884e02993c"><li><b>、</b>：频域和时延域数据的标准差。</li></ul><div class="notion-text notion-block-119d48c9439b803c9797c61ac2c87134">通过归一化操作，可以消除不同特征之间的数值差异，提高模型的训练效率。</div><hr class="notion-hr notion-block-119d48c9439b8052a6cbed77b7ef5b79"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80fdb3e4fbffe2d7fb67" data-id="119d48c9439b80fdb3e4fbffe2d7fb67"><span><div id="119d48c9439b80fdb3e4fbffe2d7fb67" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80fdb3e4fbffe2d7fb67" title="数据的物理意义和应用场景"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>数据的物理意义和应用场景</b></span></span></h4><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80d9a443d428d2853958" data-id="119d48c9439b80d9a443d428d2853958"><span><div id="119d48c9439b80d9a443d428d2853958" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80d9a443d428d2853958" title="频域数据的物理意义"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">频域数据的物理意义</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80fc94a9e4374d7f79ae"><li><b>信道在不同频率的响应</b>：频域数据反映了信道在不同频率子载波上的响应信息，有助于了解信道的频率选择性衰落特性，适合用于<b>信道估计</b>和<b>补偿设计</b>。</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b802190e4d8fbdf45e033" data-id="119d48c9439b802190e4d8fbdf45e033"><span><div id="119d48c9439b802190e4d8fbdf45e033" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b802190e4d8fbdf45e033" title=" 时延域数据的物理意义"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"> 时延域数据的物理意义</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80c98076c05aaeb70570"><li><b>信道的时延扩展和多径效应</b>：时延域数据揭示了信号在传播过程中所经历的时延信息，能够帮助分析多径传播环境下的信道特性，尤其是用于<b>多径传播分析</b>和<b>时延补偿</b>。</li></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b802e9d97db7f3c5e6920" data-id="119d48c9439b802e9d97db7f3c5e6920"><span><div id="119d48c9439b802e9d97db7f3c5e6920" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b802e9d97db7f3c5e6920" title="频域和时延域数据的应用场景"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">频域和时延域数据的应用场景</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b8046832ed17e44d12396"><li><b>频域表示</b>：适合于分析信道的频率响应，帮助系统在不同子载波上进行<b>频率选择性衰落的补偿</b>。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80cfaee4db552f83c3a5"><li><b>时延域表示</b>：用于分析信道的多径效应，尤其适合处理时延扩展较大的环境，如<b>城市建筑物反射、室内场景中的多径传播</b>等。</li></ul><hr class="notion-hr notion-block-119d48c9439b800a8343ebb7818741b7"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80fca084dab8789075a9" data-id="119d48c9439b80fca084dab8789075a9"><span><div id="119d48c9439b80fca084dab8789075a9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80fca084dab8789075a9" title="数据预处理的作用与意义"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title"><b>数据预处理的作用与意义</b></span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b8029af1ad332afa748ab"><li><b>频域到时延域的转换</b>：通过频域数据和时延域数据的相互转换，模型可以提取出信道的频率和时延特性，从而更好地理解信道的复杂变化。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b8041bebdc2d511b923ac"><li><b>实数张量表示与归一化</b>：通过将复数数据转换为实数张量并进行归一化处理，可以提高模型的训练效率和预测准确性，确保数据的数值尺度一致。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b800697cdc1b874219362"><li><b>频域和时延域的结合使用</b>：两者结合使用，能够帮助系统在不同维度上全面分析信道特性，提高信道预测任务的精度和可靠性。</li></ul><hr class="notion-hr notion-block-119d48c9439b80cfa0b1c9afbf81d1f0"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b808cbf3df375bd5f7a5c" data-id="119d48c9439b808cbf3df375bd5f7a5c"><span><div id="119d48c9439b808cbf3df375bd5f7a5c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b808cbf3df375bd5f7a5c" title="嵌入模块"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">嵌入模块</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80678489dd5fa889ab04"><li><b>CSI注意力机制</b>：在处理后的CSI数据上应用<b>卷积操作（CNN）</b>，提取局部时频特征。通过<b>Squeeze-and-Excitation（SE）模块</b>进一步调整通道权重。</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b80678489dd5fa889ab04"><li><b>卷积层</b>：用于提取输入特征中的局部时空特征。</li><li><b>SE模块</b>：</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b80e5987dc4d0d2d32b20"><li><b>压缩（Squeeze）</b>：通过全局池化，汇总通道的全局信息。</li><li><b>激发（Excitation）</b>：自适应调整通道权重，突出重要通道。
</li></ul></ul></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b8056aab4e5070674ee4a"><li><b>位置嵌入（Positional Embedding）</b>：为输入的CSI数据添加时序信息，帮助大语言模型理解CSI数据的时间顺序。</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b8056aab4e5070674ee4a"><li>位置嵌入公式：
</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b809689c1cc0e797f5456"><div class="notion-text notion-block-119d48c9439b800e9caff3d349c71e3a"></div></ul></ul></ul><hr class="notion-hr notion-block-119d48c9439b80599d82dd4788af3d9d"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80d49887c61241c3346d" data-id="119d48c9439b80d49887c61241c3346d"><span><div id="119d48c9439b80d49887c61241c3346d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80d49887c61241c3346d" title="SE模块概述"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">SE模块概述</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b805dafa7db9b54f36ca4"><li><b>全称</b>：Squeeze-and-Excitation模块</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b807a8699ce3e6af631a7"><li><b>目标</b>：通过自适应调整每个通道（路径）的权重，提升信道预测模型对关键特征的关注。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80d5b7e0c84d0e0b0981"><li><b>主要机制</b>：</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b80d5b7e0c84d0e0b0981"><li><b>Squeeze</b>：通过全局池化，获取每个通道的全局信息。</li><li><b>Excitation</b>：通过全连接层和激活函数，为每个通道分配自适应权重。</li></ul></ul><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80ecb725f426cc7ecc95" data-id="119d48c9439b80ecb725f426cc7ecc95"><span><div id="119d48c9439b80ecb725f426cc7ecc95" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80ecb725f426cc7ecc95" title="SE模块的基本结构"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">SE模块的基本结构</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80acb036d129bd080000"><li><b>输入</b>：信道状态信息的特征图 </li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b801e98f2d921e1bf60c7"><li><b>Squeeze阶段</b>：使用全局平均池化将每个通道的空间特征汇总为一个标量，表示该通道在整个输入中的重要性。</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b801e98f2d921e1bf60c7"><li><b>公式</b>：
</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b803988d6c45a3eeaf505"><li>：表示通道<!-- -->上的特征值，<!-- -->、<!-- -->分别是特征图的高度和宽度。</li></ul></ul></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80faac04c2887ea0091f"><li><b>Excitation阶段</b>：通过两层全连接网络进行自适应权重调整。</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b80faac04c2887ea0091f"><li><b>公式</b>：
</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b80b8a4f8f18999f425ed"><li>，<!-- --> 是全连接层参数</li><li>是降维比例（通常为16）</li><li>是ReLU激活函数</li><li>是Sigmoid激活函数。</li></ul></ul></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b809cb2dffe7f5395bd6a"><li><b>权重分配</b>：通过Excitation阶段得到的权重 <!-- -->，重新对每个通道进行加权：</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b809cb2dffe7f5395bd6a"><li><b>公式</b>：
</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b8012b666e9526a7743ce"><li>其中 <!-- -->是通道的权重</li><li>是该通道的特征图。</li></ul></ul></ul><hr class="notion-hr notion-block-119d48c9439b800dbe1ecdc7cb2ed8c6"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b8088b397d2b0647887f2" data-id="119d48c9439b8088b397d2b0647887f2"><span><div id="119d48c9439b8088b397d2b0647887f2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b8088b397d2b0647887f2" title="SE模块的作用"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">SE模块的作用</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80cca802fae6ec5cf713"><li><b>自适应通道权重</b>：通过SE模块，模型可以自适应地确定每个通道的权重，突出对预测任务重要的通道，抑制无关的通道。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80a79c3dd678485e7791"><li><b>输入信息增强</b>：SE模块动态调整特征图中的信息分布，增强网络对重要信息的关注，尤其是在信道预测中能更好地处理多径传播效应。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b8095a638f591037ea6ab"><li><b>注意力机制</b>：SE模块的设计类似于一种轻量级的注意力机制，根据输入信道的全局特征动态调整每个通道的响应。</li></ul><hr class="notion-hr notion-block-119d48c9439b8046a132e13e9a8469d5"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b801ca835d16682775f3d" data-id="119d48c9439b801ca835d16682775f3d"><span><div id="119d48c9439b801ca835d16682775f3d" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b801ca835d16682775f3d" title="Squeeze阶段"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Squeeze阶段</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-119d48c9439b80948eaefcca733c872e" style="list-style-type:decimal"><li><b>全局平均池化</b>：</li><ol class="notion-list notion-list-numbered notion-block-119d48c9439b80948eaefcca733c872e" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-119d48c9439b80139c73ff8009c8a808"><li>将每个通道的空间特征聚合为一个标量，表示该通道的全局信息。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80a386dfc2252b2c6fd4"><li><b>作用</b>：通过这种方式，SE模块能够获得信道的整体信息，从而为Excitation阶段提供基础。</li></ul></ol></ol><ol start="2" class="notion-list notion-list-numbered notion-block-119d48c9439b80ceb9ffc878cc63376c" style="list-style-type:decimal"><li><b>公式</b>：
</li><ol class="notion-list notion-list-numbered notion-block-119d48c9439b80ceb9ffc878cc63376c" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-119d48c9439b8058b34de8766ddc73c2"><li> 是通道<!-- --> 的全局描述符。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80648ae3fbe34a31ab81"><li>在信道预测中，这个描述符可以看作是各条传播路径的整体贡献。</li></ul></ol></ol><hr class="notion-hr notion-block-119d48c9439b807e8c26da46f145c909"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b803e972ff84b683673c4" data-id="119d48c9439b803e972ff84b683673c4"><span><div id="119d48c9439b803e972ff84b683673c4" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b803e972ff84b683673c4" title="Excitation阶段"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Excitation阶段</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-119d48c9439b80569a2fc63bd1be29c7" style="list-style-type:decimal"><li><b>权重调整</b>：</li><ol class="notion-list notion-list-numbered notion-block-119d48c9439b80569a2fc63bd1be29c7" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-119d48c9439b8077a6e3c7da4c17a7db"><li>通过两层全连接网络对通道的全局描述符进行处理，生成每个通道的权重。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b807bb9a0e938229d6414"><li><b>降维和升维</b>：通过一个瓶颈结构（降维-升维），减少计算复杂度。</li></ul></ol></ol><ol start="2" class="notion-list notion-list-numbered notion-block-119d48c9439b8024af2ff6626965c891" style="list-style-type:decimal"><li><b>公式</b>：
</li><ol class="notion-list notion-list-numbered notion-block-119d48c9439b8024af2ff6626965c891" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-119d48c9439b8056b1e6e94a68b34159"><li>第一层全连接层将通道数从 <!-- --> 降到<!-- -->，然后通过ReLU激活函数，再升维回到<!-- -->。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b8073b1bff17df3754211"><li>通过Sigmoid函数限制输出在0到1之间，表示每个通道的激活强度。</li></ul></ol></ol><ol start="3" class="notion-list notion-list-numbered notion-block-119d48c9439b809c82adeceb34fe6ad2" style="list-style-type:decimal"><li><b>自适应权重分配</b>：</li><ol class="notion-list notion-list-numbered notion-block-119d48c9439b809c82adeceb34fe6ad2" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-119d48c9439b8008a45de6e29ccd6a5c"><li>每个通道的权重<!-- -->反映了其对任务的贡献大小，从而动态调整各个通道的重要性。</li></ul></ol></ol><hr class="notion-hr notion-block-119d48c9439b80a595d2dc2ef4359e61"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80e09854de61995d0d2b" data-id="119d48c9439b80e09854de61995d0d2b"><span><div id="119d48c9439b80e09854de61995d0d2b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80e09854de61995d0d2b" title="SE模块在CSI预测中的优势"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">SE模块在CSI预测中的优势</span></span></h4><ol start="1" class="notion-list notion-list-numbered notion-block-119d48c9439b80b3b04df80604caaa8b" style="list-style-type:decimal"><li><b>突出重要的传播路径</b>：通过自适应的权重调整，SE模块能够帮助模型区分出不同路径（通道）对信道预测的重要性，增强有效路径的信息，抑制无效路径的噪声。</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-119d48c9439b806db58ccbcfd92541dc" style="list-style-type:decimal"><li><b>提升预测精度</b>：在多径传播环境下，SE模块能够提高模型对时空特征的提取能力，从而提升信道预测的精度。</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-119d48c9439b80d49373c0c32c70cba1" style="list-style-type:decimal"><li><b>轻量化设计</b>：虽然增加了少量的计算开销，但SE模块显著提升了模型的表现，尤其适合高维度的信道状态信息。</li></ol><hr class="notion-hr notion-block-119d48c9439b802f9cbddbc7adfd4d73"/><hr class="notion-hr notion-block-119d48c9439b80738816f026d42c47a2"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b8040aa9cf6c9416761d9" data-id="119d48c9439b8040aa9cf6c9416761d9"><span><div id="119d48c9439b8040aa9cf6c9416761d9" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b8040aa9cf6c9416761d9" title="主干网络——GPT-2"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">主干网络——GPT-2</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b80e9b819dd151b9425fc"><li><b>主干网络</b>：使用<b>GPT-2</b>模型作为信道预测的主干网络，处理时序特征。</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b80e9b819dd151b9425fc"><li><b>冻结部分参数</b>：大部分的GPT-2层被冻结，仅微调少数层（如层归一化和位置嵌入层），以适应信道预测任务。</li><li><b>时序建模</b>：GPT-2擅长处理高维时间序列数据，能够很好地捕捉CSI数据中的时变特性。</li></ul></ul><hr class="notion-hr notion-block-119d48c9439b80b88885ffe4820f0005"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80bb9342cd18ad39e57e" data-id="119d48c9439b80bb9342cd18ad39e57e"><span><div id="119d48c9439b80bb9342cd18ad39e57e" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80bb9342cd18ad39e57e" title="输出模块"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">输出模块</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b8036b60dd859a93f742a"><li><b>全连接层</b>：将GPT-2的输出转化为下一时刻的CSI预测。</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b8036b60dd859a93f742a"><li><b>输出层公式</b>：
</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b803693a7f23109011c43"><li>两层全连接层<!-- -->将LLM的输出转换为CSI预测值。</li></ul></ul></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b802d8ad0c7e32fa3f167"><li><b>反归一化</b>：将预测值恢复到原始尺度：
</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b802d8ad0c7e32fa3f167"><li>是恢复尺度后的预测CSI，<!-- --> 和<!-- -->是之前的归一化参数。</li></ul></ul><hr class="notion-hr notion-block-119d48c9439b805fb2dfe990d4b4f0cc"/><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-119d48c9439b80308bd3f941dea0dccb" data-id="119d48c9439b80308bd3f941dea0dccb"><span><div id="119d48c9439b80308bd3f941dea0dccb" class="notion-header-anchor"></div><a class="notion-hash-link" href="#119d48c9439b80308bd3f941dea0dccb" title="总结"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">总结</span></span></h4><ul class="notion-list notion-list-disc notion-block-119d48c9439b804e8717d6b6d19bbb24"><li>LLM4CP通过将大语言模型（如GPT-2）与CSI预测任务相结合，能够更好地处理高维的信道数据。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b80a3b1a5cb6261e0d228"><li>该模型通过<b>CSI注意力机制</b>和<b>位置嵌入</b>提取关键特征，并利用GPT-2捕捉数据中的时变性，最终实现高精度的信道预测。</li></ul><ul class="notion-list notion-list-disc notion-block-119d48c9439b802daf78d8e3d554b995"><li><b>优势</b>：</li><ul class="notion-list notion-list-disc notion-block-119d48c9439b802daf78d8e3d554b995"><li>提高了信道预测的准确性。</li><li>能够处理复杂的时空相关性问题。</li><li>模型具有良好的泛化能力。</li></ul></ul><hr class="notion-hr notion-block-119d48c9439b80aebf4dd65ef7080303"/><div class="notion-blank notion-block-119d48c9439b80c3aa44ccb9d3097352"> </div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[RMDA 技术简介]]></title>
            <link>https://blog.gaojj.cn/article/blog-104-RDMA</link>
            <guid>https://blog.gaojj.cn/article/blog-104-RDMA</guid>
            <pubDate>Thu, 26 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[知识整理]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-10dd48c9439b809da3e1e0c8d705c360"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><blockquote class="notion-quote notion-block-10dd48c9439b80ce9115e349570d5dd3"><div><span class="notion-gray"><b>《LDACS 技术发展现状与挑战》：</b></span><span class="notion-gray">
     当代飞机传感器种类繁多，如空客A350飞机大约有6000多个传感器，国产大飞机C919也有几千个传感器，传感器数据规模庞大，实现大</span><span class="notion-gray"><b>量传感器数据高速</b></span><span class="notion-gray">、实时下传成为飞机故障有效监测与预测的先决条件。然而，现有的ACARS和VDL M2数据链带宽受限，只能传输位置、速度等少量参数，无法支持PHM高效运行，发展高速率的宽带通信系统成为亟需。</span></div></blockquote><div class="notion-text notion-block-10dd48c9439b801c9de5cbf6959b14f4">引用的内容重点关注的是数据传输部分，也就是信道对整个通信系统速度造成的瓶颈。但是在实际的整个通信系统中，数据在计算机上的处理过程也会造成大量的时间损耗，尤其是遇到大规模数据时。RMDA 可以很好的优化这一过程。</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-10dd48c9439b801bba5ceff85978a5af" data-id="10dd48c9439b801bba5ceff85978a5af"><span><div id="10dd48c9439b801bba5ceff85978a5af" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10dd48c9439b801bba5ceff85978a5af" title="传统TCP/IP 存在的问题"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">传统TCP/IP 存在的问题</span></span></h2><div class="notion-text notion-block-10dd48c9439b80d09a94d2c1c33ed182">带宽和时延是衡量计算机网络性能的两个关键指标。在传统的TCP/IP网络通信中，数据传输过程会经历多次拷贝，这将导致<b>处理延迟</b>增加，产生额外的资源消耗，从而影响数据传输性能和系统运行效率。</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-10dd48c9439b807e9198c3143e3f6a2e"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:384px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F12d0b112-a208-4597-abcc-c30eeb84dc9e%2F475855bd-49c8-414b-a24d-145ad6af6a57%2Fimage.png?table=block&amp;id=10dd48c9-439b-807e-9198-c3143e3f6a2e&amp;t=10dd48c9-439b-807e-9198-c3143e3f6a2e&amp;width=384&amp;cache=v2" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-10dd48c9439b80c1a969c51ac6fe561e">具体来说，在两台计算机之间的数据交流过程如上图所示，需要经过以下几个过程：</div><ol start="1" class="notion-list notion-list-numbered notion-block-10dd48c9439b8020a639e946a024a1ac" style="list-style-type:decimal"><li><b>应用程序发送数据</b>：应用程序将要发送的数据放入其用户缓冲区（Buffer）中。</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-10dd48c9439b80f69c71d06e8da9fff2" style="list-style-type:decimal"><li><b>内核（Kernel）读取数据</b>：内核进程定期检查应用程序的用户缓冲区，当检测到数据存在时，将数据从用户缓冲区拷贝到内核的网络套接字缓冲区（Socket Buffer），这是第一次拷贝。</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-10dd48c9439b80caa726d1ac42070bd0" style="list-style-type:decimal"><li><b>协议栈处理数据</b>：数据被拷贝到内核后，TCP/IP协议栈开始处理数据。数据会在协议栈的不同层级间进行封装和传递。</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-10dd48c9439b8053b369f59dc7d0c52e" style="list-style-type:decimal"><li><b>网络设备处理数</b>据：TCP/IP协议栈处理完数据后，数据从协议栈缓冲区拷贝至网络设备的发送缓冲区，这是第二次拷贝。</li></ol><ol start="5" class="notion-list notion-list-numbered notion-block-10dd48c9439b80e4baa2e9f1b3d497a6" style="list-style-type:decimal"><li><b>网络设备发送数据</b>：数据被拷贝到网络设备的发送缓冲区后，网络设备将数据包发送到网络中。</li></ol><ol start="6" class="notion-list notion-list-numbered notion-block-10dd48c9439b80eea2e7db611e1ba9b6" style="list-style-type:decimal"><li><b>接收端接收数据</b>：接收端接收到数据后进行逆向操作，数据从网络设备的接收缓冲区拷贝至内核缓冲区，经由协议栈处理后再拷贝至用户缓冲区供应用程序使用。接收端在处理数据的过程中也发生了两次拷贝。</li></ol><div class="notion-callout notion-gray_background_co notion-block-10dd48c9439b80bdb304ff642a98cbcf"><div class="notion-page-icon-inline notion-page-icon-span"><span class="notion-page-icon" role="img" aria-label="💡">💡</span></div><div class="notion-callout-text"><div class="notion-text notion-block-10dd48c9439b8055a0fbec9223e8d6e7">我们可以整理出在端侧数据需要进行拷贝的过程：</div><div class="notion-text notion-block-10dd48c9439b8020a1bdccbf975d1ded"><em><b>发送端用户区 </b></em>→ <em><b>发送端内核区 </b></em>→ (<em><b>TCP/IP协议栈处理</b></em>→) <em><b>发送端网络设备 </b></em>→ <em><b>接收端网络设备 </b></em>→ (<em><b>TCP/IP协议栈处理 </b></em>→ <em><b>接收端网络设备 </b></em>→ <em><b>接收端内核区 </b></em>→ <em><b>接收端用户区</b></em></div><div class="notion-text notion-block-10dd48c9439b80e099b6e6cdd00b5873">传统的一次 TCP 发送，数据要经过至少四次拷贝</div></div></div><div class="notion-text notion-block-10dd48c9439b80c3b7ead7ce649e088b">数据传输过程中频繁的拷贝和上下文切换消耗大量系统资源，并且带来数十微秒的处理延迟，这限制了网络的传输性能。为了解决这个问题，人们提出了多种新技术和优化方案，以满足不断增长的性能需求。</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-10dd48c9439b8041980ada0452ae4425" data-id="10dd48c9439b8041980ada0452ae4425"><span><div id="10dd48c9439b8041980ada0452ae4425" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10dd48c9439b8041980ada0452ae4425" title="RDMA"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">RDMA</span></span></h2><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-10dd48c9439b803c913fe7ed2fe14bea" data-id="10dd48c9439b803c913fe7ed2fe14bea"><span><div id="10dd48c9439b803c913fe7ed2fe14bea" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10dd48c9439b803c913fe7ed2fe14bea" title="概念"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">概念</span></span></h3><div class="notion-text notion-block-10dd48c9439b80d59b9fcfcb3e8e495d"><b>远程直接内存访问</b>（英語：<b>remote direct memory access</b>，<b>RDMA</b>）是一种绕过远程主机操作系统内核访问其内存中数据的技术，由于不经过操作系统，不仅节省了大量CPU资源，同样也提高了系统吞吐量、降低了系统的网络通信延迟。</div><div class="notion-callout notion-gray_background_co notion-block-10dd48c9439b80db8f23f539b7362b22"><div class="notion-page-icon-inline notion-page-icon-span"><span class="notion-page-icon" role="img" aria-label="💡">💡</span></div><div class="notion-callout-text"><div class="notion-text notion-block-f5cdaa3945874806bfd3ce26382fd8ff">RDMA 技术相当于构建了一条从用户态直达网络设备的通道，绕开了操作系统，获得了效率的提升。</div></div></div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-10dd48c9439b802e9528c05691acdf03" data-id="10dd48c9439b802e9528c05691acdf03"><span><div id="10dd48c9439b802e9528c05691acdf03" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10dd48c9439b802e9528c05691acdf03" title="DMA"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">DMA</span></span></h3><div class="notion-text notion-block-10dd48c9439b806482f3e40ea47c0922">直接存储访问（DMA）方式，是一种完全由硬件执行 I/O 交换的工作方式。在这种方式中，DMA 控制器接管 CPU 对数据流的控制，数据交换不经过 CPU，直接在内存和 I/O 设备之间进行，同事使用中断的方式告诉 CPU 操作的结束。</div><div class="notion-text notion-block-10ed48c9439b805a8ef5c1f5a96ca619">使用 DMA 方式的目的是减少大批量数据传输时 CPU 的开销，采用专用的 DMA 控制器生成地址并访存的过程，优点是所有的操作都是由硬件实现的，传输的速度快，CPU 不需要干预，增加了 CPU 与外设的并行度。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-10ed48c9439b80958324c7524311f8ed" data-id="10ed48c9439b80958324c7524311f8ed"><span><div id="10ed48c9439b80958324c7524311f8ed" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b80958324c7524311f8ed" title="RDMA 工作原理"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">RDMA 工作原理</span></span></h3><div class="notion-text notion-block-10ed48c9439b802caad6ecd0ac532a3e">目前，普通网卡集成了支持硬件校验和的功能，并对软件进行了改进，从而减少了发送数据的拷贝量，但无法减少接收数据的拷贝量，而这部分拷贝量要占用CPU的大量计算周期。</div><div class="notion-text notion-block-10ed48c9439b808f87e8d00d30a45e45">普通网卡的工作过程如下：</div><ol start="1" class="notion-list notion-list-numbered notion-block-10ed48c9439b801182b8de4eec6b0cae" style="list-style-type:decimal"><li>先把收到的数据包缓存到系统上，数据包经过处理后，相应数据被分配到一个TCP连接；</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-10ed48c9439b805f9d40e12d8cfa5f9e" style="list-style-type:decimal"><li>然后，接收系统再把主动提供的TCP数据与相应的应用程序联系起来，并将数据从系统缓冲区拷贝到目标存储地址。</li></ol><div class="notion-text notion-block-10ed48c9439b8023ba33daa776b0bbe7">这样，制约网络速率的因素就出现了：应用通信强度不断增大和主机CPU在内核与应用存储器间处理数据的任务繁重，使系统要不断追加主机CPU资源，配置高效的软件并增强系统负荷管理。问题的关键是要<span class="notion-inline-underscore">消除主机CPU中不必要的数据传输，减少系统间的信息延迟</span>。</div><div class="notion-text notion-block-10ed48c9439b80f89996c3c5121bd68f">RDMA是通过网络把数据直接传入电脑的存储区，将数据从一个系统快速移动到远程系统存储器中，而不对操作系统造成任何影响，这样就不需要用到多少电脑的处理功能。它消除了外部存储器复制和文本交换操作，因而能腾出总线空间和CPU周期用于改进应用系统性能。目前通用的做法需由系统先对传入的信息进行分析与标记，然后再存储到正确的区域。整体结构如图所示:</div><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-10ed48c9439b805f8f4de8a532547128"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:384px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F12d0b112-a208-4597-abcc-c30eeb84dc9e%2F4909b40b-1b5a-4136-b078-393ae9b5406a%2Fimage.png?table=block&amp;id=10ed48c9-439b-805f-8f4d-e8a532547128&amp;t=10ed48c9-439b-805f-8f4d-e8a532547128&amp;width=384&amp;cache=v2" alt="notion image" loading="lazy" decoding="async"/></div></figure><div class="notion-text notion-block-10ed48c9439b80d0a039dad9465b5ae7"><em><b>RDMA的工作过程如下</b></em>：</div><ol start="1" class="notion-list notion-list-numbered notion-block-10ed48c9439b809a9e4ee3f2124ac7b4" style="list-style-type:decimal"><li>当一个应用执行RDMA读或写请求时，不执行任何数据复制。在不需要任何内核内存参与的情况下，RDMA请求从运行在用户空间中的应用发送到本地NIC（网卡）。</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-10ed48c9439b80febd01d1d8f0e3a875" style="list-style-type:decimal"><li>NIC读取缓冲的内容，并通过网络传送到远程NIC。</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-10ed48c9439b80ab96fec3856e43e50c" style="list-style-type:decimal"><li>在网络上传输的RDMA信息包含目标虚拟地址、内存钥匙和数据本身。请求完成既可以完全在用户空间中处理（通过轮询用户级完成队列），或者在应用一直睡眠到请求完成的情况下通过内核内存处理。RDMA操作使应用可以从一个远程应用的内存中读数据或向这个内存写数据。</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-10ed48c9439b80e0a0dbfd1b12e2d597" style="list-style-type:decimal"><li>目标NIC确认内存钥匙，直接将数据写入应用缓存中。用于操作的远程虚拟内存地址包含在RDMA信息中。</li></ol><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-10ed48c9439b8069a6c1de88108fb489" data-id="10ed48c9439b8069a6c1de88108fb489"><span><div id="10ed48c9439b8069a6c1de88108fb489" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b8069a6c1de88108fb489" title="RDMA零拷贝技术"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">RDMA零拷贝技术</span></span></h3><div class="notion-text notion-block-10ed48c9439b801f9d96fe30b63c9696">零拷贝网络技术使NIC可以直接与应用内存相互传输数据，从而消除了在应用内存与内核内存之间复制数据的需要。</div><div class="notion-text notion-block-10ed48c9439b809a889bdd54dfdb143c">内核内存旁路使应用无需执行内核内存调用即可向NIC发送命令。</div><div class="notion-text notion-block-10ed48c9439b807bb12ec52cc2117006">在不需要任何内核内存参与的情况下，RDMA请求从用户空间发送到本地NIC，并通过网络发送给远程NIC，这就减少了在处理网络传输流时内核内存空间与用户空间之间环境切换的次数。</div><div class="notion-text notion-block-10ed48c9439b800f8c8dd7286d086f78">RDMA中的零拷贝技术主要实现方法如图所示：</div><div class="notion-row notion-block-10ed48c9439b8092b842ea61dea6064f"><div class="notion-column notion-block-10ed48c9439b800f87d5e0dd624ec644" style="width:calc((100% - (1 * min(32px, 4vw))) * 0.5)"><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-10ed48c9439b801591b6ebb5f51ca6a9"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:100%;max-width:100%;flex-direction:column;height:100%"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F12d0b112-a208-4597-abcc-c30eeb84dc9e%2F90b29959-de41-43b7-a850-35ea6694cb80%2Fimage.png?table=block&amp;id=10ed48c9-439b-8015-91b6-ebb5f51ca6a9&amp;t=10ed48c9-439b-8015-91b6-ebb5f51ca6a9&amp;width=330.9872131347656&amp;cache=v2" alt="notion image" loading="lazy" decoding="async"/></div></figure></div><div class="notion-spacer"></div><div class="notion-column notion-block-10ed48c9439b8095b910e0c0f364d5cd" style="width:calc((100% - (1 * min(32px, 4vw))) * 0.5)"><div class="notion-text notion-block-10ed48c9439b804a8a34e4e4acd677c4">
</div></div><div class="notion-spacer"></div></div><div class="notion-text notion-block-10ed48c9439b801db326cde717674488">在上图中，右边是传统TCP/IP协议以及普通网卡进行的通信操作过程。很明显，当应用层想从网卡获取数据报文时需要经过两个缓冲区和正常的TCP/IP协议栈，其中由软中断负责从第一个接收队列缓冲区读取数据报文，再复制到MSGBuff中，最后由应用层通过系统调用将数据报文读到用户态。而左边则是利用</div><div class="notion-text notion-block-10ed48c9439b8083a870cca951b925da"><b>RDMA实现的零拷贝过程，规则如下</b>：</div><ol start="1" class="notion-list notion-list-numbered notion-block-10ed48c9439b80d890deef046d303290" style="list-style-type:decimal"><li>RDMA及其LLP（下层协议）可以在NIC上实现（称为RNIC）。</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-10ed48c9439b80f5a301f221cebebbd7" style="list-style-type:decimal"><li>在1)中所说的两种实现都是经过以下步骤：将收发的数据缓存到一个已经标记好的存储空间中，然后根据LLP和RDMA双方协商的规则直接将此存储空间映射到应用空间，这样就减少了传统实现方法中的至少两次内存拷贝，即实现零拷贝。其中细线表示数据流动方向，其实标记缓存就是通过RDMA直接映射成为用户缓存空间的。</li></ol><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-10ed48c9439b80deb696cc87c9d73032" data-id="10ed48c9439b80deb696cc87c9d73032"><span><div id="10ed48c9439b80deb696cc87c9d73032" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b80deb696cc87c9d73032" title="RMDA的构成"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">RMDA的构成</span></span></h3><figure class="notion-asset-wrapper notion-asset-wrapper-image notion-block-10ed48c9439b808c81c3da05f92392b6"><div style="position:relative;display:flex;justify-content:center;align-self:center;width:288px;max-width:100%;flex-direction:column"><img style="object-fit:cover" src="https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F12d0b112-a208-4597-abcc-c30eeb84dc9e%2F39b5d66f-8011-4015-8bb9-023a04daa293%2Fimage.png?table=block&amp;id=10ed48c9-439b-808c-81c3-da05f92392b6&amp;t=10ed48c9-439b-808c-81c3-da05f92392b6&amp;width=288&amp;cache=v2" alt="notion image" loading="lazy" decoding="async"/></div></figure><ul class="notion-list notion-list-disc notion-block-10ed48c9439b805b8c93c6e954ff5c05"><li>RDMA的实现由RDMA、DDP、MPA三种协议共同实现，构成了iWARP协议族，用来保证高速网络的互操作性。</li></ul><div class="notion-text notion-block-10ed48c9439b80b3a4bfcbef124b416c">RDMA层用于将RDMA读、写及Send操作消息转化为RDMA消息，并将RDMA消息传送至DDP（Direct Data Placement）层，DDP应将RDMA消息分段封装成DDP数据包转发到下层Marker-based，Protocol-data-unit-Aligned (MPA)层，MPA层将DDP数据包插入标识符，长度及CRC校验，构成MPA数据段。TCP层负责对TCP数据段进行调度，确保发包能够顺利到达目标位置。</div><div class="notion-text notion-block-10ed48c9439b806cb210e4db86481838">IP层则在数据包中增加必要的网络路由数据信息。</div><h3 class="notion-h notion-h2 notion-h-indent-1 notion-block-10ed48c9439b80f097a0f0d0ee264f0c" data-id="10ed48c9439b80f097a0f0d0ee264f0c"><span><div id="10ed48c9439b80f097a0f0d0ee264f0c" class="notion-header-anchor"></div><a class="notion-hash-link" href="#10ed48c9439b80f097a0f0d0ee264f0c" title="RDMA数据操作方法"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">RDMA数据操作方法</span></span></h3><div class="notion-text notion-block-10ed48c9439b800a9f8ef9229c9176b8">RDMA协议为远程直接数据缓存提供7种类型的控制操作，除了远程缓冲区读取操作之外，每一种RDMA控制操作都只产生一个对应的RDMA消息。</div><ol start="1" class="notion-list notion-list-numbered notion-block-10ed48c9439b80128881f24fef916368" style="list-style-type:decimal"><li><b>Send</b>: 发送操作使用Send消息将发送方应用的数据直接发送到数据接收方应用尚未明确声明的缓冲区中。故Send消息使用的是DDP的无标记的缓冲区数据传递模型，将上层应用消息传递到接收方应用的无标记队列式缓冲区中。</li></ol><ol start="2" class="notion-list notion-list-numbered notion-block-10ed48c9439b80f09330daddfb81156b" style="list-style-type:decimal"><li><b>Send with Invalidate</b>: 在Send基础上，加了一个导航标记Stag。当该消息缓存在Stag所指定对端应用缓冲区中，并将消息到达通知传达给接收方应用后，接收方应用就再不允许发送方应用介入该缓冲区，直到接收方应用重新声明该缓冲区可用后才可以供发送方应用继续使用。</li></ol><ol start="3" class="notion-list notion-list-numbered notion-block-10ed48c9439b802dade3de64ea857db8" style="list-style-type:decimal"><li><b>Send with Solicited Event (Send with SE)</b>: 该消息用来将发送方应用的数据直接发送到数据接收方应用的无标记队列式缓冲区中，具备Send所有的功能同时增加对消息的反馈。</li></ol><ol start="4" class="notion-list notion-list-numbered notion-block-10ed48c9439b808cb049c2c49dd70a5b" style="list-style-type:decimal"><li> <b>Send with Solicited Event and Invalidate (Send with SE and Invalidate)</b>: 该消息所对应的操作是将发送方应用的数据直接发送到数据接收方应用尚未明确声明的缓冲区中，具备Send with SE所有的功能同时增加对消息的反馈。</li></ol><ol start="5" class="notion-list notion-list-numbered notion-block-10ed48c9439b8023b71fee1ecc36ef07" style="list-style-type:decimal"><li><b>Remote Direct Memory Access Write</b>: </li><ol class="notion-list notion-list-numbered notion-block-10ed48c9439b8023b71fee1ecc36ef07" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-10ed48c9439b80d7bd65fff5abde0dc3"><li>对应于RDMA写操作，用来将发送方应用的数据传递到接收方应用已声明的缓冲区中</li></ul><ul class="notion-list notion-list-disc notion-block-10ed48c9439b80fe83adefc8ab687378"><li>在这个操作中，接收方应用事先应该已经分配出带标记的应用接收缓冲区，并允许发送方应用直接进行缓冲区写操作</li></ul><ul class="notion-list notion-list-disc notion-block-10ed48c9439b80caa6c9ec9fb0f8483d"><li>同时，发送方应用还在声明中得到了上述缓冲区的位置、大小和相应的Stag等信息</li></ul><ul class="notion-list notion-list-disc notion-block-10ed48c9439b80edaaf8c6237ef1189c"><li>之后发送方应用开始发起RDMA写操作，该操作使用DDP的带标记的缓冲区数据传递模型，将发送方应用的消息直接传递到接收方应用所声明的带标记缓冲区中</li></ul></ol></ol><ol start="6" class="notion-list notion-list-numbered notion-block-10ed48c9439b80bda73eeb8a81f1d954" style="list-style-type:decimal"><li><b>Remote Direct Memory Access Read</b>: 对应于RDMA读操作，将对端（对应于数据源）带标记应用缓冲区的数据传递到本地（对应于数据接收方）的带标记应用缓冲区。数据源的上层应用首先需要事先分配出带标记的应用缓冲区，并允许对该缓冲区内容直接进行读操作。同时，数据源上层应用还要将待声明的数据源缓冲区的位置、大小和相应的Stag等信息传递到本地上层应用。数据接收方上层应用在得到上述声明后，分配相应的带标记应用缓冲区，开始从对端读取数据操作。</li></ol><ol start="7" class="notion-list notion-list-numbered notion-block-10ed48c9439b80baaf54defbd7187d00" style="list-style-type:decimal"><li><b>Terminate</b>: 终止操作使用Terminate消息将本地发生的错误信息通知给对端应用，以终止当前数据直接缓存操作。终止操作使用DDP的元标记缓冲区模型将Terminate传递到对端的無标记缓冲区。
[编辑]</li></ol></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[数据库学习笔记]]></title>
            <link>https://blog.gaojj.cn/article/blog-103</link>
            <guid>https://blog.gaojj.cn/article/blog-103</guid>
            <pubDate>Tue, 24 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[数据库概念学习]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-9d8fad9368b7466785381e68b3f52bd7"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><div class="notion-callout notion-gray_background_co notion-block-10cd48c9439b8058ba16de9ebfa1a3f2"><div class="notion-page-icon-inline notion-page-icon-span"><span class="notion-page-icon" role="img" aria-label="💡">💡</span></div><div class="notion-callout-text"><div class="notion-text notion-block-10cd48c9439b8026b528f68417f33a33">此页面会持续保持更新</div></div></div><details class="notion-toggle notion-block-fd0f0019227d4389b5c34b261a603a6d"><summary><em><b>事务的定义</b></em></summary><div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b808ea6e8f530d2fbc711"><li>事务是多个数据库操作组合成的一个不可分割的、同时成功或失败的工作单元</li></ul></div></details><details class="notion-toggle notion-block-10bd48c9439b80ce9154f8cb99961da6"><summary><em><b>事务的特性（ACID）</b></em></summary><div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b804dbe05dbd739c30a07"><li>原子性（atomicity）：不可分割，事务单元全部成功或者全部失败</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80dab498eeb206d433a3"><li>一致性（consistency）：正确一致，一个正确（一致）的状态转移到另一个正确
的状态</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b807585cfe5359ae28bd0"><li>隔离性（isolation）：互不干扰，多个事务在并发执行的过程中所得到的结果，和
串行执行得到的结果是一致</li></ul><ul class="notion-list notion-list-disc notion-block-562f67364d69410abc6db10e863147e4"><li>持久性（durability）：永久保持，执行结果不会丢失</li></ul></div></details><details class="notion-toggle notion-block-10bd48c9439b809281a8e57f4ed23083"><summary><em><b>调度</b></em></summary><div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b802e8ed7edafa21e21f9"><li>为了更好地解释并发控制过程中，数据库对事务的处理流程，首先引入一个概念：调度</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b806991c7cb37a5127ca7"><li>调度为事务的并发过程中，决定事务中每个操作的执行顺序</li></ul></div></details><details class="notion-toggle notion-block-10bd48c9439b809ba184d628a4619cf3"><summary><em><b>串行调度(serial schedule)</b></em></summary><div><div class="notion-text notion-block-10bd48c9439b80938ffee8b1f25654eb">事务串行执行</div></div></details><details class="notion-toggle notion-block-fb7a4d07b817442ca9583e58d1433922"><summary><em><b>调度定义下的并发控制</b></em></summary><div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80a29861f30698ede731"><li>给定一个并发调度S ，存在一个串行调度S’， 在任何数据库状态下，按照调度S 和调度S’执行后所产生的结果都是相同的 。</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80b889b2f6cb07829180"><li>此时调度S 被称之为<b>可串行化调度</b>（serializable schedule）</li></ul><div class="notion-text notion-block-a317c77a62bb4b31adf204fa9fd54002"> 可串行化调度的数量十分巨大，且难以校验，数据库中一般通过找到<b>可串行化调度的子集</b>（充分条件）即找到能够提前确认是可串行调度的并发调度，进而提升调度效率。</div></div></details><details class="notion-toggle notion-block-10bd48c9439b809e8d10dcbe064e8842"><summary><em><b>视图可串行化（View Serializability）</b></em></summary><div><div class="notion-text notion-block-10bd48c9439b800a9ed8d4e05e6861a1">视图可串行化是指一个并发执行的事务调度，如果其结果与某个串行调度执行的结果相同，那么这个并发调度是视图可串行化的。视图可串行化的核心在于事务的读写操作对数据库状态的影响，它不依赖于事务的具体执行顺序，而是依赖于事务的读写集合。</div><ul class="notion-list notion-list-disc notion-block-3fd122933dae46a8a96b29b055843103"><li><b>定义</b>：如果存在一个串行调度，使得每个事务的读写集合与并发调度中的读写集合相同，则该并发调度是视图可串行化的。</li></ul><ul class="notion-list notion-list-disc notion-block-e73c1fcecf8d4a09a0f7d0ba04cb41b3"><li><b>特点</b>：</li><ul class="notion-list notion-list-disc notion-block-e73c1fcecf8d4a09a0f7d0ba04cb41b3"><li>不需要关心事务操作的先后顺序，只关心操作对数据的影响。</li><li>需要分析事务的读写操作，确定它们是否可以产生相同的结果。</li></ul></ul></div></details><details class="notion-toggle notion-block-10bd48c9439b80ac9117d0205b54a6fb"><summary><em><b>冲突可串行化（Conflict Serializability）</b></em></summary><div><div class="notion-text notion-block-10bd48c9439b803e927bceb74b17aa99">冲突可串行化是指在事务的执行过程中，通过分析事务之间的冲突操作（读写冲突和写写冲突），来判断一个并发调度是否可以转换为一个等价的串行调度。</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b8048ac70e2bec74d94ab"><li><b>定义</b>：如果可以通过交换非冲突操作将一个并发调度转换为串行调度，则该并发调度是冲突可串行化的。</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b805a9cf3fac78867c685"><li><b>特点</b>：</li><ul class="notion-list notion-list-disc notion-block-10bd48c9439b805a9cf3fac78867c685"><li>依赖于事务操作的先后顺序，特别是冲突操作的顺序。</li><li>通常使用优先图（Precedence Graph）或者串行化图（Serializability Graph）来检测冲突可串行化。</li></ul></ul></div></details><details class="notion-toggle notion-block-10bd48c9439b8000acc6f7f10e0eef61"><summary><em><b>视图可串行化与冲突可串行化的关系</b></em></summary><div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80edb279cd4447a2fba0"><li><b>包含关系</b>：所有冲突可串行化的调度都是视图可串行化的，但反之不成立。也就是说，冲突可串行化是视图可串行化的一个子集。</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b804b8bdcf3c03ae9e4da"><li><b>判定方法</b>：冲突可串行化通常更容易检测，因为它只关注事务间的冲突操作。而视图可串行化的判定则更为复杂，需要对事务的读写集合进行分析。</li></ul></div></details><details class="notion-toggle notion-block-842080ae969a4927aaf9ca6ec5240be9"><summary><em><b>事务的隔离级别</b></em></summary><div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b8026aa16ccb75ab26561"><li>读未提交（read uncommitted）</li></ul><ul class="notion-list notion-list-disc notion-block-0d69d263b1a644db8d59f1babaffd645"><li>读已提交（read committed）</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b8057839ff03739573c05"><li>可重复读（repeatable read）</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b8024ad18eaa96bb832d1"><li>可串行化（serializable）</li></ul></div></details><details class="notion-toggle notion-block-9b737e4e05634216a38483eefce6eb51"><summary><em><b>可重复读（Repeatable Read）</b></em></summary><div><div class="notion-text notion-block-c1a8cf44a5b14cc1a1781fc1718addfa">可重复读是指在一个事务内，多次读取同一数据集合的结果是一致的，即使有其他事务同时修改这些数据，也不会影响当前事务的读取结果。这是因为在可重复读隔离级别下，事务会对它读取的数据加锁，直到事务结束。</div></div></details><details class="notion-toggle notion-block-10bd48c9439b80798defe7b78b37f178"><summary><em><b>幻读（Phantom Read）</b></em></summary><div><div class="notion-text notion-block-356bd535117d42b38510a54c61f4d8d6">幻读是指在同一个事务中，当事务第一次读取某个范围的数据后，如果另一个事务在这个范围内插入了新的数据，那么当前事务在后续的查询中会读到这些新插入的数据，就像“幻影”一样突然出现。</div></div></details><details class="notion-toggle notion-block-2a794125f01c4b29ad1cfe9e70ec8f46"><summary><em><b>可重复读和幻读区别</b></em></summary><div><ol start="1" class="notion-list notion-list-numbered notion-block-989760a7498c401da5be079190f878d1" style="list-style-type:decimal"><li><b>数据变化类型</b>：</li><ol class="notion-list notion-list-numbered notion-block-989760a7498c401da5be079190f878d1" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-f3535dac50ef4b608a3308164ebf177d"><li><b>可重复读</b>：关注的是数据行的变化。在同一个事务中，即使其他事务更新了某些行，当前事务也能看到一致的数据。</li></ul><ul class="notion-list notion-list-disc notion-block-f3430a3b6bd04856855ecad59ba02f49"><li><b>幻读</b>：关注的是数据行的增加或减少。在同一个事务中，即使其他事务插入了新行或删除了现有行，当前事务在后续的查询中可能会看到这些变化。</li></ul></ol></ol><ol start="2" class="notion-list notion-list-numbered notion-block-a97c094e7ba14179bf2d7302db56172c" style="list-style-type:decimal"><li><b>隔离级别</b>：</li><ol class="notion-list notion-list-numbered notion-block-a97c094e7ba14179bf2d7302db56172c" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-b1ea61efe31c4e7eb812944626bebeb7"><li><b>可重复读</b>：通常在可重复读隔离级别下讨论，这个级别旨在防止更新丢失和脏读。</li></ul><ul class="notion-list notion-list-disc notion-block-7435b2ae7f3e4476aafd62d676255bd6"><li><b>幻读</b>：在可重复读隔离级别下仍然可能出现，但在串行化（Serializable）隔离级别下可以完全避免。</li></ul></ol></ol><ol start="3" class="notion-list notion-list-numbered notion-block-39661204806148e5be9ad002a7a90450" style="list-style-type:decimal"><li><b>锁的范围</b>：</li><ol class="notion-list notion-list-numbered notion-block-39661204806148e5be9ad002a7a90450" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-d2220a8035294fa485d84dd76df10154"><li><b>可重复读</b>：通常通过对读取的数据行加共享锁来实现，这些锁可以防止其他事务对这些行的修改。</li></ul><ul class="notion-list notion-list-disc notion-block-73a8fa294da54e29a002cc184283a3a6"><li><b>幻读</b>：即使在可重复读隔离级别下对读取的数据行加了共享锁，也无法防止其他事务插入新行，因为这些新行在加锁之前并不存在。</li></ul></ol></ol><ol start="4" class="notion-list notion-list-numbered notion-block-f1e49bdaf69f495bb511d56c74e41b2b" style="list-style-type:decimal"><li><b>解决方法</b>：</li><ol class="notion-list notion-list-numbered notion-block-f1e49bdaf69f495bb511d56c74e41b2b" style="list-style-type:lower-alpha"><ul class="notion-list notion-list-disc notion-block-4b8d0666ed2147cab8467d0537be364e"><li><b>可重复读</b>：通过行级锁或多版本并发控制（MVCC）等技术来实现。</li></ul><ul class="notion-list notion-list-disc notion-block-adeff905ac0e482e941910d5c0e4fdae"><li><b>幻读</b>：在串行化隔离级别下，通常需要范围锁（例如间隙锁）来防止幻读。</li></ul></ol></ol></div></details><details class="notion-toggle notion-block-10bd48c9439b800380bec882bd98f16c"><summary><em><b>事务原子性和持久性的实现</b></em></summary><div><div class="notion-text notion-block-03434687f03d4a3ba355b66b33a3ba13"><b>原子性</b></div><ul class="notion-list notion-list-disc notion-block-73a43ba7e2dd4cf2b7121657b3afdc9b"><li>事务运行期间不刷盘，故障系统重启后自动保证原子性；</li></ul><ul class="notion-list notion-list-disc notion-block-f59a1e09ca29408eb2c185f85092bdae"><li>事务运行期间刷盘，故障系统重启需回滚该事务</li></ul><div class="notion-text notion-block-10bd48c9439b803187d6c6e8367d0648"><b>持久性</b></div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b8041b87af14b7f11258a"><li>事务完成（commit、abort）时刷盘，故障系统重启后自动保证持久性；</li></ul><ul class="notion-list notion-list-disc notion-block-2ac8a31a53954327bfbab5e6d5579ba3"><li>事务完成时不刷盘，故障系统重启后需重做该事务</li></ul></div></details><details class="notion-toggle notion-block-10bd48c9439b808099f0f0bba3f5b379"><summary><em><b>数据库故障类别</b></em></summary><div><div class="notion-text notion-block-10bd48c9439b80a9a24fe613f8fb8d71"><b>事务故障</b>：数据库事务因为<em>资源冲突</em>或者<em>死锁</em>等原因导致执行失败</div><div class="notion-text notion-block-10bd48c9439b80ceae7ef3d857a9b9b0"><b>系统崩溃</b>：数据库自身或操作系统的故障导致数据库进程意外退出</div><div class="notion-text notion-block-10bd48c9439b8005ac1cc4cf612cad98"><b>磁盘故障</b>：数据因为磁盘（其他非易失性存储）损坏导致无法被读取</div><div class="notion-text notion-block-10bd48c9439b80868b45ef4c34e84a34"><b>自然灾害</b>：自然灾害对数据库系统所在的环境造成了彻底性破坏</div></div></details><details class="notion-toggle notion-block-10bd48c9439b80518e68deeb0b14d33a"><summary><em><b>数据库恢复机制架构</b></em></summary><div><div class="notion-text notion-block-10bd48c9439b8044b9a8dcf1d9055d2a">无故障事务回滚（例如账户小于0）</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80009254eb1d1207771f"><li>影响原子性，撤销该事务已做操作</li></ul><div class="notion-text notion-block-cc9a9c3a5fa34eb89a09d0dfcbe184c5">故障失误回滚（例如死锁杀死事务）</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b802d97ede0d80d55679e"><li>影响原子性，撤销该事务已做操作</li></ul><div class="notion-text notion-block-10bd48c9439b802b83ecffc1ab827334">系统故障（例如重启）：内存数据丢失，影响原子性和持久性</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b806c86ffdc86d9e0a16d"><li>原子性：撤销未结束（不带Commit、Abort标记）的事务</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80c5b6b1f77912901899"><li>持久性：重做已经结束（带Commit或Abort标记）的事务</li></ul><div class="notion-text notion-block-5adee14a5240435c841b02d478c05199">系统崩溃不能重启：不能提供服务，影响持久性</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80c5a81bc9bbf74b4948"><li>一主多备：主备之间通过日志保持一致性，发生故障后切换到其他系统</li></ul><div class="notion-text notion-block-2e53fc544c944837add1e5a95c378c48">磁盘故障：磁盘数据丢失，影响持久性</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b8014a52ac769b3aac317"><li>磁盘数据多副本；数据备份机制：创建数据备份、日志备份</li></ul><div class="notion-text notion-block-79f93a70ed25400e8b856b3a8270b3ac">自然灾害：系统宕机不能重启，影响持久性</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b8000b0f9d4a53b4b786e"><li>异地多机容灾：多机实时传输日志保证一致性，发生故障后切换到其他系统</li></ul></div></details><details class="notion-toggle notion-block-10bd48c9439b80aabea6fef197bc1ada"><summary><em><b>系统崩溃恢复</b></em></summary><div><div class="notion-text notion-block-10bd48c9439b80bdb26fcae741825cdd">系统崩溃诱因</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b804eb617deb58c442c86"><li>数据库进程被操作系统中止</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80818949ca6a43386b38"><li>管理员错误操作</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b8032bbead1311b440a6b"><li>软件故障、死锁</li></ul><div class="notion-text notion-block-10bd48c9439b80299c3ed5bab9ab755f">特点</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80beb3add303bcaaf932"><li>出现频率较高</li></ul><ul class="notion-list notion-list-disc notion-block-1b20b0ca169d4932a80151d657b6c230"><li> 缓冲区数据丢失、磁盘数据不完整</li></ul><div class="notion-text notion-block-10bd48c9439b80dbadd9fe6a3e04cc02">影响</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80e68ff2cecb11aed1f9"><li>原子性</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80168ec8f622b3a87826"><li>持久性</li></ul></div></details><details class="notion-toggle notion-block-10bd48c9439b80408003c54635943f79"><summary><em><b>系统崩溃下的事务</b></em></summary><div><div class="notion-text notion-block-0440ff26c1b647cda73320a4c845782d">已完成的事务</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b8064a0b2c0df760d76de"><li>已提交的事务（Commit标记）：它们对数据库的修改可能没有写回磁盘，缓冲区数据丢
失后这些修改无法找回。事务的持久性受到了影响，需要重做这些事务。</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b8014addac4aeb7c13c1b"><li>已中止的事务（Abort标记） ：系统对这些事务的撤销可能没有写回磁盘，因此在重启之后这些撤销内容会丢失。事务的持久性受到了影响，需要重做这些事务。</li></ul><div class="notion-text notion-block-825201caba19449ca9369c6cb2506689">未完成的事务（只有Start，没有Commit、Abort标记）</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80ba8656f4aa8d895055"><li>它们可能已经对数据库造成了修改，但是没有被系统提交，重启之后的数据库也没有撤销这些修改。事务的原子性受到了影响，需要回滚这些事务</li></ul></div></details><details class="notion-toggle notion-block-10bd48c9439b808d814bedbcb42c61e9"><summary><em><b>崩溃恢复策略设计</b></em></summary><div><div class="notion-text notion-block-10bd48c9439b8075a160c0cd937b45e4">原子性保证</div><ul class="notion-list notion-list-disc notion-block-16a9d22475384d7ea018580e14b983b3"><li>选择①：NO-STEAL（非窃取）未结束事务不能将脏页写入磁盘，不存在原子性问题</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80269de5d1a5c4cc7190"><li>选择②：STEAL（窃取）未结束事务能将脏页写入磁盘，影响原子性，需要回滚</li></ul><div class="notion-text notion-block-10bd48c9439b80eab193f1d109e59562">持久性保证</div><ul class="notion-list notion-list-disc notion-block-10bd48c9439b808d9178d52c92d485a5"><li>选择①：Force（强制）已完成事务强制将脏页写入磁盘，不存在持久性问题</li></ul><ul class="notion-list notion-list-disc notion-block-10bd48c9439b80bc8d72c492583db609"><li>选择②：No-Force（非强制）已完成事务不强制将脏页写入磁盘，影响持久性，需要重做</li></ul></div></details><details class="notion-toggle notion-block-520e63e0790246b29be2c75aae1c6b94"><summary>保证持久性和原子性的方案选择</summary><div></div></details><div class="notion-blank notion-block-10bd48c9439b8028bdd3db6506f12f1d"> </div></main></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MIT6.5840分布式系统 lab2：Key/Value Server]]></title>
            <link>https://blog.gaojj.cn/article/blog-95</link>
            <guid>https://blog.gaojj.cn/article/blog-95</guid>
            <pubDate>Wed, 07 Aug 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[学习整理]]></description>
            <content:encoded><![CDATA[<div id="notion-article" class="mx-auto overflow-hidden "><main class="notion light-mode notion-page notion-block-fd1049ba781d4489bf51ad68ef9e67d8"><div class="notion-viewport"></div><div class="notion-collection-page-properties"></div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-55669c9541a94bd7ae6c3c2319dd9b7b" data-id="55669c9541a94bd7ae6c3c2319dd9b7b"><span><div id="55669c9541a94bd7ae6c3c2319dd9b7b" class="notion-header-anchor"></div><a class="notion-hash-link" href="#55669c9541a94bd7ae6c3c2319dd9b7b" title="实验要求"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">实验要求</span></span></h2><div class="notion-text notion-block-f1e6c3ac8fcd47d186c1653e45a25d10">在这个实验中，你将为单台机器构建一个键/值服务器，该服务器确保每个操作在网络故障的情况下只执行一次，并且这些操作是线性一致的。后续的实验将会复制这样的服务器以应对服务器崩溃的情况。</div><div class="notion-text notion-block-4bf97731daa14377a5021fc54516ed17">客户端可以向键/值服务器发送三种不同的RPC：<code class="notion-inline-code">Put(key, value)</code>、<code class="notion-inline-code">Append(key, arg)</code>和<code class="notion-inline-code">Get(key)</code>。服务器维护一个内存中的键/值对映射。键和值都是字符串。<code class="notion-inline-code">Put(key, value)</code>在映射中安装或替换特定键的值，<code class="notion-inline-code">Append(key, arg)</code>将arg附加到键的值后并返回旧值，<code class="notion-inline-code">Get(key)</code>获取键的当前值。对于不存在的键，<code class="notion-inline-code">Get</code>应该返回一个空字符串。对于不存在的键，<code class="notion-inline-code">Append</code>应该像现有值是零长度字符串一样操作。每个客户端通过具有Put/Append/Get方法的<code class="notion-inline-code">Clerk</code>与服务器通信。<code class="notion-inline-code">Clerk</code>管理与服务器的RPC交互。</div><div class="notion-text notion-block-9fd3b42c9a954f828b3f57694909758c">你的服务器必须安排应用程序对<code class="notion-inline-code">Clerk</code>的<code class="notion-inline-code">Get/Put/Append</code>方法调用是线性一致的。如果客户端请求不是并发的，每个客户端的<code class="notion-inline-code">Get/Put/Append</code>调用应该观察到之前一系列调用所暗示的状态修改。对于并发调用，返回值和最终状态必须与操作按某种顺序一次执行的结果相同。如果调用在时间上重叠，则这些调用是并发的：例如，如果客户端X调用<code class="notion-inline-code">Clerk.Put()</code>，客户端Y调用<code class="notion-inline-code">Clerk.Append()</code>，然后客户端X的调用返回。一个调用必须观察到在调用开始之前完成的所有调用的效果。</div><div class="notion-text notion-block-f5c1c056de43443ab10d06111b186803">线性一致性对于应用程序是方便的，因为它的行为就像一个单一的服务器一次处理一个请求。例如，如果一个客户端从服务器获得了一个更新请求的成功响应，随后其他客户端发起的读取请求保证能够看到该更新的效果。对于单个服务器，提供线性一致性相对容易。</div><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-834dd77552964727b964527651a7f907" data-id="834dd77552964727b964527651a7f907"><span><div id="834dd77552964727b964527651a7f907" class="notion-header-anchor"></div><a class="notion-hash-link" href="#834dd77552964727b964527651a7f907" title="Pt.1：Key/value server with no network failures"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Pt.1：Key/value server with no network failures</span></span></h2><div class="notion-text notion-block-7168ec02f1d240279d3d0d6f45e91120">这部分很简单，我们只需要知道这个 <code class="notion-inline-code">Get</code>， <code class="notion-inline-code">Put</code> 和 <code class="notion-inline-code">Append</code> 的逻辑即可</div><ul class="notion-list notion-list-disc notion-block-23a2dee5d9c54114a2c5c64d1e17bb2b"><li><code class="notion-inline-code">server.go</code></li></ul><ul class="notion-list notion-list-disc notion-block-ff7d6ec4e8eb4e28ac2d62a0c72ed554"><li><code class="notion-inline-code">client.go</code></li></ul><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-8ada37efbd6a455bb014b2b3244cdc10" data-id="8ada37efbd6a455bb014b2b3244cdc10"><span><div id="8ada37efbd6a455bb014b2b3244cdc10" class="notion-header-anchor"></div><a class="notion-hash-link" href="#8ada37efbd6a455bb014b2b3244cdc10" title="Pt.2：Key/value server with dropped messages "><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">Pt.2：Key/value server with dropped messages </span></span></h2><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-61e8135fc88e41ebb664db47c36b6eb2" data-id="61e8135fc88e41ebb664db47c36b6eb2"><span><div id="61e8135fc88e41ebb664db47c36b6eb2" class="notion-header-anchor"></div><a class="notion-hash-link" href="#61e8135fc88e41ebb664db47c36b6eb2" title="任务要求"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">任务要求</span></span></h4><div class="notion-text notion-block-7e21ace729ef490eb072b747c17641f7">现在，您应该修改您的解决方案，以便在遇到丢失的消息（例如 RPC 请求和 RPC 回复）时继续工作。如果消息丢失，则客户端的 ck.server.Call() 将返回 false （更准确地说， Call() 等待响应直至超市，如果在此时间内没有响应就返回false）。您将面临的一个问题是 Clerk 可能需要多次发送 RPC，直到成功为止。但是，每次调用 Clerk.Put() 或 Clerk.Append() 应该只会导致一次执行，因此您必须确保重新发送不会导致服务器执行请求两次。</div><div class="notion-text notion-block-95362e4619174cb38745156280b70422">你的任务是在 Clerk 中添加重试逻辑，并且在 server.go 中来过滤重复请求。</div><blockquote class="notion-quote notion-block-1dc5a5c64ca14ed6b75f1658472425fa"><div><span class="notion-gray"><b>Hint：</b></span><span class="notion-gray">
- 您需要唯一地标识client操作，以确保KV Server仅执行每个操作一次。
- 您必须仔细考虑server必须维持什么状态来处理重复的 Get() 、 Put() 和 Append() 请求（如果有话）。
- 您的重复检测方案应该快速释放服务器内存，例如让每个 RPC 暗示client已看到其前一个 RPC 的回复。可以假设client一次只向Clerk发起一次调用。</span></div></blockquote><h4 class="notion-h notion-h3 notion-h-indent-1 notion-block-e7e366993e79436a894d4e7b7b41f532" data-id="e7e366993e79436a894d4e7b7b41f532"><span><div id="e7e366993e79436a894d4e7b7b41f532" class="notion-header-anchor"></div><a class="notion-hash-link" href="#e7e366993e79436a894d4e7b7b41f532" title="思考"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">思考</span></span></h4><ul class="notion-list notion-list-disc notion-block-b4d13aa4ad404cc68fadcabc77710e98"><li>我们要针对可能出现的 rpc 超时情况进行检查</li></ul><ul class="notion-list notion-list-disc notion-block-0c58677b82cc4ffe839ff8737fe3d1cf"><li>对于每个 client 进行标识，为了保证线性一致（Linearizability），我们需要在请求时标识，并将标识放在参数中传递，在 server 端进行检查，保证近执行 server 上一次执行的请求之后的请求</li></ul><div class="notion-text notion-block-9d6f5ba12bfa4d0e899534611017b16e">首先，我们修改每个结构体，</div><ul class="notion-list notion-list-disc notion-block-138a874ccf174c35a3a8f420fcb82ef3"><li><code class="notion-inline-code">common.go</code></li></ul><ul class="notion-list notion-list-disc notion-block-7fad0f3bcb534beb9bcc62992ae0497e"><li><code class="notion-inline-code">client.go</code></li></ul><ul class="notion-list notion-list-disc notion-block-07493d5e5ce04c3eb58ab3573915802f"><li><code class="notion-inline-code">server.go</code></li></ul><div class="notion-text notion-block-a560306a2b354d4fb1360e64365102d8">接着，为每个 rpc调用的部分添加超时检查，并补全参数的初始化</div><ul class="notion-list notion-list-disc notion-block-02be6efe13574321aaf8f650d2e247f6"><li><code class="notion-inline-code">client.go</code></li></ul><div class="notion-text notion-block-3e42a1b5d2544f67b30b9172312c7cef">下边在 server 中，需要实现线性一致：</div><ul class="notion-list notion-list-disc notion-block-e999c8548d134afda64386c60de09672"><li><code class="notion-inline-code">server.go</code></li></ul><h2 class="notion-h notion-h1 notion-h-indent-0 notion-block-9644636f23d2490fac3dc5608face6ee" data-id="9644636f23d2490fac3dc5608face6ee"><span><div id="9644636f23d2490fac3dc5608face6ee" class="notion-header-anchor"></div><a class="notion-hash-link" href="#9644636f23d2490fac3dc5608face6ee" title="总结"><svg viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a><span class="notion-h-title">总结</span></span></h2><ul class="notion-list notion-list-disc notion-block-e3a0187d34d24fe3ac6e12f878328168"><li>需要理解线性一致的概念</li></ul></main></div>]]></content:encoded>
        </item>
    </channel>
</rss>