AI在线 AI在线

从零实现一个17M参数的GPT预训练模型

大家好,我是写代码的中年人! 今天我们使用开源的的中文数据进行模型的预训练,下面跟着我的步骤,从零实现你的预训练模型。 本文所有代码和数据资源位置:、预训练模型的概念预训练模型(Pretrained Model)就是一个已经在海量数据上训练过的模型,它学会了语言的基本规律、结构和语义,然后可以拿来做各种下游任务,比如写作、翻译、问答、分类、生成代码等。

从零实现一个17M参数的GPT预训练模型

大家好,我是写代码的中年人!

今天我们使用开源的的中文数据进行模型的预训练,下面跟着我的步骤,从零实现你的预训练模型。

本文所有代码和数据资源位置:

https://github.com/ColinAIAPP/MoiraiLM

01、预训练模型的概念

预训练模型(Pretrained Model)就是一个已经在海量数据上训练过的模型,它学会了语言的基本规律、结构和语义,然后可以拿来做各种下游任务,比如写作、翻译、问答、分类、生成代码等。

那“预训练”到底在学什么?以语言模型(LLM)为例:预训练阶段的任务通常是预测下一个词(token)。

接下来我们就一步一步实现一个17M参数的预训练模型。

02、数据准备

构建语言模型的第一要义是高质量的数据源。对于中文任务,选择维基百科开源中文数据集是一个理想起点。这个数据集包含数百万条中文百科条目,涵盖历史、文化、科技等领域,总量约数GB的纯文本数据。它开源且免费,可通过维基百科的官方转储页面下载最新版本的XML格式文件。

要解压处理这个文件我们要使用wikiextractor工具进行数据解压。

安装解压命令:

复制

解压命令:

复制

复制

03、清洗数据

我们解压后的数据如下图,下面我们要把数据清洗出来。

注:

我们本步骤生成的文件为 data/cleaned_wiki_full.txt

复制复制

04、训练分词器

我们使用SentencePiece训练分词器,本次我们训练的分词库大小为16k,你也可以训练32k的分词库。相关代码及过程如下:

注:

我们本步骤生成的文件为

workdir/spm_wiki_16k.model

workdir/spm_wiki_16k.vocab

复制复制

05、原始文本转为Token ID 序列

在训练大型语言模型的准备阶段,将海量文本语料转化为模型可处理的数字格式至关重要。本次将原始文本语料编码为整数 Token ID 序列。为了克服单次加载大文件的内存限制,脚本采用了分块读取机制,支持以自定义大小逐块处理语料。所有 Token ID 最终被汇总并转化为高效率的 torch.int32 PyTorch 张量,直接存储为 .pt 文件。这不仅优化了数据格式,方便后续 PyTorch DataLoader 快速读取,同时也提供了关键的统计信息和完整性验证,是构建 LLM 数据集的稳定且高性能的预处理方案。

复制

06、进行模型预训练

复制

07、进行模型推理测试

复制

我们看到模型大概可以预测我们输入的下一个词,因我们训练的参数和步数很低,模型输出的乱七八糟!

本次总结

本次我们做了数据准备、数据清洗、分词器训练、模型训练、推理等,请根据步骤进行执行代码,你便可以得到一个17M参数的小模型。后面我们再加大参数进行训练,再进行监督微调。

相关资讯

2025年的五大AI趋势:智能体、开源和多模型

随着AI技术的飞速发展,2025年的AI领域将迎来前所未有的变革。 从开源AI的崛起,到多模态AI的普及,再到本地AI的蓬勃发展,以及AI成本的显著降低和智能体的广泛应用,这五大趋势将深刻影响企业和个人的未来发展。 2025年,AI领域不再仅仅局限于大型语言模型(LLM),而是聚焦于更智能、更廉价、更专业和更本地的AI解决方案,这些方案能够处理多种数据类型,并实现自主行动。
3/3/2025 11:16:18 AM
Sol Rashidi

大型语言模型是否解决了搜索问题?

译者 | 李睿审校 | 重楼尽管LLM在内容生成方面表现出色,但需要采用语义分块和向量嵌入等技术来解决复杂数据环境中的搜索问题。 大型语言模型(LLM)的涌现推动了信息检索和人机交互的范式转变。 这些模型在大量的文本语料库上进行训练,并针对预测语言任务进行了优化,在响应查询、总结文本内容和生成上下文相关信息方面展现出了显著成效。
3/13/2025 12:09:27 PM
李睿

有望重新定义语言生成技术的扩散模型——LLaDA​

译者 | 朱先忠审校 | 重楼简介如果我们能让语言模型更像人类一样思考,结果会怎样? 如果它们不是一次写一个字,而是先勾勒出自己的想法,然后逐渐完善,结果又会怎样? 这正是大型语言扩散模型(LLaDA)所引入的:一种与大型语言模型(LLM)中当前使用的文本生成不同的方法。
3/17/2025 11:35:36 AM
朱先忠
  • 1