1、LLM3.1
8B(80亿)、70B(700亿)、405B(4050亿)
支持八种语言,具备128K扩展上下文的长度。
提供通用知识,数学计算、多语言翻译和工具使用能力,开源下载,并允许开发者定制和微调。
其中4050亿的参数的模型,可与GPT-4、GPT-4o、Claude 3.5 Sonnet等领先的闭源模型相媲美。
在预训练模型上,进行几轮对齐来生成最终的聊天模型。
每一轮涉及监督微调(SFT)、拒绝采样(RS)和直接偏好优化(DPO)
模型官网:https://ai.meta.com/blog/meta-llama-3-1/
模型下载:https://llama.meta.com/llama-downloads/
注:模型太大,如何部署,部署在哪里。
2、模型蒸馏
目的:将大模型的知识传递给小模型的过程
大模型通常是一个性能较好的复杂模型,小模型是一个简单的、计算量较小的模型
小模型学到一些关键知识,从而在保持较高性能同时,降低计算成本和存储需求
原理:从教师模型传递给学生模型,教师模型会用自己的经验解释问题,学生模型从老师的解释中学到知识
模型蒸馏步骤:
1、老师模型 具备较好的性能,但计算量和存储量要求较高
2、创建一个学生模型,可以简单低存储
3、训练小模型,使用[原始的训练数据],还可以使用[大模型的输出结果],来学习关键的知识
4、最后,得到性能较好的小模型。保持较高的性能,降低了计算成本和存储需求
微调和蒸馏虽然可以减少模型大小,但都需要大量的训练数据达到LLM相当的性能。
采用Distilling step-by-step分步蒸馏可以在较少的训练数据和较小的模型下,训练出性能超越LLM的小模型。
这个小模型需要额外的监督信息,LLM生成的自然语言解释,为模型的预测标签提供支持。
实际使用中就是用LLM生成新的标签,用这些标签来训练小模型。
注1:这仍然需要大模型提供打标签的数据集去训练小模型。因此需要部署大模型,去蒸馏出一个小模型。
注2:部署一个轻量级预训练模型:
可以使用已经优化和轻量化的预训练模型,如 DistilBERT 或 MobileBERT。
参考文章:LLM-从大模型蒸馏到小模型的性能提升之路 - 知乎 (zhihu.com)
如何用7.7亿参数的蒸馏模型超过5400亿的大语言模型——Google提出新的模型蒸馏方法:逐步蒸馏(Distilling step-by-step)详解 - 知乎 (zhihu.com)
3、RAG
很多垂域行业都开始使用大模型来优化自己的业务,最典型的方法就是RAG(检索增强生成)了。简单来说就是利用检索技术,找出与用户问题相关性最高的段落,再让LLM基于以上段落,去回答用户的提问。
RAG 是检索增强生成(Retrieval Augmented Generation )的简称,它为大语言模型 (LLMs) 提供了从数据源检索信息的能力,并以此为基础生成回答。简而言之,RAG 结合了信息检索技术和大语言模型的提示功能,即模型根据搜索算法找到的信息作为上下文来查询回答问题。无论是查询还是检索的上下文,都会被整合到发给大语言模型的提示中
RAG 的架构如下。
它既不是一个特定的开源代码库,也不是某个特定的应用,是一个开发框架。
完整的 RAG 应用流程主要包含两个阶段:
数据准备阶段:(A)数据提取–> (B)分块(Chunking)–> (C)向量化(embedding)–> (D)数据入库
检索生成阶段:(1)问题向量化–> (2)根据问题查询匹配数据–> (3)获取索引数据 --> (4)将数据注入Prompt–> (5)LLM生成答案
编码模型:bge-large-zh-v1.5
召回模型:Faiss向量化检索
参考文章:RAG之微调垂域BGE的经验之谈_bge-large-zh-v1.5-CSDN博客
4、bge-large-zh-v1.5
它处理中文文本场景尤其是问答场景效果好像非常好。
Bge-large-zh-v1.5和bge-large-zh区别在哪?
BGE-large-zh-v1.5 通常是 BGE-large-zh 的新版。训练数据更多、更高质量。
注1:不相似句子之间的相似度分数很高
BGE模型的相似度分布并不是[0, 1]区间的均匀分布,其大概处于[0.6, 1]这个区间,因此并不是大于0.6就代表相似。尤其是对于长度较短句子之间的相似度,当前模型的相似度数值会偏高。对于检索任务或者相似度任务,需要根据相似度的阈值筛选相似的句子。找出相似度的相对大小关系,而不是绝对大小关系。
注2:什么时候需要添加查询指令
对于一个使用短查询寻找相关长文档的检索任务,查询与文档之间长度非常不一致,推荐为短查询添加指令。其他任务,推荐不添加指令,例如,像quora这类用一个较短的问题去搜索其他相关的短问题,推荐不添加指令。具体是否添加指令,可以根据实际情况选择其中表现最好的方式。 在所有情况下,文档端都不用添加指令,只是查询端可以选择是否添加指令。
Using Sentence-Transformers
from sentence_transformers import SentenceTransformer
sentences = ["样例数据-1", "样例数据-2"]
model = SentenceTransformer('BAAI/bge-large-zh')
embeddings_1 = model.encode(sentences, normalize_embeddings=True)
embeddings_2 = model.encode(sentences, normalize_embeddings=True)
similarity = embeddings_1 @ embeddings_2.T
print(similarity)
对于短查询到长文档的检索任务, 每个查询都应该以一条指令开始(指令参考 Model List). 但对于文档,不需要添加任何指令。
queries = ['query_1', 'query_2']
passages = ["样例文档-1", "样例文档-2"]
instruction = "为这个句子生成表示以用于检索相关文章:"
model = SentenceTransformer('BAAI/bge-large-zh')
q_embeddings = model.encode([instruction+q for q in queries], normalize_embeddings=True)
p_embeddings = model.encode(passages, normalize_embeddings=True)
scores = q_embeddings @ p_embeddings.T
参考文章:bge-large-zh - 模型库 - 百度智能云千帆社区 (baidu.com)
BGE模型简介:BAAI General Embedding是北京智源人工智能研究院开源的一系列embedding大模型,简称BGE,支持中文和英文的embedding。BGE-Large-zh是BGE系列中参数规模最大的中文向量大模型,参数3.26亿。输入序列512,输出维度1024。预训练文件大小是1.3G,发布时间是 2023-08-02。
预训练数据:BGE-Large-zh模型使用C-MTP(Chinese Massive Text Pairs)作为训练数据。该数据集包括100M(1亿)文本对。C-MTP综合了标注数据和未标注数据,来自于多种来源,如Wudao语料库、科学文献、XLSUM-Zh、Wiki-Atomic-Edit、AmazonReviews-Zh等,确保了数据的大规模、多样性和质量。
架构:BGE-Large-zh模型是基于BERT-like(类BERT)架构,特别是在特殊的[CLS]标记的最后一层隐藏状态被训练来作为文本的嵌入表示。这种架构允许模型捕获文本中的丰富语义信息,并将其压缩到一个固定大小的向量中,这对于许多下游任务(如文本检索、分类和聚类)至关重要。
优势:
1、BGE-large-zh模型在检索、语义文本相似性、配对分类和重排序上,显示了明显的优势。同时,它在各项任务中表现均十分出色。
2、BGE系列模型在论文中也成为C-TEM系列(中文文本编码模型)模型,但BGE更为著名。C-TEM全称是Chinese Text Embedding Models。
评测结果参考:
BGE-Large-zh(BAAI General Embedding - Large - zh)详细信息 | 名称、简介、使用方法,开源情况,商用授权信息 | 数据学习(DataLearner)
5、using lang-chain
LangChain 的核心,LangChain 是围绕 LLMs 构建的框架。我们可以将其用于聊天机器人,
Generative Question-Answering (GQA),摘要等等。
版权归原作者 vivia_2219 所有, 如有侵权,请联系我们删除。