MLPerf storage基准测试

MLPerf 基准测试

什么是 MLPerf?MLPerf™ 基准测试由来自学术界、研究实验室和行业的 AI 领导者联盟 MLCommons 开发,旨在对硬件、软件和服务的训练和推理性能进行无偏评估。它们都在规定的条件下进行。为了保持在行业趋势的前沿,MLPerf 不断发展,定期举行新的测试,并添加代表 AI 技术水平的新工作负载。

Nidia介绍:https://www.nvidia.cn/data-center/resources/mlperf-benchmarks/

MLCommons 基准测试工作的基础源自 MLPerf,并以此为基础进行构建,MLPerf 旨在为 ML 提供一套具有代表性的基准测试套件,公平地评估系统性能,以满足五个高级目标*:

  • 在鼓励机器学习创新的同时,实现对竞争系统的公平比较。
  • 通过公平、实用的测量来加速机器学习的进展。
  • 强制重复性以确保可靠的结果。
  • 为商业和研究界提供服务。
  • 保持基准测试工作量可承受,以便所有人都能参与。

每个基准测试套件均由工作组专家社区定义,他们为 AI 系统制定公平的基准测试。工作组定义要运行的 AI 模型、运行模型所依据的数据集、设置允许对模型进行哪些更改的规则,并测量给定硬件运行模型的速度。通过在这个 AI 模型三脚架内工作,MLCommons AI 系统基准测试不仅可以测量硬件的速度,还可以测量训练数据的质量以及 AI 模型本身的质量指标。

官网:https://mlcommons.org/benchmarks/

MLPerf Storage

MLPerf Storage 基准测试套件可测量在训练模型时存储系统提供训练数据的速度。https://mlcommons.org/benchmarks/storage/

github下载:https://github.com/mlcommons/storage

基准输出指标

对于每个工作负载,基准测试输出指标是每秒样本数,但要满足最低加速器利用率(AU),越高越好。要通过基准测试运行,AU应达到 90% 或更高。AU计算如下。总理想计算时间来自批处理大小、总数据集大小、模拟加速器数量和睡眠时间:total_compute_time = (records/file * total_files)/simulated_accelerators/batch_size * sleep_time。然后AU计算如下:

AU (percentage) = (total_compute_time/total_benchmark_running_time) * 100

请注意,休眠时间是通过在真实硬件上运行包括计算步骤在内的工作负载来确定的,并且取决于加速器类型。在此预览包中,我们包含了 NVIDIA V100 GPU 的休眠时间,这是在 NVIDIA DGX-1 系统中测量的。除此之外AU,提交的内容还需要报告详细信息,例如 DLIO 主机上运行的 MPI 进程数量,以及 DLIO 主机上的主内存数量。

先决条件:

基准测试脚本只需在一个参与的客户端主机(任意)上运行,该主机内部调用mpirun以启动跨多个客户端主机的分布式训练。启动器客户端主机也参与分布式训练过程。

  • 挑选一个主机作为启动器客户端主机。必须从启动器客户端主机到所有其他参与的客户端主机设置无密码 ssh。 ssh-copy-id是一个有用的工具。
  • 代码和数据位置(后面部分将讨论)在每个客户端主机(包括启动器主机)中必须完全相同。这是因为在分布式训练过程中,每个参与的客户端主机都会自动触发相同的基准测试命令。

安装

ubuntu

提前安装mpich

git clone -b v1.0-rc1 --recurse-submodules https://github.com/mlcommons/storage.git
cd storage
pip3 install -r dlio_benchmark/requirements.txt

redhat

提前安装mpich,hwloc

git clone -b v1.0-rc1 --recurse-submodules https://github.com/mlcommons/storage.git
cd storage
pip3 install -r dlio_benchmark/requirements.txt

参考

安装mpich与hwloc参考:https://blog.csdn.net/weixin_43912621/article/details/139168124

测试

第一步,根据客户端配置计算基准测试运行所需的最小数据集大小:

./benchmark.sh datasize --workload unet3d --accelerator-type a100 --num-accelerators 8 --num-client-hosts 2 --client-host-memory-in-gb 128

