A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/FlagOpen/FlagPerf below:

FlagOpen/FlagPerf: FlagPerf is an open-source software platform for benchmarking AI chips.

FlagPerf是智源研究院联合AI硬件厂商共建的一体化AI硬件评测引擎,旨在建立以产业实践为导向的指标体系,评测AI硬件在软件栈组合(模型+框架+编译器)下的实际能力。

  1. 构建多维度评测指标体系,不止关注“耗时”:

    FlagPerf 指标体系除了衡量“芯片能否支持特定模型训练”的功能正确性指标之外,还包含更多维度的性能指标、资源使用指标以及生态适配能力指标等。

    指标详细介绍见 这篇文章

  2. 支持多样例场景及任务,覆盖大模型训练推理场景

    FlagPerf 已经涵盖计算机视觉、自然语言处理、语音、多模态等领域的**30余个经典模型,80余个训练样例,**支持评测AI硬件的训练和推理能力,以及大模型场景的推理任务评测。

  3. 支持多训练框架及推理引擎,灵活连接AI硬件与软件生态

    在训练任务场景中,除了支持 PyTorch、TensorFlow,FlagPerf 还在积极与 PaddlePaddle、MindSpore 研发团队密切配合。作为国产训练框架的领军者,百度 Paddle团队、华为昇思MindSpore 团队正在将 Llama、GPT3 等明星模型集成至 FlagPerf 测试样例集。

    在推理任务场景中,FlagPerf 适配了多家芯片厂商和训练框架研发团队的推理加速引擎,以更灵活地连接AI硬件与软件生态,拓宽评测的边界和效率,如英伟达TensorRT、昆仑芯XTCL(XPU Tensor Compilation Library)、天数智芯IxRT(Iluvatar CoreX RunTime)、PyTorch TorchInductor。

  4. 支持多测试环境,综合考察单卡、单机、多机性能

    为全面评估国产AI芯片多样性、可扩展性、实际应用模拟情况,FlagPerf 设定了单卡、单机(通常是8卡)、多机三个测试环境,为不同的测试环境匹配了不同测试样例场景和任务。

    注:当前FlagPerf在保证测试环境除芯片外其他条件一致的情况下,进行芯片本身的离线批处理评测,暂不支持集群和客户端的性能评估。

  5. 严格审核参评代码,关注“结果公平”,更关注“过程公正”

    测试由智源研究院与众多芯片厂商联合展开。总体原则是确保客观、公平地评估芯片的通用性能,限制厂商开展有针对性的定制优化。在确定测试模型之后,首先由芯片厂商进行模型适配,这个过程中只允许厂商进行分布式通信、批数据量(batch size)等和硬件执行强相关的方面的代码修改,以确保模型能够在芯片上高效运行。其次由智源研究院依托基准测试平台FlagPerf对芯片能力开展测试,并确保测试过程顺利,芯片性能和稳定性得到最佳发挥。同时,所有测试代码均已开源,测试过程、数据可复现。

🎯 未来智源及众多AI硬件、框架团队还将共同拓展FlagPerf的评测场景,如开展集群性能的整体评估,以更全面的评估国产软硬件的性能。

Full News

基础规格列表:

编号 规格名称 规格类型 英伟达 沐曦 昇腾 1 FP64算力 算力 算子或原语,
厂商专用工具 N/A N/A 2 FP32算力 算力 算子或原语,
厂商专用工具 算子或原语 厂商专用工具 3 TF32算力 算力 算子或原语,
厂商专用工具 算子或原语 N/A 4 FP16算力 算力 算子或原语,
厂商专用工具 算子或原语 厂商专用工具 5 BF16算力 算力 算子或原语,
厂商专用工具 算子或原语 厂商专用工具 6 INT8算力 算力 厂商专用工具 厂商专用工具 厂商专用工具 7 主存储带宽 存储 算子或原语,
厂商专用工具 算子或原语 N/A 8 主存储容量 存储 算子或原语,
厂商专用工具 算子或原语 N/A 9 CPU-芯片互连 互联 算子或原语,
厂商专用工具 N/A 厂商专用工具 10 服务器内P2P直连 互联 算子或原语,
厂商专用工具 N/A 厂商专用工具 11 服务器内MPI直连 互联 算子或原语,
厂商专用工具 N/A N/A 12 跨服务器P2P直连 互联 算子或原语,
厂商专用工具 N/A N/A 13 跨服务器MPI直连 互联 算子或原语,
厂商专用工具 N/A N/A

算子列表:

编号 规格名称 算子库 英伟达 1 mm-FP16 nativetorch
flaggems A100_40_SXM 2 sum-FP32 nativetorch
flaggems A100_40_SXM 3 linear-FP16 nativetorch
flaggems A100_40_SXM ... ... ... ...

