AI 热下被忽视的编程语言

2023-05-02 06:20:45 +08:00
 dayeye2006199

最近观察 AI 热下的一些项目使用的编程语言趋势。 第一大语言不用说自然是 python ,langchain, autogpt 之流都是 python 写的。 还有一大类就是 c++,几个模型推理的硬核项目

自己有时候进去这些 repo 想看看是怎么弄的,无奈和个傻子似的看不懂 C++,也不太熟悉工具链,想要从头编译,直挠头。

这波 AI 潮下,会 C++我觉得算是一个优势

7774 次点击
所在节点    程序员
43 条回复
FrankHB
2023-05-02 18:19:20 +08:00
@chesha1 不,刚好相反,我首先不怎么有兴趣对连 prioritize spec 都搞不定的项目做贡献。Rust 能有显著性,只因在座的各位(在对付 memory safety 等问题上)更加辣鸡,所以显得 Rust 在对付不听话的 coder 节约 review 成本上有奇效。但是……我本来就不需要对付这些人。
另一方面,Rust 确保 safety 依赖具体 ad-hoc type system 的设计的欠缺灵活性是我直接不爽的——比如没法单独要 memory safety 而无视 concurrency safety (即便我甚至可以证明某段代码就是单线程下跑的),导致一些简单的写法不 unsafe 就表达不出来——如果时常考虑 unsafe 那我干嘛还要允许 rustc 浪费时间?所以我都不会拿 Rust 的设计过来抄,而是当作反面教材用。
至于没有兴趣折腾是很正常的,主要不是 Rust 的问题——而是因为一些基础设施不管用什么语言重新实现都很无聊,耗费资源又大,既然原来的东西不是烂到没法用,就没什么人有动机来推了。
比如这里很多东西依赖 CUDA 吧,但你也没法说老黄一直能嘚瑟,等写得差不多了,新一代跨设备的行业标准来了怎么办,岂不是 49 年入国军?关于 GPU 这方面软件栈长期选型问题都是传统艺能了,DX 还是 GL ,GL 还是 Vulkan ,要折腾迟早都要踩一遍坑。别人非得对付是因为有具体项目需求,我又没有,现在有了也可以用现成的凑数,又不是没法用。那么为什么不当等等党,拖着减少要踩的坑的绝对数量,等到有确定的具体项目需求发现不得不重新造了再说?
kiwi95
2023-05-02 18:26:25 +08:00
@FrankHB 其它语言在严格的 linter 和 review 下可以开发出几乎不会随意 crash 的程序,并且开发速度比 rust 快培训成本低,而 rust 为了追求所谓 mem safety 引入太多概念和复杂的写法
Deplay
2023-05-02 18:30:11 +08:00
不是被忽视,而是底层基本 cpp ,炼丹有 pytorch 这一类的为什么不用
FrankHB
2023-05-02 18:40:58 +08:00
@kiwi95 其它语言能不 crash 是有代价的,在 memory safety 问题上基本都依赖 GC (倒不需要 lint ),极少部分是 region-based 但基本没在工业界有显著性。依赖 GC 导致的 STW/latency 问题一直就没真正彻底解决过(总不能让用户都上 TB 级别的主存用 Azul C4 吧),就算现在可以不是主要问题了,RAM 利用率低下导致客户端开发从来都很糙,就不可能是正确的解决方向,只能是 workaround 。更要命的是依赖 GC 的代码在资源分配边界上缺乏不变量的混乱导致的质量问题,原则上是不可能解决的——你要非 GC 语言移植到依赖 GC 的语言直接干掉内存释放都行,反过来试试?实际上不依赖 GC 会迫使实现者分析清楚用 GC 不可能自动解决干净而本来就要人来决断的逻辑问题,设计的完善程度就是不一样的。一旦依赖 GC 就注定是半吊子实现,如果不能排除未来有更严格的质量需求,那基本得重写,提前背负这种风险相当不值。
所以实际上光是要避免这些实用问题,比较有存在感的语言也就 C 、C++、Rust 了。然后算上其它可维护性和管理成本选哪个?(这几个语言的 lint 也没多少用。) Rust 也就是矮子里拔高个,因为剩下的编译器做得更少,就算写起来简单点,review 成本更高。当然如果什么人都不缺可以直接 C++ ,不用跟 rustc 斗了(只要有本事兜得住 ICE 和依赖管理之类乱七八糟的破事就行)。
EHemingway
2023-05-02 18:50:47 +08:00
AI 时代最火的编程语言:英语
Aloento
2023-05-02 19:02:24 +08:00
pytorch 的推理核心 torch 就是 Cpp 写的,所以到头来还是各种包装,就 python 那个效率训练大模型得到什么时候去
英语就太真实了,感觉中文区已经落后好多了
chesha1
2023-05-02 19:04:45 +08:00
@FrankHB
跨设备的行业标准和 cuda 又没有关系,这两个都不是一个层次上的,directx opengl vulkan 这些已经把 cuda ( opencl )封装了一层了,不可能说有一个什么新的库出来,大一统了图形 api ,就不用 cuda 了。举个后端的例子,不管是 jdbc 还是 spring ,还是以后有什么别的框架,mysql 本身还得有人写
thorneLiu
2023-05-02 19:31:41 +08:00
我们做训练推理的工程化团队都是需要 cpp 的 如果在这个行业里面就知道 cpp 有多重要
ac23
2023-05-02 21:04:11 +08:00
就是 MLSys 领域的大发展
dandycheung
2023-05-02 22:15:16 +08:00
似乎看到了点王垠的影子。
ShadowPower
2023-05-02 22:36:57 +08:00
@user667788 如果你看比较近期才开始开发的项目,那可能就在用 rust:
https://github.com/huggingface/tokenizers
documentzhangx66
2023-05-02 23:35:34 +08:00
这个问题,需要自己有训练人工智障的经验,才知道正解。

