Datawhale 2025 AI冬令营 +动手定制你的专属大模型
前言:大模型是指具有大规模参数和复杂计算结构的机器学习模型。它们通常拥有数百万到数十亿的参数,需要大量的数据和计算资源进行训练和推理。大模型在深度学习领域中占据重要地位,能够处理复杂的任务,如自然语言处理、计算机视觉和语音识别等。
了解如何制作专属大模型
1、大模型制作平台
讯飞星辰Maas平台
零代码低门槛领域精调,全栈工具链加速大模型效果定制。
2、数据集制作
我们常见的微调数据集需要符合 Alpaca格式 。数据存储形式:通常以 JSON 文件格式存储。这样方便数据的读取、处理和在不同的机器学习框架中使用。例如一个简单的 Alpaca 格式的 JSON 数据示例如下:
[
{
"instruction": "用“梦想”、“坚持”和“成功”这三个词组成一个句子。",
"input": "",
"output": "只有坚持追逐梦想,才能最终取得成功。"
},
{
"instruction": "对《三国演义》这本书做一个简短的介绍。",
"input": "",
"output": "《三国演义》是中国古典四大名著之一,描写了从东汉末年到西晋初年之间近百年的历史风云,诉说了东汉末年的群雄割据混战和魏、蜀、吴三国之间的政治和军事斗争,塑造了一群叱咤风云的三国英雄人物。"
}
]
字段说明 :
-
instruction:任务的指令,模型需要完成的具体操作,一般可以对应到用户输入的 Prompt 。
-
input:任务所需的输入内容。若任务是开放式的,或者不需要明确输入,可以为空字符串。
-
output:在给定指令和输入的情况下,模型需要生成的期望输出,也就是对应的正确结果或参考答案。
完整格式:
{
"instruction": "人类指令(必填)",
"input": "人类输入(选填)",
"output": "模型回答(必填)",
"system": "系统提示词(选填)",
"history": [
["第一轮指令(选填)", "第一轮回答(选填)"],
["第二轮指令(选填)", "第二轮回答(选填)"]
]
}
]
制作方法 :
1.手搓。整理好所需要的数据,按照对应的格式,使用代码完成数据集的构建。
2.利用大模型完成。项目推荐:repo:https://github.com/KMnO4-zx/extract-dialogue.git 。
动手定制专属大模型
案例 朕的嬛嬛
数据来源:https://github.com/datawhalechina/self-llm/blob/master/dataset/huanhuan.json
体验嬛嬛
prompt: 嬛嬛,朕emo啦
output:
思考:大模型微调基本都采用了Alpaca格式。关于这个数据集的格式特点,下列说法正确的是?
A 数据集中instruction字段可以为空,因为有些任务不需要指令
B input字段必须包含具体的输入内容,否则数据集无效
C output字段是可选的,不是所有样本都需要标准答案
D input字段在开放式任务中可以为空字符串,这是格式允许的
提示:"instruction": "人类指令(必填)", "input": "人类输入(选填)", "output": "模型回答(必填)",
Alpaca格式的数据集包含三个主要字段:instruction(任务指令)、input(输入内容)和output(期望输出)。其中明确指出,若任务是开放式的,或者不需要明确输入,input可以为空字符串。这正好对应选项D的说法。而其他选项都存在错误:A选项中instruction不能为空,因为它代表了模型需要完成的具体操作;B选项错误地认为input必须有内容;C选项中output是必需的,因为它代表了模型训练所需的正确结果或参考答案。
思考解答:
1、如何定制大模型?用到的技术主要是什么?
定制大模型是指针对特定任务或数据集,对预训练的大语言模型进行调整和优化,使其性能得到提升的过程。
- 微调 (Fine-tuning): 这是最常用的方法。 利用预训练的大模型(如GPT-3、LLaMA等),在其基础上使用特定任务的数据集进行进一步训练。这个过程会调整模型的参数,使其更擅长处理目标任务。数据集通常包含与目标应用相关的输入-输出对。
- 提示工程 (Prompt Engineering): 这是通过精心设计输入提示来引导模型产生期望输出的方法。它更侧重于控制模型输出,而非改变模型本身。技术包括少样本学习(在提示中提供少量示例)、思维链提示(引导模型进行推理过程)以及在提示中指定约束条件等。
- 参数高效微调 (Parameter-Efficient Fine-Tuning, PEFT): 这类技术旨在降低微调的计算成本和内存需求。它们只更新模型参数的一个小子集,即使资源有限也能进行定制。
-
低秩适应 (LoRA): 在原始模型权重中添加低秩分解矩阵。只有这些小矩阵在微调过程中被更新。
-
前缀微调 (Prefix-Tuning): 学习一组小的前缀token,添加到输入序列的前面。这些前缀引导模型的行为。
-
适配器模块 (Adapter Modules): 在模型的每一层添加小的适配器模块。这些模块在训练时,原始模型的权重保持不变。
-
指令微调 (Instruction Fine-tuning): 专注于训练模型更好地遵循指令。数据集通常由指令和相应的回应组成。这种方法提高了模型理解和执行用自然语言描述的不同任务的能力。
-
基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback, RLHF): 这是一种高级技术,使用强化学习来训练模型,其中人类反馈作为奖励信号。它旨在使模型的输出与人类偏好一致,使其生成更有帮助和更安全的回应。
-
2、什么是微调?为什么要微调?微调得到的是什么?
什么是微调?
微调 (Fine-tuning) 指的是在已经预训练好的模型上,使用新的数据集进行进一步训练的过程。 这个预训练好的模型通常已经在大型数据集上学习到了丰富的知识和特征表示,而微调的目标是将这些通用的知识和能力适配到一个新的、更具体的任务或领域。
为什么要微调?
-
节省计算资源: 从头开始训练一个大型模型需要海量的计算资源和时间,这对于大多数个人或机构来说都是不可行的。微调利用预训练模型作为起点,只需要在新的数据集上进行相对较少的训练,就能取得不错的效果,大大节省了计算成本和时间。
-
提升模型性能: 预训练模型虽然具备一定的通用能力,但在特定任务上的表现可能并不理想。微调可以利用特定任务的数据集,调整模型的参数,使其更擅长处理该任务,从而提高模型的准确性和效率。
-
适应新领域: 预训练模型通常是在通用的数据集上训练的,可能无法很好地适应特定领域的数据特征。微调可以将模型适配到新的领域,使其更好地理解和处理该领域的数据。
微调得到的是什么?
微调得到的是一个调整后的模型。这个模型仍然基于预训练模型的架构,但是其参数已经被更新,使其更适应新的任务或领域。 具体来说,微调过程会修改预训练模型的部分或全部参数,使其在新的数据集上取得更好的性能。 这个调整后的模型可以用于部署,执行特定的任务。
举例说明:
假设有一个预训练好的图像分类模型,它能够识别各种常见的物体。 如果想要让这个模型识别特定类型的花,就可以使用包含各种花朵图片及其对应标签的数据集对该模型进行微调。 微调之后,模型的参数会发生变化,使其能够更准确地识别这些花朵。
3、微调得到的模型可以用来做什么?怎么用?
微调得到的模型,本质上是一个经过特定数据集训练,使其在特定任务上表现更优的模型。它的用途非常广泛,取决于你最初预训练模型的类型和微调的数据集。
将微调后的模型部署到实际应用环境中,例如嵌入到网站、移动应用或其他系统中。 这可能需要使用模型服务器或其他部署工具。
4、微调的关键步骤是什么?
- 数据集的收集和处理。数据集的好坏也决定了微调后模型的好坏。
- 基础模型的选择。不用的底座模型对于所对应的方向不同。
- 微调方法的选择。lora,Q-lora.P-turning……
5、的数据可以用来微调?从哪里可以找到?
用于微调的数据必须与目标任务高度相关,并且质量高。 数据质量比数量更重要,因为低质量数据会导致模型性能下降甚至出现偏差。公开数据集: Hugging Face Datasets, OpenAI Dataset Search, Papers with Code, Kaggle等网站提供了大量的公开数据集
如何构建自己的微调数据集?
- 根据目标任务,确定你需要收集的数据类型。例如,对于情感分类,你需要文本数据及其对应的正负面情感标签;对于图像识别,你需要图像数据及其对应的类别标签。
- 确定数据规模: 你需要多少数据? 这取决于任务的复杂性和模型的大小。
- 数据格式化:将你的数据转换成模型可以接受的格式,例如CSV, JSON, 或特定框架(如TensorFlow Records)支持的格式。 这需要根据你使用的模型和框架进行调整。