万卡集群:字节搭建12288块GPU的单一集群

文章目录

  • 论文
  • Reference

论文

MegaScale: Scaling Large Language Model Training to More Than 10,000 GPUs

在这里插入图片描述
论文链接:https://arxiv.org/abs/2402.15627

在这里插入图片描述
在这里插入图片描述

从结构上讲,网络是基于Clos的“胖树”结构。其中一个改进是在顶层交换机上把上行与下行链路分开,有效降低冲突率。

在这里插入图片描述

以下内容转载自道明实验室

这可能是一段时间以来,我看到的写的最好的来自国内公司的论文:

非常客观,非常细节,非常实战,非常诚实也非常自信。

我推荐所有对AI训练集群感兴趣的朋友认真阅读。

因为只是短评,我就略过细节挑一些重点,怎么部署集群过于技术化,就不涉及了。至于GPU与光模块的配比关系也不涉及,国内公司因为芯片限制,网络部分只要做到匹配即可,算力利用率(MFU)高不代表算力高,从规模上讲,这个集群是最高规格之一,但是从性能而言,一定不能算顶级的了。

重点反而是在集群规模达到万卡以上,会碰到的问题,以及字节的解决方案,重点在于,如果论文是真实的(很大概率),那么我们对于下一阶段国产模型能力的大幅提升应该有足够的信心。

1、大幅优化的初始化时间,在没经过优化的情况下,2048张GPU的集群初始化时间是1047秒,经过各种优化后,初始化时间下降到5秒以下,10000张GPU集群的初始化时间降到30秒以下;

2、错误后快速恢复能力。论文里把这个叫做容错能力(Fault Tolerance),我认为不是非常准确,因为正如论文中的表述,万卡集群会不可避免的随时随地发生软硬件故障,这些都要导致训练进程停下,再开始(GPU其实是很脆弱的,CUDA经常会有BUG,硬盘很容易坏,数据里出现一个奇怪的字符,也可能导致程序错误,等等,反正,只要集群超过上百个节点,各种奇奇怪怪的故障都会有可能发生)。所以第一层保障机制是Checkpointing,也就是高频的把训练进程保存下来,一旦宕机,快速重启后,就加载上一次存档,继续训练。为了加快这种经常发生的读写速度,论文介绍了文件系统的优化,技术细节略过。同样的,上一节提到的初始化时间的大幅缩减,在这里也起到了巨大的作用,毕竟重启是家常便饭。第三层保障,就是建立完整的系统状态监控及自动检测机制,对超过90%的故障都能自动检测,定位,并快速恢复。

3、截止2023年9月,字节建立起了超过一万张Ampere架构GPU(A100A800)的集群,目前正在建设Hopper架构的集群(H100H800)。

4、那些被简单描述的“血泪教训”。GPU的个性(同样的卡,就是有那么几张会慢一点,奇怪一点),网络闪断,不必要的等待,等等。这些问题,不是一直跟几百台以上规模的集群打交道,是不可能有认知的。所以,大模型训练本质上是一个工程问题

5、显然,字节花了接近一年时间去“搞定”基础设施,这,或许是模型研发生命周期里最重要的一步。

Reference

https://mp.weixin.qq.com/s/xSE_7TKPMcJjlxywbFyL2g

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/710976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三、《任务列表案例》前端程序搭建和运行

