AI芯片软件栈(三)

ChatGPT 的热度丝毫不减,而且越来越热,AI行业久违的热闹终于又回来了,好事啊。

AI行业不热闹起来,芯片卖给谁呢?

相信各家的编译器、推理引擎、解决方案团队都在琢磨怎么“搞定”大模型的推理吧? Faster TransformerEnergon-AI的代码应该也拉下来开始“参考”了吧?

除了“大模型”,某运营商的送测,最近也加了不少班吧?

忙是好事啊,就是没时间出去浪,辜负了春光啊😆。

上面这段开头是两周前写的😂(我是真懒啊),过去一周AI圈子简直太热闹了:

  • 斯坦福大学Alpaca7B

  • 清华大学ChatGLM-6B

  • OpenAIGPT-4

  • Anthropic: Claude

  • GooglePaLM API and more

  • 百度文心一言

  • Pytorch 2.0

  • Midjourney V5

  • Microsoft 365 Copilot

  • Stable Diffusion Reimagine

热到我都想躺平不看大模型的新闻了,反正就是一句话:再一次逆天,颤抖吧人类

19年底在知乎回答过一个问题:“人工智能(AI)真的会带来大规模失业吗?”,当时还是比较乐观的,认为替代的同时一定在创造新的岗位,而且替代没那么容易发生,更应该担心的是落地难带来的从业者就业问题。

上周有人在答案下问了一句:“答主,仅仅两三年,再看看AI的发展,你还坚持原来的观点吗?AI的进步已经超越了所有人当初的预计,高考能考500分的AI已经具备淘汰中低端白领的能力了。”。

三年多的时间,从AI落地难,难落地到一夜之间“可以替代人类”,这个变化真让人有点儿不知所措了。2012年的AlexNet、2015年的AlphaGo也闹出了不少动静,但是和GPT-4比起来,真是数量级的差距了。过去我们对“硬科技”的理解是很难“出圈”的,都是小圈子的话题,但这次真的变了,语言是苍白的,看一条朋友圈吧:

WechatIMG441.jpeg

什么叫“出圈”?我想,这大概应该能算了吧。

只能说OpenAI这帮人对于“通用人工智能”的远见、信念和执行能力真的太可怕了,应该能预定今年“图灵奖”了吧?

回到知乎的问题。确实原来的观点还能坚持么,能坚持多久,这个真是一个灵魂之问了。说点个人的猜测吧。

GPT-3 证明了OpenAI的这条技术路线是走得通的

GPT-3.5(ChatGPT) 让大家看到了无限可能

GPT-4 加入了多模态,让这些可能大概率真的有“可能”了

GPT-5 多模态再进化一代后,也许我们担心的“代替”就真的要来了

GPT-6 会不会真的实现真正意义上的“创造”

唯一暂时还没有解的问题就是:算力需求。

从汽车、手机、液晶电视到电力,过去无数行业的突破性发展,几乎都是打破了“拥有成本”的临界点后才真正实现了“全民普惠”。

GPT应该也跑不出这个逻辑。

终于把话题扯回主题了,继续讨论AI芯片软件栈。

去年年中的时候,和公司某领导围绕:“2023年产品的竞争力和怎么与友商竞争”做了一个讨论。

背景其实很简单,明年(2023年)大多数友商都有新芯片回来,不论是工艺制程还是Spec的定义,一定有新的竞争优势(尤其先进制程“白送”的优势),而我们自己芯片前年回来的,在下一年竞争中存在短板是大概率事件,怎么挖掘差异化竞争优势,拿上一代去PK友商,这确实是一个值得提前思考和探讨的问题。

具体讨论了什么,肯定是不能说的,说了就犯错误了。

我提到了一个观点:大家眼睛都盯着ResNetBERTYolo这些 Benchmark 模型,我们是不是考虑看看大模型分布式推理,照着几个开源项目的思路整一套分布式推理框架出来,遇到单卡装不下的大模型机会,才不会:“让‘客户’等半年”我们可以交付软件。

