9.29
2026-09-29
周二
摩尔线程比赛
摩尔线程 GEMM 优化赛已经结束,最后排名第三,榜单在 https://academy.mthreads.com/contest/1/race/2/score-entry
这比赛非常可惜,我一直看着主页面以为是 9.30 截止,结果这是获奖公告时间,我很晚才知道其实 25 号就截止了。
主办方没有对评测机编译不通过的问题做出有效答复,我 20 号写了一堆探针 debug,结果是没有任何用处,拖到晚上也没搞定,只能放弃老老实实在评测机上编译,改成直接开发机上打包好构建产物 ELF 直接交,这样就得到了第一版成功的提交,结果发现居然在线上连前 20 名都进不去。
这问题就出在 benchmark 疏忽了,开发用的计时和评测用的预热次数不同,所以导致开发机速度严重偏高,见 9.12,我一度以为自己远超排行榜第一,其实还是很垃圾。接下来就是让 agent 在新 benchmark 上做优化了,稍微重新调整下优化就到了前 10

然后我就摆烂了,保持 406 TFLOPS 的成绩没动,22 号和 23 号都没写,直到 24 号仔细看群消息才发现 25 号就截止。所以 24 号才重新开始优化,最大的提升都是在最后两天完成的。如果能够多一天,那么拿下第一绝对不是问题啊!
中国电信星辰杯
这比赛主办方是真有钱,把奖金池从 35w 扩到了 70w。28 号 23:59 刚刚截止提交,我以 C 组第一晋级了决赛,排行榜:https://cannjudge.cn/public/ct_starcup_aiop_g3/ranking
C 组是竞争异常激烈的一组,所以估计一下实力,决赛认真打的话是能进前三的,所以决赛要冲一下二等奖,争取拿 10w,当然一等奖 20w 更好了,直接一波富裕。决赛 9.30 发题,10.20 号决赛提交截止,我准备搞几个 20x 账号直接冲刺。如果真和 20w/10w 差一线,就找超算队懂算子的高手帮助优化下,感觉高手的人类智慧 + 几个 20x 账号应该是能降维打击的。当然我相信 Astra 自己能大力出奇迹,不会很需要人类智慧。
华为黑客松
我和 crykkkk,diefish 组队参加了华为黑客松(华为 Hackathon 软件难题挑战赛)。说是预计 9.28 发题,但并没有发,然后 10.31 截止,比较难受的就是这和星辰杯决赛重合了。一等奖 3w,三人分也就 1w,所以肯定是星辰杯优先级远大于这个比赛,这里拿到题目就稍微扔点 token 试试水,星辰杯结束后的 10 天再冲刺。
Stormbound
用 GPT 找到了一款九年前玩的童年回忆游戏:Stormbound。它的画风很好,以至于被我记忆了九年。我只知道和 GPT 说,画面很清爽,如果直接说是低多面体风格那应该秒了。
但是比自己玩游戏更有意思的还是让 AI 玩游戏,所以做了一个接口可以让程序打游戏,并且写了个模拟器。写模拟器还是比较困难的,许多卡牌的规则都要做实验确认,于是利用好友对战功能做了个自动实验框架,做完实验确认行为再写模拟器,最后用一个对话简单加速一下,能达到单线程 1.5x 加速。
有了模拟器就可以直接随便写个局面评估函数上 MCTS 了。上排位试了一下发现表现很差,远远不如我自己打。琢磨了一下,还是必须上神经网络。目前确认的技术路线就是 PPO 训练 + 推理时 MCTS。
在 PPO 训练之前有个有趣的预训练 encoder 环节。它处理的问题是,如何让网络知道每张牌的效果。这个问题在围棋,象棋等传统棋上是不存在的,我立刻就想到了 kaggle 宝可梦竞赛,然后翻了下 writeup,选了预训练 encoder 的方案。
在这里具体就是先监督训练 encoder + decoder 让它从原始特征预测下一步的局面,这样它必须把牌的效果 embed 进去,再撤掉 decoder 把 encoder 作为网络的初始 encoder,这样就学习了卡牌效果的表征。当然 decoder 必须非常小,防止把计算学到 decoder 里面去。
至于网络主体,仿照 lux ai 做经典的 CNN + transformer,当然这游戏是 4 乘 5 棋盘,非常不一样,还需要细致地调下参。
训练上用 C++ 模拟器 + pytorch,没有做所谓 JAX 端到端,考虑是这种带有复杂分支和递归的模拟器翻译成 JAX 大概率不会很好,而且模拟器模拟速度也确实不是瓶颈,远小于推理和梯度更新。AI 更会写 pytorch 也是一个巨大的优势。
遇到的一个问题是,encoder + decoder 的训练效果并不是很好。当然,经过简单的实验,训练欠佳的 encoder 用来启动 PPO 已经 work 了,效果确实比随机初始化 encoder 好。但是,还是要先处理完某些情况下预测不准确的问题。一个例子是 Green Prototypes 死亡后会随机给一个敌方单位活力 buff,理论上如果有三个敌人,那么应该预测各自活力概率
评论区
最新评论
--