本章概要 整合案例介绍和接口分析 案例功能预览接口分析 前端工程导入 前端环境搭建导入前端程序 启动测试 3.1 整合案例介绍和接口分析 3.1.1 案例功能预览 3.1.2 接口分析 学习计划分页查询 /* 需求说明查询全部数据页数据 请求urischedule/{pageSize}/{currentPage} 请…

stm32触发硬件错误位置定位

1.背景 1. 项目中,调试过程或者测试中都会出现程序跑飞问题,这个时候问题特别难查找。 2. 触发硬件错误往往是因为内存错误。这种问题特别难查找,尤其是产品到了测试阶段,而这个异常复现又比较难的情况下,简直头疼。…

初学JavaScript总结

0 JavaScript html完成了架子,css做了美化,但是网页是死的,需要给他注入灵魂,所以接下来需要学习JavaScript,这门语言会让页面能够和用户进行交互。JavaScript又称为脚本语言,可以通过脚本实现用户和页面的…

Programming Abstractions in C阅读笔记:p306-p307

《Programming Abstractions in C》学习第75天,p306-p307总结,总计2页。 一、技术总结 1.Quicksort algorithm(快速排序) 由法国计算机科学家C.A.R(Charles Antony Richard) Hoare(东尼.霍尔)在1959年开发(develop), 1961年发表…

Mac 制作可引导安装器

Mac 使用U盘或移动固态硬盘制作可引导安装器(以 Monterey 为例) 本教程参考 Apple 官网相关教程 创建可引导 Mac OS 安装器 重新安装 Mac OS 相关名词解释 磁盘分区会将其划分为多个单独的部分,称为分区。分区也称为容器,不同容器…

VR虚拟现实技术应用到猪抗原体检测的好处

利用VR虚拟仿真技术开展猪瘟检测实验教学确保生猪产业健康发展 为了有效提高猪场猪瘟防控意识和检测技术,避免生猪养殖业遭受猪瘟危害,基于VR虚拟仿真技术开展猪瘟检测实验教学数据能大大推动基层畜牧养殖业持续稳步发展保驾护航。 一、提高实验效率 VR虚…

鲲鹏arm64架构下安装KubeSphere

鲲鹏arm64架构下安装KubeSphere 官方参考文档: https://kubesphere.io/zh/docs/quick-start/minimal-kubesphere-on-k8s/ 在Kubernetes基础上最小化安装 KubeSphere 前提条件 官方参考文档: https://kubesphere.io/zh/docs/installing-on-kubernetes/introduction/prerequi…

基于大模型思维链(Chain-of-Thought)技术的定制化思维链提示和定向刺激提示的心理咨询场景定向ai智能应用

本篇为个人笔记 记录基于大模型思维链(Chain-of-Thought)技术的定制化思维链提示和定向刺激提示的心理咨询场景定向ai智能应用 人工智能为个人兴趣领域 业余研究 如有错漏欢迎指出!!! 目录 本篇为个人笔记 记录基…

价格腰斩,腾讯云2024优惠活动云服务器62元一年,多配置报价

腾讯云服务器多少钱一年?62元一年起,2核2G3M配置,腾讯云2核4G5M轻量应用服务器218元一年、756元3年,4核16G12M服务器32元1个月、312元一年,8核32G22M服务器115元1个月、345元3个月,腾讯云服务器网txyfwq.co…

Node.js中的并发和多线程处理

在Node.js中,处理并发和多线程是一个非常重要的话题。由于Node.js是单线程的,这意味着它在任何给定时间内只能执行一个任务。然而,Node.js的事件驱动和非阻塞I/O模型使得处理并发和多线程变得更加高效和简单。在本文中,我们将探讨…

老化的电动车与高层电梯楼的结合,将是巨大的安全隐患

中国是全球最大的电动汽车市场,其实中国还是全球最大的电动两轮车市场,而电动两轮车的老化比电动汽车更快,电动汽车的电池寿命可以达到10年,而电动两轮车的电池寿命只有3-5年,而首批电动两轮车至今已老化得相当严重&am…

【Pytorch深度学习开发实践学习】【AlexNet】经典算法复现-Pytorch实现AlexNet神经网络(1)model.py

算法简介 AlexNet是人工智能深度学习在CV领域的开山之作,是最先把深度卷积神经网络应用于图像分类领域的研究成果,对后面的诸多研究起到了巨大的引领作用,因此有必要学习这个算法并能够实现它。 主要的创新点在于: 首次使用GPU…

golang gin单独部署vue3.0前后端分离应用

概述 因为公司最近的项目前端使用vue 3.0,后端api使用golang gin框架。测试通过后,博文记录,用于备忘。 步骤 npm run build,构建出前端项目的dist目录,dist目录的结构具体如下图 将dist目录复制到后端程序同级目录…

PSO-CNN-LSTM多输入回归预测|粒子群算法优化的卷积-长短期神经网络回归预测(Matlab)——附代码数据

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序数据分享下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台…

5 局域网基础(3)

1.AAA 服务器 AAA 是验证、授权和记账(Authentication、Authorization、Accounting)3个英文单词的简称,是一个能够处理用户访问请求的服务器程序,提供验证授权以及帐户服务,主要目的是管理用户访问网络服务器,对具有访问权的用户提供服务。AAA服务器通常…

网络编程:基于TCP和UDP的服务器、客户端

1.基于TCP通信服务器 程序代码&#xff1a; 1 #include<myhead.h>2 #define SER_IP "192.168.126.121"//服务器IP3 #define SER_PORT 8888//服务器端口号4 int main(int argc, const char *argv[])5 {6 //1.创建用于监听的套接字7 int sfd-1;8 sf…

MYSQL C++链接接口编程

使用MYSQL 提供的C接口来访问数据库,官网比较零碎,又不想全部精读一下,百度CSDN都是乱七八糟的,大部分不可用 官网教程地址 https://dev.mysql.com/doc/connector-cpp/1.1/en/connector-cpp-examples-connecting.html 网上之所以乱七八糟,主要是MYSQL提供了3个接口两个包,使用…

C++ //练习 10.9 实现你自己的elimDups。测试你的程序,分别在读取输入后、调用unique后以及调用erase后打印vector的内容。

C Primer&#xff08;第5版&#xff09; 练习 10.9 练习 10.9 实现你自己的elimDups。测试你的程序&#xff0c;分别在读取输入后、调用unique后以及调用erase后打印vector的内容。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码…

django5生产级部署和并发测试(开发者服务器和uvicorn服务器)

目录 1. 创建django项目2. 安装压力测试工具3. 安装生产级服务器uvicorn4. 多进程部署 1. 创建django项目 在桌面创建一个名为django_test的项目&#xff1a; django-admin startproject django_test然后使用cd命令进入django_test文件夹内&#xff0c;使用开发者服务器运行项…

前端架构: 脚手架包管理工具之lerna的全流程开发教程

Lerna 1 &#xff09;文档 Lerna 文档 https://www.npmjs.com/package/lernahttps://lerna.js.org [请直达这个链接] 使用 Lerna 帮助我们做包管理&#xff0c;并不复杂&#xff0c;中间常用的命令并不是很多这里是命令直达&#xff1a;https://lerna.js.org/docs/api-referen…