首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于Llama-3B/1B模型进行RAG与SFT实训

基于Llama-3B/1B模型进行RAG与SFT实训

原创
作者头像
用户7627824
发布2024-11-20 16:56:49
发布2024-11-20 16:56:49
6660
举报

一、本模型应用基于Llamma-3.2-3B/1B模型进行RAG与SFT实训

1. 本应用基于Llama-3.2-3B-Instruct,封装示例代码及数据,用于大模型搜索增强生成(RAG)领域实训体验。结合该实训,学习者可快速体验“文本向量化”和搜索增强生成的原理和运行过程。

2.基于Llama-3.2-1B-Instruct,封装示例代码及数据,用于大模型SFT精调领域实训体验。结合该实训,可帮助学习者体验如何通过监督学习对大模型进行微调,从而提升模型回答准确性与理性对齐的过程。

二、LLM简单培训

本项目包含了LLM简单培训的相关物料,包括代码、数据、教程。旨在教会学员初步掌握LLM的推理、训练、RAG等能力。

## 项目结构

- model: 从Hugging Face下载的模型,包括LLM生成模型和向量化模型;

- RAG: 搜索增强生成相关的代码和数据;

- sft: 大模型微调相关教程的代码和数据。

三、 RAG教程

## 大模型的输入输出模态

输入一些自然语言描述的问题,输出自然语言的答案。

举例而言,

输入给大模型:地球围绕着谁转动?

大模型输出:太阳。

人类语言是对世界描述的高级抽象,其能够覆盖几乎所有的问题。

## 知识类型

- 稳定的知识,例如常识。这类知识可以注入到模型里面,模型直接给出回答;

- 在特定领域内的知识,或者变化的/时效性较强的知识,例如客服系统的问答库、新闻等。这类知识模型无法内化到模型内,模型无法给出正确的案例。

第二类典型的问题:力肌描记术相比于可穿戴惯性传感器的优点是什么?(这是个在机器人领域的较新的探究议题,尚未形成稳定的知识)

## 搜索增强生成(Retrieval Augmented Generation, RAG)的动机

第二类知识的特点:知识库里面存在知识,但是模型没有内化这些知识。

一个可行的办法是,把知识库中相关的内容检索出来,作为上下文共同输入给大模型,让模型基于相关内容,作出正确的回复。这就是搜索增强生成的思想。

## RAG的标准流程

首先对知识库建立索引(vector db),现在常用的是向量索引(特别多的话,可以采用向量数据库,上图的vector DB);

对于一个问题,将问题视为查询(query),将其向量化,然后根据问题的向量,与向量数据库的向量进行近似度匹配,找到比较相关的问题(retriever);

然后把问题和相关的内容一起输入给大模型(LLM),得到答案(answers)。

## 文本向量化

文本向量化,就是把一段自然语言映射到向量空间进行表示,这个向量称为embedding。在向量空间度量embedding的相似度,可以估计出原始文本的语义相似度。

相比于传统的基于词度量相似度的算法,向量可以更好地表征句子的语义信息,因此在寻找语义相似的效果会更好。

## 应用举例——结合最新的研究成果回复问题“力肌描记术相比于可穿戴惯性传感器的优点是什么?”

首先,把一段时间内最新的研究成果都爬下来,并进行向量化;

其次,对问题向量化,得到这个问题“力肌描记术相比于可穿戴惯性传感器的优点是什么?”的表征;

然后,找到所有研究成果向量中和问题向量匹配度较高的信息,作为相关上下文信息;

最后,将找到匹配度较高的研究成果和问题一起输入给模型,让模型给出回复。

四、SFT教程

## 大模型的模型结构

对于输入的句子,首先将其 token 化,并从中得到各个 token 对应的 embedding;

然后将 embedding 过若干个transformer block,每个block包含掩码注意力、归一化、前向传播矩阵;

最后,将最终的embedding映射到词表空间中,得到该词的预测值。

## 大模型的训练目标

给定前面的token,预测下一个token。训练目标是使得模型预测的值尽可能接近真实值。

根据下一个token的实际值计算交叉熵,计算损失函数。

## SFT解决的问题

- 大模型的成功,来自于采用自监督学习的方式,对互联网上积累的海量数据的应用。

然而,互联网上的数据是有偏差的,无法符合人类的价值判断和对正确答案的要求。

通过SFT,可以让模型更好地向人类的偏好和价值观对齐,输出对人更有好的答案。

- 大模型在上线后,不可避免地会遇到各种各样的bad case。这些case的修复可以提升大模型产品的用户体验,并使得模型在某个应用上的能力更强。

## 如何用SFT训练模型

构造 问题 - 答案 数据对,答案就是对这个问题的正确答案。

训练模型在给定的问题时,输出尽可能和答案一致。

基本的流程是,收集并创建相关的SFT数据集,然后使用数据集训练模型。

## 应用举例——对模型的人格进行训练

首先,找到表现较好的模型,我们选用Llama-3.2-1B来进行教学,LLama本来的人格是Meta训练的对话机器人;

其次,找到一批人格数据,数据的内容是由LLM学习人员训练训练的教学小助手;

然后,使用这批数据训练模型,并进行结果的评估,看看模型的人格是否已经被训练;

最后,演示下混合精度训练对于模型训练效率的提升。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档