<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>LLM on zzudongxiang</title><link>https://www.zzudongxiang.com/tags/llm/</link><description>Recent content in LLM on zzudongxiang</description><generator>Hugo</generator><language>zh-cn</language><copyright>2026 zzudongxiang.com · 豫ICP备2022012018号-1 · 豫公网安备41160202000614号</copyright><lastBuildDate>Wed, 28 Aug 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://www.zzudongxiang.com/tags/llm/index.xml" rel="self" type="application/rss+xml"/><item><title>文献阅读《Alibaba HPN: A Data Center Network for Large Language Model Training》</title><link>https://www.zzudongxiang.com/posts/alibaba-hpn/</link><pubDate>Wed, 28 Aug 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/alibaba-hpn/</guid><description>&lt;div&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;Alibaba High Performance Network (HPN)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;HPN介绍了一种两层的双平面网络，可以在一个Pod中接入1.5w个GPU，通常需要3层Clos架构的网络才能容纳这么多GPU&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;HPN 提出了一种新的双 ToR 设计，以取代传统数据中心网络中的单 ToR&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="1-贡献与挑战"&gt;&lt;span fontsize="" color=""&gt;1. 贡献与挑战&lt;/span&gt;&lt;/h2&gt;
&lt;h3 id="挑战"&gt;&lt;span fontsize="" color=""&gt;挑战&lt;/span&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;&lt;strong&gt;流量模式&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;传统网络无法应对LLM的低熵、周期性、突发的网络特点，传统的数据中心网络一般是高熵的（传统网络中会存在百万条流，但是每条流的利用率特别低，一半小于20%）&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;ECMP在传统的数据中心的高熵、低利用率的网络中性能表现较好，但是在LLM训练中并不是最佳的&lt;/span&gt;&lt;/p&gt;
&lt;img src="images/image-zyhs.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;&lt;strong&gt;单点故障的敏感性高&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;LLM训练是一个同步过程，所有GPU合作完成一系列迭代，任何一个GPU发生故障都有可能导致整个训练过程出现问题&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;对LLM训练影响最大的是与机架顶部（ToR）相关的单点故障，这种故障可能会影响到各种GPU&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;生产统计数据显示，LLM训练中出现的故障造成的损失是一般云计算故障的 20 倍&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="贡献"&gt;&lt;span fontsize="" color=""&gt;贡献&lt;/span&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;非堆叠的双层ToR网络，可以在两个交换机之间直接同步，很好的改善了大规模部署的可信度&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;适配最新的51.2Tbps的交换机芯片，可以将1K个GPU部署在Tier 1网络中，使96.3%的训练任务获得高性能的网络&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;我们的实验表明，使用HPN的LLM训练吞吐量比传统数据中心网络高14.9倍&lt;/span&gt;&lt;/p&gt;
&lt;h2 id="2-背景知识"&gt;&lt;span fontsize="" color=""&gt;2. 背景知识&lt;/span&gt;&lt;/h2&gt;
&lt;h3 id="llm的并行策略"&gt;&lt;span fontsize="" color=""&gt;LLM的并行策略&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;&lt;strong&gt;DP&lt;/strong&gt;：每次迭代使用All Reduce同步计算梯度数据&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;&lt;strong&gt;PP&lt;/strong&gt;：每次使用Send/Recv传递中间结果&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;&lt;strong&gt;TP&lt;/strong&gt;：每次迭代使用All Reduce/All Gather同步输出和对应的梯度&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="llm的流量特征"&gt;&lt;span fontsize="" color=""&gt;LLM的流量特征&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;带宽利用率周期性突发&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;流的数量少&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;传统的数据中心网络不适用于LLM流量模式&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="llm对单点故障的敏感性"&gt;&lt;span fontsize="" color=""&gt;LLM对单点故障的敏感性&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;LLM每次的Checkpoint间隔大概在2-4小时，按照一个3k张GPU的集群计算，每次失败导致的回滚都将导致大约3w美元的损失&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;常见的监控工具和异常分析工具并不能避免网络产生故障，根据实验表明，在NIC到ToR之间每个月大概有0.057%的Link故障率，在ToR交换机每个月的故障率大约是0.051%，即一个LLM训练集群每个月可能会产生1-2次的Crash，5k-60k次的Link故障&lt;/span&gt;&lt;/p&gt;
&lt;img src="images/image-wxuc.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;
&lt;h3 id="llm网络架构的建设目标"&gt;&lt;span fontsize="" color=""&gt;LLM网络架构的建设目标&lt;/span&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;规模化：达到15K个GPU的规模，未来可以扩展到100K个GPU的规模&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;高性能：尽可能小的网络跳数，尽可能使用GPU-GPU直达的连接&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;单点故障容错率：在网络拓扑层尽可能改善单点故障的容错率&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="3-hpn架构"&gt;&lt;span fontsize="" color=""&gt;3. HPN架构&lt;/span&gt;&lt;/h2&gt;
&lt;img src="images/image-xjoy.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;分为前端网络和后端网络，前端网络主要负责例如管理、接口、存储等网络流量，后端网络负责LLM的训练时的流量&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;每个Host包含8个GPU，使用NVLink互联，双向带宽达到400GBps-900GBps&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;每个Host包含9个2x200Gbps的网卡，其中一个连接到前端网络，其余的8个与GPU直连，接入后端网络&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;每个网卡的2个端口分别连接至不同的ToR网络，这种双ToR设计可以避免单点故障&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-双tor网络"&gt;&lt;span fontsize="" color=""&gt;4. 双ToR网络&lt;/span&gt;&lt;/h2&gt;
&lt;img src="images/image-goji.png" style="display: inline-block;width:100.0%;height:100.0%" /&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;传统数据中心的NIC的两个光缆接入一个交换机成为单ToR设计&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;双ToR设计将NIC的两个光缆接口分别接入不同的ToR交换机中&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;两个接口配置相同的IP和MAC地址，即使其中一个ToR故障，另外一个依旧可以正常工作&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span fontsize="" color=""&gt;基于以上，同一个NIC的两个网卡共享相同的Queue Pair Context&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Llama2部署记录</title><link>https://www.zzudongxiang.com/posts/llama2-deployment/</link><pubDate>Tue, 09 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/llama2-deployment/</guid><description>&lt;div&gt;
&lt;h2 id="1-创建docker"&gt;1. 创建docker&lt;/h2&gt;
&lt;h3 id="11-docker命令"&gt;1.1 docker命令&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;显示全部的镜像：&lt;code&gt;docker images&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;创建一个容器：&lt;code&gt;docker run ...&lt;/code&gt;&amp;lt;查看1.2节内容&amp;gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;显示全部的容器：&lt;code&gt;docker ps -a&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;启动一个容器：&lt;code&gt;docker start &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;停止一个容器：&lt;code&gt;docker stop &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进入一个正在运行的程序：&lt;code&gt;docker exec -it &amp;lt;id&amp;gt; /bin/bash&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;删除一个容器：&lt;code&gt;docker rm &amp;lt;id&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="12-创建容器"&gt;1.2 创建容器&lt;/h3&gt;
&lt;p&gt;创建一个docker容器的时候需要同时挂载本地工作目录和相关的程序驱动，因此创建docker容器的命令参数较多，以下为一个创建docker容器命令的基本格式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; docker run -it --ipc=host --name &amp;lt;name&amp;gt; -v &amp;lt;local_path&amp;gt;:&amp;lt;docker_path&amp;gt; \
     --workdir=&amp;lt;docker_path&amp;gt; \
     --pids-limit 409600 \
     --privileged --network=host \
     --shm-size=128G \
     --device=/dev/davinci0 \
     --device=/dev/davinci1 \
     --device=/dev/davinci2 \
     --device=/dev/davinci3 \
     --device=/dev/davinci4 \
     --device=/dev/davinci5 \
     --device=/dev/davinci6 \
     --device=/dev/davinci7 \
     --device=/dev/davinci_manager \
     --device=/dev/devmm_svm \
     --device=/dev/hisi_hdc \
     -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
     -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
     -v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \
     -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
     -v /usr/local/dcmi:/usr/local/dcmi \
     -v /etc/ascend_install.info:/etc/ascend_install.info \
     -v /etc/bashrc:/etc/bashrc \
     -p 223:223 \
     -p 224:6006 \
     -p 225:8080 \
     -p 226:8888 \    
     -u root \
    &amp;lt;image_id&amp;gt; /bin/bash
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;-it&lt;/code&gt;：已交互方式运行容器，并分配一个终端&lt;/p&gt;</description></item><item><title>3D并行（3D Parallelism）</title><link>https://www.zzudongxiang.com/posts/3d-parallelism/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/3d-parallelism/</guid><description>&lt;div&gt;
&lt;blockquote&gt;
&lt;p&gt;参考文献：&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Narayanan D, Shoeybi M, Casper J, et al. Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM: SC&amp;rsquo; 21, November 14-19, 2021, St. Louis, MO, USA&lt;/p&gt;
\[C\]&lt;p&gt;, 2021. ACM, 2021-01-01.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;单一的MP或DP无法硬度继续增长的大模型算力需求，面对成千上万的GPU集群规模增长，结合TP、PP、DP等多种方式组成3D Parallelism的并行方式逐渐成为了主流的并行计算框架。&lt;/p&gt;
&lt;h2 id="1-基于megatron-lm"&gt;1. 基于Megatron-LM&lt;/h2&gt;
&lt;h3 id="11-研究背景"&gt;1.1 研究背景&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;单一的DP、TP、PP方法无法满足日益增长的模型参数量，因此提出一种基于多种并行方法的PTD-P并行技术。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="12-实现方法"&gt;1.2 实现方法&lt;/h3&gt;
&lt;img src="images/image-usvb.png" style="display: inline-block;width:80.0%" /&gt;
&lt;p&gt;图. 默认的Pipeline调度（上）和插值的Pipeline调度（下）&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;对每个设备上运行的网络层进行进一步拆分，每个子集称为一个Chunk，在图（下）中用深色和浅色两种颜色表示&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;假设一共4个Device，每个Device可以分为4层（例如：在Device 1上运行1~4层，Device 2上运行5-8），则可以将每个设备的计算过程分为两个Chunk（每个Chunk需要计算两层网络）例如：Device 1对应1，2，9，10四层，Device 2对应3，4，11，12四层。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以Device 3为例，为什么运行完Chunk 2的Batch2后需要Wait，而不是直接运行Batch 3？只是为了展示插值的概念？&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="13-实验结论"&gt;1.3 实验结论&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;提出一种插值Pipeline调度算法，实现在3072个GPU上训练1T参数的训练，总体算力达到502PFLOPS，单个GPU的算力达到了理论峰值的52%。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;相比较ZeRO-3（不带MP），因为减少了通信量，在175B和530B规模的大模型上效果要好70%&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;插值Pipeline调度算法可以增加计算密集度，但是对通信的开销也会增加&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PP在较大的模型上效率更高，效果更好，TP的并行方式会增加不同设备之间的通信量&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;重算技术只是一个为了平衡内存与算力之间可选的技术，会降低内存消耗，但同时也会增加1/3的算力消耗&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;高度的MP可能会导致较小的矩阵乘运算，降低GPU的利用率&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="14-实验数据"&gt;1.4 实验数据&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;本文对PTD-P模型中，GPU数量、全局Batch Size、Microbatch Size、Bubble Time、Throughput等多个参量进行多角度多变量讨论&lt;/p&gt;</description></item><item><title>流水线并行（Pipeline Parallelism）</title><link>https://www.zzudongxiang.com/posts/pipeline-parallelism/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/pipeline-parallelism/</guid><description>&lt;div&gt;
&lt;blockquote&gt;
&lt;p&gt;参考文献：&lt;/p&gt;
&lt;p&gt;Huang Y, Cheng Y, Chen D, et al. GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism: 33rd Conference on Neural Information Processing Systems (NeurIPS 2019),&lt;/p&gt;
\[C\]&lt;p&gt;, Vancouver, Canada, 2018.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Harlap A, Narayanan D, Phanishayee A, et al. PipeDream: Fast and Efficient Pipeline Parallel DNN Training&lt;/p&gt;
\[J\]&lt;p&gt;. ArXiv, 2018,abs/1806.03377.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Kim T, Kim H, Yu G, et al. BPipe: Memory-Balanced Pipeline Parallelism for Training Large Language Models: Proceedings of the 40th International Conference on Machine Learning&lt;/p&gt;</description></item><item><title>数据并行（Data Parallelism）</title><link>https://www.zzudongxiang.com/posts/data-parallelism/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/data-parallelism/</guid><description>&lt;div&gt;
&lt;blockquote&gt;
&lt;p&gt;参考文献：&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Team D, Majumder R, President V, et al. DeepSpeed: Extreme-scale model training for everyone&lt;/p&gt;
\[J\]&lt;p&gt;. Microsoft, 2020.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Rajbhandari S, Rasley J, Ruwase O, et al. ZeRO: Memory optimizations Toward Training Trillion Parameter Models&lt;/p&gt;
\[C\]&lt;p&gt;, 2020. IEEE, 2020-01-01.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Ren J, Rajbhandari S, Aminabadi R Y, et al. ZeRO-Offload: Democratizing Billion-Scale Model Training&lt;/p&gt;
\[J\]&lt;p&gt;. &lt;a href="http://arXiv.org" rel="noopener noreferrer nofollow" target="_blank"&gt;arXiv.org&lt;/a&gt;, 2021.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Rajbhandari S, Ruwase O, Rasley J, et al. ZeRO-Infinity: Breaking the GPU MemoryWall for Extreme Scale Deep Learning: SC&amp;rsquo; 21, November 14–19, 2021, St. Louis, MO, USA&lt;/p&gt;</description></item><item><title>异构集群（Heterogeneous Clusters）</title><link>https://www.zzudongxiang.com/posts/heterogeneous-clusters/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/heterogeneous-clusters/</guid><description>&lt;div&gt;
&lt;h1 id="1-heterog"&gt;1. HeteroG&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;参考文献：&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Yi X, Zhang S, Luo Z, et al. Optimizing Distributed Training Deployment in Heterogeneous GPU Clusters: Proceedings of the 16th International Conference on emerging Networking EXperiments and Technologies&lt;/p&gt;
\[C\]&lt;p&gt;, Barcelona, Spain, 2020. Association for Computing Machinery.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;一个集群中的GPU型号和性能可能都有所不同，但是在并行计算的时候往往假设每个参与并行的设备算力都是相等的，但是实际上由许多不同型号的GPU组成的集群仍然存在，为了解决这个问题，有相关的研究者提出了&lt;code&gt;HeteroG&lt;/code&gt;方法，在异构集群上实现有效率的并行计算。&lt;/p&gt;
&lt;img src="images/image-lqrb.png" style="display: inline-block;width:50.0%" /&gt;
&lt;p&gt;图. HeteroG的工作流程图&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;首先对开发者构建的网络进行分析，根据模型的需要决定是否需要进行MP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;然后根据策略将模型分发到各个设备上进行开销测试（Profiler）和仿真计算（Simulator）然后根据这个测试结果指定相应的并行策略（Strategy Maker）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;完成策略制定后重新对网络图进行重新编译（根据MP和DP的测算结果决定）然后开始并行计算&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这个工作主要由一个经过训练的神经网络完成&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最终实验结果证明与当前其他的并行策略相比，在异构集群的并行计算上有222%的性能提升。&lt;/p&gt;
&lt;/div&gt;</description></item><item><title>张量并行（Tensor Parallelism）</title><link>https://www.zzudongxiang.com/posts/tensor-parallelism/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.zzudongxiang.com/posts/tensor-parallelism/</guid><description>&lt;div&gt;
&lt;blockquote&gt;
&lt;p&gt;参考文献：&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: 14.4px"&gt;Shoeybi M, Patwary M, Puri R, et al. Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism&lt;/p&gt;
\[J\]&lt;p&gt;. ArXiv, 2020&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;张量并行（Tensor Parallelism，TP）属于模型并行（Model Parallelism，MP）中的一种，通过对Tensor的拆分，将一次Tensor计算拆分到多台设备上进行并行的计算，并将计算结果最终合并为目标张量。&lt;/p&gt;
&lt;h2 id="1-megatron-lm"&gt;1. Megatron-LM&lt;/h2&gt;
&lt;p&gt;Megatron-LM是Nvidia提出的一种Tensor Parallelism方式，它的核心思想是将模型进行纵向分割（假定模型为由下向上的传递方式），Megatron-LM的TP主要针对基于Transformer，通过对Transformer中的Self-Attention和MLP进行拆分并行。&lt;/p&gt;
&lt;h3 id="11-研究背景"&gt;1.1 研究背景&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;在研究MP技术时，从数学上对矩阵计算的角度上发现针对Transformer可以进行纵向分割，从而在纵向分割上实现并行加速，由于这种方法将一个张量分割为多个张量并行计算，因此该方法属于Tensor Parallelism。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="12-实现方法"&gt;1.2 实现方法&lt;/h3&gt;
&lt;img src="images/image-wtqh.png" style="display: inline-block" width="597" height="631" /&gt;
&lt;p&gt;图. Tensor Parallelism对Transformer中两部分的并行过程&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;针对Transformer中的MLP单元&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;MLP在并行之前的运算过程可以表示为：Z=Dropout(GeLU(XA) B)，其中X为输入数据，Z为输出数据，A和B分别为神经网络的参数&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在并行时，可以将A矩阵按照列拆分为A=&lt;/p&gt;
\[A_1, A_2\]&lt;p&gt;两部分，并将其分别放置到两个设备中分别对输入的X进行计算，并分别获得结果Y_1=GeLU(X A_1)和Y_2=GeLU(X A_2)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对矩阵B按照行拆分成两部分，并分别放置到两个设备中B=&lt;/p&gt;
\[B_1; B_2\]&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;假设输入的X矩阵的维度为m x n大小的，则可用如下公式描述输入矩阵A&lt;/p&gt;
$$X=\left[ \begin{matrix} x_{1,1} &amp; \cdots &amp; x_{1,n} \\ \vdots &amp; \ddots &amp; \vdots \\ x_{m,1} &amp; \cdots &amp; x_{m,n} \\ \end{matrix} \right] =\left[ \begin{matrix} X_1\\X_2 \end{matrix} \right]$$&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;假设MLP中的矩阵A的维度为n x k，且定义h=k/2，则定义矩阵A如下：&lt;/p&gt;</description></item></channel></rss>