- 博客(207)
- 收藏
- 关注
原创 昇腾 NPU 上手:ResNet-50 从 ONNX 到 OM 的完整踩坑记录
本文记录了在昇腾910B2C + CANN 8.5.1环境下,将ONNX格式的ResNet-50模型成功转换为OM格式并推理的完整流程。重点解决了ATC转换中因opset过低(7)导致算子不支持、Python依赖缺失等问题,通过清洗模型输入、提升opset至11并安装ATC所需依赖,最终实现成功转换。通过与ONNX Runtime结果对比,精度差异极小(cosine相似度0.999998,top5一致),验证了转换有效性。附带可运行的ACL推理脚本,为昇腾NPU模型部署提供实用参考。
2026-09-11 23:47:36
313
原创 RDMA中CQ为什么用轮询?——从CQ、Doorbell到GID的深度解析
<think>我们根据用户要求,基于给定内容生成≤150字的文章摘要。需要概括主要内容:CQ轮询原因、Doorbell写寄存器、0号GID问题、GID到IP的流程。摘要需简洁,突出核心点。注意不超过150字。</think>RDMA中CQ用轮询以降低延迟、避免中断风暴;Doorbell实际写入网卡PCIe BAR寄存器,而非用户态内存。0号GID由MAC生成(fe80::),仅限同二层通信,跨子网需用IP派生GID(如NCCL需设索引3)。发包时从GID提取IP,经路由、ARP构造RoCEv2报文,0号GI
2026-09-05 19:10:03
263
原创 深入理解 RDMA 内存管理:海思 HNS RoCE 架构中的 HEM 表与 MTR 表有什么区别?
<think>我们根据要求生成一段不超过150字的摘要。摘要需要概括文章内容要点:HEM表和MTR表的区别(元数据检索 vs 地址翻译),层级关系,以及数据流。要精炼。</think>HEM 表与 MTR 表是 HNS RoCE 驱动中两级寻址核心:HEM 按硬件 ID 索引 MR 上下文等元数据,MTR 记录数据缓冲的物理页地址。网卡先查 HEM 定位 MPT 并校验权限,再经 MTR 完成 VA 到 PA 翻译,最终 DMA。MTR 类似传统 MTT,动态创建;HEM 全局初始化。
2026-09-05 12:48:52
302
原创 SGLang 并行参数配置指南:DP-Attention、EP、MoE-TP 那些容易踩坑的地方
本文介绍了SGLang部署DeepSeek、Kimi、Qwen等模型时的并行参数配置要点: --tp表示总GPU数,Attention和MoE会在此基础上进一步切分; DP-Attention可解决MLA模型KV缓存重复问题,需满足tp%dp==0; EP和MoE-TP共用GPU资源,EP表示expert数量切分,MoE-TP表示单个expert权重切分; DeepEP等后端会强制ep=tp,混合EP-TP需使用none后端; 提供了8卡场景下的常见配置组合及推荐命令。注意参数间的约束关系,避免错误配置。
2026-08-24 23:32:54
308
原创 DFlash 与 DSpark:从原理到 SGLang 实现
本文梳理了两种高效的块级投机解码(speculative decoding)方法:DFlash 和 DSpark,并分析了它们在SGLang中的实现方式。DFlash通过将目标模型的隐状态注入草稿模型的KV缓存,实现并行块级猜测,再通过目标模型验证。DSpark在DFlash基础上增加了半自回归精炼和基于置信度的动态验证长度调度,进一步优化解码效率。两种方法都显著提升了GPU利用率,相比传统自回归解码大幅提高了吞吐量。SGLang框架已集成这两种算法,可通过简单参数切换使用。
2026-08-21 23:34:15
425
原创 torch.compile 全流程
PyTorch 2.0的torch.compile全流程解析: Dynamo捕获 - 通过字节码拦截将Python代码转换为FX计算图并生成保护条件 AOT Autograd处理 - 将前向/反向图分离,处理自动微分需求 Inductor编译 - 对每张子图进行图优化、IR转换和代码生成(支持Triton/C++) 运行时集成 - 封装为autograd.Function并注入Dynamo缓存系统 执行阶段 - 命中保护条件时直接调用编译版本,否则重新编译 关键特性: 首次执行触发编译(惰性编译) 自动处理
2026-07-31 16:59:09
23
原创 FlashAttention-3(Hopper)代码阅读笔记
e = 1 / sqrt(d) FP8: q/k descale 后还要乘 softmax_scale → 合并为 softmax_scale_log2 = log2(softmax_scale * descale) - **q/k descale**:FP8 输入要 `static_cast(q) * descale` 才可做 GEMM。 - **log2**:`exp2(softmax_scale_log2 + log2(x))` 比 `exp2(log2(x)) * softmax_scale` 精,
2026-07-25 22:13:23
261
原创 cute & cutlass学习
CuTe与CUTLASS核心概念摘要 CuTe和CUTLASS是NVIDIA推出的高性能计算库,用于优化张量计算。CuTe通过Shape/Layout/Tensor描述数据结构和线程划分(如make_tensor创建视图),提供切块分区功能(如local_tile切分数据块)。CUTLASS则关注计算流水线(PipelineTmaAsync)、同步机制(Barrier)和核函数启动。 关键操作包括: 计算:使用WGMMA/GMMA指令(ss_op_selector选择指令类型) 数据传输:TMA(SM90_
2026-07-25 19:45:06
23
原创 fa3代码梳理
从模板参数推出「两块 GEMM 的 tile / 用 SS 还是 RS / V 要不要转置 / 几个 warpgroup」,并用 CuTe 的。(含 swizzle),避免 bank conflict、匹配 LDSM/GMMA。知道多少线程、怎么 partition A/B/C、descriptor 怎么建。开始,就是同一套词汇往「存」和「搬」上套。:A 在 smem 还是寄存器;B 在 FA 里一般在 smem。把「一条指令」铺成「整块 tile 的 MMA」,得到。生成真正的 MMA 类型。
2026-07-25 17:30:28
19
原创 lplb update_redundancy_mapping梳理
solver = 每个小组上一个「min max-load」小 LP,用 5 步仿射尺度内点法求出各边留在原卡的比例。令 (A\cdot\mathbf{1}\approx b),人工变量系数补齐,起步可取。\underbrace{\sum p\cdot W}_{\text{本卡热点}}标准形:(\min, c^\top x) s.t. (Ax=b,\ x>0)。,全在 shared memory,单 block 极快(~百 µs)。用 EPLB 自己的多副本;(原/副本对半分),避免坏解。
2026-07-25 16:21:16
14
原创 LPLB(Linear-Programming-Based Load Balancer)详解与模拟
文章摘要: LPLB 是动态负载均衡机制,在 EPLB 静态拓扑基础上,每个 batch 通过线性规划调整 token 流向副本的比例,缓解瞬时负载不均。核心机制包括: 冗余拓扑(如 8 卡 Cube):每卡固定若干冗余槽,按 r2o 规则拷贝邻居专家; LP 分流:以最小化组内最大负载为目标,计算各专家 token 的「原卡/副本卡」分流比例; 动态映射:按比例将 logical expert 索引重定向到 physical 副本。手算示例显示,热点专家 60% 请求留原卡、40% 分流至副本后,峰值负载
2026-07-25 15:18:55
223
原创 EPLB(Expert Parallelism Load Balancer)分层放置总结
本文介绍了EPLB(专家放置与负载均衡)算法的实现,针对MoE+Expert Parallel系统中的两个核心问题:专家负载不均和集群层次拓扑。EPLB采用分层三步策略:1)将专家组均衡分配到节点;2)节点内对热点专家进行冗余复制;3)将物理专家均衡分配到GPU。算法通过静态/周期性调整专家映射,配合LPLB实现动态负载均衡。核心子程序包括balanced_packing和replicate_experts,分别用于均衡分组和智能复制。实现位于eplb.py和SGLang内嵌版本,支持常规和弹性集群场景。
2026-07-25 15:11:27
323
原创 Eagle Speculative Decoding:Tree Mask 与 `build_tree_efficient` 总结
本文梳理了SGLang中Eagle投机解码建树kernel的核心逻辑,重点分析了树形掩码(Tree Mask)的数据结构与并行实现。主要内容包括: 树形掩码的作用:控制draft token间的可见性,确保每个token只能看到prefix和自己的祖先路径 并行处理设计: 按请求划分block(bid) 每个draft token分配一个thread(tid) 关键数据结构: 扁平化存储的FULL_MASK布局 三种掩码模式(FULL/QLEN_ONLY/BITPACKING) 描述树结构的数组(selec
2026-07-25 14:47:27
438
原创 cute一些入门操作
本文介绍了CuTe中Tensor的Shape、Stride、Layout概念及其在Flash Attention实现中的应用。主要内容包括: Tensor基础:通过make_shape/make_stride显式表示数组形状和内存访问模式,如Q矩阵的形状[seqlen_q, h, d]和对应stride。 切片操作: 使用_和索引进行维度选择 local_tile将大Tensor划分为固定大小的块(如128x128) 数据拷贝: partition_S/partition_D划分源/目标Tensor到各线程
2026-07-19 20:24:48
60
原创 SGLang Model Gateway 特性详解(Cache-Aware 之外)
本文介绍了 Rust 实现的高性能模型服务网关(SMG)的核心架构与关键技术。系统采用分层设计,包括负载均衡策略(7种算法)、gRPC路由管道化处理、4层可靠性机制(断路器/令牌桶/重试/健康检查)、PD分离路由、多模型网关等模块。特别优化了令牌桶的无锁实现、字符串Interning指标存储、全Rust Tokenizer等关键路径,支持Prometheus监控和OpenTelemetry链路追踪。系统可灵活配置多模型独立策略,通过一致性哈希等算法实现高效路由,并集成认证安全机制,为大规模AI服务提供高性能
2026-07-19 14:05:35
547
原创 smg cache-aware核心radix tree
本文介绍了一个多租户近似Radix Tree的设计与实现。该数据结构主要面向高并发场景,具有以下核心特点: 多租户设计:支持多个Worker共享同一棵树结构,每个Worker作为独立租户,通过TenantId标识。 近似Radix Tree优化: 直接存储文本字符而非token ID,避免tokenization开销 公共前缀合并到同一节点节省内存 自定义字符哈希器(CharHasher)加速查找 并发控制: 分层分片设计:根节点32分片,普通节点8分片 节点级细粒度锁(NodeRef包含Arc<RwLoc
2026-07-19 10:14:26
128
原创 SGLang Model Gateway (SMG) 源码深度解读
SMG 路由系统解析 SMG(SGLang Model Gateway)是一个高效模型服务网关系统,采用Rust语言实现核心路由层。系统分为控制平面(负责Worker生命周期管理和服务发现)与数据平面(处理请求路由和负载均衡)两大模块。 核心架构特点: 基于Rust的零成本抽象和无GC特性,实现高性能IO操作 采用无锁并发数据结构(DashMap)确保高吞吐量 提供多种负载均衡策略(缓存感知、一致性哈希、Power of Two等) 完备的可靠性机制(断路器、指数退避重试、令牌桶限流) 请求处理流程经过认证
2026-07-19 09:57:38
229
原创 Mooncake Transfer Engine 深度解读:从经典 TE 到下一代 TENT
Mooncake是KVCache.AI开源的高性能大模型推理传输引擎,专注于KV Cache在跨节点/设备间的高效传输。其核心架构采用Pimpl模式,通过MultiTransport支持多协议,RDMA是最核心的传输后端。引擎采用三级抽象:Batch(批量请求)→Task(单个请求)→Slice(最小传输单元),通过BatchID指针转换实现零开销映射,并采用事件驱动机制避免轮询。RDMA实现包含Context(每个HCA资源)、EndPoint(连接管理)和WorkerPool(工作线程)等组件,支持拓扑
2026-07-18 18:54:35
141
原创 Mooncake 学习路线
本文介绍了Mooncake学习路线,采用倒金字塔方法,先实践再深入。首先通过安装和运行示例快速建立对Mooncake作为SGLang传输层的认知;然后分阶段阅读源码:重点关注Transfer Engine核心流程和RDMA传输实现,掌握关键设计决策;最后建议整理架构图、对比表和面试问题,展示技术深度。学习顺序遵循从顶层API到底层实现的路径,优先阅读RDMA相关核心代码,暂不涉及非核心模块。这种实践优先、由浅入深的学习方法能帮助快速掌握Mooncake的核心技术。
2026-07-18 15:01:41
37
原创 大模型分布式推理:DP-Attention + EP 与 TP + EP 的选择逻辑
本文探讨了大语言模型分布式推理中Attention切分方式与专家并行(EP)的组合策略选择。作者首先分析了四种主流Attention架构(MHA、GQA、MQA、MLA)在KV Cache大小上的差异,指出这是决定并行策略的关键变量。然后详细比较了DP-Attention+EP和TP+EP两种策略的原理、适用条件和通信成本,构建了选择决策树。最终给出推荐方案:KV Cache极小的MLA和MQA适合DP-Attention+EP;KV Cache较大的MHA需要TP+EP;GQA则根据KV head数量灵活
2026-07-18 08:36:48
107
原创 Mega-MoE 代码导读(下篇):Pull、对称内存与 WGMMA Pipel
本文介绍了MoE(Mixture of Experts)分布式计算中的索引表与Pull机制的关键实现细节。主要内容包括: 索引表与Pull的三维坐标对应关系,解释了写入和读取时如何通过local_expert、source_rank和slot三个维度定位数据。 Pull Token的详细实现流程,包括资源绑定、工作分配、按expert分段处理、round-robin选择源rank算法,以及三次数据搬运过程。 Dispatch与Math模块通过L1 pool和barrier实现的对齐机制,确保数据生产和消费的
2026-07-12 10:58:40
226
原创 Mega-MoE 内核代码导读:从 Dispatch 到 WGMMA 的融合流水线
本文深入解析了Mega-MoE内核设计,这是一种将MoE推理流程融合为单一kernel的创新技术。关键点包括: 将传统多kernel+All-to-All流程压缩为五段流水线:Dispatch→TMA load→WGMMA→Epilogue→Combine 资源分配策略:每SM一个block,warp按功能分为Dispatch/TMA/WGMMA等组 核心机制: 通过NVLink对称内存+TMA+WGMMA实现跨rank通信与计算重叠 Dispatch阶段采用原子操作统计send_count并分配slot
2026-07-12 10:03:15
400
原创 cute layout shape和stride公式总结
本文总结了CuTe中两层嵌套layout的通用公式,分为shape合并、stride合并和offset计算三步。首先约定内外层shape和stride符号,给出逻辑坐标表示。shape合并采用"内外层都有extent则嵌套,外层为1则不嵌套"的规则。stride合并时,内层直接使用,外层需根据单位类型(块索引或元素地址)进行转换。offset计算公式统一为内层与外层贡献之和,并区分了块索引和元素地址两种情况的处理方式。最后通过两个实例进行对照,给出判断流程和关键要点:shape嵌套组合,stride内层照搬
2026-07-10 21:30:06
120
原创 Qwen3.5-397B-A17B-FP8 完整 Benchmark 总结
【Qwen3.5-397B-A17B-FP8模型性能优化总结】部署采用4节点32张H100 GPU,通过FP8量化和2P:2D并行策略。核心优化包括:将上下文长度从256K降至65K,短文本并发提升414%;启用4096分块预填充使32K长文本TTFT降低49%;关闭mmap加速权重加载。测试显示,优化后短文本(256 token)并发从7升至36,QPS提升241%;32K长文本TTFT从678ms降至348ms。与122B模型对比,397B在吞吐量保持稳定的同时(TPOT 6.2ms),短文本QPS达1
2026-07-05 13:00:24
68
原创 Qwen3.5-122B-A10B-FP8 部署与 Benchmark
本文总结了Qwen3.5-122B-A10B-FP8大模型的部署配置与性能测试结果。在4台8×H100服务器上,采用FP8量化的122B参数MoE模型,通过TP=4并行策略实现稳定运行。基准测试显示,单请求TPOT稳定在4.6-4.8ms,256并发时吞吐达5783 token/s。针对不同场景提出了PD比例调优方法论:长prompt需增加prefill实例,短prompt则需加强decode能力。实验表明模型支持256K上下文,但建议按需调整以优化显存使用。最后提供了动态调整实例和参数优化的具体方法。
2026-07-05 00:27:02
78
原创 Qwen3.5-9B PD 分离 Benchmark 汇总
本文汇总了Qwen3.5-9B PD分离模型在不同场景下的性能测试结果。单条请求测试显示,解码极限约150 tok/s,TPOT稳定在6.4ms,TTFT基本不受prompt长度影响。1000并发压测中,系统吞吐达3400 tok/s,单对吞吐提升至427 tok/s。极限并发测试表明,短/中长度prompt可支持127-179并发,长prompt因prefill阶段成为瓶颈降至72并发。整体表现稳定,成功率100%,单对吞吐从150 tok/s(单条)提升至427 tok/s(并发)。
2026-07-04 14:33:39
55
原创 DeepEP 代码阅读指南
DeepEP代码阅读指南摘要(149字): 本文提供DeepEP系统的分层阅读路径,建议从纯Python参考实现(refs.py)入手理解核心语义,逐步深入Python API层(elastic.py)和C++实现(buffer.hpp)。重点关注通信原语(handle.cuh)和核心CUDA Kernel(dispatch/combine.cuh),最后研究JIT编译系统。阅读顺序遵循从业务逻辑到底层实现的递进原则,依次为:Python语义→API接口→C++桥梁→通信基础设施→核心Kernel→JIT运
2026-06-28 21:21:17
47
原创 SGLang vs vLLM:优先级调度、限流、淘汰策略对比
本文对比了SGLang与vLLM在优先级调度、限流和淘汰策略三个维度的差异。在优先级调度方面,SGLang支持可配置的抢占阈值和优先级反转,而vLLM采用更简洁的min-heap实现。限流机制上,SGLang提供更丰富的控制选项如排队上限和请求超时,vLLM则主要依赖核心参数。淘汰策略方面,SGLang支持7种算法且具备级联淘汰能力,vLLM仅实现LRU。整体来看,SGLang调度系统更为复杂灵活,适合精细调优场景;vLLM则简洁高效,便于快速部署。两者均支持PD分离架构,但vLLM在单实例内采用统一调度策
2026-06-28 21:17:30
51
原创 KV Cache 低秩压缩系统 — Benchmark 报告
摘要 本文提出了一种针对大模型长序列推理的KV Cache低秩压缩系统,旨在解决32K+ token序列推理时的显存瓶颈问题。系统通过三区域管理策略(Sink区、压缩区、Near Window区)和共享基投影压缩算法,实现了95%的显存节省,同时仅带来7.9%的吞吐下降。实验基于Qwen3.5-0.8B模型,在5个32K token请求的测试中,系统将原始1.85GB的KV Cache压缩至0.12GB,压缩比达19.8倍,并保持21.4%的token重叠率。通过批量操作和Triton多head融合kern
2026-06-28 17:55:01
184
原创 mla, csa, hca实现
本文介绍了DeepSeek-V2中提出的Multi-head Latent Attention (MLA)机制及其实现。MLA相比标准多头注意力(MHA)有三项关键创新:1) 低秩KV联合压缩,将输入压缩为共享潜在向量c_KV,动态投影为每个头的K和V;2) 解耦RoPE,将注意力分为无RoPE的内容路径和单独的小型RoPE位置路径;3) 权重吸收,在推理时可将K上投影吸收到Q投影中,直接针对c_KV计算注意力分数。文中提供了标准MHA和MLA的Python实现代码,包括RoPE预计算和应用、注意力计算等核
2026-06-28 10:38:52
22
原创 moe all2all通信模式流程
本文介绍了分布式MoE(混合专家)系统中GPU间的通信流程。以8张GPU为例,展示了路由器选择专家、统计发送需求、分阶段通信、专家计算及结果合并的全过程。关键点包括:1)先通过轻量通信交换元数据确定缓冲区大小;2)分两次大数据通信完成token分发和结果回传;3)本地专家计算避免额外通信。这种设计通过三次通信(1次元数据+2次数据传输)实现高效分布式计算,其中第一次元数据交换是分布式MoE的典型开销但必不可少。
2026-06-27 21:39:27
257
原创 cuda stream, cuda event, cuda graph用例
本文介绍了CUDA Graph的基本概念和使用方法,重点演示了四种典型场景:1)基础捕获与重放操作,对比了Graph与常规执行的性能差异;2)在自定义CUDA Stream上的Graph捕获与重放;3)使用Event实现Graph与外部Stream的同步;4)多个Graph在不同Stream上的并行执行。代码示例展示了如何通过PyTorch的CUDA Graph API(如capture_begin/replay)来优化计算密集型任务,其中矩阵乘法测试显示Graph重放比常规执行快2.8倍。文章强调Grap
2026-06-27 11:07:04
694
原创 投机解码的一些问题思考记录
摘要:在sglang的投机解码实现中,Target模型需先进行Prefill构建KV Cache以确保后续验证的上下文依赖。传统流程中,Target模型不仅预填充Prompt,还会生成首个保真Token,为Draft模型的草稿生成提供基础。特殊场景(如EAGLE)下,Draft模型需依赖Target输出的特征向量才能启动。具体步骤包括交替执行Target/Draft的Prefill与Decode阶段,并通过验证步骤(d2h)确认Token接受与否,形成循环直至生成结束符。step>1时,流程会扩展为多轮草稿
2026-06-26 23:32:59
31
原创 eagle投机解码轻量实践
本文实现了一个简化的EAGLE-1投机解码算法框架。该算法通过轻量级draft head预测语言模型第二顶层特征来加速推理。代码模拟了核心组件:TargetModel(含4层Transformer)生成logits和特征,DraftHead(单层MLP)预测后续特征。核心流程包括:目标模型前向计算、draft head自回归预测K步、验证draft tokens并进行投机采样。实现中省略了部分函数细节,仅保留算法关键部分用于验证正确性。实验函数run_experiment通过打印输出来观察算法行为。
2026-06-26 22:42:03
38
原创 vllm page attention kernel详细解析
本文分析了 PagedAttention CUDA 内核的关键实现细节,主要包括: 分区处理机制:通过 blockIdx 确定线程块处理的序列和分区范围,计算 token 处理区间 [start_token_idx, end_token_idx),支持长序列分块处理。 线程层次结构:采用 Thread Block → Warp → Thread Group 的三级结构,其中 Thread Group 是最小协作单位,负责共同加载一个 token 的特征数据。 Query加载:将 Query 数据交错分配到
2026-06-24 22:36:29
260
原创 leetgpu prefix sum
本文实现了一个高效的GPU并行前缀和算法,使用CUDA C++编写。该算法采用递归分治策略,首先在每个线程块内部计算局部前缀和并保存块总和,然后递归处理块总和数组,最后将块级前缀和累加到各块元素上。核心优化包括:1) 使用Warp级别的并行扫描减少共享内存访问;2) 通过__shfl_up_sync指令实现寄存器级数据交换;3) 采用1024线程的块大小充分发挥GPU并行能力。算法时间复杂度为O(n),适用于最大1亿元素的输入,在N=250,000时表现出良好的性能。实现完全基于CUDA原生功能,符合题目要
2026-06-19 21:01:00
162
原创 LeetGPU Top K Selection
这篇文章摘要: 本文介绍了一个使用CUDA实现的GPU程序,用于从一维浮点数组中高效选取前K大元素。程序采用两阶段处理:第一阶段由多个线程块并行处理输入数据,每个线程块维护局部Top K数组;第二阶段通过树形归并聚合所有局部结果。关键优化包括使用共享内存减少全局访问、网格步长循环提高并行效率,以及插入排序保持元素顺序。程序针对大规模数据(N=50M, K=100)优化,通过合理的块大小(64线程)和网格规模(256块)平衡计算与内存使用,避免使用外部库并严格控制共享内存大小(约25KB)。最终结果以降序存储
2026-06-19 19:31:19
55
Jumpserver Chrome插件保持长连接不掉线2025最新版
2025-07-15
【数据库技术】SQL练习题集:涵盖多表关联、窗口函数、子查询优化及电商场景数据分析
2025-07-11
yolo-project.zip
2025-05-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