- 博客(822)
- 资源 (10)
- 收藏
- 关注
原创 A Model-Driven Deep Learning Method for Normalized Min-Sum LDPC Decoding
来源Q. Wang, S. Wang, H. Fang, L. Chen, L. Chen and Y. Guo, “A Model-Driven Deep Learning Method for Normalized Min-Sum LDPC Decoding,” 2020 IEEE International Conference on Communications Workshops (ICC Workshops), Dublin, Ireland, 2020, pp. 1-6, doi: 10.1
2020-09-07 14:09:38
1127
原创 每日强化学习
20200901强化学习阅读:https://blog.csdn.net/qq_30615903/article/details/80739243
2020-09-01 15:23:39
182
原创 Relation extraction文章
Others2018No.FigureTitleAuthorsPub.Links5CASREL:A Novel Cascade Binary Tagging Framework for Relational Triple ExtractionKun Ho Kim, Oisin Mac Aodha, Pietro PeronaCVPR 2018 (Spotlight)paper4[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xk
2020-06-12 07:58:29
912
原创 凸优化之内点法
Convex Optimization Stephen Boyd Department of Electrical Engineering Stanford University 第11章本文为笔者结合原书及博客https://blog.csdn.net/dymodi/article/details/46441783 记录自己相关解释原始问题原始问题对应的拉格朗日公式为:利用障碍函...
2020-04-05 11:37:35
1867
原创 GloVe: Global Vectors for Word Representation必记
关于算法原理参考:下面是Relation with skip gramskip gram:接下来在整个corPus 中训练:但在vast corpus 难以求所有的Qi,jQ_{i,j}Qi,j,采用近似但对于两分布中的交叉熵损失是有弊端的:即低概率高权值并且上式中的Qi,jQ_{i,j}Qi,j还是难以normalized,因此不归一化带来的问题是Qhat,Pha...
2020-03-04 11:41:32
319
原创 semi -supervised classification with graph convolutional networks学习必记
1 主要解决的问题半监督学习:用于少量节点标签未知,例如文本、citation network、知识图谱分类2 主要思想采用图卷积中的一阶局部近似(即K=1),这部分的理解可以参考Chebyshev多项式作为GCN卷积核当K=1 时有两个参数,模型scales linearly in the number of graph edges ,同时可以表征局部图结构和节点的特征:3. 半...
2020-02-19 14:27:03
456
原创 Convolutional Sequence to Sequence Learning学习心得
为什么使用CNN学习序列表示和RNN相比,CNN产生的背景向量固定并且通过stacking 可以使 contex size 更大,如下图。和RNN相比,CNN产生的背景向量固定并且通过stacking 可以使 contex size 更大,如上图。Hierarchy representation如图1,只需要三次CNN operation ,而需要 7 次 r...
2020-02-18 16:25:43
719
原创 Sequence to Sequence Learning with Neural Networks学习笔记
论文的主要创新点提出了序列到序列的学习方法提出的背景DNN的限制:输入和输出向量维度固定,实际上很多序列问题中的序列长度不是已知先验单个RNN 的限制:输入和输出等长,且要一一对齐且对齐已知,无法应用到输入输出不等长且对应关系为非montonic解决方案两个RNN理论可行一个负责将输入充列map 为固定大小的vector(背景向量,含有整个输入句子的信息),另一个RNN将背景向列...
2020-02-17 16:44:20
395
原创 Attention Is All You Need(Transformer )
今天是2020年2月1日,笔者学习了Attention Is All You Need(Transformer )论文,可以在sequence to sequence 模型中用multi head self -attention 代替RNN,可以并行计算输出,其中multi head 的作用可以集成不同的上下文attention,由于knowledge leve有限,代码层面有待学习...
2020-02-01 16:54:11
220
原创 自然语言处理(机器翻译IBM模型 系列)
机器翻译方法概述直接转换法基于规则的翻译方法基于中间语言的翻译方法基于语料库的翻译方法- 基于事例的翻译方法- 统计翻译方法- 神经网络机器翻译基于规则的翻译过程分成6个步骤:(a) 对源语言句子进行词法分析(b) 对源语言句子进行句法/语义分析© 源语言句子结构到译文结构的转换(d) 译文句法结构生成(e) 源语言词汇到译文词汇的转换(f ) 译文词法选择与生成...
2019-12-25 16:29:35
3980
原创 SGLang KV Cache 分页分配、准入控制与 Decode 回收机制详解(完整历史对话)
我沿着 `prepare_for_extend → alloc_for_extend → alloc_paged_token_slots_extend → alloc_extend kernel` 把这个例子的张量值代进去,指出“3 页”在哪一步算出、“48 slots”在哪一步从 `free_pages` 扣除,以及为什么 `out_cache_loc` 只有 3 个元素。> 准入控制解决的是“是否值得让请求开始运行”,使用的是带 `new_token_ratio` 的未来预测;
2026-08-18 15:19:33
240
原创 【python】对象地址
变量类型内存占用(实例属性本身)引用的对象数据销毁时机boolint(小整数)8 字节指针全局单例(不占额外堆内存)指针随实例回收,单例永存str8 字节指针Python 堆中的不可变对象引用计数归零时销毁(如果无其它引用)自定义对象 (Pool)8 字节指针堆中的复杂数据结构 + 显存引用计数归零时触发__del__8 字节指针堆中元数据 +GPU/CPU 大块内存必须引用计数归零,否则显存泄漏释放时机True和False是解释器的“永久居民”,进程活着它们就在,永远不释放。
2026-08-13 12:05:15
365
原创 【大模型推理】25945
性能:通过将 H2D 拷贝延迟到 Forward 流,有望更好地隐藏数据传输延迟,实现调度与计算的重叠,可能提升整体吞吐量。代码:统一了input_ids的解析入口,减少了分支逻辑,使代码更清晰。风险:这是一个对核心调度逻辑的重大修改,涉及面广。虽然已经合并,但可能会引入一些微妙的并发或时序问题,需要密切关注后续的 Bug 修复。总而言之,这是一个通过延迟操作和引入统一数据中转机制来优化 GPU 调度流水线的复杂但重要的性能优化 PR。为了让你更直观地理解这个 PR 带来的变化,我们以一个。
2026-08-13 10:24:57
320
原创 【大模型推理】sglang源码alloc_req_slots
这是 SGLang 中反复出现的“CPU 决策 + GPU 执行”CPU负责调度决策(分配、驱逐、路由)→ 产出小规模的索引/元数据GPU负责批量计算(KV 写入、模型前向)→ 消费这些索引三个对象分别服务于不同阶段的需求,中间的 CPU Tensor 是连接两个世界的桥梁,确保这座桥不会阻塞 CPU 流水线。gpu_tensor是GPU 对象。# ↑ GPU Tensor ↑ 目标设备是 GPU会在 GPU 显存中分配新内存并拷贝数据,返回的是一个device 为 CUDA 的全新 Tensor。
2026-08-11 17:54:12
331
原创 【大模型推理】sglang profile算术强度
作者写下这句话,是为了在打开 Profiler 工具之前建立一个心理预期基准线“既然理论上带宽是绝对瓶颈,那么一会儿我看 Profiler 追踪图时,如果看到 GPU 计算单元有大量空闲(Idle),或者速度卡在 187 tokens/s 左右,那是正常的物理规律;但如果速度连 187 都达不到,那就说明 SGLang 的代码实现或系统调度出了问题,Profiler 就能帮我抓到这个真凶。
2026-08-11 10:33:07
346
原创 【大模型推理】sglang PD 分离 : 6473 服务发现
Bootstrap server”(引导服务器)的核心功能是作为一个初始连接点或发现入口,让客户端能够首次连接到某个分布式系统或集群。提供初始连接信息:在复杂的分布式系统中,客户端不可能预先知道所有服务节点的地址。Bootstrap server 就充当了这个“指路人”的角色,客户端首先连接它,获取其他真正提供服务的节点信息。获取集群元数据:客户端通过Bootstrap server可以获取整个集群的元数据,比如有哪些节点在线、它们各自的地址和职责等。实现动态服务发现。
2026-07-29 18:24:00
214
原创 【大模型推理】sglang PD分离 单节点通信方式
方式本机路径举例带宽延迟CPU参与NVLink~900 GB/s~1μs不参与~25 GB/s~2-5μs不参与GPU0→CPU→内核→CPU→GPU4~10-50μs全程参与。
2026-07-23 14:40:38
561
原创 【大模型推理】vllm/pull/46216/ kv connector evict 性能瓶颈学习
命令元素在压测中扮演的角色制造约 20 万个块的大规模缓存(旧 evict 扫描地狱)关闭 GPU 侧缓存,让所有复用流量 100% 打到 CPU 卸载路径NVMe 二级缓存让淘汰更频繁发生(CPU→fs 下沉 + 回读 promote)100 并发 × 200 前缀持续制造 store 洪峰,每批 store 都可能触发 evict正是在这套"故意最坏化"的配置下,旧evict全表扫描把吞吐打到 0.1 req/s,PR 的双表优化把它拉回 1.1 req/s——
2026-07-20 17:54:15
416
原创 【大模型推理 】 vllm kvconnet 学习
单纯的配置、策略、上下文数据重度使用@dataclass(如涉及底层硬件、C++ / CUDA 接口、需要做数据类型转换(List -> NumPy)和强断言校验的物理描述类必须手写__init__。在这里,继承ABC抽象基类)并不是为了定义无法实现的抽象方法,而是为了在架构设计上起到一个**“安全锁”和“语义分类”**的作用。
2026-07-16 12:09:14
298
原创 【大模型推理】redis kv cache
系统时钟回拨:如果你的服务器时钟突然回拨,可能会导致续期间隔计算错误。建议在续期时不依赖本地时间戳,只依赖Redis的EXPIRE命令(它是相对时间,不受时钟影响)。Full GC 停顿:如果 JVM 发生长达 20 秒的 Full GC,你的看门狗线程会停止执行。但因为 TTL 设为 30 秒,这 20 秒的停顿不会导致 Key 过期。只要 GC 结束后,看门狗能恢复并续期即可。
2026-07-15 20:21:50
331
原创 【;Agent】SWEET-RL:在协同推理任务上训练多轮大语言模型智能体
https://arxiv.org/pdf/2503.15478以下是为您提供的全文逐字翻译。翻译力求忠实原文、学术规范且通顺易懂。作者:周一飞 1,2,†^{1,2,\dagger}1,2,†,姜松 1^{1}1,田渊栋 1^{1}1,Jason Weston 1^{1}1,Sergey Levine 2^{2}2,Sainbayar Sukhbaatar 1,∗^{1,*}1,∗,李仙 1,∗^{1,*}1,∗1^{1}1 Meta 基础人工智能研究院 (FAIR),2^{2}2 加州大学伯克利分校
2026-07-10 15:08:23
371
原创 【vllm】常请求优化
我们以与中等请求场景相同的方式运行测试。在此场景中,我们预期所有请求的 TTFT 都会降低,因为小请求将不再被那少数几个超大请求阻塞预填充。在运行大规模多租户 SaaS 部署 vLLM 时,我们遇到了一个问题:大量小提示词(prompt)的请求通常能顺利处理,但当少量但提示词长度较大的请求提交后,请求会迅速堆积在一个巨大的队列中。我们的客户在运行大规模多租户的 vLLM SaaS 部署时遇到了一个问题:大量小提示词的请求通常能顺利处理,但当少量大提示词请求提交后,这些请求会迅速在队列中堆积。
2026-06-04 20:10:05
257
原创 【大模型推理】KVDrive: A Holistic Multi-Tier KV Cache Management System for Long-Context LLM Inference
如图 6 所示,KVDrive 旨在支持高吞吐量的长上下文 LLM 推理,即使在 GPU 内存紧张的情况下也是如此。当 KV 缓存超过 GPU 容量时,它会被卸载到主机 DRAM 或 SSD,并且系统在预填充阶段在 GPU 内存中构建一个索引。在解码期间,每个新 token 都遵循一个三阶段的工作流程:通过索引识别关键 KV 条目(❶);将选定的条目从 DRAM 或 SSD 获取到 GPU HBM(❷);以及对新获取和常驻的 KV 条目的并集执行注意力和前馈计算(❸)。
2026-05-28 16:26:22
532
原创 【无标题】
对于一个Warp(理想获取128B)来说,这是非常低的效率,意味着只有1/4的线程是活跃的,或者访问模式非常分散。它通过实际的CUDA代码和Nsight Compute的性能分析结果,完美地印证了我们之前讨论的关于内存合并、扇区利用率和对齐的理论。这个参数的值就会增加4。这对于单个Warp的单次请求来说几乎是不可能的,因为L1的接口和事务大小都有限制。如果你的内核从全局内存加载了128字节的数据,并且这次加载是完美对齐的,那么它会请求4个扇区(我们来逐个分析这三个内核的性能数据,看看这些数字是怎么来的。
2026-05-20 15:35:23
403
原创 【H100】cuda H100 GPU硬件架构
当CPU或GPU需要从主内存(VRAM)中读取一个数据时(比如一个4字节的浮点数),硬件并不会只把那4个字节拿过来。如果下一次要访问的数据恰好在这个已经加载的“集装-箱”里,那就直接从高速缓存里拿,速度飞快,这就是一次。这意味着,无论你只是想从全局内存读取1个字节还是4个字节,硬件的L1缓存(如果发生缓存未命中)都会从L2或VRAM中抓取整整128字节的数据块来填充自己。这张图可以说是对H100 GPU进行高性能编程的“地图”和“说明书”,为开发者提供了理解性能瓶颈、进行针对性优化的宝贵信息。
2026-05-20 11:56:21
827
原创 GPU内存架构-DSMEM与L2
它不是像L2那样自动工作的,而是为顶尖的性能优化专家提供了一种强大的新工具,让他们能够构建出前所未有的、高效的多SM协作内核。DSMEM是Hopper架构引入的特性,它允许一个**GPC(图形处理集群)**内的所有SM互相访问彼此的共享内存(SMEM)。这实质上是将一个集群的SMEM“池化”成一个更大的、可共享的内存空间。写入的数据会先更新缓存(L1/L2),然后由硬件的写回策略(write-back policy)决定何时将这些“脏”数据最终写回到VRAM中。(这是一个简化的示意图,用来说明关键概念)
2026-05-19 17:41:27
424
原创 【cuda】 L1cache 与Shared Memory
因为 launch 配置为线程 tid=0 → smem[0]线程 tid=1 → smem[1]...线程 tid=255 → smem[255]启动方式: reduce_smem<<<gridSize, 256>>>(input, output, N);^^^blockDim.x = 256,所以 smem 开 256(i < N)?
2026-05-19 17:08:17
405
原创 【大模型学习cuda】cuda 内存结构。
好的,这张图是一张非常经典且信息量巨大的GPU内存层次结构金字塔。它详细展示了NVIDIA H100 SXM5 GPU内部不同层级内存的特性,解释了为什么理解这个层次结构对于编写高性能代码至关重要。让我们从上到下,逐层详细解读这张图。这个金字塔形象地表达了计算机体系结构中的一个基本权衡:高性能编程的目标就是尽可能将需要频繁访问的数据保留在金字塔的顶层,最大限度地减少对底层慢速内存的访问。解读:这是GPU的数据大本营。所有需要处理的数据(如模型权重、训练数据、图像等)都首先加载到这里。由于其巨大的延迟,编程时
2026-05-19 16:25:32
508
原创 【无标题】
朴素实现:直接翻译公式,性能差。循环重排:改变循环顺序以改善缓存局部性。分块/平铺:将矩阵分解成小块以更好地利用缓存。向量化 (SIMD):使用CPU的向量指令在每个核心内实现并行。并行化:使用多线程在多个核心之间分配工作。那么,在现实世界中你应该自己写这些吗?几乎从不。相反,你会使用像OpenBLAS, 或cuBLAS(用于NVIDIA GPU) 这样高度优化的库。这些库是由深谙特定CPU/GPU架构里里外外的专家编写的。
2026-05-19 14:54:45
468
原创 【vlllm】concurrnet_batches学习
test_schedule_concurrent_batches 详解一、测试的核心目的验证 vLLM scheduler 的关键能力:在 forward 输出尚未返回前,scheduler 能继续为后续请求调度下一批工作。这是 async scheduling / Pipeline Parallelism 的基础——多个 batch 同时在 GPU 上排队执行。二、测试配置(False, None), # 不启用前缀缓存,无 prompt logprobs。
2026-05-09 17:55:51
417
原创 [vllm] 抢占原理
当前请求抢占自己 → 退出内层循环break# 退出内层循环后# 为什么不继续尝试下一个请求?break # ← 用户疑问点自抢占后,running 队列变短,大部分情况下后会超出边界,外层循环自动结束。
2026-05-08 18:44:22
401
原创 [vllm]evalscope 压测原理
插件化异步生产者-消费者带背压流式统计持久化的 benchmark 执行框架。yield:把一个值交给调用者,并暂停自己await:把控制权交给事件循环,等异步事件完成后再恢复async for:调用方不断恢复这个异步生成器,直到它结束内部 generator不是独立并发协程任务,它只是内部驱动的一个异步生成器。这段代码本质上是:用构造一个带连接池、超时、trace 的异步 HTTP 客户端外壳,再把具体协议处理委托给从而形成 benchmark 场景下的通用网络访问层。
2026-04-24 16:33:33
564
原创 【vllm】MCP工作原理
简单来说,就像一个专门为AI应用设计的“USB-C”接口标准,而则是遵循这个标准的“转接头”。它让AI能够安全、统一地与你的本地文件、数据库或各种外部工具进行交互。
2026-04-15 19:26:49
452
原创 【vllm 】WorkerProc WorkerWrapperBase GPU worker之间的关系
"""返回当前 Worker 的空闲显存(MB),如果低于阈值则打印警告"""# 假设 worker 有一个 .device 属性和 .get_memory_info() 方法free = worker.get_memory_info()[0] / (1024**2) # 转换为 MB。
2026-04-13 17:56:25
433
原创 【vllm] partial 语法
这段代码的作用是:给定对象obj和一种“方法表示”(字符串 / 序列化 bytes / callable),把它转换成真正可调用的函数,并用argskwargs执行。其中 bytes 和 callable 两种情况都默认把obj作为第一个参数传进去。为什么字符串分支不用partial,而 callable/bytes 分支要用这个函数在 worker / RPC / Ray 远程调用里通常怎么用。
2026-04-13 16:23:45
401
原创 【vllm】async_output_queue
创建是为了实现异步调度,将 GPU 计算与 CPU 输出处理解耦,通过独立线程处理输出复制,实现计算与通信的重叠执行。
2026-04-13 15:53:29
461
原创 【vllm】vllm/docs/configuration/optimization.md
当输入处理(在 API 服务器内运行)相比模型执行(在引擎核心内运行)成为瓶颈,并且您有额外的 CPU 容量时,这非常有用。尽管如此,由于多模态编码器的权重在每个 TP rank 上被复制,内存消耗会略有增加,如果模型刚好能放入内存,可能导致 OOM。默认情况下,TP 用于对多模态编码器的权重进行分片,就像对语言解码器一样,以减少每个 GPU 上的内存和计算负载。专家并行是一种专门用于混合专家(MoE)模型的并行形式,不同的专家网络被分布到不同的 GPU 上。它使用与张量并行相同的并行度。
2026-04-09 16:58:27
552
小功率调幅发射机仿真报告
2018-03-18
MATLAB频谱图
2018-03-18
小功率调幅发射机
2018-03-18
电子线路课程设计
2018-03-18
电容振荡器
2018-03-18
模拟通信中信号角度的调制与解调
2018-04-20
labview实例
2018-03-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