AI芯片软件栈(三)
ChatGPT 的热度丝毫不减,而且越来越热,AI行业久违的热闹终于又回来了,好事啊。
AI行业不热闹起来,芯片卖给谁呢?
相信各家的编译器、推理引擎、解决方案团队都在琢磨怎么“搞定”大模型的推理吧? Faster Transformer
,Energon-AI
的代码应该也拉下来开始“参考”了吧?
除了“大模型”,某运营商的送测,最近也加了不少班吧?
忙是好事啊,就是没时间出去浪,辜负了春光啊😆。
上面这段开头是两周前写的😂(我是真懒啊),过去一周AI圈子简直太热闹了:
斯坦福大学:
Alpaca7B
清华大学:
ChatGLM-6B
OpenAI:
GPT-4
Anthropic:
Claude
Google:
PaLM 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
比起来,真是数量级的差距了。过去我们对“硬科技”的理解是很难“出圈”的,都是小圈子的话题,但这次真的变了,语言是苍白的,看一条朋友圈吧:
什么叫“出圈”?我想,这大概应该能算了吧。
只能说OpenAI
这帮人对于“通用人工智能”的远见、信念和执行能力真的太可怕了,应该能预定今年“图灵奖”了吧?
回到知乎的问题。确实原来的观点还能坚持么,能坚持多久,这个真是一个灵魂之问了。说点个人的猜测吧。
GPT-3 证明了OpenAI的这条技术路线是走得通的
GPT-3.5(ChatGPT) 让大家看到了无限可能
GPT-4 加入了多模态,让这些可能大概率真的有“可能”了
GPT-5 多模态再进化一代后,也许我们担心的“代替”就真的要来了
GPT-6 会不会真的实现真正意义上的“创造”
唯一暂时还没有解的问题就是:算力需求。
从汽车、手机、液晶电视到电力,过去无数行业的突破性发展,几乎都是打破了“拥有成本”的临界点后才真正实现了“全民普惠”。
GPT应该也跑不出这个逻辑。
终于把话题扯回主题了,继续讨论AI芯片软件栈。
去年年中的时候,和公司某领导围绕:“2023年产品的竞争力和怎么与友商竞争”做了一个讨论。
背景其实很简单,明年(2023年)大多数友商都有新芯片回来,不论是工艺制程还是
Spec
的定义,一定有新的竞争优势(尤其先进制程“白送”的优势),而我们自己芯片前年回来的,在下一年竞争中存在短板是大概率事件,怎么挖掘差异化竞争优势,拿上一代去PK友商,这确实是一个值得提前思考和探讨的问题。具体讨论了什么,肯定是不能说的,说了就犯错误了。
我提到了一个观点:大家眼睛都盯着
ResNet
、BERT
、Yolo
这些 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
结合“赢单概率”和“是否有帮助”的条件概率,可以有下面这样一个图:
这四项的概率分别是:
己方 | 竞对 |
---|---|
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/3
和1/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”级别。有这样一个江湖虚名,受邀去某司做了项目总监,也算是合情合理的安排。
但是,不曾想坑有点儿大,公司情况已经不太好了,多不好呢?
- 现金流随时要断,当月没回款,发工资就要靠贷款;
- 老板对原来高管团队不满,准备大换血;
- 找了三个人来做:
CEO
、CTO
、COO
,把原来的全部拿掉; - 这三个人都不是等闲之辈,各自过去创业的公司都卖了,财务自由;
事情好的一面:我过去不认识这三个大佬,而和之前的高管团队非常熟悉,他们也知道我不是老板找来替换他们的,所以磨合期没什么难度,我做好我自己分内的事情就好。
事情坏的一面:公司情况真有点微妙,几乎每个月初财务都要找我这个“项目总监”问当月哪个项目能回款,能回多少,回不来,发不了工资“算你的”。
事情更不好的一面:那三个大佬几乎和公司每个重要员工都做了面谈,一直没找我,等到找我聊的时候没头没脑一句:你做好准备吧。
经营状况不好,开源节流是必须要解决的问题。截流容易,见效快,肯定先从裁员开始了。由于项目这边人最多,裁员我分到的名额也多,只能配合公司安排,该谈话谈话,该强硬强硬。
裁员,空降高管,内斗和乱是跑不了的,这都是标准剧情了,没什么意外的。销售全是老高管的旧部,客户又在人家手里,开源这事,可以想到会有多大阻力和难度。
新CTO
把技术人员和现有产品梳理清楚,丢下一句话:研发没一个靠谱的,架构完全不行,代码没一行值钱的。然后跑路了,跑路前给老板建议,不用再找人了,让我上就行了。
毫无意外,COO
很快也跑路了,同样给老板建议,这个人靠谱,交给他就行。
于是,稀里糊涂的,我就成了公司最大的“山头”:集项目总监
,CTO
,COO
于一身的VP
。
说实话,过去了这么多年,我依然不理解为什么老板就能信了他们的话。
这个安排对我来说,一方面是天坑,太累了,一方面是个完全不可能有第二次的磨练:
- 销售签不下合同了,方案客户不买单,要去售前支持
- 项目回款不顺利了,要去见客户,挨骂,喝大酒,解决问题
- 项目组抱怨软件开发不行,导致客户不满意,要解决开发问题
- 财务月月盯着我问回款,我要和销售搞好关系,一起把客户搞定,回款
- 回款和签单预测精确到月,销管会议每周都有,一周过签单,一周过回款,月底问个底朝天
- 财报,付款计划这些都是财务发老板,老板发我,我觉得没问题了,再原路返回才算通过
就这样,亦敌亦友也好,同床异梦也罢,反正多种角色在一个人这里了,绕也绕不过去,搞也搞不死,大家只能磨合。
我怎么才能让自己“活”下去呢?
我不可能为了帮销售签单,就出去瞎忽悠,因为开发,交付还是我,我不能自己坑自己。
我不可能为了交付容易,开发降低技术复杂度,什么都躲,销售签不了合同,任务完不成,我还是连坐。
也不可能为了研发工作量小,软件随便糊弄,导致交付困难,出去喝大酒受罪的还是我。
更不能在所有花钱的环节不谨慎,盯着我的眼睛太多了。
我只能选择:凡事通盘考虑,站在对公司是最优解对立场上做出判断,做出选择,做出决策,先得罪人,再拿事实说话,再回头解释。
否则,一定死的很惨。
当然了,我干的还算不错。
一口气裁了三成多,第二年的合同、回款都高于上一年(人效基本翻一番),且公司从上年亏损变成了当年盈利,而且也没有为发工资去贷款。
当然了,代价也不小,重压之下,突然得了严重的中耳炎,一只耳朵穿孔,导致听力永久的下降。
对了,再早的时间,刚工作不久,老板让我去干了一年销售,说是锻炼锻炼我。
所以,现在能理解我怎么可以做到全链条打通了来看这件事吧。
欢迎加我的微信“doubtthings”,欢迎交流与探讨。
欢迎关注我的公众号“书不可尽信”,原创文章第一时间推送。