继续开一个新专栏,这里主要收集一些并行训练的相关内容。
文章目录
并行/分布式训练概述
首先想要说明的是,并行训练和分布式训练的概念其实都能讲,但前者可能更侧重于技术实施,而后者更倾向于设备,网络等资源层面的分布式,在本专栏,我们都一视同仁。从个人观点来说,如果偏软件点,说并行最好了。
并行训练是指将机器学习或者深度学习模型的训练任务给分解成多个子任务,然后在多个计算设备上去并行地进行训练。
实施并行训练的总体目标是提升总的训练速度,减少模型训练的总体时间。
为什么需要?
目前最热的方向之一就是大模型,这个大指的是参数量规模的大,我们下载一些开源LLM权重,几乎都是7B,70B,130B等等。而这些模型如果使用传统的单机单卡模式进行训练,那么花费的时间,说不定这个企业还没有等发布就倒闭了。
所以,我们就需要基于单机多卡甚至是多机多卡来进行大模型的训练。
如何实施?
为了实现这个目标,一般我们需要根据硬件资源、数据和模型规模的情况来考虑对计算任务、训练数据和模型来进行划分,从而进行分布式的存储和并行训练。
那么从数据和模型这两个维度考虑,并行加速通常有几种基本的分布式并行策略,包括数据并行、模型并行以及混合并行。
- 数据并行是最常见的并行形式,它通过对训练数据进行划分并将同一个模型复制到多个设备上,从而并行地执行不同的数据分片。
- 模型并行则是指将模型进行划分,将模型中的算子分发到多个不同的设备上,分别进行计算。
- 混合并行则是考虑了对数据和模型的划分,将数据并行、模型并行等多种并行技术结合起来进行分布式训练。
接下来我们将慢慢的解析这些内容。
版权归原作者 染念 所有, 如有侵权,请联系我们删除。