<?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>LLM on AI 拾遗笔记</title><link>https://bloge.oya.moe/tags/llm/</link><description>Recent content in LLM on AI 拾遗笔记</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 15 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://bloge.oya.moe/tags/llm/index.xml" rel="self" type="application/rss+xml"/><item><title>大模型推理优化的几个关键技术点</title><link>https://bloge.oya.moe/posts/llm-inference-optimization/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://bloge.oya.moe/posts/llm-inference-optimization/</guid><description>&lt;h2 id="为什么推理优化越来越重要"&gt;为什么推理优化越来越重要&lt;/h2&gt;
&lt;p&gt;训练一次大模型成本高，但跑起来之后每天都要服务大量用户，长期来看推理成本远高于训练成本。一个 70B 模型如果用 FP16 直接跑，单卡 A100 80G 都装不下，更不用说提供低延迟服务。所以&lt;strong&gt;推理优化不是锦上添花，而是落地的前提&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;下面整理几个工程上最常用、收益最显著的优化方向。&lt;/p&gt;
&lt;h2 id="1-kv-cache-是性能的核心"&gt;1. KV Cache 是性能的核心&lt;/h2&gt;
&lt;p&gt;Transformer 自回归生成时每生成一个 token 都要重新计算所有历史 token 的 K 和 V，这是 O(n²) 的浪费。&lt;strong&gt;KV Cache&lt;/strong&gt; 把之前算过的 K/V 缓存下来，每步只算新 token 的 K/V，复杂度降到 O(n)。&lt;/p&gt;
&lt;p&gt;但 KV Cache 本身会吃巨量显存：一个 13B 模型、序列长度 4K、batch 16，KV Cache 就要十几 GB。所以衍生出一系列优化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PagedAttention&lt;/strong&gt;（vLLM 提出）：把 KV Cache 按&amp;quot;页&amp;quot;管理，避免连续显存碎片化，吞吐能提 2-4 倍&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GQA / MQA&lt;/strong&gt;：让多个 Query Head 共享同一组 K/V Head，KV Cache 大小直接砍几倍，Llama 3 就用了 GQA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;量化 KV Cache&lt;/strong&gt;：把 KV Cache 从 FP16 量化到 INT8 甚至 INT4，显存减半但精度损失很小&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-量化用精度换显存和速度"&gt;2. 量化：用精度换显存和速度&lt;/h2&gt;
&lt;p&gt;权重量化的核心思路是：模型权重是 FP16 (16 bit)，但实际有效信息可能只需要 4 bit 就能表达。常见方案：&lt;/p&gt;</description></item><item><title>Prompt 工程的几种核心模式与实战示例</title><link>https://bloge.oya.moe/posts/prompt-engineering-patterns/</link><pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate><guid>https://bloge.oya.moe/posts/prompt-engineering-patterns/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;Prompt 工程不是玄学。表面看是&amp;quot;会不会写话&amp;quot;，本质上是&lt;strong&gt;对模型能力边界的工程性利用&lt;/strong&gt;。下面整理我在生产项目中验证有效的几种核心模式。&lt;/p&gt;
&lt;h2 id="模式一角色--任务--约束--输出格式"&gt;模式一：角色 + 任务 + 约束 + 输出格式&lt;/h2&gt;
&lt;p&gt;最基础但被严重低估的模式。一个完整的 Prompt 至少要包含这四块：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;你是一名资深的 SQL 性能专家（角色）。
请审查以下 SQL 查询并指出可能的性能问题（任务）。
要求：
- 只关注会导致全表扫描或 N+1 问题的写法（约束）
- 不要建议添加索引（约束）
输出 JSON 格式（输出格式）：
{
&amp;#34;issues&amp;#34;: [
{&amp;#34;line&amp;#34;: 行号, &amp;#34;problem&amp;#34;: &amp;#34;...&amp;#34;, &amp;#34;fix&amp;#34;: &amp;#34;...&amp;#34;}
]
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;为什么有效&lt;/strong&gt;：每一块都在收窄模型的&amp;quot;概率云&amp;quot;。少了角色，模型不知道用什么专业度回答；少了输出格式，下游无法解析。&lt;/p&gt;
&lt;h2 id="模式二few-shot-示例"&gt;模式二：Few-shot 示例&lt;/h2&gt;
&lt;p&gt;模型从描述中学习有上限，但从示例中学得很快。一两个高质量示例往往胜过 500 字的描述。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键原则&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;示例要&lt;strong&gt;覆盖边界情况&lt;/strong&gt;，而不是只展示典型情况&lt;/li&gt;
&lt;li&gt;示例之间要有&lt;strong&gt;对比性&lt;/strong&gt;，让模型理解为什么这样而不是那样&lt;/li&gt;
&lt;li&gt;示例数量 1-5 个最佳，太多反而稀释主任务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实战例子：做情感分类时，光给&amp;quot;好评/差评&amp;quot;两个示例不够，加上&amp;quot;中性评论&amp;quot;&amp;ldquo;讽刺好评&amp;quot;&amp;ldquo;含吐槽的好评&amp;quot;等边界案例，效果显著提升。&lt;/p&gt;
&lt;h2 id="模式三chain-of-thought"&gt;模式三：Chain of Thought&lt;/h2&gt;
&lt;p&gt;让模型先&amp;quot;思考&amp;quot;再回答，复杂推理任务的标配。两种触发方式：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;显式触发&lt;/strong&gt;：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;请一步步思考，先分析问题再给出最终答案。
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;隐式触发&lt;/strong&gt;（更优）：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;请按以下步骤完成：
1. 列出问题中的所有已知条件
2. 识别需要求解的目标
3. 选择合适的求解方法
4. 执行计算
5. 验证答案的合理性
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;第二种把&amp;quot;思考&amp;quot;结构化，模型不会跳步，且每一步都可以单独检查。&lt;/p&gt;
&lt;h2 id="模式四自我校验与反思"&gt;模式四：自我校验与反思&lt;/h2&gt;
&lt;p&gt;让模型质疑自己的输出。有两种实现：&lt;/p&gt;</description></item></channel></rss>