昇思 MindSpore 大模型(如鹏程・盘古、Qwen、Skywork 等)的预训练数据以中文为核心、多源异构融合、高质量过滤为特点,依托开源数据、互联网爬虫、电子书与领域数据构建,经分布式清洗、去重、过滤后形成百亿至千亿级 Token 的训练语料,是国产大模型知识能力与语言理解的核心基础。

一、预训练数据核心来源

昇思大模型数据来源遵循 “开源打底、网页主力、书籍补充、领域增强” 原则,覆盖通用与专业场景:

  1. 开源开放数据集:采用 Common Crawl、Wikipedia 中文、BookCorpus、CC100、CLUECorpus 等,提供基础文本与知识底座,占比约 30%。
  2. 互联网网页数据:通过合规爬虫抓取中文主流门户、博客、论坛、百科,原始数据达80TB+,经清洗后保留高质量网页文本,占比约 50%。
  3. 电子书与出版物:收录公开授权小说、教材、学术文献、古籍,补充长文本与专业知识,占比约 15%。
  4. 领域与合作数据:联合科研机构 / 企业获取政务、金融、能源、代码等领域数据,增强行业适配性;代码类模型(如 CodeGeeX)额外引入 GitHub 开源代码库(23 种语言)。
  5. 自研补充数据:如昆仑万维 Skywork 开源600GB/150B Token中文语料 Skypile,作为模型专属训练数据。

以鹏程・盘古为例,原始数据约 80TB,经 4 级清洗去重后得到1.1TB 高质量语料(250B Token),确保数据无偏、低噪、合规。

二、数据处理核心流程

昇思采用Hadoop+Spark 分布式集群处理 PB 级数据,流程标准化、工程化:

  1. 格式归一化:统一转换为 JSONL,提取有效文本,过滤乱码 / 特殊字符。
  2. 多级去重:通过 n-gram、SimHash、局部敏感哈希(LSH)剔除网页间 / 网页内重复内容。
  3. 质量过滤:用 fastText 分类模型过滤广告、垃圾、敏感内容;通过语言模型 PPL 值筛选高流畅度文本。
  4. 分词与编码:基于 SentencePiece/BPE 分词,生成 input_ids、attention_mask,适配模型输入长度(如 2048/4096)。
  5. 格式转换:转为 MindRecord(昇思原生格式)或 Megatron 格式,支持分布式训练高效读取。
三、核心代码示例(数据加载与预处理)
  1. 环境准备与依赖安装
    pip install mindspore mindformers datasets
    git clone https://gitee.com/mindspore/mindformers.git
  2. 数据加载与预处理(Python)
    from mindformers import LlamaTokenizer
    from datasets import load_dataset
    import mindspore.dataset as ds
    
    # 1. 加载分词器与数据集
    tokenizer = LlamaTokenizer.from_pretrained("tokenizer.model")
    dataset = load_dataset("json", data_files="raw_corpus.jsonl", split="train")
    
    # 2. 预处理函数:分词、截断、填充
    def preprocess_func(examples):
        texts = [text.strip() for text in examples["text"]]
        return tokenizer(
            texts, truncation=True, max_length=2048,
            padding="max_length", return_tensors="np"
        )
    
    # 3. 批量处理(多线程加速)
    tokenized_ds = dataset.map(
        preprocess_func, batched=True, num_parallel_workers=8, remove_columns=["text"]
    )
    
    # 4. 转为MindSpore数据集,适配分布式训练
    ms_ds = ds.NumpySlicesDataset(
        tokenized_ds, column_names=["input_ids", "attention_mask"], shuffle=True
    )
    ms_ds = ms_ds.batch(4)  # 设置批次大小
  3. 转换为 MindRecord 格式(高效存储)
    from mindspore.mindrecord import FileWriter
    
    writer = FileWriter("pretrain_data.mindrecord", shard_num=8)  # 8分片
    schema = {"input_ids": {"type": "int32", "shape": [-1]}}
    writer.add_schema(schema, "pretrain_data")
    
    for item in ms_ds.create_dict_iterator():
        sample = {"input_ids": item["input_ids"].asnumpy()}
        writer.write_raw_data([sample])
    writer.commit()
四、数据质量与合规保障

昇思严格遵循数据合规、隐私保护、版权授权原则:清洗阶段剔除个人信息与侵权内容;所有开源数据遵守对应许可证;自研数据通过合规审核,确保模型训练与发布合法合规。高质量数据使模型在中文理解、知识问答、逻辑推理等任务上性能显著提升。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