MapReduce:大模型分布式训练必备知识
·
很多人都知道大模型的架构,但是不知道大模型是如何训练的,所以我们需要对大模有更加定量的认知。现在的大模型所需内存太大,单机装不下,所以就需要分布式训练模型,而MapReduce就是分布式架构的鼻祖。
什么是Map与Reduce?
Map的核心是分解。想象一下有一辆红色的轿车,一队工人合力将它拆解成单个零件,这个过程我们就称之为Map。

Reduce的核心是组合。比如我们拥有一堆汽车零件,以及众多不同种类的装置零件,将这些零件巧妙地组装起来,最终形成了一个变形金刚,这就是Reduce的过程。

什么是MapReduce?
MapReduce 从宏观角度来看,MapReduce可以这样形象地理解:
- Input:假设你拥有一大批各式各样的食材,包括蔬菜、水果和面包
- Split:有一群厨师主动领取这些食材
- Map:每位厨师对不同的食材进行切割处理
- Shuffle:切割完成后,将这些食材分配到不同的冷藏设备中
- Reduce:存放完毕后,根据顾客的具体需求,将这些食材加工成最终的成品
- Finalize:成品完成后放置在顾客面前供其付费
因此,MapReduce包含了上述的六个关键阶段。
例1:如何统计1TB文件里单词的出现次数呢?

我们输入(Input)很多文档,我们将这些文档分配(Split)到不同的机器上,文档的每一行有很多不同的单词,每一行文档就切分(map)成单词和它出现的次数,接下来将单词进一步整理(Shuffle算法来定),把相同的数据放一起,然后(Reduce)计算每个单词共有多少个,最终(Finalize)将结果汇总,统计每个单词出现了多少次。
例2:怎么查找一个单词在多篇文档中出现的位置?

思路其实一样,只不过这里我们要存的是单词对应的文档编号,而不是单词出现的次数。
本质
MapReduce本质就是分治法。随着大模型越来越大,现在大模型算法工程师必须掌握分布式训练框架,才能让你的大模型更好的run起来。

更多推荐
所有评论(0)