首页 > 都市言情> 首富从AI浪潮开始

首富从AI浪潮开始 第195节

  姜亦心还是第一次见韩总用这种语气说话。

  “好的韩总!”姜亦心顿了一下,补充道:

  “对了,还要多亏陈总新设计的评审流程,我们最近在开发基于大模型的评审工具,除了用BugKiller做bug检测之外,还加入对代码风格和可维护性的建议。”

  听到“陈总”两个字,韩路一恍惚了一下,他还以为是陈博文。

  然后他才意识到,姜亦心指的是陈建业。

  哦,对了,他升技术负责人了。

  韩路一又表扬了姜亦心两句,给小姜夸的都不好意思了才离开。

  他还要去十三楼模型组的地方找赵文渊。

  ……

  “文渊,你说的不太顺利,具体是指什么?”韩路一问道。

  “韩总,国产适配的事,恐怕不可行。”赵文渊苦着一张脸,开口道。

  “技术上有难度?”韩路一挑了挑眉,已经准备自己开视界上了。

  “不是。”赵文渊叹了口气,“工程量太大了。”

  “CUDA做了十几年的生态,你让我带着模型组这几个人,别说适配生态了,一个算子的迁移都搞不定。”

  韩路一倒是不觉得意外。

  生态要是好做,国内的这些硬件厂商早做完了,哪还有这些问题?

  “拿个例子来看看。”韩路一说。

  赵文渊觉得韩路一有点儿多此一举。

  就算你再能写,也不能让你一个一个写过去啊。

  况且你不是已经在做标注了吗?

  赵文渊没把这些话说出来,乖乖的从代码库里找出了一个算子的代码做例子。

  scaled_dot_product_attention

  这是变形金刚(Transformer)架构中比较重要的一个算子,可以说没有这个就做不了大模型。

  “N卡那边有专门的函数,性能和精度都做过深度优化,我手头连个等价实现都没有。”

  韩路一拉过一个椅子坐在电脑前,接过鼠标,打开浏览器把相关的CUDA源代码、国产显卡的IR文档、HCCL SDK都打开来。

  赵文渊在旁边看的一愣:

  “韩总,你要干什么?——你不会是要,自己写吧。”

  韩路一头也没抬:“试一试。”

  试一试?赵文渊心里吐槽,韩总,这可是一个团队几个月的工作量。

  韩路一已经打开视界,把CUDA实现中的几个关键地方都扫了出来,然后把要适配国产显卡的要点总结了一下。

  接着韩路一在赵文渊的电脑上打开了姜亦心的AI智能体编程工具。

  但他没把视界看到的关键信息都输进去。

  他想先看一眼,仅靠模型自己能做到什么程度。

  他输入了第一段提示词:

  “把这个 CUDA算子翻译成国产卡 IR实现。要求精度误差小于 1e-5,性能不低于 N卡实现的70%。下面三份文档作为上下文。”

  然后把浏览器里的链接地址都打了进去。

  很快AI智能体开始自己分解任务、解决任务,最后汇总。

  三分钟后,第一版结果出来了。性能接近 68%,但精度偏差太大了。

  一个大大的红色FAIL显示在屏幕上。

  赵文渊在旁边松了一口气。

  这才正常嘛。

  他对韩路一说:“韩总你看,这就是我说的难点,做不过来——”

  韩路一没有回应赵文渊。

  他重新打开CUDA的源代码,开了视界。

  普通人看代码,看到的是字符。赵文渊看代码,看到的是逻辑。

  但视界让韩路一看到的是另一层东西,不只是代码在做什么,还有代码为什么这样做。

  每一个设计选择背后的权衡,都像批注一样浮现在代码旁边。

  为什么softmax没有用最直觉的实现方式,而是拆成了三个阶段?因为直觉实现在长序列上会有数值溢出。

  为什么矩阵乘的分块是这个尺寸,不大也不小?因为再大shared memory放不下,再小会产生内存冲突。

  这些东西没有写在任何文档里。它们是英伟达的工程师经过无数次实验之后沉淀下来的经验,藏在代码的结构里,只有真正理解硬件的人才能读出来。

  赵文渊不是读不懂代码,他只是没办法在几天之内,就把别人几年的工程经验全部提炼出来。

  但是视界可以,韩路一可以。

  韩路一关掉第一版的提示词,重新输入。

  这一次,他没有让智能体自由发挥。

  而是把视界看到的东西直接输入进去。

  “softmax必须使用 online algorithm三阶段,不要使用 naive softmax。当前精度问题出在第二阶段 reduce,局部最大值和指数和更新顺序要保持一致。”

  “矩阵乘 tile使用64x64,tile过大 shared memory不够,过小会增加 bank conflict。”

  “reduce时按4-stride展开,避免 bank conflict。”

  “K/V矩阵按 row-major缓存在 shared memory,避免跨 bank连续冲突。”

  “先保证精度,再做性能优化。”

  回车。

  智能体又开始勤勤恳恳的劳动了。

  五分钟后,一个大大的绿色PASS出现在屏幕上。

  赵文渊在旁边眼珠子都快要瞪出来了。

  “不是……这怎么回事?”

  他不顾韩路一还坐在电脑前,把头凑到屏幕前面,把测试报告从头到尾看了一遍。

  精度误差:2.3e-6,远低于1e-5的要求。

  性能:N卡实现的83%。

  不是70%,是83%。

  赵文渊又把生成的代码拉出来,逐行看了一遍。

  他越看越沉默。

  这段代码根本不是那种“能跑就行”的粗糙实现:softmax用的是三阶段online algorithm,reduce的展开策略干净利落,shared memory的使用几乎没有浪费。

  这是一个对底层硬件有深刻理解的人才能写出来的东西。

  不,准确地说,是一个对底层硬件有深刻理解的人,才能指导AI写出来的东西。

  赵文渊转过头,看着韩路一。

  “韩总,你第二次输入的那些提示词——softmax三阶段、tile 64x64、4-stride展开——你怎么知道的?”

  韩路一靠在椅背上:“我看了文档。”

  “我去,原来你看了文档啊,不早说。”赵文渊先开了个玩笑,然后声音突然拔高了,“我也看了两天文档,跑了十几个测试,我都没找到这个tile尺寸,你看了几分钟就看出来了?”

  韩路一没有回答,只是笑了笑。

  赵文渊盯着他看了好一会儿,最后像是泄了气一样靠回椅子上。

  “行吧。”他说,“我不问了。”

  他之前不是没想过用AI来做这些工作,但是AI根本做不了。每次跑出来的结果,不是卡死,就是偏差太大。

  怎么韩路一一上手就好用了?

  赵文渊现在只想火速删掉发给韩路一的那个共享文档的标题。

  韩路一在他眼前,把他觉得不可能的事情做出来了。

  如果这个不是偶然呢?

  如果scaled_dot_product_attention可以这样做,那其他算子呢?

  什么暂无可行性啊?

  什么叫“别想了,没戏”啊?

  这不是有戏了吗?

首节 上一节 195/298下一节 尾节 目录txt下载

上一篇:这个导演不讲规矩

下一篇:返回列表

推荐阅读