生成式问答LLaMA一般选择可以与GPT-4媲美的Alpaca-lora;阅读理解或者完型填空一般选择基于BERT功能齐全的RoBERTa。

LLMs模型是企事业实现AI+方案的基础,基于效率和复杂度,企事业不可能自己去创建LLM模型,因此,选择一个合适的LLM模型是企事业实现企业级AI的必经之路。 企事业可能需要选择不同的模型以达到不同的要求。

现有流行的企业级LLM模型


名称出品公司简单描述
BERT Google BERT是由谷歌开发的一种预训练语言模型,可以实现文本分类、命名实体识别、问答等自然语言处理任务,基于Transformer.
RoBERTa Facebook RoBERTa是Facebook AI开源的一种预训练语言模型,它是在BERT的基础上进行了一系列改进和优化,如动态掩码、大规模训练等,基于Transformer.
LLaMA Meta 开放且高效的大型基础语言模型,共有 7B、13B、33B、65B(650 亿)四种版本,其拥有很多改进版本如:Alpaca+LoRA、Guanaco+QLoRA、Vicuna、Koala。
ChatGLM 清华大学 开源的、支持中英双语问答的对话语言模型,基于 General Language Model (GLM) 架构。

还有很多流行的LLM模型,这里不一一列举,例如:ALBERT、ELECTRA、DistilBERT、XLNet、T5等等。


模型选择


选择考虑的维度。

  • 出品的公司,好公司出品的模型由于有强大的技术作为支持,往往稳定性比较好。
  • 基于的原生技术,原生技术越大众化的模型由于有友好的生态,后期越容易解决问题和扩展。
  • 模型复杂度,在能满足业务需求的情况下模型简单高效的当然是最好的选择。
  • 微训练的硬件要求,考虑到成本问题,在能满足业务需求的情况下可以在消费级GPU上训练的模型当然首选。
  • License,模型的版权越开放越好。

模型训练的一般步骤


训练适合自己业务的小模型,具体步骤如下:

  • 数据预处理:收集和准备用于训练问答系统的数据集,并将其预处理为模型可接受的格式。通常情况下,数据集需要包含问题和答案,并且需要将其转换为相应的特征向量。
  • 模型训练:使用预处理的数据集训练模型。可以使用预训练的BERT模型作为初始模型,也可以从头开始训练模型,具体取决于您的需求和计算资源。
  • 模型微调:在模型上进行微调,以适应特定的问答任务。这通常包括在BERT模型的顶部添加额外的层,并对其进行训练,以使其适应特定的任务。
  • 模型评估:使用预处理的测试数据集对模型进行评估,以评估其性能和准确性。可以使用多种评估指标,包括精确度、召回率和F1分数等。
  • 模型部署:一旦模型训练完成并且性能满足要求,就可以将其部署到生产环境中,并将其用于实际的问答任务。

需要注意的是,训练自己的问答系统需要大量的数据和计算资源,而且需要对自然语言处理和深度学习有一定的了解。如果您没有足够的资源和经验来训练自己的问答系统,可以考虑使用已经训练好的模型或者使用第三方的API来构建问答系统。

常用数据集及格式


1.SQuAD(Stanford Question Answering Dataset)

一个广泛使用的深度学习问答数据集,其中包含了问答对、文本和答案等信息,用于训练和评估问答模型。SQuAD数据集通常采用JSON格式,并且包含以下字段:

  • 1. version:数据集版本号。
  • 2. data:一个列表,表示数据集中的每个文章和问题对应的信息。
  • 3. title:文章的标题。
  • 4. paragraphs:一个列表,表示文章中的每个段落,包含以下字段:
- context:段落的文本内容。
- qas:一个列表,表示该段落中的每个问题和答案对应的信息,包含以下字段:
- question:问题的文本内容。
- id:问题的唯一标识符。
- answers:一个列表,表示问题的答案,包含以下字段:
- text:答案的文本内容。
- answer_start:答案在文章中的起始位置。

例如,以下是SQuAD数据集中一篇文章和其对应的问题和答案信息的JSON格式表示:

{
    "version": "1.1",
    "data": [{
        "title": "Super Bowl 50",
        "paragraphs": [{
            "context": "Super Bowl 50 was an American football game to determine the champion of the National Football League (NFL) for the 2015 season. The American Football Conference (AFC) champion Denver Broncos defeated the National Football Conference (NFC) champion Carolina Panthers 24-10 to earn their third Super Bowl title.",
            "qas": [{
                "question": "Which NFL team won Super Bowl 50?",
                "id": "56be4db0acb8001400a502ec",
                "answers": [{
                    "text": "Denver Broncos",
                    "answer_start": 163
                }]
            },
            {
                "question": "What was the score of Super Bowl 50?",
                "id": "56be4db0acb8001400a502ed",
                "answers": [{
                    "text": "24-10",
                    "answer_start": 189
                }]
            }]
        }]
    }]
}       
            

2.斯坦福alpaca项目alpaca_data.json

一个广泛使用的深度学习问答数据集,常用于LLaMA的训练,数据集通常采用JSON格式,并且包含以下字段:

  • 1. instruction:描述了模型应该执行的任务,每一条都是唯一的。
  • 2. input:任务的可选上下文或输入。例如,当指令是“总结以下文章”时,输入就是文章,大约 40% 的示例有输入。
  • 3. output:由 text-davinci-003 生成的指令的答案。