训练列表:

推理列表:

  1. 安装docker,python
  2. 确保硬件驱动、网络、硬件虚拟化等服务器基础配置齐全
    1. 确保可连中国大陆可访问网站,速率正常
    2. 确保可在容器内找到硬件
    3. 确保各服务器间root帐号的ssh信任关系和sudo免密
    4. 确保monitor相关工具已安装:包括cpu(sysstat)、内存(free)、功耗(ipmitool)、系统信息(加速卡状态查看命令)。例如ubuntu系统中,使用apt install [sysstat/ipmitool]安装
  1. 设置环境变量
export EXEC_IN_CONTAINER=True
  1. 确保容器内硬件驱动、网络、硬件虚拟化等服务器基础配置齐全
    1. 确保可连中国大陆可访问网站,速率正常
    2. 确保容器镜像、容器内软件包对应版本安装正确
    3. 确保可在容器内找到硬件
    4. 确保各服务器间root帐号的ssh信任关系和sudo免密
    5. 确保monitor相关工具已安装:包括cpu(sysstat)、内存(free)、功耗(ipmitool)、系统信息(加速卡状态查看命令)。例如ubuntu系统中,使用apt install [sysstat/ipmitool]安装

更多阅读:

  1. 容器内启动评测简述
  1. 下载FlagPerf并部署
# 先各服务器间root帐号的ssh信任关系和sudo免密配置
git clone https://github.com/FlagOpen/FlagPerf.git
cd FlagPerf/base/
  1. 修改机器配置文件
cd FlagPerf/base/
vim configs/host.yaml

具体项修改方式及原则见基础规格文档中的运行时流程章节

  1. 启动测试
cd FlagPerf/base/
sudo python3 run.py
  1. 同基础规格评测
  1. 下载FlagPerf并部署
# 先各服务器间root帐号的ssh信任关系和sudo免密配置
git clone https://github.com/FlagOpen/FlagPerf.git
cd FlagPerf/training/
pip3 install -r requirements.txt
  1. 修改机器配置文件
cd Flagperf/training/
vim run_benchmarks/config/cluster_conf.py

集群配置文件主要包括集群主机列表和SSH端口,修改HOSTSSSH_PORT为机器实际地址

'''Cluster configs'''
#Hosts to run the benchmark. Each item is an IP address or a hostname.
HOSTS = ["10.1.2.3", "10.1.2.4", "10.1.2.5", "10.1.2.6"]
#ssh connection port
SSH_PORT = "22"
  1. 修改模型配置文件
cd Flagperf/training/
vim run_benchmarks/config/test_conf.py

必改项:

VENDOR = "nvidia" #选择本次运行的硬件
FLAGPERF_PATH="" # FlagPerf项目路径,如"/home/FlagPerf/training"
CASES={} # 本次运行的测例,按照对应模型readme准备好数据,修改模型对应的地址
#如运行"bert:pytorch_1.8:A100:1:8:1": "/raid/home_datasets_ckpt/bert/train/",需要把:后面的路径替换为本地路径
  1. 启动测试
python3 ./run_benchmarks/run.py
sudo python3 ./run_benchmarks/run.py
  1. 查看日志
cd result/run2023XXXX/运行模型/
# ls
round1
# ls round1/
10.1.2.2_noderank0
# cd 10.1.2.2_noderank0/
# ls
cpu_monitor.log     pwr_monitor.log  rank2.out.log  rank5.out.log  start_pytorch_task.log
mem_monitor.log     rank0.out.log    rank3.out.log  rank6.out.log
nvidia_monitor.log  rank1.out.log    rank4.out.log  rank7.out.log


# tail -n 6 rank0.out.log
[PerfLog] {"event": "STEP_END", "value": {"loss": 2.679504871368408, "embedding_average": 0.916015625, "epoch": 1, "end_training": true, "global_steps": 3397, "num_trained_samples": 869632, "learning_rate": 0.000175375, "seq/s": 822.455385237589}, "metadata": {"file": "/workspace/flagperf/training/benchmarks/cpm/pytorch/run_pretraining.py", "lineno": 127, "time_ms": 1669034171032, "rank": 0}}
[PerfLog] {"event": "EVALUATE", "metadata": {"file": "/workspace/flagperf/training/benchmarks/cpm/pytorch/run_pretraining.py", "lineno": 127, "time_ms": 1669034171032, "rank": 0}}
[PerfLog] {"event": "EPOCH_END", "metadata": {"file": "/workspace/flagperf/training/benchmarks/cpm/pytorch/run_pretraining.py", "lineno": 127, "time_ms": 1669034171159, "rank": 0}}
[PerfLog] {"event": "TRAIN_END", "metadata": {"file": "/workspace/flagperf/training/benchmarks/cpm/pytorch/run_pretraining.py", "lineno": 136, "time_ms": 1669034171159, "rank": 0}}
[PerfLog] {"event": "FINISHED", "value": {"e2e_time": 1661.6114165782928, "training_sequences_per_second": 579.0933420700227, "converged": true, "final_loss": 3.066718101501465, "final_mlm_accuracy": 0.920166015625, "raw_train_time": 1501.713, "init_time": 148.937}, "metadata": {"file": "/workspace/flagperf/training/benchmarks/cpm/pytorch/run_pretraining.py", "lineno": 158, "time_ms": 1669034171646, "rank": 0}}
  1. 下载FlagPerf并部署
