1
czfy 2022-11-18 21:58:41 +08:00
你的意思是机器学习算法如何通过 CUDA 与 N 卡硬件打交道?
|
2
kakalala 2022-11-18 22:41:41 +08:00
opencl 不是开源的么,去看一个 opencl 的实现估计就清楚了
|
3
Laussan 2022-11-18 22:49:06 +08:00
在我浅薄的观念里这和操作系统好像没什么关系...
|
4
Yuhyeong 2022-11-18 22:51:52 +08:00
npu ?
寒武纪那种吗 |
5
MeePawn666 2022-11-19 01:39:46 +08:00 via Android
操作系统和加速器为数不多的关系也就 driver 了,可惜并了解不到
|
6
ALXG 2022-11-19 02:24:42 +08:00
如果是操作系统, 那就是控制和通信问题咯. 和网卡也大差不差. 实际上这都是很靠近应用层的东西, 主机有他没他都能启动, 控制复杂性主要在厂商那边, 操作系统和 CPU 这边都是提供标准的.
|
9
lsww OP @MeePawn666 所以也在找切入点。
|
11
statumer 2022-11-19 09:29:25 +08:00
GPGPU 都是 PCIE 设备,你要想好你是打算分析 PCIE 通信 ( driver 问题 ) 还是 GPGPU 架构 ( CUDA 编程 )?
|
13
ALXG 2022-11-19 15:54:00 +08:00
@lsww 你试试这个? 往往把 PCI 设备的控制界面映射到内存空间上. 还有一些中断上的配合. 大显存的 N 卡往往还要 CPU 这边配合一个 Above 4G Decoding.
|
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 卡,等回调,主机代码继续干后处理完事。 训练复杂,单机多卡,多机多卡集群,涉及到分布式计算,通讯,模型并行 /数据并行 /混合并行,等一大堆东西。 |
16
mepwang 2022-11-20 20:01:26 +08:00
AI 卡就是通过驱动程序,把一些 AI 算子直接用硬件支持来加速
|
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 怎么平地起高楼,从头撸一个分布式并行训练优先的框架,怎么保证不改代码单卡、多卡、多机多卡都能玩起来; 基本概念都有了,那么就可以琢磨琢磨哪里有优化点可性能瓶颈了,可以造轮子了。 |