例如,以下是数据集的问题和答案信息的JSON格式表示:

[{
    "instruction": "Rewrite the following sentence in the third person",
    "input": "I am anxious",
    "output": "She is anxious."
}]
            

当然还有一些其他的数据集和格式,只需要按照自己选择的模型所需要的格式在网上寻找即可,也可以根据模型需要的格式和自己的业务做属于自己的专有数据集。

微训练


使用自己的数据训练适合自己业务的小模型,请前往Huggingface ModelsHuggingface Transformers Examples、模型对应的Github库、PyTorch、Tensorflow阅读相关资料进行训练。

本地部署


需要部署和使用自己训练的小模型,请前往Huggingface ModelsHuggingface Transformers、模型对应的Github库、PyTorch、Tensorflow阅读相关资料进行部署。


BERT


BERT(Bidirectional Encoder Representations from Transformers)是由谷歌研究员于2018年开发的一种知名的预训练语言模型。它属于基于Transformer的模型家族,极大地推动了自然语言处理(NLP)领域的发展。

BERT的设计目标是通过同时考虑左右上下文来理解句子中单词的上下文关系和含义。这种双向的方法与之前只关注左或右上下文的模型有所区别。通过在大量文本数据上进行训练,BERT学习预测句子中缺失的单词,从而捕捉单词与上下文之间的复杂关系。

预训练与微调:BERT在互联网上大规模未标记的文本数据上进行预训练。在预训练过程中,BERT学习预测句子中的掩码单词,并确定一对句子中的下一句。这个过程有助于BERT学习单词的上下文表示。

预训练之后,BERT通过在特定的NLP任务上进行微调,如情感分析、命名实体识别、问答等,来适应特定的任务。微调包括在特定任务的标记数据上对BERT进行训练,以使其适应特定的任务。这种迁移学习的方法使BERT能够利用其通用的语言理解能力,并将其应用于各种NLP任务,而不需要进行大量的任务特定训练。

BERT的变种:自BERT发布以来,已经开发出了一些变种,以提高其性能并解决特定的NLP挑战。一些著名的变种包括RoBERTa、ALBERT、DistilBERT和ELECTRA。这些模型对原始的BERT架构、训练目标或模型大小进行了修改,以在不同的情境下改善性能或效率。


RoBERTa


RoBERTa(Robustly Optimized BERT approach)是BERT的一个改进和优化版本,由Facebook AI于2019年提出。RoBERTa的目标是通过采用更大的模型规模、更长的训练时间和更丰富的数据来提高BERT的性能。

与BERT相比,RoBERTa的一些改进包括:

  • 更大的模型规模:RoBERTa使用更多的参数和更深的层次来增加模型的容量,提高其表示能力。
  • 更长的训练时间:RoBERTa在预训练阶段使用更长的训练时间,从而允许模型更充分地学习语言表示。
  • 动态掩码:RoBERTa在预训练中使用动态掩码策略,这意味着每次迭代都会随机替换文本中的一些单词,从而迫使模型更好地理解上下文。
  • 更丰富的数据:RoBERTa使用了比BERT更大的文本语料库进行预训练,这使得模型能够学习到更广泛、更多样的语言特征。

RoBERTa的这些改进使其在多个自然语言处理任务上取得了显著的性能提升。它在许多基准测试中超过了BERT,并在多个NLP竞赛中获得了最先进的结果。


LLaMA


LLaMA(Large Language Model Meta AI),由 Meta AI 发布的一个开放且高效的大型基础语言模型,共有 7B、13B、33B、65B(650 亿)四种版本。其数据集来源都是公开数据集,无任何定制数据集,保证了其工作与开源兼容和可复现,整个训练数据集在 token 化之后大约包含 1.4T 的 token。

关于模型性能,LLaMA 的性能非常优异:具有 130 亿参数的 LLaMA 模型「在大多数基准上」可以胜过 GPT-3( 参数量达 1750 亿),而且可以在单块 V100 GPU 上运行;而最大的 650 亿参数的 LLaMA 模型可以媲美谷歌的 Chinchilla-70B 和 PaLM-540B。

LLaMA 使用 transformer 架构,这是自 2018 年以来语言建模的标准架构。LLaMA 的开发人员将他们的精力集中在通过增加训练数据量而不是参数数量来扩展模型的性能,原因是 LLM 的主要成本来自做对训练模型的推断,而不是训练过程的计算成本。

基于 LLaMA 微调的改进模型

名称公司简单描述
Alpaca+LoRA Stanford University Alpaca 是斯坦福在 LLaMA 上进行了精细调优的模型,是后续很多中文 LLM 的基础。
Vicuna UC berkeley、CMU、Stanford 是一款从 LLaMA 模型中对用户分享的对话进行了精细调优的聊天助手,能达到 ChatGPT 90% 的效果。
Koala Berkeley AI Research Institute (BAIR) 是一款从 LLaMA 模型中对用户分享的对话和开源数据集进行了精细调优的聊天机器人,其表现与Vicuna 类似。
Guanaco+QLoRA Washington University 是一款以Meta的LLaMA为基础,得到原驼650亿参数版只需要48GB显存单卡微调24小时,330亿参数版只需要24GB显存单卡微调12小时。

ChatGLM


ChatGLM 是由清华大学开发的一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构。结合模型量化技术,用户可以在消费级的显卡上进行本地部署。 ChatGLM 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。