数据集和预处理介绍¶
预训练数据集¶
预训练的目的是为了让模型能够“记住”数据中的内容,所以一般选用互联网、知识库或者书籍数据进行训练。预训练数据的形式一般为可阅读的文本、文章等。
数据集介绍:¶
考虑到模型的大小,本次实验我们旨在训练一个特定领域的小模型——金庸武侠语言模型。我们选取了金庸的部分武侠小说作为训练集进行预训练,大家可以自行选取部分进行使用,并在进行演示和实验报告中说明。
数据来源:https://github.com/loyalpartner/jywxFenxi
数据处理流程¶
数据处理流程的主要目标是将原始文本数据编码为模型可以理解的标记序列,并将其分成训练集和验证集以供后续的模型训练和评估使用。在本次作业中,我们使用 tiktoken
库来处理文本数据。最终,编码后的数据以二进制格式保存在文件中,以供学习模型使用。主要包括以下流程:
- 获取文本编码器
- 使用
tiktoken.get_encoding("gpt2")
获取用于编码文本的编码器。在此示例中,选择了 GPT-2 模型的编码器。
- 使用
- 文本编码
- 使用获取的编码器对读取的文本数据进行编码。
enc.encode_ordinary(data)
将文本转换为标记序列.
- 使用获取的编码器对读取的文本数据进行编码。
- 训练集和验证集划分
- 将文本数据划分为训练集和验证集(可选)。这种划分方式有助于模型的验证和性能评估。
- 数据保存
- 使用 NumPy 将编码后的文本数据保存为二进制文件。训练集和验证集分别保存在名为
train.bin
和val.bin
的文件中。这样的保存方式可使数据在后续训练时更加高效地加载。
- 使用 NumPy 将编码后的文本数据保存为二进制文件。训练集和验证集分别保存在名为
微调数据集构建¶
微调阶段是未来让模型能够利用预训练中“学习”到的知识和内容,来进行问答和对话。微调数据集的形式一般为问答对的形式:
{
"question": "《倚天屠龙记》有哪些主角?",
"answer": "《倚天屠龙记》是金庸先生所著的武侠小说,主要讲述了元朝末年武林中的故事。这部小说的主角包括:
1. 张无忌:男主角,明教教主,拥有屠龙刀和倚天剑,是武林中备受关注的人物。
2. 赵敏:女主角之一,绍敏郡主,喜欢张无忌,敢爱敢恨,为了爱情可以勇往直前。
3. 周芷若:女主角之一,峨嵋派第四代掌门人,张无忌的妻子,与张无忌之间有着深厚的感情纠葛。
4. 小昭:女主角之一,明教护教法王黛绮丝之女,喜欢张无忌,最后成为张无忌的义女。
此外,还有其他重要角色如谢逊、成昆、杨逍、范遥等。这些人物共同构成了《倚天屠龙记》丰富的故事情节。"
}
数据集介绍¶
本次实验提供20条样例微调数据,作为参考数据集。微调数据也需要经历类似预训练的数据处理流程:
- 利用文本编码器对
question
和answer
分别编码,同时进行适当的拼接。 - 通过适当标识区分
question
和answer
. - 训练集和验证集划分。
- 处理不同长度的数据
除提供的微调数据集之外,强烈建议大家通过多种方式构建更多额外的数据用于微调,包括。获取微调数据的途径可以包括:
- 自己和同学一起手写微调数据(问题和答案)
- 利用现有 AI 模型进行辅助数据生成。
也可以观察不同数据量进行微调的模型的效果。
最后更新:
2023年9月9日
作者: