【任务四】显卡日志
下面给出了3090显卡的性能测评日志结果,每一条日志有如下结构:
Benchmarking #2# #4# precision type #1#
#1# model average #2# time : #3# ms
其中#1#代表的是模型名称,#2#的值为train(ing)或inference,
表示训练状态或推断状态,#3#表示耗时,#4#表示精度,
其中包含了float, half, double三种类型,下面是一个具体的例子:
Benchmarking Inference float precision type resnet50
resnet50 model average inference time : 13.426570892333984 ms
请把日志结果进行整理,变换成如下状态,
model_i用相应模型名称填充,按照字母顺序排序,
数值保留三位小数:
Train_half Train_float Train_double Inference_half Inference_float Inference_double
model_1 0.954 0.901 0.357 0.281 0.978 1.130
model_2 0.360 0.794 0.011 1.083 1.137 0.394
… … … … … …
【数据下载】链接:https://pan.baidu.com/s/1CjfdtavEywHtZeWSmCGv3A 提取码:4muiBenchmarking #2# #4# precision type #1# #1# model average #2# time : #3# ms
import pandas as pd
import numpy as np
import os
df=pd.read_table('benchmark.txt', header=None)
df.head(15)
0
0
start
1
benchmark start : 2020/12/24 12:12:48
2
Number of GPUs on current device : 1
3
CUDA Version : 11.0
4
Cudnn Version : 8005
5
Device Name : GeForce RTX 3090
6
uname_result(system='Linux', node='gyh-X11DPi-...
7
scpufreq(current=1182.0009166666669, min=1000....
8
cpu_count: 36
9
memory_available: 129118310400
10
Benchmarking Training float precision type mna...
11
mnasnet0_5 model average train time : 28.527...
12
Benchmarking Training float precision type mna...
13
mnasnet0_75 model average train time : 34.10...
14
Benchmarking Training float precision type mna...
# 取出Benchmarking #2# #4# precision type #1# 中的 2,4,1
pat_1 ='Benchmarking (\w+) (\w+) precision type (\w+)'
content_1 =['type_1','pricision','model_1']
df_1=df[0].str.extract(pat_1).rename(columns=dict(zip(range(3),content_1))).dropna().reset_index(drop=True)
df_1.head()
type_1
pricision
model_1
0
Training
float
mnasnet0_5
1
Training
float
mnasnet0_75
2
Training
float
mnasnet1_0
3
Training
float
mnasnet1_3
4
Training
float
resnet18
# 取出#1# model average #2# time : #3# ms 中的1,2,3
pat_2 ='(\w+)\s*model average (\w+).+:\s*(\d+\.\d+)'
content_2 =['model_2','type_2','time']
df_2 = df[0].str.extract(pat_2).rename(columns=dict(zip(range(3),content_2))).dropna().reset_index(drop=True)
df_2.head()