Liuyi Wen's Blog
搜索

Liuyi Wen's Blog

Go-channel
发表于2025-07-11
Go-Channel Channel 是 Go 的核心数据结构和 Goroutine 之间的通信方式,支持 Go 的高性能并发编程模型。 设计原理 不通过共享内存的方式通信,而是通过通信的方式共享内存,采用的并发模式为:CSP(通信顺序进程)。Goroutine 和 Channel 分别对应 CSP 中的实体和传递信息的媒介,Goroutine 之间会通过 Channel 传递数据。 怎么理解“不通过共享内存的方式通信,而是通过通信的方式共享内存”这句话呢? 前半句指通过 sync 包里的一些组件进行并发编程;后半句指使用 channel 进行并发编程。实际上,channel 的底层就是通过 mutex 来控制并发的。只是 channel 是更高一层次的并发编程原语,封装了更多的功能。 上图中的两个 Goroutine,一个会向 Channel 中发送数据,另一个会从 Channel 中接收数据,它们两者能够独立运行并不存在直接关联,但是能通过 Channel 间接完成通信。 使用通信来共享内存是...
Go-上下文 Context
发表于2025-07-09
上下文context 上下文context是Go中较独特的设计,其他编程语言中较为少见,主要用于在Goroutine之间传递请求的截止时间、取消信号和其他跨API边界的值。 context.Context是Go在1.7版本中引入的标准库接口,定义了4个待实现的方法: Deadline:返回 context.Context 被取消的时间,也就是完成工作的截止日期(如果Context设置了截止时间,则返回ok=true,deadline返回该时间;如果没有设置截止时间,则返回ok=false,deadline为空) Done:返回一个Channel(在当前工作完成或者上下文被取消后关闭),作为对Context关联函数的取消信号。当Channel关闭时,关联函数终止工作并返回。 多次调用 Done...
Transformer 系列:2. Attention机制,MHA,MQA 和 GQA
发表于2025-06-29|Transformer
Scaled Dot-Product Attention 只使用一个注意力头计算权重。 假设有输入序列\(X=(x_1, x_2,..., x_n)\),对于每个词\(x_i\)(维度为\(d\)),计算其与所有其他词的相关性,并赋予不同的权重,最后对这些信息加权求和,得到新的表示。 输入矩阵:\(X\in\mathbb{R^{n\times d}}\). \[ Attention(Q, K, V)=softmax(\frac{QK^{T}}{\sqrt{d_k}})V \] 这里,\(Q\in\mathbb{R^{n\times d_k}}, K\in\mathbb{R^{m\times d_k}, V\in\mathbb{R^{m\times d_v}}}\)。实质上,一个Attention层是:将\([n, d_k]\)的序列\(Q\)编码成一个新的\(n\times d_v\)序列。 从向量角度看: \[ Attention(q_t, K, V)=\sum_{s=1}^m...
Transformer系列:1. 从RNN到Transformer
发表于2025-05-13|Transformer
场景: 图像信息:任务为理解图像内容,采用卷积神经网络; 序列信息:任务为理解语音/文字/视频,采用循环神经网络。 对于序列信息,由于按时序输入的数据之间非独立,前后数据之间具备相关性,因此网络需要存储信息的能力。 RNN 网络结构 RNN通过使用带自反馈的神经元,能够处理任意长度的序列 时序sequence:RNN能建模序列数据,序列指的是前、后输入数据\((x^{(t)}, x^{(t+1)})\)不独立,相互影响; 循环recurrent:对每个输入的操作都是一样的,循环往复地重复这些相同操作,每时刻有相同参数W和U(参数共享); 记忆memory: 隐藏层\(h_{(t)}\)中捕捉了所有时刻t之前的信息,理论上\(h_{(t)}\)记忆的内容可以无限长,然而实际上记忆还是有限的; 正向计算 反向传播BPTT 梯度消失 / 梯度爆炸 循环神经网络的递归结构,导致梯度消失/梯度爆炸现象更明显 梯度爆炸:可采用梯度截断解决 由于梯度消失,RNN无法处理长期依赖关系。 比如,考虑一个语言模型,试图根据之前单词预测下一个; 如果要预测“The clouds...
Transformer 的 KV Cache
发表于2025-05-06|Transformer
Problems 对于LLMs,每次矩阵乘法都由若干个浮点运算组成,因此其性能受限于GPU的FLOPS;随着输入的token长度增加,Transformer的自注意力机制与输入序列长度呈平方关系增长,产生最大的延迟开销。 为了解决推理延迟和吞吐量问题,当前的大模型服务系统通常采用KV Cache:通过缓存已计算的Key和Value矩阵,以避免在解码阶段重复计算键和值的投影(空间换时间)。然而在以下场景中KV Cache占用内存较大,影响推理性能: 处理长序列或多轮对话; 对于多个客户端请求,每个请求分别保留各自的KV Cache。 KV Cache的核心问题在于:占用大量内存和访存带宽;在生成阶段引入大量重复计算。本篇博客探讨KV Cache压缩技术。 Backgrounds 推理加速的衡量指标如下: 吞吐量:每生成一个token,服务商需要支付的算力成本。可以通过tokens per second(tps)衡量,即推理服务器单位时间内能处理针对所有用户和请求生成的输出token数。 延迟:包括两个指标: TTFT(Time To...
FSDP设计解读
发表于2025-04-21|Parallelism
Meta官方文档 FSDP(Fully Sharded Data Parallelism)将AI模型的参数分片至多个数据并行的workers上,可选择性地将训练中的计算移至CPU上。每个worker上microbatch的数据是不同的。 分片(Shard):官方文档:Scaling services with Shard Manager 通常数据并行训练要求在每个GPU上,保存模型副本(引入冗余);模型并行训练在workers(GPUs)之间增添了额外的通信负担,用于同步激活值。 激活值(activations): 神经网络中每一层的输入输出都是一个线性求和的过程,下一层的输出只是承接了上一层输入函数的线性变换,所以如果没有激活函数,那么无论构造的神经网络多么复杂,有多少层,最后的输出都是输入的线性组合,纯粹的线性组合并不能够解决更为复杂的问题。常见的激活函数都是非线性的,因此向神经元引入非线性元素,使得神经网络可以逼近其他的任何非线性函数,这样可以使得神经网络应用到更多非线性模型中。 常见激活函数:参见Activation Functions — All You Need...
基于图像处理的智能纤维截面分析系统:系统展示
发表于2025-04-14
系统演示 (function(){var player = new DPlayer({"container":document.getElementById("dplayer4"),"theme":"#FADFA3","loop":true,"video":{"url":"/posts/27b7154a/1.mp4","pic":"1.png"}});window.dplayers||(window.dplayers=[]);window.dplayers.push(player);})()
《算法导论》笔记
发表于2025-04-07
该篇为《算法导论》学习笔记,包含部分章节的理论阐释、典型问题、和代码实现。 算法 时间复杂度 1.渐近符号: θ--渐近紧确界; f(n)=θ(g(n)):g(n)是f(n)的渐进紧确界. 定义:存在c1,c2,n0,对任意n>=n0,有:0<=c1g(n)<=f(n)<=c2g(n). f(n)=θ(g(n)),当且仅当:f(n)=O(g(n))且f(n)=欧姆. O--渐近上界;[欧姆]--渐近下界 o--非紧确渐近上界;ω--非紧确渐近下界 f(n)=O(g(n))中,0<=f(n)<cg(n)对某个常量c>0成立; f(n)=o(g(n))中,0<=f(n)<cg(n)对所有常量c>0成立. 2.主定理求时间复杂度: T(n)=aT(n/b)+f(n). 比较n1和f(n):选择多项式意义上更大的。 1.f(n)=O(n(logb(a)-ε)),则:T(n)=θ(n(logb(a)). 2.f(n)=0(n(logb(a))),则:T(n)=θ(n(logb(a)lgn)....
纸翼传问平台:平台功能、CICD、降级服务、自动扩缩容展示
发表于2025-04-07
该平台为北航2024年秋暑期软件工程实践项目。 CICD部署 (function(){var player = new DPlayer({"container":document.getElementById("dplayer1"),"theme":"#FADFA3","loop":true,"video":{"url":"/posts/8b715a29/4-CICD.mp4","pic":"1.png"}});window.dplayers||(window.dplayers=[]);window.dplayers.push(player);})() 降级服务 (function(){var player = new...
纸翼学术成果分享平台:平台展示
发表于2025-04-07
该平台为北航2024年秋软件系统分析与设计课程团队项目,致谢我的9位伙伴们,和Bug-捉迷藏小组。 平台演示 (function(){var player = new DPlayer({"container":document.getElementById("dplayer0"),"theme":"#FADFA3","loop":true,"video":{"url":"/posts/39315f07/1.mp4","pic":"1.png"}});window.dplayers||(window.dplayers=[]);window.dplayers.push(player);})() 系统架构图 alt text
12345
avatar
Liuyi Wen
文章
47
标签
5
分类
9
Follow Me
公告
The Journey Is the Reward.
最新文章
verl 框架:3. 加载数据与创建 batch2025-11-24
RL 系列:4. 策略梯度算法2025-11-17
RL 系列:3. 时序差分算法2025-11-10
深入 Parquet:从 Dremel 论文到列式存储的工程权衡2025-09-30
Transformer 系列:3. Encoder 和 Decoder 的架构2025-09-29
分类
  • Database6
  • Distributed System1
  • High Concurrency2
  • Network1
  • OS3
  • Parallelism6
  • RL4
  • Transformer4
标签
Go Web Platforms Display C++ KV Cache OOP
归档
  • 十一月 2025 3
  • 九月 2025 11
  • 七月 2025 5
  • 六月 2025 1
  • 五月 2025 4
  • 四月 2025 7
  • 三月 2025 16
网站信息
文章数目 :
47
本站访客数 :
本站总浏览量 :
最后更新时间 :
©2019 - 2025 By Liuyi Wen
框架 Hexo 7.3.0|主题 Butterfly 5.3.5
搜索