美文网首页
大规模语言模型构建流程

大规模语言模型构建流程

作者: 人工智能技术笔记 | 来源:发表于2024-04-21 14:22 被阅读0次

    大规模语言模型

    1.大语言模型

    大规模语言模型(Large Language Models,LLM),也称大语言模型 ,是一种由包含数百亿以上参数的深度神经网络构建的语言模型,通常使用自监督学习方法通过大量无标注文本进行训练。

    2.预训练语言模型

    受到计算机视觉领域采用 ImageNet对模型进行一次预训练,使得模型可以通过海量图像充分学习如何提取特征,然后再根据任务目标进行模型精调的预训练范式影响,自然语言处理领域基于预训练语言模型的方法也逐渐成为主流。将预训练模型应用于下游任务时,不需要了解太多的任务细节,不需要设计特定的神经网络结构,只需要“微调”预训练模型,使用具体任务的标注数据在预训练语言模型上进行监督训练,就可以取得显著的性能提升。这类方法通常称为预训练语言模型(Pre-trained Language Models,PLM)。

    3.提示词(Prompt)学习方法

    2020 年 Open AI 发布了由包含 1750 亿参数的神经网络构成的生成式大规模预训练语言模型GPT-3。开启了大规模语言模型的新时代。由于大规模语言模型的参数量巨大,如果在不同任务上都进行微调需要消耗大量的计算资源,因此预训练微调范式不再适用于大规模语言模型。但是研究人员发现,通过语境学习(Incontext Learning,ICL)等方法,直接使用大规模语言模型就可以在很多任务的少样本场景下取得很好的效果。此后,研究人员们提出了面向大规模语言模型的提示词(Prompt)学习方法、模型即服务范式(Model as aService,MaaS)、指令微调(Instruction Tuning)等方法,在不同任务上都取得了很好的效果。

    大规模语言模型构建流程

    根据 OpenAI 联合创始人 Andrej Karpathy 在微软 Build 2023 大会上所公开的信息,OpenAI所使用的大规模语言模型构建流程如图1.3所示。主要包含四个阶段:预训练、有监督微调、奖励建模、强化学习。这四个阶段都需要不同规模数据集合以及不同类型的算法,会产出不同类型的模型,同时所需要的资源也有非常大的差别。

    image.png

    1.预训练

    预训练(Pretraining)阶段需要利用海量的训练数据,包括互联网网页、维基百科、书籍、GitHub、论文、问答网站等,构建包含数千亿甚至数万亿单词的具有多样性的内容。利用由数千块高性能GPU 和高速网络组成超级计算机,花费数十天完成深度神经网络参数训练,构建基础语言模型(BaseModel)。基础大模型构建了长文本的建模能力,使得模型具有语言生成能力,根据输入的提示词(Prompt),模型可以生成文本补全句子。也有部分研究人员认为,语言模型建模过程中也隐含的构建了包括事实性知识(Factual Knowledge)和常识知识(Commonsense)在内的世界知识(World Knowledge)。根据文献 [46] 介绍,GPT-3 完成一次训练的总计算量是 3640PFlops,按照NVIDIA A100 80G 和平均利用率达到 50% 计算,需要花费近一个月时间使用 1000 块 GPU 完成。由于 GPT-3 训练采用了 NVIDIA V100 32G,其实际计算成本远高于上述计算。文献 [31] 介绍了参数量同样是 1750 亿的 OPT 模型,该模型训练使用了 992 块 NVIDIA A100 80G,整体训练时间将近 2 个月。BLOOM[33] 模型的参数量也是 1750 亿,该模型训练一共花费 3.5 个月,使用包含 384块 NVIDIA A100 80G GPU 集群完成。可以看到大规模语言模型的训练需要花费大量的计算资源和时间。包括 LLaMA 系列、Falcon 系列、百川(Baichuan)系列等在模型都属于此阶段。由于训练过程需要消耗大量的计算资源,并很容易受到超参数影响,如何能够提升分布式计算效率并使得模型训练稳定收敛是本阶段的重点研究内容。

    2.有监督微调

    有监督微调(Supervised Finetuning),也称为指令微调(Instruction Tuning),利用少量高质量数据集合,包含用户输入的提示词(Prompt)和对应的理想输出结果。用户输入包括问题、闲聊对话、任务指令等多种形式和任务。
    gretelai/synthetic_text_to_sql 是一个包含高质量合成 Text-to-SQL 示例的丰富数据集,使用Gretel Navigator 设计和生成,并在 Apache 2.0 下发布。
    Text-to-SQL 数据集可用于Llama2模型进行训练微调,构建基于sql生成场景的模型服务。

    {
      "id": 39325,
      "domain": "public health",
      "domain_description": "Community health statistics, infectious disease tracking data, healthcare access metrics, and public health policy analysis.",
      "sql_complexity": "aggregation",
      "sql_complexity_description": "aggregation functions (COUNT, SUM, AVG, MIN, MAX, etc.), and HAVING clause",
      "sql_task_type": "analytics and reporting",
      "sql_task_type_description": "generating reports, dashboards, and analytical insights",
      "sql_prompt": "What is the total number of hospital beds in each state?",
      "sql_context": "CREATE TABLE Beds (State VARCHAR(50), Beds INT); INSERT INTO Beds (State, Beds) VALUES ('California', 100000), ('Texas', 85000), ('New York', 70000);",
      "sql": "SELECT State, SUM(Beds) FROM Beds GROUP BY State;",
      "sql_explanation": "This query calculates the total number of hospital beds in each state in the Beds table. It does this by using the SUM function on the Beds column and grouping the results by the State column."
    }
    
    

    利用这些有监督数据,使用与预训练阶段相同的语言模型训练算法,在基础语言模型基础上再进行训练,从而得到有监督微调模型(SFT 模型)。经过训练的 SFT 模型具备了初步的指令理解能力和上下文理解能力,能够完成开放领域问题、阅读理解、翻译、生成代码等能力,也具备了一定的对未知任务的泛化能力。由于有监督微调阶段的所需的训练语料数量较少,SFT 模型的训练过程并不需要消耗非常大量的计算。根据模型的大小和训练数据量,通常需要数十块 GPU,花费数天时间完成训练。SFT 模型具备了初步的任务完成能力,可以开放给用户使用,很多类 ChatGPT的模型都属于该类型。很多这类模型效果也非常好,甚至在一些评测中达到了 ChatGPT 的 90% 的效果。当前的一些研究表明有监督微调阶段数据选择对SFT 模型效果有非常大的影响,因此如何构造少量并且高质量的训练数据是本阶段有监督微调阶段的研究重点。

    3.奖励建模

    奖励建模(Reward Modeling)阶段目标是构建一个文本质量对比模型,对于同一个提示词,SFT模型给出的多个不同输出结果的质量进行排序。奖励模型(RM 模型)可以通过二分类模型,对输入的两个结果之间的优劣进行判断。RM 模型与基础语言模型和 SFT 模型不同,RM 模型本身并不能单独提供给用户使用。奖励模型的训练通常和 SFT 模型一样,使用数十块 GPU,通过几天时间完成训练。由于 RM 模型的准确率对于强化学习阶段的效果有着至关重要的影响,因此对于该模型的训练通常需要大规模的训练数据。Andrej Karpathy 在报告中指出,该部分需要百万量级的对比数据标注,而且其中很多标注需要花费非常长的时间才能完成。

    4.强化学习

    强化学习(Reinforcement Learning)阶段根据数十万用户给出的提示词,利用在前一阶段训练的 RM 模型,给出 SFT 模型对用户提示词补全结果的质量评估,并与语言模型建模目标综合得到更好的效果。该阶段所使用的提示词数量与有监督微调阶段类似,数量在十万量级,并且不需要人工提前给出该提示词所对应的理想回复。使用强化学习,在 SFT 模型基础上调整参数,使得最终生成的文本可以获得更高的奖励(Reward)。该阶段所需要的计算量相较预训练阶段也少很多,通常也仅需要数十块 GPU,经过数天时间的即可完成训练。在经过强化学习方法训练完成后的 RL 模型,就是最终提供给用户使用具有理解用户指令和上下文的类 ChatGPT 系统。由于强化学习方法稳定性不高,并且超参数众多,使得模型收敛难度大,再叠加 RM 模型的准确率问题,使得在大规模语言模型如何能够有效应用强化学习非常困难。

    参考:大规模语言模型:从理论到实践 – 张奇、桂韬、郑锐、黄萱菁

    相关文章

      网友评论

          本文标题:大规模语言模型构建流程

          本文链接:https://www.haomeiwen.com/subject/pksvxjtx.html