热点|Hot CONTENTS/目录 谷歌正式发布WebGPU!90多位贡献者研发6年,浏览器终于可以利用底层硬件了ChatGPT已过时?Auto-GPT迅速走红,无需人类插手自主解决复杂任务,GitHub标星5万马斯克开源Twitter算法!推荐机制正式公开,GitHubStar数已破万 访谈文章|Interview CV又卷起来了!MetaAI开源万物可分割AI模型,11亿+掩码数据集可提取 用C++写出比MySQL快800倍的数据库,ClickHouse创始人:融合数据库该“卷”的还是性能和速度 人口不足千万、芯片厂近200家,以色列技术人如何在芯片领域“挖金山”?|独家对话Pliops创始团队 案例研究|CaseStudy 在全球掀起史诗级的狂欢,ChatGPT真正颠覆了什么?|深度 从石器时代到成为“神”,一文讲透eBPF技术发展演进史浅析三款大规模分布式文件系统架构设计 赋能直播行业精细化运营,斗鱼基于ApacheDoris的应用实践 推荐文章|Article 基于Vue和Canvas,轻舟低代码Web端可视化编辑器设计解析|低代码技术内幕云原生时代,如何建设稳定性可观测体系? 弃用Electron,微软重新设计MicrosoftTeams:速度提升2倍,内存减少50%裁员潮过去、削减中层管理潮又来了:升管理保饭碗,不灵了 云原生时代,Java会走向末路吗? 农牧数字化:IT要冲到前面去引领,“天花板”才能被打开 II 架构师 2023年05月刊 本期主编凌敏 流程编辑丁晓昀发行人霍泰稳 反馈feedback@geekbang.com 商务合作hezuo@geekbang.org 内容合作editors@geekbang.com 特别专题|Topic 备受云厂商们推崇的Serverless,现在究竟发展到什么水平了? 从公有云方案转向谷歌开源Knative,网易云音乐的Severless演进实践探索17年,亚马逊云科技重新定义Serverless 视频推荐|Video 新一代Serverless事件中间件EventMesh正式毕业为Apache顶级项目 本月,这些视频值得一看! 卷首语 作者:褚杏娟 通常意义上来讲,Serverless可以看作是一种云计算服务模型,它允许开发者在不需要管理服务器的情况下通过事件驱动的方式运行代码。与传统应用服务开发模式不同,开发者只需编写并上传他们的应用代码到云服务商提供的平台上,云平台会自动为应用分配资源,并处理应用的部署、扩缩容。这使得开发者可以更加专注于自己的业务需求和应用逻辑,而不需要考虑服务资源的申请、创建、管理和维护等。 从这个意义上讲,我们也可以认为Serverless是一个计算范式,它解决资源托管、调度、运维管理等一系列平台型问题,可以看作是DevOps的进一步延伸。 从应用开发视角来看,Serverless包括FaaS(FunctionasaService)和BaaS(BackendasaService)两部分。在FaaS中,开发者编写的代码会被封装成一个或多个函数,运行在云平台上。当请求到达时,云平台自动为函数分配计算资源,拉起函数并执行。执行完成后,平台根据一定的保活策略决定资源的复用或者释放。FaaS模型不仅可以提高应用的可伸缩性和弹性,还可以大幅降低应用运维的成本。BaaS则致力于更广泛意义下的Serverless化,包括对象存储、缓存、数据库、消息等全栈后端服务的按需弹性、按用付费等。 谈到Serverless发展历程,从2008年Google推出AppEngine算起,至今已有15年的时间,期间经历了多次迭代,主要经历了以下几个阶段。 Innovators(2008年~2014年):GoogleAppEngine的发布,使得开发者无须再关心资源分配,也无需关心底层操作系统、硬件和网络等基础设施,对传统应用开发方式具 有变革性意义,但AppEngine并没有使Serverless理念流行起来,Serverless概念本身是在2012年由Iron.io公司率先提。2014年AWS发布Lambda之后,真正使Serverless流行起来。 EarlyAdoptors(2016年~2018年):这期间,主流云计算平台陆续推出了Serverless系列产品,如MicrosoftAzure发布AzureFunctions、GoogleCloudPlatform发布CloudFunc-tions和Firebase、华为云发布FunctionGraph等。2018年Gartner将Serverless列为“十大未来将影响基础设施和运维的技术趋势之一”。 EarlyMajority(2019年~今):2019年UCBerkeley发表论文《CloudProgrammingSim-plified:ABerkeleyViewonServerlessComputing》,预言Serverless将成为云计算下一代的编程范式,提出Serverless=FaaS+BaaS的定义框架,并提出存储等后端的BaaS化、异构硬件支持、资源细粒度隔离等Serverless的核心问题。同期,华为云提出通用Serverless (General-purposeServerless)的理念,支持有状态应用、程序自动并行、大规模异构资源管理等,帮助企业解决更广泛的计算、运行与交付问题。 谷歌正式发布WebGPU!90多位贡献者研发6年,浏览器终于可以利用底层硬件了 作者褚杏娟核子可乐 经过六年的开发,当地时间4月6日,谷歌Chrome团队正式发布WebGPU,用于在网络上进行高性能3D图形与数据并行计算。WebGPU现已在Beta测试阶段的Chrome113中默认启用。 WebGPU是一种新型Web图形API,具有显著减少同等图形规模下JavaScript工作量、将机器学习模型的推理效率提升3倍以上等优势。之所以能实现这样的飞跃,要归功于其令WebGL无法实现的灵活GPU编程和高级功能访问能力。 据悉,WebGPU的首个版本已经在ChromeOS、macOS和Windows上开放,对其他平台的支持将于今年晚些时候推出。 “Web图形的新曙光” WebGPU是一种新型WebAPI,能够公开现代硬件功能并允许在GPU上执行渲染与计算操作,功能定位类似于Direct3D12、Metal和Vulkan。与WebGL系列API不同,WebGPU能够访问更高级的GPU功能,并为GPU上的常规计算提供一流支持。该API在设计上充分适应Web平台,提供符合习惯的JavaScriptAPI、promises集成、支持导入视频和完备错误提示信息的完善开发者体验。 WebGPU的首个版本将成为未来更新和功能增强的基础构建块。该API后续还将提供更高级的图形功能,并鼓励开发者提出对其他功能的申请。Chrome团队正计划提供对着色器核心的深入访问,以便在WGSL(WebGPU着色语言)中进行更多的机器学习优化和额外的人体工程学调整。 根据介绍,WebGPU是W3C“WebGPU”社区小组协同努力的结果,其中包括来自Mozilla、苹果、英特尔和微软等主要公司的贡献。从2017年初始设计以来,经过六年的开发(涉及90位贡献者、2000次提交、3000个问题),WebGPU的首个实现终于正式登陆Chrome,同时可支持Firefox和Safari。 Chromium和Dawn库和Firefox的wgpu库均可作为独立包使用,提供出色的可移植性与人体工程学层,将操作系统GPUAPI抽象出来。在本机应用程序中使用这些库时,开发者还可轻松通过Emscripten和Rustweb-sys移植向WASM。 WebGPU的首个版本可在支持Vulkan的ChromeOS设备、支持Direct3D12的Windows设备和macOS的Chrome113中使用。Linux、Android及其他现有平台的扩展支持也将在年内推出。除Chrome之外,WebGPU目前还初步登陆了Firefox和Safari浏览器。 许多被广泛使用的WebGL库正在或已经能够支持WebGPU,因此用户只需做单行变更即可使用WebGPU: •Babylon.js已经全面支持WebGPU。 •PlayCanvas宣布可初步支持WebGPU。 •TensorFlow.js可支持大部分运算符的WebGPU优化版本。 •Three.js正在着手实现WebGPU支持。 兴奋与担忧同在 据悉,WebGPU的诞生实际上就是大厂角力的结果。2016年,Google发现WebGL存在一些问题,于是就提出了一个新的提案叫WebGLNext,称要再做一个精确的图形API。然后,其他的厂商也纷纷跟进,Mozilla、Apple、Opera都提出了自己的概念。 这个时候,Apple起名部的工作人员向W3C提交了一个叫做WebGPU的提案,W3C决定采纳这个名字作为未来新标准的命名,并且成立工作组来做WebGPU的工作。 因为这个名字是Apple起的,所以最后只有Apple的提案进入了他们“gpuweb-proposals”的代码仓库,不过为了避免重名造成的误解和冲突,Apple最初那个提案的名字被改为了WebMetal。 看到W3C接纳了Apple的提案,Mozilla不甘心,转而又向KhornosGroup提交了一个基于Vulkan的命名为WebGLNext的提案,但这已经是WebGL的最后一搏了。这最后,浏览器厂商用脚投票,站到了WebGPU这边。 如今,经过多年等待,谷歌团队正式发布WebGPU让很多开发者感到激动。“这非常令人兴奋!” “这是一个巨大的里程碑,也是更大旅程的一部分。在我开发高级2D渲染器Vello的工作中,我开始相信WebGPU是游戏规则的改变者。我们将拥有可在任何地方运行的、相当现代的基础架构:Web、Windows、Mac、Linux、ChromeOS、iOS和Android。”开发者raphlinus表示。 当有人问起,“假设您是ML从业者。您是否仍会推荐学习WebGPU,而不是说花更多时间在CUDA上?”时,raphlinus给出建议,“这完全取决于您的目标。如果您正在研究实际的机器学习算法,那么使用像TensorFlow或Torch这样的框架,它们提供了所有张量操作并抽象出硬件。如果您今天想在硬件上获得最大性能,请坚持使用Nvidia并选择CUDA。如果您对跨一系列硬件部署感兴趣,或者想要亲自动手实现算法(例如wonnx),那么WebGPU是您的不二之选。” 开发者“FL33TW00D”表示,“这非常令人兴奋!(我曾怀疑它会滑到114) WebGPU实现仍然很不成熟,但肯定足以开始使用。”FL33TW00D讲道,“在过去的几 个月里,一直在实现Rust+WebGPUML运行时,并且很喜欢编写WGSL。最近,我得到了一个250M参数的LLM在浏览器中运行,没有太多优化,它表现得很好!也就是说,matmuls在浏览器中仍然有很大的缺陷(特别是考虑到浏览器中强制执行的边界检查)。在我的基准测试中,我一直在努力达到理论FLOPS的50%,当边界检查开始时,它会减少到30%。我期待访问帖子中提到的着色器核心。” 还有Burn(Rust深度学习框架)项目的贡献者也表示将添加WebGPU后端。 WebGPU,晚了吗? 当然,也有一些开发者对WebGPU如今才发布是不是还“赶趟”表示怀疑。前Unity游戏引擎工程师ArasPranckevičius提出疑问,“WebGL已经过时了。我想知道WebGPU是不是也有点晚了(比如现在Vulkan认为PSOs可能不是一个好主意,哈哈)。” 他补充道,就像8年前一样,WebGPU是一种“现代图形API设计”。迟做总比不做好,但是……“现代”的概念如今似乎在朝着这样的方向发展:无绑定的一切(就像“无绑定”的