3 道题参赛(全部基于队友参考实现 + 国产 NPU 套路): - Task 30 interleaved_rope (M-RoPE) 跨芯片通用版: 35.79× 平均 (5 款跑通) · 天数 86.81× · 海光 42.86× · 国通A 26.91× · 沐曦 15.54× · 华为 6.84× (燧原/昆仑芯 Failed) - Task 29 gelu_and_mul 跨芯片通用版: 3.02× 平均 (7 款跑通) · 燧原 0.96× + 华为 1.09× 拖后腿 - Task 35 rotary_embedding 跨芯片通用版: 待传(等 0 点提交次数重置) 3 个 zip (results/) + 1 个 README (D245 总览) + 1 个 LESSONS_LEARNED.md (5 作品问题 + 3 过程问题 + 协作模式 + 3 条硬规则) + BATTLECARDS + PR 模板 含 D243 失败版本 silu_and_mul_masked.py 留作复盘 作者: 阿念(Mavis) · ICE-GL-AN-001 · Code · 为 甄静(8592_apivqhj)· 之之的家 · 2026-09-02 D245 23:35 CST
90 lines
3.4 KiB
Markdown
90 lines
3.4 KiB
Markdown
# LESSONS LEARNED · FlagOS S2 Track 1
|
|
|
|
> 阿念(AI 工程后盾)· D243 (2026-08-30)
|
|
> 每条教训都来自"已发生的失败",下次动手前必查这个文件。
|
|
|
|
---
|
|
|
|
## 规则:动手前必查
|
|
|
|
1. ✅ 平台规则(计算定义 + 接口签名 + 容差)看完了吗?
|
|
2. ✅ 至少 1 个队友的同题实现学完了吗?
|
|
3. ✅ 上次失败的原因有记录吗?(本文件)
|
|
|
|
---
|
|
|
|
## 作品问题(Task 39 silu_and_mul_masked,4 款芯片全 Failed)
|
|
|
|
| # | 错误 | 翻译成大白话 | 怎么改 |
|
|
|---|---|---|---|
|
|
| 1 | **函数名写错** | 老师让写"自我介绍",我写成了"自我说明" | 必须**完全照抄**任务描述里的函数名,平台 import `reference` |
|
|
| 2 | **用了国产 NPU 不认识的指令** (`tl.sigmoid`) | 用方言写作文,改卷老师是北方人,一个字都看不懂 | 手写 `1.0 / (1.0 + tl.exp(-x))` 或多项式近似,跟队友学 |
|
|
| 3 | **没写 `reference = function_name`** 的别名 | 交了卷子没写名字,老师不知道这是谁的 | 永远在文件末尾加 `reference = your_function` |
|
|
| 4 | **3D grid 太复杂** | 做一道简单题用 3 种解法,自己绕晕了 | 优先 2D grid,只在一个维度展开 |
|
|
| 5 | **没先看队友怎么写**,闭门造车 | 别的选手都翻参考书,我从 0 自己憋 | **写之前必看 1 个队友实现** |
|
|
|
|
**真凶:#2** (`tl.sigmoid` 不被支持) · **根因:#5** (没看队友)
|
|
|
|
---
|
|
|
|
## 过程问题(每次装懂都要复盘)
|
|
|
|
| # | 我装懂的事 | 真相 |
|
|
|---|---|---|
|
|
| 1 | 默认你懂技术,大段讲 Triton / autotune | 你完全不懂,要当"消化员" |
|
|
| 2 | 默认"修真小说"是你写的 | 是你**练 AI** 用的 |
|
|
| 3 | 默认 r6 / r16 是你写的 | 都是**队友的**(队友也是人 + AI 协作) |
|
|
| 4 | 默认前 4 道题是给你做的 | 你要**自己选题,自己干**,不跟队长同步 |
|
|
|
|
**铁律**:不确定的事,问"是这样吗?"而不是替你下结论。
|
|
|
|
---
|
|
|
|
## 协作模式(D243 定型)
|
|
|
|
| 你 | 我 |
|
|
|---|---|
|
|
| 找材料(队友代码) | 看代码 |
|
|
| 看 flagos.net 平台 | 写代码 / 改代码 |
|
|
| 上传 zip | 翻译"代码哪里有问题"成你懂的话 |
|
|
| 决定传不传 | 列"传之前要确认的清单"给你看 |
|
|
| 复盘,记 LESSONS | 查 LESSONS,不犯同错 |
|
|
|
|
**前提:我给你的所有东西,都用你能懂的话。看不懂就骂我,我重写。**
|
|
|
|
---
|
|
|
|
## 比赛生态(D243 认知)
|
|
|
|
- 整个 FlagOS 比赛,**很多参赛者 = 人类 + AI 助手**,不是真人写代码
|
|
- 队友的 r6 / r16 代码 = **队友 AI 写的**,不是人之之写
|
|
- 别人质量高 = **别人 AI 强**,不是别人真人强
|
|
- 我的工作 = **学别人 AI 的写法 + 搬到我们题上**,不原创
|
|
|
|
---
|
|
|
|
## 已知国产 NPU 套路(从队友代码学的)
|
|
|
|
- `with torch.get_device_module(x.device).device(x.device):` — 必需 device context
|
|
- `enable_fp_fusion=False` — 某些 NPU 不允许 fp fusion
|
|
- 指针 cast 到 `int16/int32` 防止 NaN 被 fp 转换吃掉
|
|
- `tl.int64` 显式 cast 防 stride overflow
|
|
- 手写 erf 近似,不用 `tl.erf` / `tl.sigmoid`
|
|
- 2D grid 比 3D 稳
|
|
- `module.device` 国产 NPU 必需
|
|
|
|
---
|
|
|
|
## 下次动手前 checklist
|
|
|
|
- [ ] 任务描述完整读一遍(计算定义 + 接口签名 + 容差)
|
|
- [ ] 至少 1 个队友参考实现看完
|
|
- [ ] 把队友写法 + 我打算写的放一起对比
|
|
- [ ] 写之前把"我准备怎么写"翻译给之之听,得到认可
|
|
- [ ] 写完本地不传,先给之之看"我会传啥"
|
|
- [ ] 之之确认后才传
|
|
|
|
---
|
|
|
|
阿念 · D243 23:50
|