理由其实很简单、朴素:

  • 大模型训练成本高,用户不会没事干就去改网络重新训练,这个训练成本太高了,所以:模型变化小,稳定周期长,适配一次管很久;

  • CV领域太卷了,researcher 天天发 paper 互相卷,各种新结构,新算子太多了。编译器就做成那样,跟不上节奏变化,总是落后,模型手工适配看不到头;

  • NLP的大模型几乎都是Transformer Base的模型,编码器、解码器两个大OP计算量占比非常高,推理怎么优化,NV交了作业;

  • 大模型要上分布式推理,这个还不是市场重点,先下手搞定,sales遇到客户有需求了,可以快速交付,时间差能增加销售赢面;

  • 只要模型不是大到要出机器(4U机器可以到 16 卡,32G版本的卡,理论上可以跑 500G 的模型),就没有 IB 网络的需求,通信复杂度可控;

  • 这种分布式推理框架优化到“工业级”不是说简单把模型做个垂直切分,就万事大吉了,涉及到的软件工作量不小,临时抱佛脚肯定来不及;

  • 我感觉大力真的有可能出奇迹了,直觉这事情,有时候没法解释。

当然,我没说服。软件也不是全归我管,我也没法调动所有的资源去做这个事情的预研与尝试,想法有时候就是停留在想法。

放在今天这个时间点,再去想那一场探讨,挺有意思。

所以,回到今天想探讨的主题。

Q1眼看就要结束了,不知道大家预期中的年度销售任务完成了多少?

要是销售数字距离目标不小,及时复盘是少不了的。那么,复盘到底讨论点什么?

是真的深刻的面对真实的自己,还是欲言又止,你好我好大家好,梦想继续,期待奇迹发生?

帮助赢单,软件要提前做好哪些事情

销售赢单是一件非常、非常、非常难的事情,结果的产生往往有有各种可控,不可控的因素综合而成,与人打交道的工作,基本都是“一事一议”的状态,绝非有什么“标准公式”或者“灵丹妙药”。

赢的莫名其妙,输的不明不白的案例太多太多了。

但是,也绝非没有一些观察方法与判断逻辑,对销售工作的可能结果做出预测。否则岂不是所有销售行为都变成了“赌命”?销售管理和销售预测岂不是都是“拍脑袋”了?

所以,做为创业公司,在资源有限的情况下, 怎么样合理分配资源,将有限的资源投入到高概率的项目上,是创业公司每个员工都应该思考的问题。

对的,全民皆兵才是创业公司状态。

但是看看业内好几家公司,产品卖的好不好不知道,大公司病一身,内斗也从未停息。

一声叹息🤐。

这个话题,其实在第一篇:「AI芯片软件栈(一)」的“软件栈规划”中基本都提到了,这次试着换个角度再来捋一下这个问题。

贝叶斯统计

既然需要在没有过多历史数据可以依靠的情况下,判断“项目优先级”,似乎没有比贝叶斯更有效的工具了。

贝叶斯统计是什么就不解释了,毕竟咱们做的是算法相关的事情,不知道Bayesian statistics有点儿说不过去了。

看起来贝叶斯和要讨论的主题似乎八杆子都打不着,没事,耐心往下看,别退出啊,退出你就亏了。🤣🤣🤣

我们知道,贝叶斯统计有两个非常基本的概念:先验概率(分布)后验概率(分布)。我们就试着造一组数据看看怎么基于“先验”拍脑袋的概率,推算后更新出“后验”,用这个模型帮我们在拍脑袋确定判断商机的优先级的时候,有一定的“道理”可讲。

友情提示:

销售赢单是一件非常难的事情,以下内容纯属瞎掰,切勿对号入座。

不必纠结数据真实性,因为所以数据都是我拍脑袋出来的。

为了写的短一点,让我们把一个“项目”的成单过程精简成三步:

  • 发现销售线索,对接到干系人
  • 对方给了几个公开模型做送测验证
  • 对方要求提供SDK、工具链,集成私有模型做业务测试

意思到就行了,忽略其余的环节,简化问题,假设三步结束后,对方就能做出是否下单的决定。

商机判断

一般情况下,销售接触到销售线索后,基本就是先“摸”一下决策链,看看有没有可能找的到“熟人”或者“关系”,有了人脉,然后再去打听,得到的项目信息和竞争情况就相对靠谱多了。

当然,一个项目不可能就两家竞争,但是为了简化问题,以下就假定只有:己方竞对两家。

好了,下面有请:先验概率

在公开市场打单,一般情况下,在局面不明的情况下,大家各有各的人脉,产品各有千秋,理智一点,赢单机会五五开是比较合理的推测,所以我们假定这样一个概率:

