大模型简单入门及特定环境下的应用

admin 2024年3月5日18:21:09评论11 views字数 3190阅读10分38秒阅读模式

大模型简单入门及特定环境下的应用

什么是大模型

大模型是指包含超大规模参数(通常在十亿个以上)的神经网络模型,具有以下特征:

  1. 巨大的规模:大模型包含数十亿个参数,模型大小可以达到数百GB甚至更大。这种巨大的模型规模为其提供了强大的表达能力和学习能力。
  2. 多任务学习:大模型通常会一起学习多种不同的NLP任务,如机器翻译、文本摘要、问答系统等。这可以使模型学习到更广泛和泛化的语言理解能力。
  3. 强大的计算资源:训练大模型通常需要数百甚至上千个GPU,以及大量的时间,通常在几周到几个月。这可以加速训练过程而保留大模型的能力。
  4. 丰富的数据:大模型需要大量的数据来进行训练,只有大量的数据才能发挥大模型的参数规模优势。

大模型在自然语言处理领域得到广泛应用,并正在彻底改变NLP任务的状态,催生出更强大、更智能的语言技术。大模型是AI发展的重要方向之一。同时,大模型也具有在各种自然语言处理任务中表现出色的能力,例如文本分类、情感分析、摘要生成、翻译等。大模型可以用于自动写作、聊天机器人、虚拟助手、语音助手、自动翻译等多个应用领域。

截止现在,大模型的应用已经不仅局限于语言模型了,音频学习生成模型及视频生成模型的应用都已经达到了很高的可用性,至此,语言、音频、视频三方面的大模型已经基本摆脱了人们对这类技术人工智障的刻板印象。

研究对象

因为现阶段各家大模型百花齐放,且具体的效果也都有所不同,我们通过比较最终选择了清华大学和智谱AI联合研发训练的ChatGLM3-6研究的基础, 官方提供了许多类型的web_demo和训练的示例脚本,使我们的深入研究有了良好的代码示范

大模型简单入门及特定环境下的应用

硬件要求

本次实验共使用了两种配置的硬件设备

1.Ubuntu操作系统+两张A4000单张显存16G

2.MacOS操作系统+M2max+32G统一内存

经过实测两张显卡都是可以成功跑起来ChatGLM3-6B的模型

基础搭建

官方在GitHub仓库中有基础的demo可以供我们使用https://github.com/THUDM/ChatGLM3

1.下载大模型的权重文件,可以在huggingface.cohttps://huggingface.co/THUDM/chatglm3-6b的下载页面找到

2.下载好之后直接在电脑的环境变量中设置MODEL_PATH,source生效

大模型简单入门及特定环境下的应用

3.进入demo的项目目录中,先使用conda或本机自带的python环境安装好requirements.txt中的依赖库

大模型简单入门及特定环境下的应用

4.进入basic_demo中,官方给我们提供了几种不同的命令行demo和web demo

大模型简单入门及特定环境下的应用

5.直接使用streamlit run web_demo_streamlit.py命令启动一个web demo,浏览器会自动跳转,或者手动用浏览器打开相应的链接,我们就可以获取到一个搭建在本地的ChatGLM了

大模型简单入门及特定环境下的应用

大模型简单入门及特定环境下的应用

如何训练大模型

大模型训练的一般步骤

1.数据收集与预处理:

数据收集:收集大量的训练数据,这些数据可以是文本、图像、声音或其他类型的数据。数据的质量和多样性对于训练出一个泛化能力强的模型至关重要。数据预处理:对收集到的数据进行清洗、格式化、归一化等操作,确保数据的质量,并减少训练过程中的噪声。

2.模型选择:

根据任务需求选择合适的模型架构。例如,对于自然语言处理任务,Transformer架构已被证明是非常有效的。

3.训练策略:

分布式训练:由于大模型通常需要巨大的计算资源,因此分布式训练变得必不可少。这涉及到将模型参数分布在多个处理器上,并行地进行计算。优化器选择:选择合适的优化算法,如Adam、SGD等,以及调整学习率、批次大小等超参数。正则化技术:使用如Dropout、权重衰减等技术减少过拟合。损失函数:选择合适的损失函数来评估模型的性能,并根据该函数来指导模型的训练。

4.评估与调优:

在训练过程中定期评估模型的性能,使用验证集来调整超参数。实施早停(Early Stopping)策略,当模型在验证集上的性能不再提升时停止训练,以防止过拟合。

