大语言模型对比效果与分析
大语言模型对比效果与分析
lihuibear大语言模型
ChatGLM-6B系
ChatGLM-6B
基于通用语言模型(GLM)框架的开放中英双语语言模型,有62亿个参数。
ChatGLM-6B使用类似于ChatGPT的技术,针对中文QA和对话进行了优化。该模型针对大约 1T 的中英文语料库进行了训练,并辅以监督微调、反馈引导和人类反馈的强化学习。该模型只有大约 62 亿个参数,能够生成符合人类偏好的答案。
使用量化技术,用户可以在消费级显卡上本地部署(INT4 量化级别只需要 6GB 的 GPU 内存)。
ChatGLM-6B-INT4
在 ChatGLM-6B 量化后的模型权重。
具体的,ChatGLM-6B-INT4
对 ChatGLM-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 |
优化后的新特性:
- 更强大的性能:
- 更长的上下文:
- 基于
FlashAttention
技术,2K
扩展到了32K
- 并在对话阶段使用
8K
的上下文长度训练,允许更多轮次的对话。 - 对单轮超长文档的理解能力有限
- 基于
- 更高效的推理:基于
Multi-Query Attention
技术,ChatGLM2-6B
有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4
量化下,6G
显存支持的对话长度由1K
提升到了8K
。 - 更开放的协议:
ChatGLM2-6B
权重对学术研究完全开放
ChatYuan
元语功能型对话大模型
这个模型可以用于问答、结合上下文做对话、做各种生成任务,包括创意性写作,也能回答一些像法律、新冠等领域问题。它基于PromptCLUE-large结合数亿条功能对话多轮对话数据进一步训练得到。
Moss
训练了代码
复旦团队开源,160亿参数,并且已经在1000亿中文token上进行了训练,总训练token数量达到7000亿,其中还包含约3000亿代码。16B
增加了「搜索引擎、计算器、解方程、文生图」等插件功能,既可在线体验,也支持本地部署
突出功能为Web search功能;目前未开源int4/int8量化版
FastChat-Vicuna
FastChat
- FastChat是用于对话机器人模型训练、部署、评估的开放平台,其核心特性包括:
- 模型权重,训练代码,评估代码可用于SOTA模型(比如Vicuna,FastChat-T5)
- 分布式多模型部署系统,自带Web UI和OpenAI兼容的RESTful APIs
- 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量化是一种用于神经网络推理的量化方法,它将网络中的权重和激活值表示为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-Tiny”是ERNIE模型系列中的一个较小规模版本,相对于更大的模型,它具有更少的参数和计算资源需求。尽管规模较小,但”ERNIE-Tiny”仍然可以用于一些自然语言处理任务,如文本分类、命名实体识别、情感分析等。
text2vec
Text2Vec 是一个用于将文本数据映射到向量表示的开源软件包,它提供了一种简单而灵活的方法来生成文本的向量表示。Text2Vec 的目标是通过学习文本数据的分布式表示来捕捉语义和上下文关系。
Text2Vec 提供了一些常用的文本向量化方法,包括基于词袋模型(Bag-of-Words)、TF-IDF、Word2Vec 和 GloVe 等。它还支持通过使用预训练的词向量模型(如 Word2Vec 和 GloVe)来生成文本向量。
使用 Text2Vec,你可以将文本数据作为输入,并使用其中的单词、短语或句子来生成对应的向量表示。这些向量可以用于文本分类、聚类、相似度计算等任务。
M3E
M3E 是 Moka Massive Mixed Embedding 的缩写
Moka,此文本嵌入模型由 MokaAI 训练并开源,训练脚本使用 uniem
Massive,此文本嵌入模型通过千万级的中文句对数据集进行训练
Mixed,此文本嵌入模型支持中英双语的同质文本相似度计算,异质文本检索等功能,未来还会支持代码检索
微调
P-Tuning v2:与微调性能相等的提示性优化
LORA的训练与使用
- 适应特定任务:通过微调,将通用语言模型转化为适应特定任务的模型,提高模型在任务上的性能和专业知识。
- 提高性能:微调使模型更好地适应任务,提高准确度、召回率、F1 值等评估指标。
- 减少训练成本:微调相比从头训练大规模语言模型,减少训练成本和时间。
- 数据效率:微调在相对较小的数据集上实现良好性能,利用预训练模型的泛化能力。
问题:
- Moss效果不尽如人意
- 数据训练不够
- json代码需要进行注释标注
新发现
CodeGeeX :可以进行简单的代码辅助,集成于idea、vscode等软件,但无法处理复杂的需求,并且可能会重复对同一段代码进行生成
CodegeeX2:第二代CodeGeeX代码生成模型,已经开源。
第一代CodeGeeX模型只能基于前文向后生成代码,而CodeGeeX2-6B可以实现根据上下文填空。这意味着在补全代码时,可以综合当前光标上下文的内容,更精准地补全代码。
总结:
- 由于ChatGLM-6B系的强项在中英文对话以及文本提取以及强化学习,目前我们计划用更多的数据进行训练。
- 此外我们还发现,ChatGLM-6B系对于提供的代码无法精准识别,需要对代码进行注释工作,通过部分测试,在注释后效果较之前好很多。
- 但仍然存在部分代码不标准问题,我们认为是数据量不够大,还需要其他案例进行训练。
- 使用CodeGeeX2开源模型进行大量训练