<?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>竞赛 on Javey 的技术博客</title>
    <link>https://javey-q.github.io/categories/%E7%AB%9E%E8%B5%9B/</link>
    <description>Recent content in 竞赛 on Javey 的技术博客</description>
    <image>
      <title>Javey 的技术博客</title>
      <url>https://javey-q.github.io/images/papermod-cover.png</url>
      <link>https://javey-q.github.io/images/papermod-cover.png</link>
    </image>
    <generator>Hugo -- 0.164.0</generator>
    <language>zh-cn</language>
    <copyright>Javey</copyright>
    <lastBuildDate>Wed, 01 Jan 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://javey-q.github.io/categories/%E7%AB%9E%E8%B5%9B/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>昇腾 AI 模型迁移赛参赛经验总结</title>
      <link>https://javey-q.github.io/posts/%E6%98%87%E8%85%BEai%E6%A8%A1%E5%9E%8B%E8%BF%81%E7%A7%BB%E8%B5%9B%E5%8F%82%E8%B5%9B%E7%BB%8F%E9%AA%8C%E6%80%BB%E7%BB%93/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://javey-q.github.io/posts/%E6%98%87%E8%85%BEai%E6%A8%A1%E5%9E%8B%E8%BF%81%E7%A7%BB%E8%B5%9B%E5%8F%82%E8%B5%9B%E7%BB%8F%E9%AA%8C%E6%80%BB%E7%BB%93/</guid>
      <description>&lt;h2 id=&#34;一背景与结果概述&#34;&gt;一、背景与结果概述&lt;/h2&gt;
&lt;p&gt;本次模型迁移赛的任务，是将 BERT、CLIP 等 Transformer 类模型迁移到昇腾平台，并在保证精度的前提下尽可能降低单次推理耗时。经过完整的优化迭代，BERT 单次推理从约 48ms 降至 5-6ms，CLIP 从 80-90ms 降至约 10ms，量级上均为 8 倍左右的提升。&lt;/p&gt;
&lt;p&gt;这一提升并非来自某个单点技巧，而是三个层次优化叠加的结果：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;层次&lt;/th&gt;
					&lt;th&gt;优化内容&lt;/th&gt;
					&lt;th&gt;作用机理&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;代码写法层&lt;/td&gt;
					&lt;td&gt;Tensor 索引、切片、permute、broadcast 的等价重写&lt;/td&gt;
					&lt;td&gt;减少 Host 侧算子下发次数与冗余小算子&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;算子与结构层&lt;/td&gt;
					&lt;td&gt;QKV 融合、FlashAttention、mask 预构造、局部 fp16&lt;/td&gt;
					&lt;td&gt;提高单次下发的计算密度，降低访存量&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;执行模式层&lt;/td&gt;
					&lt;td&gt;静态图与整图静态化&lt;/td&gt;
					&lt;td&gt;消除 Python/Host 侧逐算子调度，转为整图连续执行&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;理解这三层的边界，是整个比赛中最关键的认知。初看 BERT、CLIP 这类模型时，注意力很容易集中在 attention、GELU、LayerNorm 等局部算子上，认为优化就是&amp;quot;把慢算子换成快算子&amp;quot;。但实测数据表明：在动态图推理下，真正的瓶颈大量分布在 Host 侧调度、单算子下发、动态 shape 处理和 Python 分支上，Device 侧计算反而不是第一约束。因此，优化的主线可以概括为一句话——&lt;strong&gt;先稳定测量，再定位热点，然后把动态图、小算子、动态 shape 和低效写法，系统性地改造成静态 shape、大算子、图模式与硬件友好的执行路径。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;二性能台阶图示&#34;&gt;二、性能台阶图示&lt;/h2&gt;
&lt;p&gt;为避免 BERT 与 CLIP 的阶段标注相互挤压，下面将二者分开展示。图中区间值采用代表值绘制，重点表达优化路线中的性能下降台阶，而非将不同实验分支做严格线性叠加。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;BERT 模型迁移优化性能台阶&#34; loading=&#34;lazy&#34; src=&#34;https://javey-q.github.io/images/%E6%98%87%E8%85%BEAI%E6%A8%A1%E5%9E%8B%E8%BF%81%E7%A7%BB%E8%B5%9B%E5%8F%82%E8%B5%9B%E7%BB%8F%E9%AA%8C%E6%80%BB%E7%BB%93/BERT%E6%80%A7%E8%83%BD%E5%8F%B0%E9%98%B6%E5%9B%BE.svg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;CLIP 模型迁移优化性能台阶&#34; loading=&#34;lazy&#34; src=&#34;https://javey-q.github.io/images/%E6%98%87%E8%85%BEAI%E6%A8%A1%E5%9E%8B%E8%BF%81%E7%A7%BB%E8%B5%9B%E5%8F%82%E8%B5%9B%E7%BB%8F%E9%AA%8C%E6%80%BB%E7%BB%93/CLIP%E6%80%A7%E8%83%BD%E5%8F%B0%E9%98%B6%E5%9B%BE.svg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;三先建立可靠基线而不是马上改代码&#34;&gt;三、先建立可靠基线，而不是马上改代码&lt;/h2&gt;
&lt;p&gt;优化初期最容易犯的错误，是看到某个慢算子就直接动手改。但如果测量环境本身不稳定，优化方向很容易被噪声误导。&lt;/p&gt;
&lt;p&gt;首先要处理的是运行稳定性。动态图推理中，Python 侧与 Host 侧调度占比很高，一旦 CPU 发生跨核调度，缓存失效与上下文切换会让耗时明显波动。绑核在这里价值显著：BERT 原始耗时约 48ms，绑核后可降到 41ms 甚至 38ms；CLIP 也从 80-90ms 降到约 76ms。这部分收益本身不是最终核心，但它让后续 profile 与版本对比变得可信。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
