reStructuredText 学习笔记
reStructuredText 学习笔记官方网站 Sphinx Sphinx 文档配置 sphinx_rtd_theme Read the Docs 入门教程 Learn reStructureText sphinx 文档规范与模板 赵子清技术文章 环境搭建安装依赖: 123456Sphinxsphinx-autobuildsphinx-rtd-themerecommonmarksphinxext-remoteliteralincludesphinx-copybutton 执行命令: 12sphinx-quickstartmake html 双击 build 目录下的 index.html 即可以在浏览器中查看效果。 也可以在 VSCode 中实时预览 .rst 文件,需要添加以下配置: 1234{ "esbonio.sphinx.confDir": "conf.py文件所在的文件夹", "restructuredtext.linter.run": "off"}...
SO PRs
SO PRsPR1: platform 重构interface.py: 1234567class Platform: @classmethod def supports_structured_output(cls) -> bool: """ Returns whether the current platform can support structured output. """ return False cpu.py / cuda.py / hpu.py / neuron.py / rocm.py / xpu.py: return True tpu.py: 12345class TPUPlatform: @classmethod def supports_structured_output(cls) -> bool: logger.warning("Structured output is not s...
SHM
SHMShared Memory = 多个进程/设备可以“直接访问同一块内存”的机制。 普通进程通信(非 SHM):进程 A → 拷贝 → 内核 → 拷贝 → 进程 B(数据被复制多次); Shared Memory:进程 A ↔ 同一块内存 ↔ 进程 B(没有中间 copy)。 SHM 在不同层的含义: 操作系统:POSIX / System V SHM。OS 分配一块内存,映射到多个进程的虚拟地址空间。特点:零拷贝(进程间)、需要同步机制(锁、信号量)。比如:from multiprocessing import shared_memory; GPU / CUDA:GPU SM 内部的片上共享内存,给 thread block 用。特点:超快(比 global memory 快很多)。比如:__shared__ float buf[256]; 容器 / Docker:是一个 tmpfs(内存文件系统),用来做进程间共享内存。比如 docker run --shm-size=8g,对应 /dev/shm。 在 vLLM ...
SGLang EPD
SGLang EPDMooncake Transfer EngineMooncakeTransferEngine: 封装 from mooncake.engine import TransferEngine 的 API: 初始化; 内存注册; 数据传输。 通过 engine = init_mooncake_transfer_engine() 对外暴露初始化接口。 EPD using mooncake: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104# encoder_transfer_backend == "mooncake"class MMEncoder: def __init__(...):...
Reasoning Output
Reasoning Output基本概念Reasoning Models推理模型,顾名思义指具备推理能力的大语言模型(如:DeepSeek-R1),目前业内有“Understanding Reasoning LLMs”、“Reasoning models”、“Reasoning LLMs”等多种说法。 两大特点: 复杂任务/场景适应性强:推理模型尤其擅长将复杂问题/任务分解后,高度还原人类的思维过程(如尝试和验证不同的方法,直至找到最佳解决方案,输出结果),这种方式可能导致推理时间延长,但在理解和处理复杂的任务场景时,成功率和精准度却能成倍增长。而且通过多场景的强化学习,大模型在新问题中的泛化能力和鲁棒性也更好; 可解释性更强:相比以往直接输出答案,推理模型还会详细、分步骤给出推理过程,用来解释为什么会给出这样的答案。虽然最终的答案可能和通用大模型直接生成的答案类似,但因为推理过程公开透明,使得一定程度上能打破大众对大模型“黑盒”问题的顾虑,推理模型生成的答案,可信度与可解释性也因此大幅增强。此外,即便输出结果有偏差,通过检查和纠正推理步骤,也能更快发现问题...
RDMA
RDMA基本原理RDMA 本质:“zero-copy + 远程内存访问”。 zero-copy? 指数据从源头到目的地,中间不经过 CPU 内存的“中转拷贝”。 传统路径:GPU A -copy-> CPU 内存 -socket send-> 内核 buffer -网络-> 对端内核 buffer -> CPU 内存 -copy-> GPU B; zero-copy:GPU A memory -> GPU B memory,数据不经过 CPU 内存,CPU 只负责“发指令”,数据由 DMA / RDMA NIC / GPU copy engine 直接搬运。 zero-copy 并不是“完全没有 copy”,而是:copy 仍然发生,但不经过 CPU 和额外 buffer。 DMA(Direct Memory Access):Device 直接读写内存,不经过 CPU(CPU 不参与数据搬运); RDMA(Remote Direct Memory Access):机器 A 内存 -> 机器 B 内存,绕过 CP...
Profiling 分析指南
Profiling 分析指南Ascend NPU + MindStudio Insight关键文件: trace_view.jsonkernel_details.csvop_stastic.csv kernel_details.csv 分析指南: 冻结首行,start time 排序,只看一个 layer 的数据。数量比较多的 stream id 就是“主流”,其它的是通信流、共享专家流(实现计算通信并行)。静态/动态算子。Duration(优化目标):尽量让算子达到计算 bound,减少访存 bound -> 判断优化方向。判断性能瓶颈:每个算子的时间除以整个 layer 的时间,再转换为百分比的形式 -> 判断优化重点。 trace_view.json 分析指南: 一般不用关注 CANN 这一层。算子的实际执行时间主要看 Ascend Hardware 这一层。AI Core Freq:当芯片温度比较高时,可能会出现降频,导致计算性能下降。 CV 并行:cube 和 vector 是相互独立的计算单元,可以放到两条流上并行计算(但是会争访存带宽)。 bu...
LLM 学习项目
LLM 学习项目KuiperLLama 采用最新的 C++ 20 标准去写代码,统一、美观的代码风格,良好的错误处理; 优秀的项目管理形式,我们采用 CMake + Git 的方式管理项目,接轨大厂; 授人以渔,教大家怎么设计一个现代 C++ 项目,同时教大家怎么用单元测试和 Benchmark 去测试验证自己的项目; CPU 算子和 CUDA 双后端实现,对时新的大模型(LLama3 和 Qwen 系列)有非常好的支持。 项目地址:https://github.com/zjhellofss/KuiperLLama。 lightllm推荐用 lightllm 这个项目学习 Triton for LLM,它是一个纯 python 的 LLM 推理服务框架,用 Triton 实现了各类 LLM 需要的 layer。 项目地址:https://github.com/ModelTC/lightllm。 Material for gpu-mode lectures如何系统地学习CUDA?这个课程算是比较全面的,像 profile、triton、cutlass、FlashAttention...
大模型 LoRA 微调的数学原理
大模型 LoRA 微调的数学原理一、概述LoRA(Low-Rank Adaptation,低秩适配器)是目前非常热门的大模型微调技术之一,网上已经有许多关于其原理的分析和讲解,本文将着重从 LoRA 背后的数学原理进行解读。 二、背景介绍2.1 基本概念大模型微调(Fine-tuning):基于已经训练好的预训练模型,针对特定的下游任务,在特定领域的数据集上进行二次训练,以提升模型在特定任务上的表现。 全量微调:在下游任务的训练中,对预训练模型的每一个参数都做更新(训练代价昂贵); 局部微调:冻结(不更新)预训练模型的权重,只对部分增量权重进行训练,从而有效降低训练的代价(实用性更高)。 2.2 研究现状在 LoRA 微调技术出现之前,现有的大模型微调技术存在以下缺点: Adapter Tuning:在模型中添加额外的 Adapter 层,并只针对这些 Adapter 的权重进行训练。这将导致模型整体的层数变深,从而使模型的训练/推理耗时增加(因为新增的 Adapter 层与模型中的其它层是串行的,无法充分利用硬件能力进行并行计算); Prefix Tuning:...
vLLM 算力多样性|Platform 插件与 CustomOp
vLLM 算力多样性|Platform 插件与 CustomOp一、引言随着 vLLM 逐渐成为生产级场景下大模型推理的通用解决方案之一,期望 vLLM 支持各式各样算力底座的需求日趋强烈。目前,在 vLLM 的官方仓库中维护着 NVIDIA GPU、AMD GPU 以及 Google TPU 等多家芯片厂商的代码,但除此之外,还有更多的 AI 芯片是通过“硬件插件化机制”来支持自家算力的。 所有不在 vLLM 官方仓库中支持的硬件,都被统称为 OOT(Out Of Tree)Device,包括: 官方插件(指存在于 vllm-project 官方项目下的插件):vllm-ascend(华为昇腾 NPU)、vllm-spyre、vllm-gaudi(Intel Gaudi)、vllm-neuron(AWS Neuron)、vllm-metal(Apple Silicon)等; 非官方插件:vLLM-metax(沐曦 GPU)、vLLM-Kunlun(百度昆仑芯 XPU)等。 本文将深入介绍 vLLM 硬件插件化系统的原理,以及如何通过 CustomOp 完成自定义算子的注册与...