# 先各服务器间root帐号的ssh信任关系和sudo免密配置
git clone https://github.com/FlagOpen/FlagPerf.git
cd FlagPerf/inference/
pip3 install -r requirements.txt
  1. 修改机器配置文件
cd Flagperf/inference/
vim configs/host.yaml

集群配置文件主要包括集群主机列表和SSH端口,修改HOSTSSSH_PORT为机器实际地址

#必须修改项
FLAGPERF_PATH: "/home/FlagPerf/inference" #FlagPerf inference 路径
HOSTS: ["127.0.0.1"] # 机器地址
VENDOR = "nvidia" #测试机器对象,nvidia/kunlunxin/iluvatar
CASES:  #待测case,记得修改数据地址
    "resnet50:pytorch_1.13": "/raid/dataset/ImageNet/imagenet/val"
  1. 用户需要根据评测对象,配置configs//configuration.yaml,如不修改可用默认配置
batch_size: 256
# 1 item(like 1 sequence, 1 image) flops
# Attention! For transformer decoder like bert, 1 token cause 2*param flops, so we need 2*length*params like 2*512*0.33B here
# format: a_1*a*2*...*a_nea_0,like 2*512*0.33e9(bert) or 4.12e9(resnet50)
flops: 4.12e9
fp16: true
compiler: tensorrt
num_workers: 8
log_freq: 30
repeat: 5
# skip validation(will also skip create_model, export onnx). Assert exist_onnx_path != null
no_validation: false
# set a real onnx_path to use exist, or set it to anything but null to avoid export onnx manually(like torch-tensorrt)
exist_onnx_path: null
# set a exist path of engine file like resnet50.trt/resnet50.plan/resnet50.engine
exist_compiler_path: null

必改项:

VENDOR = "nvidia" #选择本次运行的硬件
FLAGPERF_PATH="" # FlagPerf项目路径,如"/home/FlagPerf/training"
CASES={} # 本次运行的测例,按照对应模型readme准备好数据,修改模型对应的地址
#如运行"bert:pytorch_1.8:A100:1:8:1": "/raid/home_datasets_ckpt/bert/train/",需要把:后面的路径替换为本地路径
  1. 启动测试
sudo python inference/run.py
  1. 下载FlagPerf并部署
# 按照FlagPerf/inference中安装相关环境
git clone https://github.com/FlagOpen/FlagPerf.git
cd FlagPerf/inference/
pip3 install -r requirements.txt
  1. 修改机器配置文件
cd Flagperf/generate/
vim host.yaml
#必须修改项
data_path: "/Xsum.csv" #数据路径
model_path: "/llama3_70b_hf"#模型路径,该测量的标程应选用Llama3 70b进行测量
VENDOR :"nvidia" #测试机器对象,nvidia/kunlunxin
engine :"hf"  #推理框架类型,现支持vllm、huggingface。推理框架需自己本地配置
log_path :"/log" #日志路径
config_path :"./host.yaml" #host.yaml文件所在路径
nproc_per_node: 8 #参与推理评测的GPU数量
chip:"A100_40_SXM" #芯片名称
  1. 用户需要根据评测对象,配置tasks///task.yaml
# 必改项
GPU_NAME: "A100_40_SXM"
#Theoretical FLOPs peak of the GPU for different precision computations (measured in TFLOPs)
TFLOPS_FP16:312
# 若不修改则采用默认任务数量配置,需要保证总推理评测时间在5-15分钟内完成且并发数不应高于256
task_nums: 256
  1. 启动测试
sudo python generate/main.py

如需参与共建FlagPerf基础规格、训练、推理评测,请参考详细文档,依次位于基础规格文档目录训练文档目录推理文档目录

为了更直观的展示厂商参与共建的实际工作量,下面给出6个已经合并进FlagPerf,面向不同特征厂商的Pull Request。

  1. 模型训练适配适配

  2. 模型推理适配

本项目基于Apache 2.0 license。
本项目的代码来源于不同的代码仓库,关于各模型测试Case的情况,请参考各模型测试Case目录的文档。

如有疑问,可以发送邮件至flagperf@baai.ac.cn,或在issue中说明情况


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4