超大模型分布式训练DeepSpeed教程

2024-05-14 11:38

本文主要是介绍超大模型分布式训练DeepSpeed教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DeepSpeed教程

  • 项目链接

简介

  • deep speed是微软的新大规模模型分布式训练的工具。专门为训练超大模型而生。号称可以训练10B参数的模型。比目前最好的模型大10倍,训练速度块10倍。兼容pytorch的模型,可以改动最少代码。下图是展示训练bert需要的时间,基本同gpu的数量成线性相关。
    在这里插入图片描述

安装

下载code(0.3.0)

git clone https://github.com/microsoft/DeepSpeed.git

安装python环境

  • 需要注意pytroch cuda的版本,需要彼此对上
pip install torch==1.5.1 torchvision==0.6.1 pip install cupy_cuda102==7.8.0 pip install virtualenv==20.0.31 
  • 查看cuda版本
import torch
print(torch.version.cuda)

安装deep speed依赖

cd DeepSpeed
pip install -r requirements/requirements-dev.txt 
pip install -r requirements/requirements  
pip install -r requirements/requirements-sparse-attn.txt 
pip install mpi4py
pip install --ignore-installed PyYAML 

分布式ssh

  • 多机之间需要通过ssh免密互相登录
git config --global user.name "xxx"
git config --global user.email "xxx@mobvoi.com"
ssh-keygen -t rsa -C "xxx@mobvoi.com"
把生成的公钥拷贝到其他机器.ssh目录下即可

安装DeepSpeed

cd DeepSpeed
./install.sh 
等一会即可完成安装

测试demo

单机测试

  • demo是一个简单的分类测试,是单机的
cd DeepSpeed/DeepSpeedExamples/pipeline_parallelism
./run.sh 

多机训练测试demo

  • 增加hostfile文件,填写host的相应的gpu数量(slots=4代表有4个gpu)
host1 slots=4
host2 slots=4
  • include参数,指定机器和gpu,如下代表使用host1机器的3号和host2的2、3号gpu
--include="host1:3@host2:2,3"
  • exclude参数,同include参数,代表不使用相应的gpu
  • ds_config.json 文件里面配置训练的参数,如batch_size、优化器参数、log参数度呢
 {"train_batch_size" : 256,"train_micro_batch_size_per_gpu" : 8,"optimizer": {"type": "Adam","params": {"lr": 0.001,"betas": [0.9,0.999],"eps": 1e-8}},"steps_per_print" : 10,"wall_clock_breakdown" : false}
  • 完整run.sh 命令如下,运行即可实验多机、多gpu训练的demo啦。
#!/bin/bashdeepspeed --hostfile=hostfile  --include="host1:3@host2:2,3"  train.py -p 2 --steps=200  --deepspeed_config=ds_config.json 

这篇关于超大模型分布式训练DeepSpeed教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/988646

相关文章

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas