V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lsww
V2EX  ›  NVIDIA

AI 卡的工作原理

  •  
  •   lsww · 2022-11-18 21:05:48 +08:00 via Android · 4756 次点击
    这是一个创建于 720 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想从操作系统角度了解 AI 卡的工作原理,哪里能找到好的资料?
    21 条回复    2022-11-23 20:50:37 +08:00
    czfy
        1
    czfy  
       2022-11-18 21:58:41 +08:00
    你的意思是机器学习算法如何通过 CUDA 与 N 卡硬件打交道?
    kakalala
        2
    kakalala  
       2022-11-18 22:41:41 +08:00
    opencl 不是开源的么,去看一个 opencl 的实现估计就清楚了
    Laussan
        3
    Laussan  
       2022-11-18 22:49:06 +08:00
    在我浅薄的观念里这和操作系统好像没什么关系...
    Yuhyeong
        4
    Yuhyeong  
       2022-11-18 22:51:52 +08:00
    npu ?
    寒武纪那种吗
    MeePawn666
        5
    MeePawn666  
       2022-11-19 01:39:46 +08:00 via Android
    操作系统和加速器为数不多的关系也就 driver 了,可惜并了解不到
    ALXG
        6
    ALXG  
       2022-11-19 02:24:42 +08:00
    如果是操作系统, 那就是控制和通信问题咯. 和网卡也大差不差. 实际上这都是很靠近应用层的东西, 主机有他没他都能启动, 控制复杂性主要在厂商那边, 操作系统和 CPU 这边都是提供标准的.
    lsww
        7
    lsww  
    OP
       2022-11-19 08:41:53 +08:00 via Android
    @czfy 是的。转了方向,要加强学习了。
    lsww
        8
    lsww  
    OP
       2022-11-19 08:42:53 +08:00 via Android
    @kakalala 谢谢,我去看看。
    lsww
        9
    lsww  
    OP
       2022-11-19 08:43:34 +08:00 via Android
    @MeePawn666 所以也在找切入点。
    lsww
        10
    lsww  
    OP
       2022-11-19 08:45:07 +08:00 via Android
    @ALXG 有能讲明白这部分的资料吗?网上的资料都比较零散
    statumer
        11
    statumer  
       2022-11-19 09:29:25 +08:00
    GPGPU 都是 PCIE 设备,你要想好你是打算分析 PCIE 通信 ( driver 问题 ) 还是 GPGPU 架构 ( CUDA 编程 )?
    lsww
        12
    lsww  
    OP
       2022-11-19 14:12:14 +08:00 via Android
    @statumer 还在研究中,可能都会涉及。
    ALXG
        13
    ALXG  
       2022-11-19 15:54:00 +08:00
    @lsww
    你试试这个? 往往把 PCI 设备的控制界面映射到内存空间上. 还有一些中断上的配合. 大显存的 N 卡往往还要 CPU 这边配合一个 Above 4G Decoding.
    lonelygo
        14
    lonelygo  
       2022-11-20 11:30:08 +08:00   ❤️ 4
    @lsww 题主不知入行多久,目前在做什么事情,直接点说,这个问题问的并不清楚:
    首先:AI 卡可以理解为异构的 AI 计算加速卡。
    如果是:`从操作系统角度理解其工作原理`,那么是不是在问:
    `异构计算加速平台的计算调度在 OS 层面做哪些工作?`,那对用户来说其实就是:PCIe ,DMA 这些数据搬运相关的事情,其他的比如中断这些,都是厂商软件栈的事情了。
    如果是:`AI 加速卡的工作原理`,那么是不是在问:
    `AI 加速卡如何做到高效的并行计算,来提高计算效率的?`,那就从怎么做 GEMM 加速,并行计算,这些看起,#2 @kakalala 提的 opencl 是理解并行计算的一个路径,还可以去看看 cuda 的文档,从硬件架构到 SIMT 到 Warp 都有图文并茂的解释。
    另外,从技术角度,AI 训练和 AI 推理,看起来差不多,但是从操作系统来看,两者之间的软件差异其实非常大:
    推理简单,把主机代码和设备代码确定了,workload 丢给 AI 卡,等回调,主机代码继续干后处理完事。
    训练复杂,单机多卡,多机多卡集群,涉及到分布式计算,通讯,模型并行 /数据并行 /混合并行,等一大堆东西。
    lsww
        15
    lsww  
    OP
       2022-11-20 14:57:26 +08:00 via Android
    @lonelygo 大佬专业,向你学习。应该就是多机多卡集群下的推理和训练。
    mepwang
        16
    mepwang  
       2022-11-20 20:01:26 +08:00
    AI 卡就是通过驱动程序,把一些 AI 算子直接用硬件支持来加速
    julyclyde
        17
    julyclyde  
       2022-11-21 08:29:33 +08:00
    @adoal 还记得我那句话吗
    adoal
        18
    adoal  
       2022-11-21 09:31:10 +08:00 via iPhone
    @julyclyde 文研计?
    julyclyde
        19
    julyclyde  
       2022-11-21 10:37:56 +08:00
    @adoal 是呀
    lonelygo
        20
    lonelygo  
       2022-11-22 10:36:49 +08:00
    @lsww 训练推理分开说。
    先说推理。目前大模型是有,但是不多,模型也没大到一定要上多机的。毕竟现在 20G 、40G 显存的 GPU 还是有的,模型再大,整个单机多卡足矣。而且这种推理侧的模型拆分,其实就是简单粗暴,把模型切成几片,保证每个分片的 weight 能塞到 AI 卡的 DDR 上去就行,然后多卡组个流水线完事。
    再说训练。这玩意就能说几天几夜了。
    不管单机多卡还是多机多卡,首先要知道的:
    并行计算相关的概念和知识;
    然后并行训练的三个名词:数据并行,模型并行,混合并行;
    多机的情况下,应为有跨机器通讯甚至是跨机柜通讯,靠网卡那是万万不行的,又要去了解:
    各种大规模并行算法的拓扑设计(其实顺手也就了解了物理服务器的拓扑设计),这个有不少经典 paper 可以看;
    高性能通讯,那就绕不开 RoCE 和 IB 了,又是知识点;
    这些搞明白了,下面就要琢磨下各框架怎么做分布式并行训练的:
    前人怎么改造 TF 和 PyTorch 的;
    怎么把 TF 、PyTorch 当后端,在上面怼个分布式的轮子(框架)来实现分布式的;
    OneFlow 怎么平地起高楼,从头撸一个分布式并行训练优先的框架,怎么保证不改代码单卡、多卡、多机多卡都能玩起来;

    基本概念都有了,那么就可以琢磨琢磨哪里有优化点可性能瓶颈了,可以造轮子了。
    lsww
        21
    lsww  
    OP
       2022-11-23 20:50:37 +08:00 via Android
    @lonelygo 感谢。信息量太大,收藏下来慢慢学习
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2910 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:44 · PVG 22:44 · LAX 06:44 · JFK 09:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.