第二步,为基准测试运行生成数据:

./benchmark.sh datagen --hosts 10.117.61.121,10.117.61.165 --workload unet3d --accelerator-type h100 --num-parallel 8 --param dataset.num_files_train=1200 --param dataset.data_folder=unet3d_data

在这里插入图片描述

第三步,运行基准测试:

./benchmark.sh run --hosts 10.117.61.121,10.117.61.165 --workload unet3d --accelerator-type h100 --num-accelerators 2 --results-dir resultsdir --param dataset.num_files_train=1200 --param dataset.data_folder=unet3d_data

在这里插入图片描述

第四步,生成最终报告:

./benchmark.sh reportgen --results-dir resultsdir

在这里插入图片描述

关于conda环境迁移遇到的问题

ModuleNotFoundError:No module named dlio_profiler_py,但是conda list却显示已安装dlio_profiler_py。

# 查看是否链接悬空
ll storage10/lib/python3.10/site-packages/dlio_profiler_py.cpython-310-x86_64-linux-gnu.so
# 创建软连接
ln -s storage10/lib/python3.10/site-packages/dlio_profiler/lib64/dlio_profiler_py.cpython-310-x86_64-linux-gnu.so storage10/lib/python3.10/site-packages/dlio_profiler_py.cpython-310-x86_64-linux-gnu.so
# 添加环境变量
export LD_LIBRARY_PATH=storage10/lib/python3.10/site-packages/dlio_profiler/lib/:LD_LIBRARY_PATH
export LD_LIBRARY_PATH=storage10/lib/python3.10/site-packages/dlio_profiler/lib64/:LD_LIBRARY_PATH

python输出包所在的位置

import numpy
print(numpy.__file__)

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

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

相关文章

0基础认识C语言(理论知识)

为了给0基础一个舒服的学习路径,就有了这个专栏希望带大家一起进步。 话不多说,开始正题。 一、C语言的一段小历史 C语言的设计要追溯到20世纪60年代末和70年代初,在那个时代美国有这么一号人叫做丹尼斯.里奇,他和同事肯.汤普逊…

计算机网络学习实践:DHCP跨网段动态分配IP

计算机网络学习实践:DHCP跨网段动态分配IP 1.实验准备 实验环境:思科的模拟器 实验设备: 1个服务器,2个二层交换机(不是三层的),4个PC机,1个路由器 三个网段 192.168.1.0 255.…

一些智能音箱类的软硬件方案

主要参考资料 Rabbit R1: https://www.rabbit.tech/rabbit-r1 mediatek-helio-p35: https://www.mediatek.com/products/smartphones-2/mediatek-helio-p35 NSdisplay: https://www.nsdisplay.com/ai-holobox-mini/ai-holobox-mini.html RK3566: https://www.rock-chips.com/a/…

Java学习Lambda表达式

Lambda表达式 有且只有一个未实现的方法叫做Lambda表达式,可以实现函数式编程 // 这个注解是用来检查你写的函数是否是函数式接口 FunctionalInterfaceinterface Myinterface {int sum(int a, int b);default String priteTitle(String name, int age, String sex)…

ASP+ACCESS酒店预定管理系统

【摘要】宏都大酒店管理信息系统中不能通过互联网方式进行客房预订,通过本次设计主要实现通过互联网方式进行客房预订。让客户足不出户坐在家里就能预订出自己想要的客房。主要功能有:酒店简介、客房简介、客房报价、客房预订信息提交,预订信…

Flutter基础 -- Dart 语言 -- 进阶使用

目录 1. 泛型 generics 1.1 泛型使用 1.2 泛型函数 1.3 构造函数泛型 1.4 泛型限制 2. 异步 async 2.1 异步回调 then 2.2 异步等待 await 2.3 异步返回值 3. 生成器 generate (了解) 3.1 同步生成器 sync* 使用 sync* 的场景 总结 3.2 异…

关于nodejs单线程

