大语言模型对比效果与分析

大语言模型

ChatGLM-6B系

ChatGLM-6B

基于通用语言模型(GLM)框架的开放中英双语语言模型,有62亿个参数。

ChatGLM-6B使用类似于ChatGPT的技术,针对中文QA和对话进行了优化。该模型针对大约 1T 的中英文语料库进行了训练,并辅以监督微调、反馈引导和人类反馈的强化学习。该模型只有大约 62 亿个参数,能够生成符合人类偏好的答案。

使用量化技术,用户可以在消费级显卡上本地部署(INT4 量化级别只需要 6GB 的 GPU 内存)。

ChatGLM-6B-INT4

在 ChatGLM-6B 量化后的模型权重。

具体的,ChatGLM-6B-INT4ChatGLM-6B 中的 28 个 GLM Block 进行了 INT4 量化,没有对 Embedding 和 LM Head 进行量化。量化后的模型理论上 6G 显存(使用 CPU 即内存)即可推理,具有在嵌入式设备上运行的可能。

ChatGLM-6B-INT4-QE

具体的,ChatGLM-6B-INT4-QE 对 ChatGLM-6B 中的 28 个 GLM Block 、 Embedding 和 LM Head 进行了 INT4 量化。量化后的模型权重文件仅为 3G ,理论上 6G 显存(使用CPU即内存即可推理,具有在嵌入式设备上运行的可能。

ChatGLM-6B-INT8

在 ChatGLM-6B 量化后的模型权重。

进行int8量化

Chatchatglm2-6B

是开源中英双语对话模型 ChatGLM-6B 的第二代版本

量化等级 最低 GPU 显存(推理) 最低 GPU 显存(高效参数微调)
FP16(无量化) 13 GB 14 GB
INT8 8 GB 9 GB
INT4 6 GB 7 GB

优化后的新特性:

  1. 更强大的性能:
  2. 更长的上下文:
    1. 基于 FlashAttention 技术,2K 扩展到了 32K
    2. 并在对话阶段使用 8K 的上下文长度训练,允许更多轮次的对话。
    3. 对单轮超长文档的理解能力有限
  3. 更高效的推理:基于 Multi-Query Attention 技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K
  4. 更开放的协议:ChatGLM2-6B 权重对学术研究完全开放

ChatYuan

元语功能型对话大模型

这个模型可以用于问答、结合上下文做对话、做各种生成任务,包括创意性写作,也能回答一些像法律新冠等领域问题。它基于PromptCLUE-large结合数亿条功能对话多轮对话数据进一步训练得到。

Moss

训练了代码

复旦团队开源,160亿参数,并且已经在1000亿中文token上进行了训练,总训练token数量达到7000亿,其中还包含约3000亿代码。16B

复旦开源MOSS测评

增加了「搜索引擎、计算器、解方程、文生图」等插件功能,既可在线体验,也支持本地部署

突出功能为Web search功能;目前未开源int4/int8量化版

功能

FastChat-Vicuna

FastChat

  1. FastChat是用于对话机器人模型训练、部署、评估的开放平台,其核心特性包括:
    • 模型权重,训练代码,评估代码可用于SOTA模型(比如Vicuna,FastChat-T5)
    • 分布式多模型部署系统,自带Web UI和OpenAI兼容的RESTful APIs
  2. FastChat集成了Vicuna、Koala、alpaca、LLaMA等开源模型。

号称能够达到gpt-4的90%的质量

Vicuna-13B-hf

是在LLaMa-13B的基础上使用监督数据微调得到的模型,数据集来自于ShareGPT.com产生的用户对话数据,共70K条。ShareGPT是一个ChatGPT数据共享网站,用户会上传自己觉得有趣的ChatGPT 回答

模型 强项 不足
ChatGLM-6B系 中英文对话、人类强化学习 对于学习需要 一定的数据训练
ChatYuan 问答、对话、生成任务、创意性写作、 法律、新冠等医学问题 代码的理解与学习有所欠缺
Moss 搜索引擎、计算器、解方程、文生图、训练量大、训练了代码 效果可能没有那么好,对部分问题回答没有逻辑,甚至不能回答
FastChat-Vicuna 能够达到gpt-4的90%的质量、数据集来自于ShareGPT.com产生的用户对话数据 Vicuna在涉及编程、推理、数学以及事实准确性的任务上表现不佳

量化技术

int4量化技术

INT4量化模型原理 | Borrow A Step

INT4量化是一种用于神经网络推理的量化方法,它将网络中的权重和激活值表示为4位整数。在传统的神经网络中,权重和激活值通常以浮点数形式表示,占用较大的存储空间和计算资源。通过使用INT4量化,可以显著减少模型的存储需求和计算开销,从而提高模型的推理效率。

INT4量化的基本原理是将浮点数值映射到4位整数范围内。这种量化方法可以通过量化训练过程或离线量化过程实现。在量化训练中,网络在训练过程中使用低精度的权重和激活值进行计算,并通过反向传播算法进行梯度更新。离线量化则是在训练完成后,将浮点数模型转换为INT4表示。

int8量化技术

INT8量化使用8位整数来表示权重和激活值,相比于浮点数表示,它可以显著减少存储需求和计算开销。INT8量化相对于INT4量化具有更高的精度,因为它可以表示更多的离散值。这意味着INT8量化可以更好地保留模型中的细节和特征,从而在一定程度上减少量化对模型性能的影响。

然而,INT8量化相对于INT4量化也有一些劣势。首先,INT8量化需要更多的存储空间,因为每个数值需要使用8位来表示。其次,INT8量化需要更多的计算资源来进行8位整数的运算。因此,在资源受限的环境中,INT4量化可能更适合应用,因为它可以进一步减少存储需求和计算开销。

Embedding 模型

Embedding 模型是一种将高维离散数据映射到低维连续向量空间的技术。在自然语言处理领域中,Embedding 模型常用于将文本数据转换为实数向量表示,以便计算机能够更好地理解和处理文本数据。

在 Embedding 模型中,每个离散的输入元素(如单词、字符、句子等)都被映射到一个实数向量,这个向量被称为嵌入向量(embedding vector)。嵌入向量的维度通常是固定的,可以根据任务和数据集的需求进行设置。

Embedding 模型的训练通常是通过大规模的文本语料库进行的。模型通过学习上下文信息和语义关联来生成嵌入向量,使得具有相似语义或上下文关系的元素在嵌入空间中彼此接近。

通过将文本数据映射到连续向量空间,Embedding 模型可以捕捉到词语之间的语义关系,例如近义词之间的相似性、词义的类比关系等。这使得它在许多自然语言处理任务中非常有用,如文本分类、命名实体识别、情感分析、机器翻译等。

ERNIE-Tiny

ERNIE介绍 | 百度AI开放平台

“ERNIE-Tiny”是ERNIE模型系列中的一个较小规模版本,相对于更大的模型,它具有更少的参数和计算资源需求。尽管规模较小,但”ERNIE-Tiny”仍然可以用于一些自然语言处理任务,如文本分类、命名实体识别、情感分析等。

text2vec

Text2Vec 是一个用于将文本数据映射到向量表示的开源软件包,它提供了一种简单而灵活的方法来生成文本的向量表示。Text2Vec 的目标是通过学习文本数据的分布式表示来捕捉语义和上下文关系。

Text2Vec 提供了一些常用的文本向量化方法,包括基于词袋模型(Bag-of-Words)、TF-IDF、Word2Vec 和 GloVe 等。它还支持通过使用预训练的词向量模型(如 Word2Vec 和 GloVe)来生成文本向量。

使用 Text2Vec,你可以将文本数据作为输入,并使用其中的单词、短语或句子来生成对应的向量表示。这些向量可以用于文本分类、聚类、相似度计算等任务。

M3E

闻达 | M3E

M3E 是 Moka Massive Mixed Embedding 的缩写

Moka,此文本嵌入模型由 MokaAI 训练并开源,训练脚本使用 uniem

Massive,此文本嵌入模型通过千万级的中文句对数据集进行训练

Mixed,此文本嵌入模型支持中英双语的同质文本相似度计算,异质文本检索等功能,未来还会支持代码检索

微调

P-Tuning v2:与微调性能相等的提示性优化

LORA的训练与使用

  1. 适应特定任务:通过微调,将通用语言模型转化为适应特定任务的模型,提高模型在任务上的性能和专业知识。
  2. 提高性能:微调使模型更好地适应任务,提高准确度、召回率、F1 值等评估指标。
  3. 减少训练成本:微调相比从头训练大规模语言模型,减少训练成本和时间。
  4. 数据效率:微调在相对较小的数据集上实现良好性能,利用预训练模型的泛化能力。

问题:

  1. Moss效果不尽如人意
  2. 数据训练不够
  3. json代码需要进行注释标注

新发现

CodeGeeX :可以进行简单的代码辅助,集成于idea、vscode等软件,但无法处理复杂的需求,并且可能会重复对同一段代码进行生成

CodegeeX2:第二代CodeGeeX代码生成模型,已经开源。

第一代CodeGeeX模型只能基于前文向后生成代码,而CodeGeeX2-6B可以实现根据上下文填空。这意味着在补全代码时,可以综合当前光标上下文的内容,更精准地补全代码。

总结:

  1. 由于ChatGLM-6B系的强项在中英文对话以及文本提取以及强化学习,目前我们计划用更多的数据进行训练。
  2. 此外我们还发现,ChatGLM-6B系对于提供的代码无法精准识别,需要对代码进行注释工作,通过部分测试,在注释后效果较之前好很多。
  3. 但仍然存在部分代码不标准问题,我们认为是数据量不够大,还需要其他案例进行训练。
  4. 使用CodeGeeX2开源模型进行大量训练