5.模型压缩与优化:

训练完成后,可能需要对模型进行压缩,如知识蒸馏,以减少模型的大小,使其更易于部署。对模型进行优化,如使用量化和剪枝等技术,以减少模型在推理时的资源消耗。

6.安全与隐私:

在训练过程中确保数据的安全和隐私,特别是在处理敏感数据时。对模型进行鲁棒性测试,确保其不会受到对抗性攻击的影响。

7.伦理与偏见:

检查模型是否存在偏见,确保模型的决策是公正的。遵循伦理标准,确保模型的用途符合社会主义核心价值观。

大模型训练方式

大模型训练在训练方式上简单可分为两大类

1.全量训练

全量训练是指从零开始训练一个模型,通常使用大规模的数据集。这个过程包括以下几个步骤:数据准备:收集并预处理大量的数据,确保数据的质量和多样性。模型设计:设计模型的架构,选择合适的层数、神经元数量等。参数初始化:随机初始化模型的权重。训练:使用优化算法(如SGD、Adam等)训练模型,通过多次迭代调整权重。评估与调优:在训练过程中定期评估模型性能,并根据需要对模型进行调优。全量训练通常需要大量的计算资源和时间,因为模型需要从随机权重开始学习所有必要的特征。这种方法适用于没有预训练模型可用或者任务非常特殊的情况。

2.微调

微调是利用已经在大规模数据集上预训练好的模型,在特定任务的较小数据集上进行再训练的过程。微调的步骤通常包括:预训练模型:选择一个在大规模数据集上预训练好的模型,如BERT、GPT等。任务特定数据集:准备一个针对特定任务的数据集,这个数据集通常比预训练数据集小很多。模型适配:根据任务需求对预训练模型进行适当的修改,如添加或移除顶层、调整输出层等。再训练:使用较小的学习率在任务特定数据集上对模型进行训练,以适应新的任务。性能评估:评估模型在新任务上的性能,并进行必要的调优。微调的好处是可以利用预训练模型已经学到的丰富特征,通常只需要较少的数据和计算资源就可以达到较好的性能。这种方法在自然语言处理、计算机视觉等领域非常流行。

垂直领域训练的难点

在我们现在接触到的大模型中,大部分都是通用大模型,可以对我们提出的大部分问题进行回答,且能保证一定的准确性,但是这样的大模型在对处理与我们工作强相关的专项内容会出现很多问题,且大模型回答问题中会包含一个“思考”的过程,这种场景对于我们问的比较宽泛的问题会有好处,比如说我们对大模型说“你好”,在多种对话场景下,大模型的回答可能会因为语境或者历史问题的记录出现不同的答案。但是这对于我们在特定的场景下,例如唯一的问题对应唯一的答案,大模型的“思考”对于我们来说就是一种灾难。

曲线救国的解决方案

基于垂直领域训练的一些痛点,比如说需要大量的问题设置、需要更强的GPU,都是我们现阶段暂时不太好处理的问题,且我们需要的是一个一个精确化的问题尽量对应一个精准的答案,在这种场景下,将语言大模型接入langchain,加载本地文件,切分为向量数据库,形成一个知识库就变成了现阶段解决方案了

简单来说

1.我们先将开始的ChatGLM3-6B以api的形式启动,让他作为一个后端的接口

2.使用langchain来加载我们本地的文件

3.将本地的文件进行语句切分,生成一个向量数据库

4.使用langchainRetrievalQA模块对问题进行封装

5.使用ChatGLM3-6B查询向量数据库中的相关内容

最终效果

我们将等级保护的指导书文件夹入,加载到向量数据库

大模型简单入门及特定环境下的应用

然后他的回答会跟我预期一样,唯一的问题对应唯一的答案,且稳定性很高,不会出现同样的问题问多次会出现不同的答案。

大模型简单入门及特定环境下的应用

大模型简单入门及特定环境下的应用

相比之下经过我们微调的模型的表现就有点差强人意,找不到问题和答案的对应关系,回答的问题时对时错

大模型简单入门及特定环境下的应用

大模型简单入门及特定环境下的应用


以上问题的原始数据是这样的,孰强孰弱大家自行辨别

大模型简单入门及特定环境下的应用


原文始发于微信公众号(瑞不可当):大模型简单入门及特定环境下的应用

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月5日18:21:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   大模型简单入门及特定环境下的应用http://cn-sec.com/archives/2548619.html

发表评论

匿名网友 填写信息