Node是使用C++语言写的一款JavaScrip解析器。 高并发 一般来说,高并发的解决方案就是多线程模型,服务器为每隔客户端请求分配一个线程,使用同步I/o,比如Apache就是这种策略,由于I/O一般都是耗时操作,因为这种策略很难实现高性能,但非常简单,可以实现复杂的交互逻辑。…

Python 的 os 和 shutil 模块

大家好,在日常的编程工作中,处理文件和目录是一个非常常见的任务。无论是创建、复制、移动还是删除文件,这些操作都需要我们与文件系统进行交互。在 Python 中,有两个强大的模块可以帮助我们轻松地进行文件和目录操作,…

Unity协程详解

什么是协程 协程,即Coroutine(协同程序),就是开启一段和主程序异步执行的逻辑处理,什么是异步执行,异步执行是指程序的执行并不是按照从上往下执行。如果我们学过c语言,我们应该知道&#xff0…

ctfshow-web入门-信息搜集(web11-web20)

目录 1、web11 2、web12 3、web13 4、web14 5、web15 6、web16 7、web17 8、web18 9、web19 10、web20 1、web11 域名其实也可以隐藏信息,比如flag.ctfshow.com 就隐藏了一条信息 查询域名的 DNS 记录,类型为 TXT(域名的说明&#…

三天不调休!端午节营销活动规划

今年端午节即将来临,大家将享受到一个三天不调休的小假期。这对各大企业来说,无疑是进行营销的黄金时机。企业可以精心策划和筹备各种具有端午特色的营销活动,吸引广大消费者参与,塑造浓厚的节日氛围,有效提升企业的销…

【Linux】使用 s3fs 挂载 MinIO 桶

s3fs(S3 File System)是一个基于FUSE(Filesystem in Userspace)的用户空间文件系统,可以将Amazon S3存储桶挂载到本地文件系统。通过s3fs,我们可以像操作本地文件一样,对S3存储桶中的数据进行读…

【随笔】Git 实战篇 -- 开心 commit 之后,发现有一处bug还需要改,只能 reset 撤销然后再次提交 -- git reset --(四十三)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

【数据结构】复杂度的重要性—–决定程序运行的效率

【数据结构】复杂度的重要性—–决定程序运行的效率 前言 在我们写算法的时候,常常会需要考虑一个问题:这个算法好不好?而这个“好”实际上就取决于是算法的复杂度。 算法复杂度(Algorithmic Complexity)是指算法在编…

私有仓库搭建

目前市面上比较常见的私有仓库搭建方法为: 通过 Sinopia 或 verdaccio 搭建(Sinopia 已经停止维护,verdaccio 是 Fork 自 Sinopia,基本上大同小异),其优点是搭建简单,不需要其他服务。通过 cnp…

代码随想录--哈希表--两数之和

题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums [2, 7, 11, 15], t…

【JAVA SE】抽象类和接口

✨✨欢迎大家来到Celia的博客✨✨ 🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉 所属专栏:JAVA 个人主页:Celias blog~ 目录 引言 一、抽象类 1.1 抽象类的定义 1.2 抽象方法 1.3 抽象…

【vue实战项目】通用管理系统:作业列表

目录 目录 1.前言 2.后端API 3.前端API 4.组件 5.分页 6.封装组件 1.前言 本文是博主前端Vue实战系列中的一篇文章,本系列将会带大家一起从0开始一步步完整的做完一个小项目,让你找到Vue实战的技巧和感觉。 专栏地址: https://blog…

springboot 实现kafka多源配置

文章目录 背景核心配置自动化配置类注册生产者、消费者核心bean到spring配置spring.factoriesyml配置使用 源码仓库 背景 实际开发中,不同的topic可能来自不同的集群,所以就需要配置不同的kafka数据源,基于springboot自动配置的思想&#xf…

Centos 7下的VulFocus靶场搭建详细教程

一、靶场介绍 自带 Flag 功能:每次启动 flag 都会自动更新,明确漏洞是否利用成功。带有计分功能。兼容 Vulhub、Vulapps 中所有漏洞镜像。 二、下载安装 下载 VMware 软件下载 centos镜像 三、Docker知识 学习链接:https://www.runoob.c…