发布时间:
术语 #
LLM
:大语言模型(英文:Large Language Model,缩写LLM),也称大型语言模型,是一种人工智能模型,旨在理解和生成人类语言。它们在大量的文本数据上进行训练,可以执行广泛的任务,包括文本总结、翻译、情感分析等等。LLM的特点是规模庞大,包含数十亿的参数,帮助它们学习语言数据中的复杂模式。这些模型通常基于深度学习架构,如转化器,这有助于它们在各种NLP
任务上取得令人印象深刻的表现。RAG
:检索增强生成(Retrieval-Augmented Generation,检索增强生成) 是一种结合了信息检索技术与语言生成模型的人工智能技术。该技术通过从外部知识库中检索相关信息,并将其作为提示(Prompt)输入给大型语言模型(LLMs),以增强模型处理知识密集型任务的能力,如问答、文本摘要、内容生成等。RAG模型由Facebook AI Research(FAIR)团队于2020年首次提出,并迅速成为大模型应用中的热门方案。LoRA
:全称Low-Rank Adaptation of Large Language Models,是一种用于微调大型语言模型的低秩适应技术。LoRA
:对 16 位小型可训练矩阵进行微调,无需更新所有模型权重。LoRA 是一个使用量化思想对 LoRA 进行优化的量化算法,可以显著的降低训练大模型时所需要的显存资源。QLoRA (Quantized LoRA)
:quantized 模型量化,将 LoRA 与 4 位量化相结合,以最少的资源处理非常大的模型。QLoRA的优化有三个核心要点:- 首先是定义了一种4位标准浮点数(Normal Float 4-bit,NF4)量化,基于分块的分位数量化的量化策略;
- 其次是双重量化,包含对普通参数的一次量化和对量化常数的再一次量化,可以进一步减小缓存占用;
- 最后是分页优化器(Page Optimizer),用来在显存过高时用一部分内存代替显存
NLP
:全称是 Natuarl Language Processing,中文意思是自然语言处理,是人工智能领域的一个重要方向
Unsloth 数据格式 #
为了启用标记化过程,数据集需要采用标记器可以读取的格式。
数据源可以是CSV文件,PDF甚至是网站。您也可以综合生成数据,但需要格外小心,以确保每个示例都是高质量和相关的。
格式 | 描述 | 训练类型 |
---|---|---|
原始文本集合(Raw Corpus) | 来自网站、书籍或文章等来源的未经处理的文本。 | 持续预训练 |
指令(Instruct) | 模型需要遵循的指令以及期望的输出结果示例。 | 监督式微调(Supervised fine-tuning,SFT) |
对话(Conversation) | 用户与AI助手之间的多轮交流。 | 监督式微调(Supervised fine-tuning,SFT) |
人类反馈强化学习(RLHF) | 用户与AI助手之间的对话,其中助手的回应由人类评估者进行评分。 | 强化学习:是一种机器学习的方法,通过正向反馈来强化模型的学习过程 |
原始文本 Raw Corpus #
Google Colab 补全续写
Google Colab 持续预训练
为了继续预训练,我们使用没有特定结构的原始文本格式:
"text": "Pasta carbonara是一道传统的罗马面食。酱汁是由生鸡蛋、磨碎的佩科里诺罗马诺奶酪和黑胡椒混合而成的。然后,将热意大利面与酥脆的猪肉馅和鸡蛋混合物一起搅拌,用余热制成奶油酱汁。尽管人们普遍认为,正宗的carbonara从不含奶油或大蒜。这道菜可能起源于20世纪中叶的罗马,尽管其确切起源仍有争议。。。"
这种格式保留了自然语言流,并允许模型从连续文本中学习。
指令 Instruct #
基于特定的指令集在一个回合中输出文本,则可以使用 Alpaca 格式的指令格式
"Instruction": "我们希望模型执行的任务。"
"Input": "它是可选的,但很有用,它本质上是用户的查询。"
"Output": "任务的预期结果和模型的输出。"
对话 Conversation #
Google Colab 微调笔记
当我们想要多轮对话时,我们可以使用 sharegpt 会话格式
human
:人类assistant
:助手
{
"conversations": [
{
"from": "human",
"value": "你能帮我做意大利面吗?"
},
{
"from": "assistant",
"value": "你想要传统的罗马食谱,还是更简单的版本?"
},
{
"from": "human",
"value": "请使用传统版本"
},
{
"from": "assistant",
"value": "正宗的罗马烤肉只使用了几种配料:意大利面、瓜希拉、鸡蛋、罗马佩科里诺干酪和黑胡椒。你想要详细的食谱吗?"
}
]
}
每个消息在人类和助理之间交替,允许自然的对话流。
问:如何将我的原始数据格式化为 Alpaca 指令?
答:一种方法是创建一个 Python 脚本来处理原始数据。如果您正在处理摘要任务,则可以使用本地 LLM 为每个示例生成指令和输出。
人类反馈强化学习 RLHF #
待补充内容……