<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Inference on moyutianzun's blog</title><link>https://moyutianzun.cn/en/categories/inference/</link><description>Recent content in Inference on moyutianzun's blog</description><generator>Hugo</generator><language>en</language><copyright>moyutianzun</copyright><lastBuildDate>Mon, 29 Sep 2025 09:53:22 +0800</lastBuildDate><atom:link href="https://moyutianzun.cn/en/categories/inference/index.xml" rel="self" type="application/rss+xml"/><item><title>PD分离 —— Prefix Cache和Chunk Prefills</title><link>https://moyutianzun.cn/en/blog/pdfen-chi------prefix-cachehe-chunk-prefills/</link><pubDate>Mon, 29 Sep 2025 09:53:22 +0800</pubDate><guid>https://moyutianzun.cn/en/blog/pdfen-chi------prefix-cachehe-chunk-prefills/</guid><description>&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;目前推理框架基本上都需要用到多轮对话的场景，自然产生了&lt;code&gt;kv cache&lt;/code&gt;的存储和索引算法。如果能把&lt;code&gt;prompt&lt;/code&gt;和后续产生的&lt;code&gt;KV Cache&lt;/code&gt;保存下来，会极大地降低首&lt;code&gt;Token&lt;/code&gt;的耗时。&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;目前使用最多的就是两个技术方案，一个是&lt;code&gt;SGLang&lt;/code&gt;推出的&lt;code&gt;RadixAttention&lt;/code&gt;&lt;span style="font-size: mediumpx; color: rgb(25, 27, 31)"&gt;的&lt;/span&gt;&lt;code&gt;Prefix Cache&lt;/code&gt;&lt;span fontsize="" color="rgb(25, 27, 31)" style="color: rgb(25, 27, 31)"&gt;，另一个是&lt;/span&gt;&lt;code&gt;vllm&lt;/code&gt;&lt;span fontsize="" color="rgb(25, 27, 31)" style="color: rgb(25, 27, 31)"&gt;原生的&lt;/span&gt;&lt;code&gt;Chunk Prefills&lt;/code&gt;&lt;span fontsize="" color="rgb(25, 27, 31)" style="color: rgb(25, 27, 31)"&gt;。当然&lt;/span&gt;&lt;code&gt;vllm&lt;/code&gt;&lt;span fontsize="" color="rgb(25, 27, 31)" style="color: rgb(25, 27, 31)"&gt;也兼容了&lt;/span&gt;&lt;code&gt;Prefix Cache&lt;/code&gt;&lt;span fontsize="" color="rgb(25, 27, 31)" style="color: rgb(25, 27, 31)"&gt;，这两个技术只能用一个，vllm默认是Chunk Prefills，可以通过加入参数&lt;/span&gt;&lt;code&gt;--enable-prefix-caching&lt;/code&gt;&lt;span fontsize="" color="rgb(25, 27, 31)" style="color: rgb(25, 27, 31)"&gt;来开启，这里不谈&lt;/span&gt;&lt;code&gt;TensorRT-LLM&lt;/code&gt;&lt;span fontsize="" color="rgb(25, 27, 31)" style="color: rgb(25, 27, 31)"&gt;是因为其不完全开源。&lt;/span&gt;&lt;/p&gt;</description></item><item><title>vllm v1 源码解析 —— 单机八卡推理</title><link>https://moyutianzun.cn/en/blog/vllm-v1-yuan-ma-jie-xi------dan-ji-ba-qia/</link><pubDate>Fri, 26 Sep 2025 09:10:35 +0800</pubDate><guid>https://moyutianzun.cn/en/blog/vllm-v1-yuan-ma-jie-xi------dan-ji-ba-qia/</guid><description>&lt;p style=""&gt;单机八卡，我们按照PP + TP的方式来进行方案说明，使用的是vllm框架，主要命令和函数如下：&lt;/p&gt;&lt;pre&gt;&lt;code&gt;python single_node_multi_gpu_demo.py --mode pipeline_parallel --tensor-parallel 4 --pipeline-parallel 2 --model facebook/opt-13b
&lt;p&gt;def pipeline_parallel_inference(self, model_name: str, tensor_parallel_size: int, pipeline_parallel_size: int):
&amp;ldquo;&amp;ldquo;&amp;ldquo;流水线并行推理 - 将模型层分布到多个GPU上&amp;rdquo;&amp;rdquo;&amp;rdquo;
print(f&amp;quot;🚀 启动流水线并行推理 - 模型: {model_name}&amp;quot;)
print(f&amp;quot; 张量并行: {tensor_parallel_size}, 流水线并行: {pipeline_parallel_size}&amp;quot;)&lt;/p&gt;</description></item><item><title>vllm v1 源码解析 —— Core</title><link>https://moyutianzun.cn/en/blog/vllm-v1-yuan-ma-jie-xi------core/</link><pubDate>Tue, 23 Sep 2025 03:56:10 +0800</pubDate><guid>https://moyutianzun.cn/en/blog/vllm-v1-yuan-ma-jie-xi------core/</guid><description>&lt;p style=""&gt;一个client建立之后就会建立一个core engine，这些配置会通过QMZ IPC发送给core engine。&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;h1 style="" id="core-engine-architecture"&gt;Core engine Architecture&lt;/h1&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;h2 style="" id="worker-and-executor"&gt;Worker and Executor&lt;/h2&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;h2 style="" id="multiprocexecutor"&gt;MultiprocExecutor&lt;/h2&gt;&lt;p style=""&gt;在MultiprocExecutor类中，可以清晰的找到三部曲：&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;1、创建RPC消息队列&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;# Initialize worker and set up message queues for SchedulerOutputs
# and ModelRunnerOutputs
max_chunk_bytes = envs.VLLM_MQ_MAX_CHUNK_BYTES_MB * 1024 * 1024
self.rpc_broadcast_mq = MessageQueue(self.world_size,
self.world_size,
max_chunk_bytes=max_chunk_bytes)
scheduler_output_handle = self.rpc_broadcast_mq.export_handle()&lt;/code&gt;&lt;/pre&gt;&lt;p style=""&gt;&lt;/p&gt;</description></item><item><title>算子进阶 —— 通信算子</title><link>https://moyutianzun.cn/en/blog/suan-zi-jin-jie------tong-xin-suan-zi/</link><pubDate>Mon, 22 Sep 2025 09:00:54 +0800</pubDate><guid>https://moyutianzun.cn/en/blog/suan-zi-jin-jie------tong-xin-suan-zi/</guid><description>&lt;p style=""&gt;随着LLM业务的不断发展，我们发现单机单卡无法承载一个模型的训练和推理，故此出现了单机多卡和多机多卡的训练推理算子，这时候每个机和卡之间都需要通信，所以通信算子十分的重要。&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;h1 style="" id="%E5%88%86%E5%B8%83%E5%BC%8F%E5%B9%B6%E8%A1%8C"&gt;分布式并行&lt;/h1&gt;&lt;p style="text-indent: 2em"&gt;下面是传统的四种并行处理架构，常用于大模型训练。&lt;/p&gt;&lt;p style="text-align: center"&gt;&lt;img src="https://moyublog-picture.oss-cn-guangzhou.aliyuncs.com/images/20250921122900313.png" width="991px" height="415px" style="display: inline-block"&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;h2 style="" id="dp"&gt;DP&lt;/h2&gt;&lt;p style="text-align: center"&gt;&lt;img src="https://moyublog-picture.oss-cn-guangzhou.aliyuncs.com/images/20250921142712073.png" width="70%" height="100%" style="display: inline-block"&gt;&lt;/p&gt;&lt;p style="text-indent: 2em"&gt;每张卡拷贝相同的模型结构，仅对数据做切分。每张卡计算完的梯度也是针对各自数据的，需要做一次allreduce，然后使用优化器更新模型，进入下一次迭代。&lt;/p&gt;</description></item><item><title>算子进阶 —— 通算融合</title><link>https://moyutianzun.cn/en/blog/suan-zi-jin-jie------tong-suan-rong-he/</link><pubDate>Fri, 19 Sep 2025 08:16:51 +0800</pubDate><guid>https://moyutianzun.cn/en/blog/suan-zi-jin-jie------tong-suan-rong-he/</guid><description>&lt;p style=""&gt;（施工ing）&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;h1 style="" id="%E6%A6%82%E8%BF%B0"&gt;概述&lt;/h1&gt;&lt;p style=""&gt;我们知道，算子的作用是计算，那在整个体系中，我们的核心目标是拉满GPU的利用率。&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;在现代分布式体系中，多GPU之间同时存在着计算、内存访问和通信这三种基本活动，为了服务于我们的核心目标，我们需要尽可能的将通信时间和访存时间放在计算时间内，使得GPU不存在运算时间的泡泡。&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;大模型分布式系统执行的核心组件是并行的GPU。提升GPU运算的最佳方法，是通过计算与通信的重叠来实现。这种重叠可以通过两种方式达成：算子分解或通信内核融合。虽然算子分解实现起来简单，但往往导致性能欠佳。而将通信内核与计算内核融合，则需要更多的思考和计算。&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;故此最原始的想法就是用计算时间掩盖通信时间，通过大批量的数据直接发送到GPU，减少kernel开启和关闭、通信的开销。&lt;/p&gt;&lt;p style="text-align: center"&gt;&lt;img src="https://moyublog-picture.oss-cn-guangzhou.aliyuncs.com/images/20250917234340532.png" width="100%" height="100%" style="display: inline-block"&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;h1 style="" id="triton-distributed"&gt;Triton-distributed&lt;/h1&gt;&lt;p style="text-indent: 2em"&gt;Triton-distributed是字节seed团队开发的Triton 编译器的扩展。对于 LLM 来说，分布式优化的关键要求是计算通信重叠。以前，在小规模分布式训练/推理中，通信开销并不是一个关键的成本问题。然而，随着集群数量呈指数级增长，计算与通信重叠变得至关重要。&lt;/p&gt;</description></item><item><title>AI编译器 —— 笔记</title><link>https://moyutianzun.cn/en/blog/aibian-yi-qi------bi-ji/</link><pubDate>Thu, 11 Sep 2025 09:00:18 +0800</pubDate><guid>https://moyutianzun.cn/en/blog/aibian-yi-qi------bi-ji/</guid><description>&lt;h1 style="" id="challenge"&gt;challenge&lt;/h1&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=""&gt;新模型&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=""&gt;新module出现，需要对应算子进行计算，还需要结合硬件进行特性优化和测试，尽量充分发挥硬件性能&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=""&gt;硬件厂商还会发布新技术的加速计算库&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=""&gt;专用加速芯片爆发导致性能可移植性成为一种刚需&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=""&gt;不同厂商的ISA不尽相同&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=""&gt;一般缺乏如GCC、LLVM等编译工具链，使得针对CPU和GPU已有的优化算子库和针对语言的优化Pass很难短期移植到NPU上&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;h1 style="" id="%E6%9E%B6%E6%9E%84"&gt;架构&lt;/h1&gt;&lt;p style=""&gt;&lt;img src="https://moyublog-picture.oss-cn-guangzhou.aliyuncs.com/images/20250911160213415.png" width="100%" height="100%" style="display: inline-block"&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;h2 style="" id="%E5%92%8C%E4%BC%A0%E7%BB%9F%E7%BC%96%E8%AF%91%E5%99%A8%E5%AF%B9%E6%AF%94"&gt;和传统编译器对比&lt;/h2&gt;&lt;p style="text-align: center"&gt;&lt;img src="https://moyublog-picture.oss-cn-guangzhou.aliyuncs.com/images/20250911150445999.png" width="50%" height="100%" style="display: inline-block"&gt;&lt;/p&gt;&lt;p style="text-align: center"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=""&gt;在编译优化层通过统一IR执行不同的Pass进行优化，从而提高执行性能&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=""&gt;软件结构栈：分成前端、优化、后端三段式，IR解耦前端和后端使得模块化表示&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=""&gt;AI编译器对Graph IR进行优化后，将优化后的IR转换成传统编译器IR，最后依赖传统编译器进行机器码生成&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style=""&gt;&lt;img src="https://moyublog-picture.oss-cn-guangzhou.aliyuncs.com/images/20250911152322879.png" width="100%" height="100%" style="display: inline-block"&gt;&lt;/p&gt;&lt;p style="text-align: center"&gt;&lt;strong&gt;左边是旧编译器架构，右边是ai编译器架构&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>【LLM 必读综述】Speed Always Wins：LLM高效架构调查</title><link>https://moyutianzun.cn/en/blog/llm-bi-du-zong-shu-speed-always-wins-llmgao-xiao-jia-gou-diao-cha/</link><pubDate>Wed, 27 Aug 2025 08:06:02 +0800</pubDate><guid>https://moyutianzun.cn/en/blog/llm-bi-du-zong-shu-speed-always-wins-llmgao-xiao-jia-gou-diao-cha/</guid><description>&lt;p style=""&gt;题目：Speed Always Wins: A Survey on Efficient Architectures for Large Language Models&lt;/p&gt;&lt;p style=""&gt;作者：孙伟高 上海人工智能实验室&lt;/p&gt;&lt;p style=""&gt;github：https://github.com/weigao266/Awesome-Efficient-Arch&lt;/p&gt;&lt;p style=""&gt;&lt;/p&gt;&lt;h1 style="" id="%E6%96%87%E7%AB%A0%E7%9A%84%E4%B8%BB%E8%A6%81%E7%9B%AE%E7%9A%84"&gt;&lt;span style="font-size: 36px"&gt;&lt;strong&gt;文章的主要目的&lt;/strong&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p style="text-indent: 2em"&gt;通过分析449篇大模型的论文，汇总得到了以下能让大模型速度提升的方向：&lt;/p&gt;</description></item></channel></rss>