己方(赢单): 0.5

竞对(赢单): 0.5

既然,准备跟进这个销售机会了,那么首先产品肯定与需求基本匹配的,否则就是做无用功了。在“销售管理”稍微靠谱点的公司,大概率都会有一个“商机立项”的流程,以避免花冤枉钱和冤枉精力。

所以,有理由大胆的假设销售有一个“熟人”或者“关系”会对我们提供帮助条件概率,如下表:

  给予帮助 没有帮助
己方 0.8 0.2
竞对 0.4 0.6

简单解释如下:

  • 既然找到关系了,那么说对方提供帮助是很可能的事情,当然谁也不会把话说满了,所以就假设有 80% 的概率对我们提供帮助,即概率:0.8
  • 既然找到关系了,那么我们自然“有理由”假定不会向竞对提供帮助了,在可能的情况下,还会做出一些倾向性的选择,所以就假设只有 40%的概率会对竞争对提供帮助(当然这个概率就不是“正向”的帮助了🤣),即概率:0.4

结合“赢单概率”和“是否有帮助”的条件概率,可以有下面这样一个图:

WechatIMG442.jpeg

这四项的概率分别是:

己方 竞对
0.5*0.8=0.4 0.5*0.4=0.2
0.5*0.2=0.1 0.5*0.6=0.3

概率之和等于1,这就没毛病。

下面有请:后验概率

我们当然期望事情顺着我们的需要发展:找到的“关系”对我们提供“帮助”。同时,对竞对也提供“帮助”,虽然这个帮助可能是逆向的。

所以,“没有帮助”这个情况就不会发生了,这个时候,上面的概率就变成下面这样了(不提供帮助这个事情没有发生):

己方 竞对
0.5*0.8=0.4 0.5*0.4=0.2

算概率要首先恢复到标准化条件(即概率之和为1),所以,两个概率就分别是:2/31/3

总结一下:

基于赢单概率50%这个先验概率及我们有80%的概率获得朋友的支持这个条件概率,我们可以进行贝叶斯更新:

己方赢单的后验概率是:67%

用人话解释的话就是:

悲观版本:即使有很好的关系帮忙,在赢面相等的竞争情况下,赢的概率只有:67%

乐观版本:在赢面相等的竞争情况下,如果能找到很好的关系帮忙,赢的概率可以提升接近35%幅度到:67%的赢面。兄弟们加油啊💪。

语言的艺术就是这么有趣。

公开模型送测

上面已经把原理、假设逻辑和计算过程交代清楚了,后面就不赘述了,节约篇幅。

公开的标准模型么,大家其实都“优化”的很好了,要是这都还没搞定,实在是说不过去了。

但是,过去这几年,只有是稍微大点的AI公司,几乎没有没接触过AI芯片公司的了,怎么测,测哪些模型,其实人家心理都有数,唯一的区别就是暗示你什么模型搞不定就别来了,还是抹不面子,安排个实习生对接一下测试。

所以就像运营商的这次送测一样,大概率会安排多个类型的模型测试,各种类型的模型都安排上,短板无所遁形。

基于这种认识,当然也不能涨别人威风灭自己士气,就当送测我们能过关的概率:60%,竞对能过关的概率50%

这个是真拍脑袋,想好事了,不同类型的客户,模型关注领域差别很大,关注点是“吞吐”还是“延时”都可能不一样,就不较真了,怎么对自己有利,怎么拍脑袋吧。

  通过 没通过
己方 0.6 0.4
竞对 0.5 0.5

因为为有了刚才的后验概率,所以这次的赢单的先验概率就用:67%,去掉不通过的情况后的概率是:

己方 竞对
0.67*0.6=0.402 0.33*0.5=0.165

标准化后,己方赢单的后验概率是:70%

嗯,如果我们对自己信心不算非常足,但是也不是太轻视竞争对手,到这个阶段我们已经有了七成的赢面。

掌声👏。

私有模型开发、业务集成

好了,到了最难的,最不好办的阶段了。

下面这一段,去年卖卡卖的比较好的几家友商就忽略吧,能有真实客户买单,我猜你们软件没有那么惨。

