AI 卡的工作原理

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

基本概念都有了,那么就可以琢磨琢磨哪里有优化点可性能瓶颈了,可以造轮子了。

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

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

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

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

© 2021 V2EX