AI 热下被忽视的编程语言 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
dayeye2006199
V2EX    程序员

AI 热下被忽视的编程语言

  •  
  •   dayeye2006199 2023-05-02 06:20:45 +08:00 8917 次点击
    这是一个创建于 893 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    43 条回复    2023-05-08 09:45:27 +08:00
    levelworm
        1
    levelworm  
       2023-05-02 07:19:53 +08:00 via Android   2
    C/C++这种偏底层的语言,还是需要懂其他的 domain knowledge 才有真正的价值。
    Alias4ck
        2
    Alias4ck  
       2023-05-02 09:31:39 +08:00
    其实 pytorch 本身 就有一大半是 c++写的 只不过你没关注到而已
    LeeReamond
        3
    LeeReamond  
       2023-05-02 11:08:15 +08:00
    没什么意义,毕竟你不太可能通过给框架内核贡献代码获得收入,更不太可能重复实现内核,另外现在都 2023 了如果要贴近底层,新项目 rust 优先级肯定更高。
    user667788
        4
    user667788  
       2023-05-02 11:18:12 +08:00
    好奇 他们为什么不用 rust , 或者用其他更现代的语言,c++给我的感觉是个老古董
    L4Linux
        5
    L4Linux  
       2023-05-02 11:42:06 +08:00   3
    @user667788 不追求 memory safety 而强行用 Rust 难道不是自讨苦吃?
    duke807
        6
    duke807  
       2023-05-02 11:48:33 +08:00 via Android
    FlashEcho
        7
    FlashEcho  
       2023-05-02 12:39:48 +08:00
    你举的两个例子,最初都是用 python 开发的,其实深度学习项目想部署,确实大概率要转成 c++,会 c++算是必备技能吧。就看你做什么层级的工作了,如果是纯做算法的工作不需要懂 c++,如果底层点,偏工程一点的岗位不可能不会的

    c++其实一直没有被忽视的,就算是深度学习这个领域也是,最主流的框架用 python 调用,但是框架底层不少还是用 c++写的
    FlashEcho
        8
    FlashEcho  
       2023-05-02 12:47:13 +08:00
    @user667788 我个人的理解是这样,不一定对:
    1. c++市场供应更大,找个同水平的 rust 程序员花费更高,尤其是在高性能领域
    2. 深度学习需要调用 cuda 和很多其他运算的库,似乎只能用 c++来做,至少 c++是主流
    3. c++新标准用了之后不算太老,c++20 ,23 有各种新东西,协程, module 之类的都挺好的
    uni
        9
    uni  
       2023-05-02 13:13:27 +08:00   1
    气抖冷,什么时候 rust 才能干翻 c++(引完战就逃((
    jones2000
        10
    jones2000  
       2023-05-02 13:17:19 +08:00
    c++门槛高, 没有 4-5 年上不了手。转行赚快钱的基本不会选 c++. 选 c++后面的路是越走越宽。
    dayeye2006199
        11
    dayeye2006199  
    OP
       2023-05-02 13:26:00 +08:00 via Android
    我现在在研究怎么把一些 CPP 写得科学计算库移植到 wasm 里,发觉工具链这块是一抹黑,cmake ,编译器这块是一点都不熟
    mogita
        12
    mogita  
       2023-05-02 13:29:06 +08:00
    Rust 在 LLM 这波屁都不敢放一个(不是我说的
    crackidz
        13
    crackidz  
       2023-05-02 13:45:43 +08:00
    mogita
        14
    mogita  
       2023-05-02 13:47:59 +08:00
    @crackidz fuiyoh 总算写了个 api caller project (
    talkischeap567
        15
    talkischeap567  
       2023-05-02 14:04:21 +08:00
    intel 那几千页的手册
    也没有一行 C++代码
    万事万物都是有联系的
    FrankHB
        16
    FrankHB  
       2023-05-02 15:38:05 +08:00
    @user667788 要现代岂不是先得把 py 干掉?
    没什么现代语言能抄个 1930 年就有的 lambda 还有脸限制一行的吧。

    @L4Linux 什么叫不追求 memory safety ,你写的玩意儿有几个是可以随便 crash 无所谓的?
    (就是挂在导弹上漏尿的都不算 Rust 所谓的 memory safety 。)
    你要说用 Rust 是懒得 review 这种低端问题,让人跟 rustc 斗法节约时间,然而并不是所有项目都能节约出多少,这还差不多。

    @chesha1 1. 市场是大但是分层且不互通,得看水平在什么程度上。
    不限预算是无所谓的,反正什么语言都得会。
    卡死预算也是无所谓的,反正这俩都不会。
    中间层次就比较迷,得看从事的领域是不是恰好有很多已经造过的轮子。众所周知,C++和 Rust 用户造(烂)轮子的水平和品位半斤八两,如果一个领域流毒 C++烂轮子多、好轮子少,那么 C++就有超额成本;反过来就是 Rust 占便宜。但恰好这里 Rust 基本就没轮子……
    至于跟 rustc 斗的更低层次的初级用户,比 CRUD boy 贵不了多少了。
    2. 非技术问题。会折腾的没什么人有兴趣自己造更没资源推广。
    3. “挺好的”,说明比较初级。

    @uni spec ,请。

    @talkischeap567 那坨前后一致性都有问题的 shit 伪码就见过写 cmodel 的翻译成 C/C++,没见过其他抖 M 来整活的。
    tool2d
        17
    tool2d  
       2023-05-02 15:43:07 +08:00 via Android
    ai 下,也就楼主提到的这个人用 c++,而且是反潮流的。
    其他所有人都用 pytorch 写,用 gpu 加速。
    至于为什么选 c++,应该单纯就是兴趣。
    flyqie
        18
    flyqie  
       2023-05-02 16:05:35 +08:00 via Android
    @user667788 #4

    1. cpp 能踩的坑大部分别人都踩了,相关方案可能不够好但基本都有。

    2. 好招人,rust 目前高级别不好招。

    3. 不像 rust 语法那样不好 review ,相对来说清晰的多(个人感觉)。

    4. 生态问题,rust 没出以前大家都是 cpp 什么的写,再加上 cpp 目前好像也没个靠谱的 abi 。

    5. 使用 rust 可能会有些特性很优秀,但这完全抵不上从 cpp 迁移到 rust 的劣势,不同项目有不同的搞法,不是所有项目都有必要用 rust 更换 cpp 。
    FlashEcho
        19
    FlashEcho  
       2023-05-02 17:51:45 +08:00   1
    @FrankHB 看上去你对于 rust 有很独特的偏爱,不过你要是把自己用来批判别人的时间挪一点出来,给 rust 生态做贡献,“会折腾的没什么人有兴趣自己造更没资源推广”这种现象就会变少一点了
    Nugine0
        20
    Nugine0  
       2023-05-02 18:14:07 +08:00
    这不就是 ML sys 方向吗,有没有人说说岗位需求大不大
    FrankHB
        21
    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
        22
    kiwi95  
       2023-05-02 18:26:25 +08:00 via Android
    @FrankHB 其它语言在严格的 linter 和 review 下可以开发出几乎不会随意 crash 的程序,并且开发速度比 rust 快培训成本低,而 rust 为了追求所谓 mem safety 引入太多概念和复杂的写法
    Deplay
        23
    Deplay  
       2023-05-02 18:30:11 +08:00
    不是被忽视,而是底层基本 cpp ,炼丹有 pytorch 这一类的为什么不用
    FrankHB
        24
    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
        25
    EHemingway  
       2023-05-02 18:50:47 +08:00
    AI 时代最火的编程语言:英语
    Aloento
        26
    Aloento  
       2023-05-02 19:02:24 +08:00
    pytorch 的推理核心 torch 就是 Cpp 写的,所以到头来还是各种包装,就 python 那个率训练大模型得到什么时候去
    英语就太真实了,感觉中文区已经落后好多了
    FlashEcho
        27
    FlashEcho  
       2023-05-02 19:04:45 +08:00
    @FrankHB
    跨设备的行业标准和 cuda 又没有关系,这两个都不是一个层次上的,directx opengl vulkan 这些已经把 cuda ( opencl )封装了一层了,不可能说有一个什么新的库出来,大一统了图形 api ,就不用 cuda 了。举个后端的例子,不管是 jdbc 还是 spring ,还是以后有什么别的框架,mysql 本身还得有人写
    thorneLiu
        28
    thorneLiu  
       2023-05-02 19:31:41 +08:00 via Android
    我们做训练推理的工程化团队都是需要 cpp 的 如果在这个行业里面就知道 cpp 有多重要
    ac23
        29
    ac23  
       2023-05-02 21:04:11 +08:00
    就是 MLSys 领域的大发展
    dandycheung
        30
    dandycheung  
       2023-05-02 22:15:16 +08:00 via Android
    似乎看到了点王垠的影子。
    ShadowPower
        31
    ShadowPower  
       2023-05-02 22:36:57 +08:00
    @user667788 如果你看比较近期才开始开发的项目,那可能就在用 rust:
    https://github.com/huggingface/tokenizers
    documentzhangx66
        32
    documentzhangx66  
       2023-05-02 23:35:34 +08:00
    这个问题,需要自己有训练人工智障的经验,才知道正解。

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

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

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

    py 还是占了 ai 好大一片江山。
    mushuanl
        42
    mushuanl  
       2023-05-04 14:18:35 +08:00
    c++开发效率低对开发人员要求高出错难以定位,在 AI 时代难有大作为
    大家都在拼快速修改快速验证快速迭代,语言层面的事情越少越好,让开发者把重心放在业务层面的开发上
    毕竟开发人员的时薪和抢占市场对效率要求可不低,

    至于 C++能提高的那点性能,因为业务会快速修改,已经被业务开发和定位占用的时间给抵消并且变成负的了(维护代码对开发人员要求高)
    现代 C++只适合写那些不经常改变,对性能要求高,并且有高额利润的东西,这些才能养得起高水平开发人员和维护团队,例如量化,或是游戏库等,市场还会收到 rust 的抢占,应该还是会减小。
    hitsmaxft
        43
    hitsmaxft  
       2023-05-08 09:45:27 +08:00 via iPhone
    py 只是上面的皮,要想又快又好,免不了要底下 c++开发者帮你负重前行。
    前台业务和后台基建的区别
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     977 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 18:52 PVG 02:52 LAX 11:52 JFK 14:52
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86