jingyaogong / minimind

「大模型」3小时完全从0训练26M的小参数GPT,个人显卡即可推理训练!
https://jingyaogong.github.io/minimind
Apache License 2.0
2.7k stars 329 forks source link

Seq-Monkey的总量10B是如何计算的啊 #41

Closed CarryHJR closed 1 month ago

CarryHJR commented 1 month ago

Seq-Monkey通用文本数据集 / Seq-Monkey百度网盘 是由多种公开来源的数据(如网页、百科、博客、开源代码、书籍等)汇总清洗而成。整理成统一的JSONL格式,并经过了严格的筛选和去重,确保数据的全面性、规模、可信性和高质量。总量大约在10B token,适合中文大语言模型的预训练

跑完预处理 得到的 arr.shape 是 1510396873 约 1.5B

jingyaogong commented 1 month ago

Seq-Monkey通用文本数据集 / Seq-Monkey百度网盘 是由多种公开来源的数据(如网页、百科、博客、开源代码、书籍等)汇总清洗而成。整理成统一的JSONL格式,并经过了严格的筛选和去重,确保数据的全面性、规模、可信性和高质量。总量大约在10B token,适合中文大语言模型的预训练

跑完预处理 得到的 arr.shape 是 1510396873 约 1.5B

大约10B指的是这个数据集。 预处理只把数据集里text长度小于512的内容保留下来了。

import jsonlines
def count_total_characters(file_path):
    total_chars = 0
    idx = 0
    with jsonlines.open(file_path) as reader:
        for obj in reader:
            content = obj.get('text', '')
            total_chars += len(content)
            idx += 1
            if idx % 10000 == 0:
                print(idx, total_chars)

    return total_chars

file_path = './dataset/mobvoi_seq_monkey_general_open_corpus.jsonl'
total_characters = count_total_characters(file_path)
print(f"Total number of characters: {total_characters}")
Total number of characters: 11474764034

全算下来一共是 11474764034 个字符=11.5B的字符 考虑中文数据集 字符:中文字数 ≈ 1:1 就写了一共大约10B的token 当然这里只是字数,换算到具体多少token就取决于tokenizer的词汇密度了,效率越高的tokenizer计算出的token数量越少

CarryHJR commented 1 month ago

好滴 感谢及时的回复