这里要多点假设,才能让问题可能更扎心清晰一点:

  • 假设竞对兼容CUDA,而你不兼容;

  • 假设你的编译器还不完善,算子库覆盖也不够,会出现CodeGen失败的问题;

  • 假设你的文档写的不够清晰,不幸的是,文档和软件版本没有同步更新;

  • 假设的你的编程模型和NV的那一套差距较大,学习成本较高;

  • 假设你的工具链能给开发者提供的调试、性能分析的工具还比较基础,不好用;

  • 假设你的服务器适配工作进展不如预期,遇到陌生的服务器稳定性不够(BMC更别提了);

好了,不假设了,再假设日子没法过了🤐。

而且,有个问题不用回避:NVIDIA的软件生态就是AI领域的事实标准,所有开发者的心智中已经有了“就应该这样”的观点。

为了增加信心,假设客户有国产化需求,所以,只要差不多,就有机会落单。

另外,我们必须要承认兼容CUDA这件事,在目前这个阶段,优势还是很明显。

只能做这样一个假设了:

  通过 没通过
己方 0.2 0.8
竞对 0.6 0.4

因为为有了刚才的后验概率,所以这次的赢单的先验概率就用:70%,去掉不通过的情况后的概率是:

己方 竞对
0.7*0.2=0.14 0.3*0.6=0.18

标准化后,己方赢单的后验概率是:44%

看到了吧,这个结果其实大家都知道:软件的整体能力不强、模型泛化不强,几乎就是为什么不能落单的最关键因素,手工优化几个模型建立的“自我信心”在现实面前,几乎荡然无存。

只不过,用贝叶斯算一下,能让我们的感性认识变得更理性。

仅此而已。

软件要做什么

要做什么?要做的太多了,各家情况都不同,泛泛而谈的话,我也不知道该做什么,才能真正帮助到销售赢单,真的,这种事,只能就事论事。

客户行业领域,关键岗人力储备,软件现状,解决方案能力,销售控制力这些都会影响做决策的思考重心和出发点。

山头多不多,软件一把手懂不懂AI软件栈,对软件工程理解到什么程度,有没有做过算法工程化和客户项目落地,核心团队战斗力,这些都会影响做决策的顾忌与决策的长远性。

高瞻远瞩的故事要讲的激动人心,脚踏实地的执行计划要极其靠谱,与实际能力匹配,而不是期望:招几个软件大牛进来计划才能成立。

当然,能不能依据实际情况做出合理规划和路线图,而不是“人云亦云”或者“贪大求全”的追求“技术理想”,这其实对核心的几个技术负责人的经验和理智程度挑战挺大的。

操盘手有了,路线图定了,架构师功力如何,对NV的生态的使用和研究程度,对友商软件栈调研的深度,都决定了最重要的架构编程模型设计环节如何做出选择和取舍。

正在看GTC,真感觉越听越慌,核弹变成集群了,互联更猛了。面对NVIDIA这样强大的行业先行者,如果说有人能提出一个与其竞争的“通用解”,不是骗子就是骗子。

送测十几、二十个客户,一单没成的公司不是没有,大胆推测还不止一家。

互联网、运营商、云计算这些,之前就提过,要求高,过关难度非常大。那么,对于“小厂”和垂直领域的“ISV”如果总是送测而不能落单,真的是要反思了:

到底哪个环节出了问题,怎么痛定思痛。

用我最喜欢的一句话来关闭软件栈这个话题:

公司的愚蠢在于一次次用同样的方式去做同样的事,但确期待会有不同的结果。

——Edward Yourdon《死亡之旅》 P-1

重要的是,产品卖的不好,不是说所有的都是软件的兄弟们来背了。

一方面,我们每个人都是一片“雪花”,另一方面:

没有卖不出去的货,只有不会卖的人。

在怼天怼地怼软件的时候,可能要更多的反问自己一句:

软件这个情况,外面不清楚,内部应该是多少很明白的(当然也不排除真有掩耳盗铃的),销售为什么不去找能力匹配的客户?

明知不可为而为之,有所不为,方有可为。

番外篇

有一件有趣但是并不意外的事情。有很多的加了微信的小伙伴,约咖啡,约饭局,或者微信直接问,都在“显式”或者“隐式”的对一个问题表示了好奇:

按常理,一个搞技术的,很难对销售、市场、产品有非常深入的理解和实操;或者,反过来,做销售、市场的,可能有技术背景,但是技术深度和广度,显然不能和一直在技术线的同学比。

两条线都能说个一二三,你到底做什么的?

简单的答案可能就是:我是个奇葩。