简单来说,C++ 与 Python 的互联网已存代码量,远大于 Rust ,这能方便人工智障进行训练而已。

这与语言好不好,没有直接联系。
XiiLii
2023-05-03 02:39:50 +08:00
也许 ChatGPT5 、6 可以将各个项目的编程语言转成另一种,何必纠结现在所用的语言,熟悉什么语言就用什么语言开发
hk3475
2023-05-03 03:19:48 +08:00
可以看看新出的 triton 和 mojo
ispinfx
2023-05-03 09:26:00 +08:00
@FrankHB 省点口水,不要和搞 ML 的部分脚本工程师讨论 Rust 和 C++。。
Huelse
2023-05-03 10:26:39 +08:00
从市场的反馈上来说谷歌也在放弃 C++转而有了 carbon-lang ,微软也开始转向 rust 而有了 ReFS ,cloudflare 也是用 rust 重写新的代理系统。

总体来说大企业都在放弃 C++转向其他语言,也许现在还不起眼,但在这样的推动下很可能未来的主流。
cnbatch
2023-05-03 23:03:04 +08:00
@Huelse “微软也开始转向 rust 而有了 ReFS”?
这时间就不对吧,ReFS 正式推出时( 2012 年),Rust 1.0 ( 2015 年)都还没发布呀。
Huelse
2023-05-04 09:35:06 +08:00
@cnbatch 字打快了,混淆了原来的意思。前几年微软就在挖 rust 的人了,现在直接说 win11 部分内核代码开始用 rust 实现,ReFS 作为默认文件系统,最终注定要和 rust 接轨的。
ruanimal
2023-05-04 09:58:12 +08:00
@tool2d 那倒不是,torch tf lgb onnx 都是 c 艹
tairan2006
2023-05-04 10:37:39 +08:00
虽然我也看好 rust ,但是 C++到 17 之后其实已经比较现代了,20 和 23 如果能完全落地的话,rust 的吸引力也没那么大了……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/936806

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX