-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathverify_args.py
82 lines (66 loc) · 3.15 KB
/
verify_args.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import os
import re
import pandas as pd
def extract_config_info(script_content):
# 使用正则表达式提取所需的信息
model = re.search(r'export MODEL="([^"]+)"', script_content).group(1)
gpu_utilization_rate = re.search(r'export GPU_UTILIZATION_RATE=([\d\.]+)', script_content).group(1)
tensor_parallel_size = re.search(r'export TENSOR_PARALLEL_SIZE=(\d+)', script_content).group(1)
max_num_seqs = re.search(r'export MAX_NUM_SEQS=(\d+)', script_content).group(1)
num_prompts = re.search(r'export NUM_PROMPTS=(\d+)', script_content).group(1)
max_num_batched_tokens = re.search(r'export MAX_NUM_BATHCED_TOKENS=(\d+)', script_content).group(1)
max_model_len = re.search(r'export MAX_MODEL_LEN=(\d+)', script_content).group(1)
low_bit = re.search(r'export LOW_BIT="([^"]+)"', script_content).group(1)
return {
'model': model,
'gpu_utilization_rate': gpu_utilization_rate,
'tensor_parallel_size': tensor_parallel_size,
'max_num_seqs': max_num_seqs,
'num_prompts': num_prompts,
'max_num_batched_tokens': max_num_batched_tokens,
'max_model_len': max_model_len,
'low_bit': low_bit
}
def custom_sort_key(row):
# 自定义排序规则
filename = row['filename']
low_bit = row['low_bit']
if filename.startswith('single_card'):
prefix_order = 0
elif filename.startswith('dual_card'):
prefix_order = 1
else:
prefix_order = 2 # 如果有其他类型的文件名前缀
low_bit_order = {'fp16': 0, 'fp8': 1, 'fp8_e4m3': 2, 'fp6': 3, 'sym_int4': 4}
low_bit_order_val = low_bit_order.get(low_bit, 5) # 默认其他值排在最后
return (prefix_order, low_bit_order_val)
def process_scripts(scripts_dirs):
data = []
for scripts_dir in scripts_dirs:
if os.path.isdir(scripts_dir):
for filename in os.listdir(scripts_dir):
if filename.endswith('.sh'):
file_path = os.path.join(scripts_dir, filename)
with open(file_path, 'r') as file:
script_content = file.read()
info = extract_config_info(script_content)
info['filename'] = f"{scripts_dir}/{filename}"
data.append(info)
return pd.DataFrame(data)
if __name__ == "__main__":
scripts_dirs = ["dual_cards/llama2-7b/", "single_card/llama2-7b/"] # 替换为你的脚本所在目录
df = process_scripts(scripts_dirs)
# 调整列的顺序,将 filename 放在最前
cols_order = [
'filename', 'model', 'low_bit', 'gpu_utilization_rate', 'tensor_parallel_size',
'max_num_seqs', 'num_prompts', 'max_num_batched_tokens', 'max_model_len'
]
df = df[cols_order]
df['sort_key'] = df.apply(custom_sort_key, axis=1)
df = df.sort_values(by='sort_key').drop(columns='sort_key')
# 自定义排序顺序
# low_bit_order = ['fp16', 'fp8', 'fp8_e4m3', 'fp6', 'sym_int4']
# df['low_bit'] = pd.Categorical(df['low_bit'], categories=low_bit_order, ordered=True)
# df = df.sort_values(by='low_bit')
# 打印生成的表格
print(df.to_markdown(index=False))