之前有提到过去做CTO时候的事情,再往前的事情基本上能够回答上述问题,大概说一下。

早年间,在某行业的项目交付领域,我是“名声在外”的,用现在的话说是“大V”级别。有这样一个江湖虚名,受邀去某司做了项目总监,也算是合情合理的安排。

但是,不曾想坑有点儿大,公司情况已经不太好了,多不好呢?

  • 现金流随时要断,当月没回款,发工资就要靠贷款;
  • 老板对原来高管团队不满,准备大换血;
  • 找了三个人来做:CEOCTOCOO,把原来的全部拿掉;
  • 这三个人都不是等闲之辈,各自过去创业的公司都卖了,财务自由;

事情好的一面:我过去不认识这三个大佬,而和之前的高管团队非常熟悉,他们也知道我不是老板找来替换他们的,所以磨合期没什么难度,我做好我自己分内的事情就好。

事情坏的一面:公司情况真有点微妙,几乎每个月初财务都要找我这个“项目总监”问当月哪个项目能回款,能回多少,回不来,发不了工资“算你的”。

事情更不好的一面:那三个大佬几乎和公司每个重要员工都做了面谈,一直没找我,等到找我聊的时候没头没脑一句:你做好准备吧。

经营状况不好,开源节流是必须要解决的问题。截流容易,见效快,肯定先从裁员开始了。由于项目这边人最多,裁员我分到的名额也多,只能配合公司安排,该谈话谈话,该强硬强硬。

裁员,空降高管,内斗和乱是跑不了的,这都是标准剧情了,没什么意外的。销售全是老高管的旧部,客户又在人家手里,开源这事,可以想到会有多大阻力和难度。

CTO把技术人员和现有产品梳理清楚,丢下一句话:研发没一个靠谱的,架构完全不行,代码没一行值钱的。然后跑路了,跑路前给老板建议,不用再找人了,让我上就行了。

毫无意外,COO很快也跑路了,同样给老板建议,这个人靠谱,交给他就行。

于是,稀里糊涂的,我就成了公司最大的“山头”:集项目总监CTOCOO于一身的VP

说实话,过去了这么多年,我依然不理解为什么老板就能信了他们的话。

这个安排对我来说,一方面是天坑,太累了,一方面是个完全不可能有第二次的磨练:

  • 销售签不下合同了,方案客户不买单,要去售前支持
  • 项目回款不顺利了,要去见客户,挨骂,喝大酒,解决问题
  • 项目组抱怨软件开发不行,导致客户不满意,要解决开发问题
  • 财务月月盯着我问回款,我要和销售搞好关系,一起把客户搞定,回款
  • 回款和签单预测精确到月,销管会议每周都有,一周过签单,一周过回款,月底问个底朝天
  • 财报,付款计划这些都是财务发老板,老板发我,我觉得没问题了,再原路返回才算通过

就这样,亦敌亦友也好,同床异梦也罢,反正多种角色在一个人这里了,绕也绕不过去,搞也搞不死,大家只能磨合。

我怎么才能让自己“活”下去呢?

我不可能为了帮销售签单,就出去瞎忽悠,因为开发,交付还是我,我不能自己坑自己。

我不可能为了交付容易,开发降低技术复杂度,什么都躲,销售签不了合同,任务完不成,我还是连坐。

也不可能为了研发工作量小,软件随便糊弄,导致交付困难,出去喝大酒受罪的还是我。

更不能在所有花钱的环节不谨慎,盯着我的眼睛太多了。

我只能选择:凡事通盘考虑,站在对公司是最优解对立场上做出判断,做出选择,做出决策,先得罪人,再拿事实说话,再回头解释。

否则,一定死的很惨。

当然了,我干的还算不错。

一口气裁了三成多,第二年的合同、回款都高于上一年(人效基本翻一番),且公司从上年亏损变成了当年盈利,而且也没有为发工资去贷款。

当然了,代价也不小,重压之下,突然得了严重的中耳炎,一只耳朵穿孔,导致听力永久的下降。

对了,再早的时间,刚工作不久,老板让我去干了一年销售,说是锻炼锻炼我。

所以,现在能理解我怎么可以做到全链条打通了来看这件事吧。

欢迎加我的微信“doubtthings”,欢迎交流与探讨。

欢迎关注我的公众号“书不可尽信”,原创文章第一时间推送。