当前位置: 首页 > news >正文

DeepSpeed入门

pip install deepspeed

支持transformers: --deepspeed,以及config文件;

model_engine, optimizer, _, _ = deepspeed.initialize(args=cmd_args,model=model,model_parameters=params)

分布式和mixed-precision等,都包含在deepspeed.initialize和model_engine里面了;

删掉: torch.distributed.init_process_group(...)

for step, batch in enumerate(data_loader):#forward() methodloss = model_engine(batch)#runs backpropagationmodel_engine.backward(loss)#weight updatemodel_engine.step()

Gradient Average: 在model_engine.backward里自动解决;

Loss Scaling: 自动解决;

Learning Rate Scheduler: model_engin.step里自动解决;

save&load: (model、optimizer、lr scheduler状态,都存下来)(client_sd是用户自定义数据)

_, client_sd = model_engine.load_checkpoint(args.load_dir, args.ckpt_id)
step = client_sd['step']
...
if step % args.save_interval:client_sd['step'] = stepckpt_id = loss.item()model_engine.save_checkpoint(args.save_dir, ckpt_id, client_sd = client_sd)

配置文件:(例如名为ds_config.json)

{"train_batch_size": 8,"gradient_accumulation_steps": 1,"optimizer": {"type": "Adam","params": {"lr": 0.00015}},"fp16": {"enabled": true},"zero_optimization": true
}

hostfile: (和OpenMPI、Horovord兼容)(hostname GPU个数)

worker-1 slots=4
worker-2 slots=4

启动命令:

deepspeed --hostfile=myhostfile <client_entry.py> <client args> \--deepspeed --deepspeed_config ds_config.json

--num_nodes: 在几台机器上跑;

--num_gpus:在几张GPU卡上跑;

--include: 白名单节点和GPU编号;例:--include="worker-2:0,1"

--exclude: 黑名单节点和GPU编号;例:--exclude="worker-2:0@worker-3:0,1"

环境变量:

运行起来会被设置到所有node上;

".deepspeed_env"文件;放运行目录下,或者~/;例:

NCCL_IB_DISABLE=1
NCCL_SOCKET_IFNAME=eth0

在一台机器上运行"deepspeed"命令,会在所有node上launch进程;

也支持mpirun方式来launch,但通信后端用的仍是NCCL而不是MPI;

注意:

不支持CUDA_VISIBLE_DEVICES;只能这么来指定GPU:

deepspeed --include localhost:1 ...

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 度小满金融大模型的应用创新
  • AIGC作答《2024年高考作文|新课标I卷》能拿多少分?
  • 测试基础11:测试用例设计方法-等价类划分
  • 定个小目标之刷LeetCode热题(14)
  • 在线按模板批量生成文本工具
  • Golang | Leetcode Golang题解之第134题加油站
  • Redis实战篇02
  • 探索智慧商场的功能架构与应用
  • Linux基础I/O
  • 【架构分析】GPU执行GEMM矩阵运算实例演示
  • idea2024年最新激活码,即拿即用
  • 用C++编写电机控制代码
  • mongodb总概
  • 以无厚,入有间,做一件事为什么靠努力不行,不能长期维持
  • 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。.net 读取excel的时候报错(实测有效)
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Apache的80端口被占用以及访问时报错403
  • Django 博客开发教程 16 - 统计文章阅读量
  • Electron入门介绍
  • Java的Interrupt与线程中断
  • nfs客户端进程变D,延伸linux的lock
  • Node 版本管理
  • node-glob通配符
  • overflow: hidden IE7无效
  • Python学习之路13-记分
  • Python语法速览与机器学习开发环境搭建
  • SpiderData 2019年2月23日 DApp数据排行榜
  • SQLServer之索引简介
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 工程优化暨babel升级小记
  • 构建二叉树进行数值数组的去重及优化
  • 面试遇到的一些题
  • 如何胜任知名企业的商业数据分析师?
  • 如何用vue打造一个移动端音乐播放器
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • Java数据解析之JSON
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ###项目技术发展史
  • #职场发展#其他
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (Ruby)Ubuntu12.04安装Rails环境
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (三) diretfbrc详解
  • (转)程序员技术练级攻略
  • ..回顾17,展望18
  • .aanva
  • .net6+aspose.words导出word并转pdf