数据集使用

以下是两个用于性能测试的常见数据集,在此提供两个脚本用于自动化加载模型,将数据集转换为token id。需要注意OA数据集的平均SequenceLen较长,总量超过三千条,在模型体量大(65B及以上)而服务化配置的MaxBatchSize较小时,跑完整个数据集耗时久,可能需要数个小时。

数据集获取

GSM8K数据集转tokenids

使用pandas read_json后,然后使用tokenizer直接转换,再用numpy保存到csv中。

python脚本示例如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as np
import pandas as pd
from transformers import AutoTokenizer

MODEL_PATH = "/home/weight/llama2-70b"
OUT_FILE = "token_gsm8k.csv"
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH, trust_remote_code=True, use_fast=True, local_files_only=True)

def gen_requests_from_trace(trace_file):
    len = 0
    with open(OUT_FILE, "w") as f:
        df = pd.read_json(trace_file, lines=True)
        for i, row in df.iterrows():
            ques = row["question"]
            token = tokenizer([ques], return_tensors="np")
            token: np.ndarray = token["input_ids"].astype(np.int64)
            np.savetxt(f, token, fmt="%d", delimiter=",")
            len+=token.shape[-1]
    print(len / 1319)

if __name__ == '__main__':
    gen_requests_from_trace("./GSM8K.jsonl")