博文

目前显示的是 七月, 2025的博文

DeepEP原理分析(二):low latency模式代码详解(更新中)

图片
最近在做基于 DeepEP 和 SGLang 的推理优化。DeepEP 是一个用于取代 MoE 模型中 AlltoAll 操作、非常精妙和细致的点对点通信 kernel,好好研读其实现过程对 CUDA 编程、MoE rank 间通信都有巨大好处(下面的分析基于0625 main版本,详细代码请自行上 github 上搜索) 1 dispatch 1.1 入参详解 1、接收与打包参数:主要用于在目标 GPU 上存储从其他 GPU 接收到的数据 - packed_recv_x:用于存储接收到的已打包好的 token 特征数据,这些数据将直接用于本地专家的计算。这是数据在接收方的最终存储位置 - packed_recv_x_scales:如果使用 FP8 量化传输,这个指针指向用于存储 packed_recv_x 对应 FP8 scale(缩放因子)的缓冲区 - packed_recv_src_info:存储每个接收到的 token 在其来源 GPU 上的原始索引 。这个信息在后续 combine 阶段至关重要,用于将计算结果正确地写回 - packed_recv_layout_range:记录由每个本地专家从各个源 rank 接收到的 token 的布局信息。它通常将来自某个源 rank 的 token 总数和 token 在 packed_recv_x 缓冲区中的起始偏移量打包成一个 64 位整数,其结构可参考下面这个二维数组示意图,这个结构使得 dispatch kernel 能够记录每个本地专家从哪个源 rank 接收了多少 token,以及这些 token 在接收缓冲区中的具体位置。随后 combine kernel 可以利用这些信息,将处理后的 token 结果正确地发送回它们最初的源 rank - packed_recv_count:原子计数器,每个本地专家都有一个属于自己的该计数器,用来追踪该专家已经接收了多少 token,以便为新到达的 token 计算正确的存储偏移量 - cumulative_local_expert_recv_stats:用于累计每个本地专家接收到的 token 总数,作为统计信息 2、RDMA 缓冲区参数:RDMA 通信过程所需的空间和信号 - rdma_recv_x:RDMA 接收缓冲区。从其他节点通过网络发送过来的数据会先被存...

究竟什么是“足够”

周五下班的地铁上照例打开孟岩的“ 无人知晓”播客,听到他提到了一篇叫做 The Many Worlds of Enough 的文章,里面提到了什么叫做“足够”(enough),以及如何区分自己的 ambition 和 greed,挺感兴趣,于是今天花了一个小时精读了下。读完后感受就是四个字:醍醐灌顶。感谢孟岩又让我知道了一个优质博主 Lawrence Yeo。下面简单总结了下这篇文章的核心内容,如想了解更加详细的内容,请移步原博客。 引言 为什么德国亿万富翁 Adolf Merckle 在损失 5 亿美金、但手头仍有 80 多亿美金的情况下会卧轨自杀 核心概念 1、物理界的平行时空和多重世界 2、Ambition、Greed 和 Self-awareness Ambition:出于 self-actualization 和想要成为更有能力的人这类动机而设置目标,而实现目标过程中获得的物质奖励只是 byproduct Greed:当 byproduct 这类自身以外的事物本身成为了追求的目标(the coldness of utility replaces the warmth of curiosity) Self-awareness:当你开始严肃地问自己究竟是什么驱动你实现目标时,你就在培养 self-awareness,同时 Enough 就会逐渐下沉(lower than the position you currently occupy)。而你不断接近比你当前位置更低的目标时,你的身份认同也一样会不断改变 3、Many Worlds of Enough:It’s the perpetual branching of identity that results from progress, as progress provides you with the confidence and ability to actualize greater things (resulting in further progress). The cyclical nature of this process is what makes it so difficult to stop, and is what prevents us from ever settling ...

《肌骨重建》重点内容摘录

图片
Chap 1 腰背疼痛 1 疼痛的根因 - 想要找到根因不能只看 MRI,例如椎间盘膨出很常见,且经常出现在腰椎 MRI 扫描中,但大多数人没有疼痛感 - 放射科医生无法确定腰椎膨出是一个近期结果(新伤)还是 20 年前的(旧伤),因为椎间盘膨出可以随着时间的推移而愈合(但在 MRI 上仍有显示),不再引起疼痛 - 如果我们想要更深入观察并确定哪些特定组织可能导致疼痛症状,就需要从触发疼痛的环境(具体动作、负荷和姿势/体位)中进行彻底检查,只有在完成这一过程之后,我们才转向成像技术进行进一步诊断 2 脊柱结构和腰椎小关节 相邻椎体上下关节突构成的稳定结构,下面第二张图来自于 腰椎小关节紊乱的诊治要点 3 常见腰背损伤 3.1 椎间盘膨出 (Bulges)和突出 (Herniation) - 脊椎受力过大,髓核 (nucleus pulposus)就会被挤压在一起最终导致从椎间盘、也就是破裂的纤维环中被挤出来 3.2 椎骨终板骨折 - 椎骨中的骨小梁呈现一个错综复杂、相互交织的海绵网状结构,其非常坚固所以可以支撑骨骼承载负重并避免被负荷压缩 - 举重会使你的脊柱产生适应,并随时间的推移骨小梁会增厚;但脊柱承受的负重过大且反复施加压力时也会产生微骨折 3.3 小关节损伤 - 小关节可根据脊椎位置而改变,所以能够协助或者限制脊柱的过度转动 - 小关节可能在某些情况下产生扭转,例如大重量杠铃高翻时当髋关节产生了不对称位移,久而久之容易造成腰椎小关节的关节囊被过度牵拉,最终导致疼痛 3.4 椎骨滑脱 - 椎骨滑脱发生在椎骨的一个很小的部分叫做椎弓峡部 - 当下腰背处于过度伸展或过度弓起时,椎弓峡部吸收了大量压力 3.5 神经疼痛 3.6 肌肉疼痛 - 腰背损伤会炎症反应,会导致受伤部位周围肌肉组织的继发性收缩或痉挛 - 任何腰背肌肉的疼痛或压痛感可能是来自更深层次问题 4 腰背疼痛的筛查 - 腰背疼痛:屈曲不耐受;伸展不耐受;旋转伸展不耐受;负荷不耐受 - 筛查测试:体态评估(站姿,增加负重),动作评估(屁股眨眼主要和股骨头大小、方向和髓臼深度有关;检查检查踝关节灵活性可通过5英寸触墙测试) - 负重测试:直臂向前平举重物;蹲脚后跟测试 - 髓关节协调能力:腰背疼痛能够抑制臀肌活性(通过单/双腿臀桥进行测试看是否有疼痛) - 髓关节灵活性评估:髓关节扭转问题筛查(髋关节内旋/...