当前位置:首页|资讯

LLM概述与应用展望

作者:遇健李的幸运发布时间:2024-10-13


LLM概述与应用展望

1、LLM的简单解释

首先,LLM 全称是 Large Language Model,即大语言模型,其参数量较大,一般的70 亿以上参数的模型占用约 28G 存储,直观来说就是有一堆28G浮点数(训练得到)作为权重参数的函数可拷入 U 盘就能带走大模型本体。实现方式简单来说就是设计一个极大的非线性函数进行拟合计算,它们会接收你提供的一些文本作为输入,并猜测下一个出现概率最大的词(更准确地说,下一个token)是什么。

  • Token 和词表:Token 是文本的片段,也是 LLM 理解的文本基本单位,语言模型有一个词表,包括 token 列表及对应的 id,词表大小因语言不同而不同,多语言词表往往有几万个 token 甚至更多。例如GPT-2的词汇表就有50257个token,LLM 词汇中的每个 Token 都有一个唯一的标识符,具体例子如下:

图 1tokenization示例

从例子中可以看到对于 GPT-2 语言模型,Token 464 代表单词“The”,而 Token 2068 代表单词“quick”,且包括一个前空格。该模型使用 Token 13 表示句号。

  • 语言模型工作流程:语言模型接受文本输入,将其根据词表拆分成 id 序列,通过将输入的 id 序列转换成向量,再用模型参数进行计算得到输出。通过训练大量文本构建数据结构来计算给定 token 序列的下一个 token 概率,预测结果为词汇表中每个 token 成为下一个 token 的概率列表。最后输出列表中概率最大的token最为下一个字符的id,并将id转化为字词文本得到最终输出的词。

  • 模型训练:通过将大量文本数据输入给模型进行训练,从随机初始化参数开始,经过不断调整参数,使模型输出逐渐接近正确结果,训练成本高昂。

2、概述

2.1大语言模型的涌现能力

LLM 的涌现能力被定义为“小型模型中不存在但大型模型中产生的能力”,是区别于先前 PLM 的显著特征之一。介绍 LLM 的三种典型涌现能力及代表性模型:

1. 上下文学习:ICL 能力由 GPT-3 引入,若提供自然语言指令和/或任务演示,模型可生成预期输出,无需额外训练或梯度更新。1750 亿的 GPT-3 有此能力,GPT-1 和 GPT-2 无。

2. 指令遵循:通过指令微调,LLM 在未见过的指令任务上表现出色,有更好泛化能力。680 亿的 LaMDA-PT 经指令微调后在未见过任务上优于未微调模型,80 亿或更小则不然。

3. 逐步推理:小型语言模型难解决多推理步骤任务,而 LLM 可用 CoT 提示策略解决,可能通过在代码上训练获得。实证研究表明,大于 600 亿的 PaLM 和 LaMDA 变体用 CoT 提示可提高算术推理基准任务性能,大于 1000 亿优势更明显。

2.2 挖掘大语言模型能力的关键技术

1、扩展:Transformer 语言模型存在明显的扩展效应,更大的模型/数据规模和更多的训练计算通常会导致模型能力的提升。作为两个代表性的模 型,GPT-3 和 PaLM 通过增加模型规模分别达到了 1750 亿 和 5400 亿。

2、训练:分布式训练算法是学习 LLM 网络参数所必需的,其中通常联合使用各种并行策略。为了支持分布式训练,已经发布了一些优化框架来促进并行算法的实现和部署,例如 DeepSpeed和 Megatron-LM。

3、能力引导:预训练后的 LLM 在大规模语料库上有成为通用任务求解器的潜力,但执行特定任务时能力未必显式。可设计任务指令或 ICL 策略激发能力,如 CoT 提示含中间推理步骤对复杂推理任务有效。还可用自然语言任务描述对 LLM 进行指令微调以提高泛化能力。

4、对齐微调:InstructGPT 设计了一种有效的微调方法,使 LLM 能够 按照期望的指令进行操作,其中利用了基于人类反馈的强化 学习技术。采用精心设计的标注策略,它将人类反馈纳入训练循环中。ChatGPT 实际上采用类似于 InstructGPT 的技术,在产生高质量、无害的回答方面表现出很强的对齐能

5、工具操作:利用外部工具可以进一步扩展 LLM 的能力。例如,LLM 可以利用计算器进行准确计算, 利用搜索引擎检索未知信息。

2.3 GPT系列模型的技术演进

1、GPT-1:

2018 年, OpenIA发布了GPT 1,代表生成式预训练 (Generative Pre-Training)。GPT-1 是基于生成型的、仅含有解码器的 Transformer 架构开发的,并采用了无监督预训练和有 监督微调的混合方法。GPT-1 为 GPT 系列模型建立了核心 架构,并确立了对自然语言文本进行建模的基本原则,即预 测下一个单词。

2、GPT-2:

将参数规模增加到了 15 亿,并使用大规模的网页数据集 WebText 进行训练。它旨在通过无监督语言建模来执行任务,而无需使用标记数据进行显式微调。主张每个 NLP 任务可以被视为基于世界文本的子集的单词预测问题。因此,如果模型训练后具有足够能力以复原世界文本,无监督语言建模可以解决各种任务。尽管 GPT-2 旨在成为一个“无监督的多任务学习 器”,但与监督微调的 SOTA 方法相比,其整体性能仍然较 差。

3、GPT-3:

2020 年发布的 GPT-3 将模型参数扩展至 1750 亿规模,引入了 ICL 概念,即以小样本或零样本方式使用 LLM,可指导 LLM 理解自然语言文本形式的任务。GPT-3 在各种 NLP 任务及特殊设计任务中表现出色,是从 PLM 到 LLM 进化的重要里程碑,实证证明扩大神经网络规模可大幅提升模型能力。

GPT-3 成为开发更强大 LLM 的基础模型,OpenAI 探索了两种改进方法,即使用代码数据训练及与人类偏好对齐。(1)使用代码数据训练:2021 年 7 月推出的 Codex 是在大量 GitHub 代码上微调的 GPT 模型,能解决复杂编程问题及提升数学问题性能,GPT-3.5 基于代码模型(code-davinci-002)开发。(2)与人类对齐:2022 年 1 月提出 InstructGPT 改进 GPT-3 与人类对齐能力,建立三阶段基于人类反馈的强化学习(RLHF)算法,有效缓解有害内容生成,OpenAI 总结出“用人类反馈训练 AI、协助人类评估及做对齐研究”三个有前途方向。这些增强技术造就了更强的 GPT-3.5 模型。

4、ChatGPT:

2022.11, OpenAI 发布了对话语言模型 ChatGPT,它是以类似 InstructGPT 的方式进行训练的(在原始文章中称为“InstructGPT 的姊妹模型”),但专门针对对话能力进行了优化。ChatGPT 训练数据是通过将人类生成的对话(扮演用户和 AI 两个角色)与 InstructGPT 数据集结合起来以对话形式生 成。ChatGPT 在与人类的交流中表现出卓越的能力:拥有丰 富的知识库,擅长解决数学问题,准确追踪多轮对话中的上 下文,并与人类的价值观保持一致以确保被安全使用。随后, ChatGPT 支持了插件机制,进一步通过已有工具或应用扩展 了 ChatGPT 的功能。

5、GPT-4:

于 2023.03发布,将文本输入扩展到多模态信号。总体而言,相比 GPT-3.5,GPT-4 在解决复杂任务方面具有更强的能力,在许 多评估任务上展现出大幅度的性能提升, 具有比之前 的 GPT 模型如 ChatGPT 更出色的性能。此外,由于经过为期六个月的迭代对齐(在 RLHF 训练中加入了额外的安全 奖励信号),GPT-4 对于具有恶意或挑衅的提问的响应更加 安全。并采用了多种干预策略来减轻语言模型的可能问题,如幻觉、隐私和过度依赖。例如,他们引入了一种称为红队评估(red teaming)的机制来减少有害或生成有毒内容的可能性。

图 2GPT系列的进化过程

近几年主要模型发展时间轴如下:

图 3主要LLM的发展历程

3大语言模型公开可用资源

3.1 公开可用的模型检查点或者API

1)百亿级:Flan-T5(110 亿版本)可以作为研究指令微调的首选模型,因 为它从三个方面探索了指令微调:增加任务数量、扩大模 型规模和使用 CoT 提示数据进行微调。CodeGen(11B)是 一个为生成代码设计的自回归语言模型,可用作探索代码生 成能力的候选模型。对于多语言任务,mT0(13B)可能 是一个比较好的候选模型,因为它在多语言任务中使用多语 言提示进行微调。此外,作为最近发布的模型,LLaMA(65B)在与指令遵循相关的任务中展现了卓越的性能。百亿参数量级别的模型通常需要数百甚至 上千个 GPU 或 TPU。

2)千亿级:OPT(175B)专注于复现和开源,旨在使研 究人员能够进行大规模可重复研究。对于跨语言泛化研究,可以将 BLOOM(176B)和 BLOOMZ(176B)用作基础模型, 因为其在多语言语言建模任务中具有较好的能力。在这些模型中,OPT-IML 进行了指令微调,是研究指令微调效果的 较好选择。千亿参数量级别的模型通常需要数千个 GPU 或 TPU 进行训练。

3)公共API:GPT-3.5 系列包括一个基础模型 code-davinci-002 和三个增强版本,即 text-davinci-002、 text-davinci-003 和 gpt-3.5-turbo-0301。值得注意的是,gpt-3.5-turbo-0301 是调用 ChatGPT 的接口。最近, OpenAI 还发布了与 GPT-4o 相应的 API

主要模型及其配置如下:

图 4主要LLM的训练配置情况

3.2 常用语料库

将这些语料库分为六个组别进行介绍:Books、 CommonCrawl、Reddit Links、Wikipedia、Code、Others,

  1. Books:BookCorpus是之前小规模模型(如 GPT和 GPT-2)中常用的数据集,包括超过 11,000 本电子书, 涵盖广泛的主题和类型(如小说和传记)。另一个大规模的书 籍语料库是 Gutenberg,它有超过 70,000 本文学作品, 包括小说、散文、诗歌、戏剧、历史、科学、哲学和其他公共 领域的作品。它是目前最大的开源书籍集合之一,被用于训 练 MT-NLG和 LLaMA;

  2. CommonCrawl:CommonCrawl是最大的开源网络 爬虫数据库之一,能力达到了百万亿字节级别,已经被广 泛运用于训练 LLM。由于整个数据集非常大,因此现有的 研究主要在特定时间段内从中提取网页子集。然而,由于网 络数据中存在大量的噪音和低质量信息,因此使用前需要进 行数据预处理。目前有四个较为常用的基于 CommonCrawl 的过滤数据集:C4,CC-Stories,CC-News, 和 RealNews。C4 包括五个变种18,即 en (806G), en.noclean (6T),realnewslike (36G),webtextlike (17G) 和 multilingual(38T)。

  3. Reddit Links:Reddit 是一个社交媒体平台,用户可以在上 面提交链接和帖子,其他人可以通过“赞同”或“反对”投票。高 赞的帖子通常被认为对多数用户是有帮助的,可以用来创建高 质量的数据集。WebText就是一个著名的基于 Reddit 的 语料库,它由 Reddit 上高赞的链接组成,但尚未公开。作为替代,有一个易于获取的开源替代品叫做 OpenWebText。 另一个从 Reddit 中提取的语料库是 PushShift.io.

  4. Wikipedia: Wikipedia是一个在线百科全书,包含大 量高质量的文章,涵盖各种主题。其中大部分文章都采用解 释性写作风格(并支持引用),覆盖了多种不同语言和广泛的 知识领域。通常来说,Wikipedia 英语版本被广泛应用于大多 数 LLM(例如 GPT-3,LaMDA 和 LLaMA )

  5. Code:为了收集代码数据,现有工作主要是从互联网上爬取 有开源许可证的代码。代码数据有两个主要来源:包括开源 许可证的公共代码库(例如 GitHub)和与代码相关的问答平 台(例如 StackOverflow)。Google 公开发布了 BigQuery 数据 集,其中包括各种编程语言的大量开源许可证代码片段, 是一个典型的代码数据集。

  6. Others: The Pile是一个大规模、多样化、开源的文 本数据集,有超过 800GB 数据,内容包括书籍、网站、代码、 科学论文和社交媒体平台等。它由 22 个多样化的高质量子集 构成。The Pile 数据集被广泛应用于不同参数规模的模型.

图 5主流数据集的介绍

主流模型所用到的数据集如下:

  • GPT-3(175B)在包含 3000 亿个 token 的混合数据集上进行训练,数据集包括 CommonCrawl、WebText2、Books1、Books2 和 Wikipedia。

  • PaLM(540B)使用的预训练数据集包含 7800 亿个 token,其中包括社交媒体对话、过滤后的网页、书籍、Github、多语言维基百科和新闻。

  • LLaMA 从多个数据源中提取训练数据,包括 CommonCrawl、C4、Github、Wikipedia、书籍、ArXiv 和 StackExchange。LLaMA(6B)和 LLaMA(13B)的训练数据量为 1.0 万亿 token,而 LLaMA(32B)和 LLaMA(65B)则使用了 1.4 万亿 token。,

4 预训练

4.1 数据收集

语料库分通用和专用两类。通用如网页、书籍、对话文本,被多数 LLM 利用以增强语言建模和泛化能力。也有研究扩展预训练语料库到专用数据集,如多语言、科学、代码等以赋予 LLM 专用任务能力。通用文本数据:网页爬取数据如 CommonCrawl,对话文本可利用公共对话语料库子集(如 http://PushShift.io Reddit 语料库),可将对话转树形结构。书籍提供更正式长文本,现有研究用 Books3 和 Bookcorpus2 数据集,可在 Pile 数据集中获得。

专用文本数据:多语言、科学文本,现有工作收集 arXiv 论文等科学资源。代码语料库有两种来源,一是编程问答社区,二是开源软件仓库如 GitHub,训练代码可能是复杂推理能力来源,将推理任务格式化代码可助 LLM 生成更准确结果。

图 6不同LLM训练的数据集比例示例

4.2 数据预处理

  1. 质量过滤:

  • 分类器方法:基于高质量文本训练分类器,识别和过滤低质量数据。如用高质量数据作正样本、采样候选数据作负样本来训练二元分类器,预测数据质量分数。

  • 启发式方法:通过精心设计的规则消除低质量文本,如基于度量(困惑度)、统计、关键词过滤。

  1. 去重:

  • 重复数据会降低语言模型多样性、影响性能,需对预训练语料库去重,可在句子级、文档级、数据集级进行。

  • 句子级删除含重复单词和短语的低质量句子;文档级依靠表层特征重叠比率检测和删除重复文档;数据集级需删除测试集可能在训练集中的重复文本。三个级别去重有助于改善 LLM 训练,应共同使用。

  1. 隐私去除:

  • 预训练文本数据可能涉及敏感信息,有隐私泄露风险,需删除可识别个人信息(PII)。可采用基于规则的方法,如关键字识别来检测和删除 PII。

  1. 分词:

  • 分词是数据预处理关键步骤,目的是将原始文本分割成词序列作为 LLM 输入。使用为预训练语料库定制的分词器更有效,如最近几个 LLM 用 SentencePiece 训练定制化分词器,并利用字节级 BPE 算法确保信息不丢失。

预处理整体流程如下图:

图 7LLM数据集预处理的流程示例图

4.3 主流模型架构与技术路线

介绍三个比较主流的LLM系列最新模型的架构技术路线与其主要应用领域:

表 1主流LLM的架构与技术路线说明

主流模型架构和技术路线围绕 Transformer 架构不断演进,主要阶段如下:

1. 2017 年 Transformer 架构诞生:

  - 核心创新包括自注意力机制,能自适应关注输入序列不同部分,捕捉长距离依赖关系,克服传统 RNN 和 CNN 局限性;位置编码为模型引入位置信息;多头注意力可从不同表示子空间学习输入序列信息;编码器 - 解码器架构适用于序列到序列任务。

2. 2018 年基于 Transformer 的预训练模型兴起:

  - BERT 是谷歌推出的双向编码器表示,采用掩码语言建模和下一句预测任务。

  - GPT 是 OpenAI 推出的生成式预训练模型,GPT-1 引入大规模无监督语言理解预训练概念,先在大量无标签文本上预训练,再在特定下游任务上微调。

3. 2019 - 2020 年模型规模和性能不断提升:

  - 2019 年 GPT-2 显著增加模型大小,有强大零样本学习能力。

  - 2020 年 GPT-3 将模型规模提升到新高度,在多种任务上表现出色。

4. 2021 - 2024 年多模态融合探索:

  - GPT-4 实现多模态功能,能将文本与图像集成。

  - Llama-3 参数量大幅提升,实现多模态处理能力。

  - GLM-4 基于 Transformer,支持文本、图像和代码联合处理。

5. 2024 年及以后 AIGC 时代:

  - 模型优化方向:探索高效训练和推理方法;深化多模态融合;进行微调与特定领域优化。

  - 应用场景拓展:开发垂直领域应用模型;满足跨语言和多语言处理需求;注重人机协作和可解释性。

4.4 模型训练

4.4.1 优化设置

批量训练:对于语言模型的预训练,现有的研究通常将批量 大小设置为较大的数字(如 2,048 个例子或 400 万个 token), 以提高训练的稳定性和吞吐量。像 GPT-3 和 PaLM 这样的 LLM 引入了一种新的策略,即在训练过程中动态增加批量大 小,最终达到百万级别。具体而言,GPT-3 的批量大小从 3.2 万逐渐增加到 320 万个 token。实证结果表明,动态调整批量 大小的策略可以有效地稳定 LLM 的训练过程。

学习率:现有的大语言模型(LLM)在预训练时多采用相似的学习率调整策略,包含预热和衰减。具体来说,在训练初始的 0.1%至 0.5%步骤内,运用线性预热策略使学习率逐步增至最大值,该值通常在 5×10⁻⁵到 1×10⁻⁴之间(如 GPT-3 学习率为 6×10⁻⁵)。之后,在后续步骤中采用余弦衰减策略,将学习率逐渐降低至最大值的约 10%,直至训练损失收敛。

优化器: Adam 优化器和 AdamW 优化器被广泛 应用于 LLM(例如 GPT-3)的训练中,这些优化器使用了基 于一阶梯度优化的低阶矩自适应估计。通常,它的超参数设 置如下:β1 = 0.9,β2 = 0.95 和 ϵ = 10−8。

稳定训练:在大语言模型(LLM)预训练时,常遇训练不稳定问题,可能致模型崩溃。通常用权重衰减和梯度裁剪来解决,现有研究一般将梯度裁剪阈值设为 1.0,权重衰减率设为 0.1。但随着 LLM 规模扩大,训练损失突增更易发生,导致训练不稳定。为缓解此问题,PaLM 和 OPT 采用从突增前检查点重新开始训练并跳过可能有问题数据的简单策略。此外,GLM 发现嵌入层异常梯度常致突增,提出缩减嵌入层梯度缓解该问题。

表 2各种LLM的详细预训练优化技巧配置

4.4.2 可扩展的训练技术

1、3D 并行:3D 并行由数据并行、流水线并行和张量并行组成。

1) 数据并行:复制模型参数和优化器状态到多个 GPU,分配语料库。各 GPU 处理分配数据,计算梯度后聚合更新模型。可通过增加 GPU 数量提高训练吞吐量。

2) 流水线并行:将 LLM 不同层分配到多个 GPU,Transformer 模型中连续层放同一 GPU 以减少传输成本。

3) 张量并行:分解 LLM 张量,如将参数矩阵按列分,在不同 GPU 并行计算矩阵乘法操作并组合输出。

2、ZeRO:数据并行要求每个 GPU 存 LLM 相同副本,有内存冗余问题。ZeRO 技术仅在每个 GPU 保留部分数据,需时从其他 GPU 检索。有三种解决方案:优化器状态分区、梯度分区和参数分区。前两种不增通信开销,第三种增约 50%通信开销但省与 GPU 数量成比例内存。

3、混合精度训练:以前的PLM(例如 BERT)主要使用 32 位浮点数(FP32)进行预训练。近年来,为了预训练极大的语 言模型,一些研究开始利用 16 位浮点数(FP16),以减 少内存使用和通信开销。此外,由于流行的 NVIDIA GPU(例 如 A100)具有的 FP16 计算单元是 FP32 的两倍,FP16 的计 算效率可以进一步提高。

4.4.3估算大模型训练需要的算力

OpenAI 在《Scaling Laws》论文中给出经验公式:C = rT≈6PD

其中 C 是训练 Transformer 模型所需算力(单位:浮点运算次数 FLOPs);P 是模型参数数量;D 是训练数据集大小(用多少 tokens 表示);r 是训练集群所有硬件总的吞吐量(单位:FLOPS),T 是训练时间(单位:秒)。

例如以 Meta 开源的 LLaMA-1 模型为例,参数 65B,基于 1.4T tokens 数据集,用 2048 张 A100 训练需多久:

先算所需算力 C≈6PD=6×65×10^9×1.4×10^12=546×10^21 FLOPS。

《A100 白皮书》中 BF16 Tensor Core 算力为 312 TFLOPS,实际单块 A100 算力一般 130 - 180 TFLOPS,取中间值 150,2048 张卡集群算力吞吐 r=2048×150×10^12=300×10^15 FLOPS(即 300PFLOPS)。代入公式 C = rT,得训练时间 T=C/r=546×10^21/(300×10^15)=1.82×10^6 秒≈21 天。

4.4.4指令微调大模型的算力资源参考

以下是一些常见的算力卡以及它们在训练和推理不同规模的LLM时的资源需求和所需时间的详细介绍。

表 3常见算力卡类型

表 4不同规模模型训练和推理所需算力资源


选择合适的算力卡建议:

  • 预算有限:选择 RTX 4090 或 A10,适合小型和中型模型的训练和推理。

  • 高性能需求:选择 A100 或 H100,适合中型和大型模型的训练和推理。

  • 超大规模模型:选择 TPU v4,适合超大规模模型的训练和推理。

5 大语言模型的适配微调

在预训练后,LLM 可以获得解决各种任务的通用能力。然而,越来越多的研究表明,LLM 的能力可以进一步适配 (adapting)到特定的目标。本节中,我们将介绍两种适配预 训练后的 LLM 的方法:指令微调(instruction tuning)和对齐微调(alignment tuning)。前一种方法旨在增强(或解锁) LLM 的能力,而后一种方法旨在将 LLM 的行为与人类的价 值观或偏好对齐。

5.1 指令微调

本质上,指令微调是在自然语言格式的实例集合上微调预训练后的 LLM 的方法。这种方法与有监督微调和多任务提示训练密切相关。为了进行指令微调, 我们首先需要收集或构建指令格式(instruction-formatted) 的实例。然后,我们使用这种格式的实例以有监督的方式微调 LLM(例如使用序列到序列的损失进行训练)。指令微调后, LLM 可以展现出泛化到未见过任务的卓越能力。

图 8pretrian与SFT的语料格式和loss计算的区别

5.1.1 格式化实例的构建

通常情况下,一个指令格式的实例包括一个任务描述(称为 指令)、一对输入-输出以及少量示例(可选)。作为重要的公共资源,现有的研究已经发布了大量带标注的自然语言格式 的数据(如下表)

图 9常见指令微调数据集的配置情况

1) 格式化已有数据集:基于现有来自不同领域(例如文本摘 要、文本分类和翻译)的实例来创建有监督的多任务训练数 据集,作为指令微调实例的一种重要来源,用自然语言的任 务描述来格式化这些多任务训练数据集是相当方便的。具体 来说,使用人类撰写的任务描述 来增广带标注的数据集,这些描述通过解释任务目标来指导 LLM 理解任务。例如,在下图 (b)中,每个问答任务的实 例都添加了一个任务描述“请回答下列问题”。在指令微调之 后,LLM 可以通过遵循任务描述很好地泛化到其他未见过的 任务上。特别地,指令被证明是影响 LLM 任务泛 化能力的关键因素。为了更好地为指令微调生成标注实 例,一种名为 PromptSource 的众包平台被提出,可以 有效地创建、共享和验证不同数据集的任务描述。此外,一些 研究还尝试通过为指令微调特殊设计的任务描 述,来反转已有实例的输入-输出对。例如,对于一个已有的 问题-答案对,我们可以通过基于以问题预测答案的方式来创 建一个新实例(例如,“请基于以下答案生成一个问题:”)。

2) 格式化人类需求:尽管大量的训练实例已经通过添加指令进 行格式化,但它们主要来自公共的 NLP 数据集,任务描述缺 乏多样性或与人类真实需求不匹配。为了解决这个问题, InstructGPT建议采用真实用户提交给 OpenAI API 的 查询作为任务描述。用户查询以自然语言表示,很适合引导出 LLM 遵循指令的能力。此外,为了丰富任务的多样性,标注 者还要为真实生活中的任务编写指令,包括开放式生成、开 放式问答、头脑风暴和聊天等。然后让另一组标注人员直接 按照将这些指令作为输出进行回答。最后,将指令(即采集的 用户查询)和期望的输出(即人工编写的答案)配对作为一 个训练实例。

格式化实例和两种构造指令格式实例的方式如下图:

图 10指令微调的数据格式化实例的流程

5.1.2 指令微调策略

与预训练不同,因为只需要使用较少数量的实例进行训练,指令微调通常更加高效。指令微调可以被视为一个有监督的训 练过程,其优化过程与预训练有一些不同,比如训练目标 函数(如序列到序列的损失)和优化参数设置(如更小的批量 大小和学习率)。

平衡数据分布:由于指令微调涉及多种任务的混合,因此在微 调过程中平衡不同任务的比例非常重要。一种广泛使用的方 法是实例比例混合策略,即将所有数据集合并,然后从混 合数据集中按比例采样每种实例。此外,根据最近的研究发现,提高高质量数据集(例如 FLAN和 P3)的采样比例通常可以带来性能提升。同时,在指令微调期间通 常会设置一个最大容量,以限制数据集中可以包含的最大实 例数,这是为了防止较大的数据集挤占整个采样集合。在实践中,根据不同的数据集,最大容量通常设置为几 千或几万个实例。

结合指令微调和预训练:为了使微调过程更加有效和稳定, OPT-IML在指令微调期间加入了预训练数据,这可以看 作是对模型的正则化(regularization)。此外,一些研究并没 有使用单独的两阶段训练过程(预训练和指令微调),而是尝 试混合使用预训练数据(即纯文本)和指令微调数据(即指令 格式数据),用多任务学习的方式从头训练模型。具 体而言,GLM-130B和 Galactica将指令格式数据集 作为预训练语料库的一小部分来预训练 LLM,这有可能同时获得预训练和指令微调的优势

5.2 对齐微调

背景:LLM 在多个自然语言处理任务上展示出了惊人的能力,但是, 这些模型有时可能表现出预期之外 的行为,例如编造虚假信息、追求不准确的目标,以及产生 有害的、误导性的和有偏见的表达。对于 LLM 而言, 模型参数的预训练使用了语言建模的目标,即用单词预测进 行预训练,但这没有考虑到人类的价值观或偏好。为了避免这 些预期外的行为,一些研究提出了人类对齐,使得 LLM 的行为能够符合人类期望。但是, 与原先的预训练和适配微调(例如指令微调)相比, 对齐微调需要考虑的标准(例如有用性, 诚实性和无害性)十分不同。已有研究表明对齐微调可能会在某种程度上损害 LLM 的通用能力,这在相关研究 中被称为对齐税

5.2.1 人类反馈的收集

标注人员的选择:InstructGPT通过评估标注人员 与研究人员之间意图的一致性来选择标注人员。具体而言,研 究人员首先标注少量的数据,然后衡量他们自己和标注人员 之间的标注一致性。选择一致性最高的标记者继续后续的标 注工作。

人类反馈的收集:1)基于排序的方法:引 入了 Elo 评分系统 ,通过一一比较所有候选输出结果来生成 一个偏好排序。候选输出的排序将用于调整模型更倾向的输 出,从而产生更可靠和更安全的结果。 2)基于问题的方法:通过回答研究人员设计的特定 问题,标注人员可以提供更详细的反馈,这些问题能够覆 盖不同的对齐标准以及其他对 LLM 的约束条件。特别地,在 WebGPT中,为了帮助模型从检索到的文档中过滤和利 用相关信息,标注人员需要回答关于检索到的文档对于回答 给定输入是否有帮助的选择题。 3)基于规则的方法:Sparrow不仅选择了标注人员挑选的最佳回复,还设计 了一系列规则来测试模型生成的回复是否符合有用、正确和 无害的对齐标准。GPT-4 利用一组(基于 GPT-4 本身的)零样本分类器作为基 于规则的奖励模型,可以自动地确定模型生成的输出是否违 反了一组人类编写的规则。

5.2.2 基于人类反馈的强化学习

为了使 LLM 与人类价值观保持一致,人们提出了 RLHF,使用收集到的人类反馈数据对 LLM 进行微调,有助于 改进对齐的指标。RLHF 采用强化学习(RL)算法(例如,近端策略优化(Proximal Policy Optimization, PPO))通过学习奖励模型使 LLM 适配人类反馈。

基于人类反馈的强化学习系统: RLHF 系统主要包括三个关 键组件:要对齐的 PLM、从人类反馈中学习的奖励模型,以 及训练 LM 的 RL 算法。具体来说,PLM 通常是一个生成模 型,它使用现有的 PLM 参数进行初始化。例如,OpenAI 在其 第一个主流的 RLHF 模型 InstructGPT 中使用 1750 亿 参数量的 GPT-3。此外,奖励模型(RM) 提供(学习得到的)指导信号,这些信号反映了人类对 LM 生成的文本的偏好,通常以标量值的形式表示。奖励模型通 常具有两种形式:经过微调的 LM 或使用人类偏好数据重新 训练的 LM

基于人类反馈的强化学习的关键步骤:下图说明了 RLHF 的 整个三步过程,具体如下所述。

1) 监督微调:为了使 LM 具有初步执行所需行为的能力, 通常需要收集一个包含输入提示(指令)和所需输出的监督数 据集,以对 LM 进行微调。这些提示和输出可以在确保任务 多样性的情况下由人工标注人员针对某些特定任务编写。例 如,InstructGPT 要求人工标注者编写提示(例如,“列 出五个关于我如何重拾对职业热情的想法”)和一些生成式任 务(如开放域问答、头脑风暴、聊天和重写)的期望输出。

2)训练奖励模型:第二步是使用人类反馈的数据训练 RM。 具体来说,我们向 LM 中输入采样的提示(来自监督数据集 或人类生成的提示),以生成一定数量的输出文本,然后邀请 人工标注员为这些输入-输出对标注偏好。标注过程可以以多 种形式进行,常见的做法是对生成的候选文本进行排序标注, 这样可以减少因标注者不同带来的差异。最后,训练 RM 预 测人类偏好的输出。在 InstructGPT 中,标注员将模型生成 的输出从最好到最差进行排名,然后训练 RM(即 60 亿参数 量的 GPT-3)来预测排名。

3)强化学习微调:在这一步骤中,LM 的对齐微调可以被 形式化为 RL 问题。在这种情况中,RL 问题的策略(policy) 由 PLM 给出(将提示作为输入并返回输出文本),行动空间 (action space)是 LM 的词表,状态(state)是目前生成的 token 序列,奖励(reward)则由 RM 提供。为了避免 LM 显 著偏离初始(微调前)的模型,通常在奖励函数中纳入一项 惩罚项。例如,InstructGPT 在使用 PPO 算法对抗 RM 来 优化 LM 时,对于每个输入提示,InstructGPT 计算当前 LM 和初始 LM 生成的结果之间的 KL 散度作为惩罚项。值得注 意的是,可以通过多次迭代第二步和最后一步来更好地对齐LLM。

图 11强化学习的框架原理

6 LLM使用技巧

经过预训练或适配微调之后,使用 LLM 的主要方法是为解决 各种任务设计适当的提示策略。一种典型的提示方法是将任 务描述和(或)示范以自然语言文本的形式表达的上下文学习(in-context learning, ICL)。此外,采用思维链提示(chain-of-thought prompting)可以 通过将一系列中间推理步骤加入提示中来增强 ICL。

6.1 上下文学习

6.1.1 形式

如下图是 (in-context learning, ICL) 的示意图。首先,以任务描述作为开始,从任务数据集中选择一些样 例作为示范。然后,以特别设计的模板形式将它们按照特定 的顺序组合成自然语言提示。最后,将测试样例添加到 LLM 的输入中以生成输出。基于任务示范,LLM 可以在没有显式 梯度更新的情况下识别和执行新任务。

图 12提示词中ICL与COT的使用效果示例

6.1.2 示范设计

多项研究表明 ICL 有效性受示范设计影响,从示范选择、格式和顺序三方面介绍。

  1. 示范选择:不同示范影响 ICL 性能,选能发挥 LLM 的 ICL 能力的样例子集重要。有启发式方法,因简单低成本被广泛采用,也有基于多样性选择策略。还有基于大语言模型方法,可直接评估样例信息量,如 EPR 两阶段检索法,也可将示范选择建模为 RL 问题,或用 LLM 作示范生成器。

  2. 示范格式:选样例后整合格式化,可用输入输出对实例化模板,也可添加任务描述或用 CoT 提示增强推理能力。自动生成高质量示范格式的方法有 Auto-CoT 和 least-to-most 提示。

  3. 示范顺序:LLM 受顺序偏差影响,合理排列示范重要,可按相似度或用全局和局部熵度量打分排序。

6.2 思维链提示

思维链(CoT)可提升 LLM 在复杂推理任务中的性能。分为小样本和零样本设置与 ICL 一起使用。

  1. 小样本思维链:是 ICL 特例,将推理步骤纳入提示。关键问题是设计合适提示及利用生成的 CoT 推导出答案。可使用多样推理路径,Auto-CoT 利用 Zero-shot-CoT 生成推理路径并分类问题。增强策略是生成多个推理路径并找一致性,如 self-consistency。

  2. 零样本思维链:无人工标注示范,直接生成推理步骤得出答案。最初用“Let’s think step by step”和“Therefore, the answer is”提示,在大规模模型中效果好,小规模模型不佳。

7 LLM的开发展望

7.1基于开源LLM开发的技术路线

2023年2月,Meta发布了LLaMA大语言模型。受益于其强大的基座能力,LLaMA的发布引起了开源社区的对其进行扩展的热潮,大量的研究人员基于LLaMA进行指令微调或者继续预训练,从而催生了大量高质量的开源大语言模型。为了了解LLaMA家族模型的发展脉络,下图整理增加了LLaMA家族模型的发展介绍,并绘制了一个简要的LLaMA家族演化图来展示LLaMA家族模型的发展历程,以及各个衍生模型之间的关联。

图 13 Llama家族系列的发展示意图

7.2 LLM的最新前沿模型:OpenAI O1 模型

1. OpenAI O1 模型简介

OpenAI 最近发布了全新的 O1 系列模型,包括 o1-preview 和 o1-mini。这些模型专为复杂推理问题设计,能够在编程、数学推理、头脑风暴和文档比较等方面表现出色。O1 系列模型在 Microsoft Azure OpenAI 服务、Azure AI Studio 和 GitHub Models 上可供开发者和企业使用。

2. O1 模型的范式

O1 模型采用了一种新的推理范式,旨在解决复杂和细微的问题空间。其主要技术特点包括:

  • 思维链(Chain of Thought, CoT):通过显式地嵌入一个原生的思维链过程,模型可以逐步推理,生成中间步骤,从而提高推理的准确性和可靠性。

  • 强化学习(RL):在后训练阶段,利用强化学习技术优化模型的推理能力。通过自我博弈(Self-Play)和过程奖励模型(PRM),模型能够不断改进其推理策略。

  • 蒙特卡洛树搜索(MCTS):在推理过程中,使用MCTS探索不同的推理路径,选择最优路径以提高推理质量。

  • 过程奖励模型(PRM):评估每个推理步骤的质量,提供细粒度的奖励信号,引导模型生成更合理的推理过程。

2.1 O1-preview 和 O1-mini

  • o1-preview:专注于高级推理和解决复杂问题,包括数学和科学任务。适用于需要深度上下文理解和代理工作流的应用。

  • o1-mini:更小更快,比 o1-preview 便宜 80%,在代码生成和小上下文操作方面表现良好。

3. O1 系列模型启发的未来发展方向

3.1 强化学习与内化思维链

O1 模型通过强化学习和内化思维链的方式,显著提升了推理能力。模型能够在回答问题之前进行深入思考,并通过不断验证和纠错,尝试新的方法。这一过程显著提升了模型的推理质量。

3.2 自我改进与协作平台

未来,O1 模型将从简单的聊天机器人转变为协作平台,允许专业人员与 AI 一起处理复杂的用例。这将进一步推动 AI 在各个领域的应用,如法律、科学研究和软件开发。

3.3 扩展应用场景

随着 O1 模型的不断发展,其应用场景将进一步扩展,包括但不限于:

  • 实时数据处理:通过与外部工具的集成,实现实时数据分析和处理。

  • 多模态输入:支持文本、图像和语音的综合处理,提升用户体验。

  • 个性化定制:根据用户需求,提供高度定制化的解决方案。

7.3编码LLM的开发

近几年编码LLM主要模型发展时间轴如下:

图 14 CodeLLM的发展历程

目前12款主流的AI编程助手工具:

GitHub Copilot:由GitHub与OpenAI合作开发,支持多种编程语言,提供代码建议,适合多种IDE,普通用户需付费。

通义灵码:阿里巴巴推出的工具,支持多种语言,提供实时代码续写和智能问答,完全免费。

代码小浣熊:商汤科技的产品,支持30多种语言,覆盖软件开发的各个环节,完全免费。

CodeWhisperer:亚马逊AWS的工具,支持15种语言,提供实时代码建议,个人用户免费。

MarsCode:字节跳动开发的工具,支持多种语言,提供云端IDE功能,完全免费。

CodeGeeX:智谱AI推出的开源工具,支持多种语言,提供代码生成和补全功能,完全免费开源代码

Cody:Sourcegraph的工具,支持多种语言,能够回答技术问题并补全代码,个人用户免费。

CodeFuse:蚂蚁集团的工具,支持40多种语言,提供多种代码辅助功能,完全免费。

Project IDX:谷歌推出的云端开发平台,支持多种框架,完全免费。

Codeium:支持70多种语言,提供代码建议和重构提示,个人版完全免费。

CodiumAI:专注于代码测试和分析,支持多种语言,个人用户完全免费。

AskCodi:基于OpenAI技术的工具,支持多种语言,提供多种编程辅助功能,提供不同的

7.3.1以开源免费的codegeex为例来介绍编码LLM

codegeex开发背景: CodeGeeX是一个具有130亿参数的多编程语言代码生成预训练模型。具体而言,CodeGeeX 采用了华为 MindSpore 框架来实现,使用了鹏城实验室“鹏城云脑II”平台中 192 节点昇腾910 AI处理器,在 20 多种编程语言的代码语料库历时两个月训练而成。

图 15 codegeex的开发历程

代码生成模型 CodeGeeX。原理:

CodeGeeX是一个基于transformers的大规模预训练编程语言模型。它是一个从左到右生成的自回归解码器,将代码或自然语言标识符(token)作为输入,预测下一个标识符的概率分布。

图 16 codegeex实现的简单原理

CodeGeeX含有40个transformer层,每层自注意力块的隐藏层维数为5120,前馈层维数为20480,总参数量为130亿。模型支持的最大序列长度为2048,足以涵盖大部分使用场景。

CodeGeeX的训练语料由两部分组成。

图 17 预训练codegeex的语料配比

第一部分是开源代码数据集,The Pile与CodeParrot。The Pile包含GitHub上拥有超过100颗星的一部分开源仓库,我们从中选取了23种编程语言的代码。

第二部分是补充数据,直接从GitHub开源仓库中爬取Python、Java、C++代码。

CodeGeeX的训练语料预处理的示例如下图所示:

图 18 codegeex语料预处理的示例图

为了让模型区分不同语言,每个样本的开头加上一个前缀,其形式为[注释符] language: [语言],例如:# language: Python。我们对数据进行了去重和清洗,整个代码语料含有23种编程语言、总计1587亿个标识符(不含填充符)。

CodeGeeX具体的实现原理如下图所示:

图 19 codegeex实现的详细原理示例图

7.4编码LLM的评估方法

以下是一些主流的评估生成代码的质量的方法和指标:

1. 自动化评估指标

(1)准确率(Accuracy)

准确率是衡量代码生成任务中模型输出结果是否正确的最基本标准。对于生成任务,通常可以通过以下方式定义不同的准确率度量:

  • 精确匹配(Exact Match, EM): 模型生成的代码与参考代码完全匹配的比例。这种度量方式对小错误(如变量名不同或代码结构略有不同)比较敏感,但能衡量模型生成的代码是否严格正确。 应用场景: 在完成代码补全或代码生成任务时,生成的代码片段和目标代码完全一致的情况。

  • Top-k 准确率: 在提供的前 k 个候选代码片段中,是否有一个与参考代码匹配。例如,Top-1 准确率表示模型生成的第一个候选代码是否正确,而 Top-5 准确率则表示候选项中是否有一个正确答案。 应用场景: 在代码自动补全中,通过提供多个建议项,用户可以从中选择最合适的代码。

(2)BLEU(Bilingual Evaluation Understudy Score)

BLEU 分数是一种常用于评估机器翻译的指标,但在代码生成中也被广泛应用。它通过计算生成代码与参考代码之间的 n 元组(n-grams)的相似性来衡量代码生成的质量。

  • 应用场景: 评估模型生成代码与参考代码的相似程度,特别是在代码翻译(将一种编程语言翻译为另一种)或文档生成任务中。

(3)CodeBLEU

CodeBLEU 是 BLEU 指标的扩展,专门用于代码生成任务。它结合了代码的语法和语义特性,并考虑了代码的结构、变量名的匹配等因素。CodeBLEU 的计算主要包括:

  • 语法匹配: 代码的语法树相似度。

  • 语义匹配: 代码执行结果的相似度(例如,执行相同功能的代码,即使结构不同也可能得分较高)。

  • 变量名匹配: 不同变量名之间的一致性。

  • 应用场景: 在代码合成、代码翻译等任务中,CodeBLEU 能更全面地评估代码生成质量。

(4)功能正确性(Functional Correctness)

功能正确性关注生成代码的实际执行效果,而不仅仅是代码文本的匹配。通常在评估代码生成模型时,通过以下方式进行:

  • 单元测试(Unit Tests): 通过运行生成代码的单元测试来判断生成代码是否能按照预期执行。模型生成的代码能通过多少个测试案例是衡量代码质量的重要标准。

  • 应用场景: 例如,给定一个编程题目,生成的代码是否能通过一组预设的测试用例,确保其功能正确性。

(5)复杂度评估

代码的复杂度评估标准通常包括:

  • 时间复杂度和空间复杂度: 生成代码的效率是评估代码质量的重要维度之一。如果生成的代码非常低效,虽然功能上正确,但可能不是理想的解决方案。

  • 应用场景: 在算法竞赛或优化问题中,生成的代码不仅要正确,还需要高效。

2. 定性评估方法

(1)人工评估(Human Evaluation)

由于代码生成任务的复杂性,有时自动化指标无法完全捕捉代码的可读性、可维护性等方面的质量。因此,人工评估常用于补充自动化评估。人工评估通常基于以下几个维度:

  • 代码可读性(Readability): 生成代码是否清晰易读,是否遵循了良好的代码风格和命名规范。

  • 代码风格(Code Style): 模型生成的代码是否符合特定的编码风格(如 Python 的 PEP8 标准)。

  • 逻辑正确性(Logical Correctness): 人工检查代码的逻辑结构,确保其能够正确执行预期功能。

  • 应用场景: 在代码审查或代码生成工具的开发中,人工评估可以为自动化评估提供补充,特别是在生成代码质量较高但风格不一致时。

(2)用户反馈(User Feedback)

在实际应用中,用户反馈是评估模型性能的重要来源。代码生成模型在集成到开发工具或 IDE 中时,开发者的使用反馈可以为进一步改进模型提供参考。

  • 应用场景: 通过开发者的反馈来评估模型生成代码的实际有用性和接受度,例如代码补全工具的建议是否在开发过程中帮助了用户提高效率。

3. 评估代码语言模型的常见基准

许多代码生成模型都会基于公开的基准数据集进行评估,以便与其他模型进行对比。以下是一些常见的代码生成模型评估基准:

(1)CodeXGLUE

CodeXGLUE 是微软开源的一个大规模代码数据集和基准,包含了多种任务的评估基准,包括代码生成、代码补全、代码翻译、代码修复等。它为每个任务都提供了标准数据集和评估指标(如 BLEU、CodeBLEU、功能正确性等)。

  • 应用场景: 研究人员和开发人员可以使用 CodeXGLUE 来评估他们的代码生成模型在不同任务上的表现。

(2)HumanEval

HumanEval 是 OpenAI 提出的一个基准,用于评估代码生成模型在 Python 编程任务上的表现。该基准提供了多种编程任务,每个任务都有预定义的输入和输出,模型需要生成正确的 Python 代码以通过测试用例。

  • 应用场景: 在评估 GPT 类模型的代码生成能力时,HumanEval 是一个常用的基准,模型需要通过相应的单元测试来验证生成代码的功能正确性。

(3)APPS(Automated Programming Progress Standard)

APPS 是一个编程问题数据集,涵盖了从简单的编程题目到复杂的算法问题,模型需要解决这些问题并生成正确的代码。APPS 提供了一个更具挑战性的评估基准,特别适合评估模型在复杂编程任务中的表现。

  • 应用场景: 用于评估模型在实际编程问题中生成正确代码的能力,特别是面对具有挑战性的算法问题时。

举例说明:评估 GPT-4 编程能力

  1. 任务定义: 让 GPT-4 生成一个函数,用于计算两个矩阵的乘法。

  2. 模型生成: GPT-4 输出如下 Python 代码:

图 20 代码示例

  1. 自动化评估:

  • 精确匹配: 如果参考代码与生成代码完全一致,则精确匹配得分为 1,否则为 0。

  • 功能正确性: 通过一组单元测试(例如测试 2x2 和 3x3 矩阵乘法)来评估代码输出是否正确。

  1. 人工评估: 评估生成代码的可读性、是否遵循 Python 编程风格等。

  2. 最终得分: 综合自动化评估和人工评估的结果,给出模型的最终性能得分。

Code LLM的评估涉及多个维度,包括自动化指标(如准确率、BLEU、功能正确性)和定性评估(如可读性、逻辑正确性)。不同的评估方法适用于不同的应用场景,结合这些评估方法可以全面地衡量代码生成模型的表现。

8 LLM在电力控制中的应用展望

8.1 LLM在电力监控和能源管理领域的应用场景

1. 智能电网监控与异常检测

电力监控系统会收集大量的传感器数据和电网运行数据,LLM可以通过自然语言处理技术帮助企业从复杂数据中提取关键信息:

  • 故障预测和检测:通过训练LLM模型,企业可以分析电网运行数据,预测潜在的设备或线路故障。例如,模型可以基于历史数据和实时数据,分析电压、电流、温度等参数的变化,识别异常模式并预警。

  • 故障报告自动生成:电网出现异常或故障时,LLM可以自动生成清晰易懂的故障报告,帮助运维人员快速了解问题的性质、位置和影响。

  • 自然语言查询与报告:通过自然语言交互,运维人员可以向系统提出实时问题,诸如“当前电网负载情况如何?”或“过去24小时内的异常事件有哪些?” LLM可根据后台数据直接生成答案。

图 21 行业多模态大模型的应用指引

2. 能源需求预测与优化

在能源管理中,准确的能源需求预测和优化调度至关重要。LLM可以结合历史数据、气候数据、节假日等因素,帮助企业预测未来的能源需求:

  • 负荷预测:LLM可以基于历史电力负荷数据、天气条件、时间段、区域经济活动等信息,预测短期和长期的电力需求。这有助于电网运营商优化发电和储能策略。

  • 能源调度优化:在能源供应和需求之间,LLM可以根据实时数据提供最佳调度方案,例如动态调配可再生能源与传统能源的使用比例,减少峰值负荷时的压力。

  • 生成式优化建议:LLM可以生成关于如何更高效地分配能源的建议,例如在电力需求高峰期间如何合理分配电力资源,或者哪些区域可以暂时降低负荷。

3. 能源效率和节能管理

LLM可以帮助企业管理能源的使用效率,尤其是在大型工厂、数据中心等高耗能的场景:

  • 设备健康监测与优化:LLM可以从设备的运行数据中提取有价值的模式,预测设备的健康状况和能耗情况,提供设备维护建议,从而延长设备寿命并优化能效。

  • 节能策略生成:LLM可以基于现有的能源消耗模式,生成个性化的节能策略,例如建议调整生产计划以避免在高峰时段用电,或者推荐设备的最佳运行状态以降低能耗。

4. 客户服务与用户交互

能源管理企业通常需要与大量客户(包括个人用户和企业用户)进行互动,LLM可以通过智能客服系统提升用户体验:

  • 智能客服与用户咨询:LLM可以用于开发自动化的客服系统,帮助用户解答关于用电量、账单、节能建议等问题。比如,用户可以询问“本月的用电量比上个月高了多少?”或者“如何减少家庭用电?”

  • 个性化能源建议:基于用户的用电数据,LLM可以生成个性化的节能建议。例如,通过分析家庭的用电模式,系统可以向用户提供如何在特定时段减少用电的建议。

5. 政策分析与合规管理

在能源行业,法规政策经常更新,LLM可以帮助企业跟踪和解读相关政策,确保运营合规:

  • 法规和政策解读:LLM可以帮助能源企业自动分析最新的能源法规和政策,并生成相应的合规性报告,确保企业遵守最新的监管要求。

  • 政策影响分析:LLM可以基于现有政策分析其对企业运营的潜在影响,帮助企业制定相应的调整策略。

8.2 中小企业如何低成本开发LLM应用

对于中小企业而言,开发LLM应用可能面临成本和资源的限制,但通过合理的技术选择和开发策略,可以有效降低开发和部署成本。以下是具体的建议:

1. 使用开源模型和平台

中小企业可以利用开源LLM,如Meta的LLaMA或清华大学的GLM。这些模型提供了强大的语言处理能力,且无需从零开始训练。通过微调这些模型,企业可以快速构建适合自己业务场景的应用。

  • 模型微调:中小企业可以根据自己的行业数据对开源模型进行微调。例如,基于电力监控的历史数据,对模型进行微调,使其能够更好地预测负荷或生成报告。

  • 开源训练框架:使用开源工具如Hugging Face的Transformers库,可以快速实现模型的微调和部署。这些工具支持多种预训练模型,并且有丰富的社区支持。

2. 云平台的LLM服务

中小企业可以使用云服务商提供的LLM API,避免高昂的硬件和基础设施成本。以下是一些常用的云服务:

  • OpenAI API:提供可直接调用的GPT-4等强大的LLM模型,企业可以通过API接口集成到自己系统中,用于智能客服、报告生成等应用场景。

  • Google Cloud AIAWS AI:这些平台也提供了强大的LLM和AI服务,中小企业可以按需付费使用,避免购买昂贵的硬件。

通过使用这些平台,企业无需处理模型训练和推理的复杂性,直接调用API即可实现智能化功能。

3. 模型压缩与优化

对于资源有限的中小企业,可以使用模型压缩技术优化LLM的部署:

  • 模型量化和剪枝:通过模型量化和剪枝技术,可以大幅减少模型的计算和存储需求,使其可以在普通服务器甚至嵌入式设备上运行。例如,LLaMA等开源模型已经具备良好的量化支持。

  • 知识蒸馏:可以通过知识蒸馏技术,将大规模LLM的知识“蒸馏”到一个较小的模型中。这使得企业可以在有限的计算资源下部署性能优异的语言模型。

4. API与微服务架构

中小企业可以通过构建基于微服务架构的系统来集成LLM功能,通过模块化的方式降低开发复杂度:

  • API集成:将开源LLM或云平台的LLM能力通过API集成到现有的能源管理系统中,逐步扩展系统功能。例如,首先实现自动生成报告、负荷预测等小功能,后续再扩展更多智能化应用。

  • 模块化开发:将LLM功能开发成独立的微服务模块,支持灵活扩展和维护。例如,构建一个独立的智能客服模块,用户通过自然语言提出问题,该模块通过LLM进行处理并返回结果。

5. 数据驱动的开发

能源管理领域的数据丰富且实时性强,中小企业可以充分利用已有的历史数据和实时数据,结合LLM实现数据驱动的智能化应用:

  • 数据预处理:通过数据清洗和标准化,确保输入到LLM的数据高质量,有助于提高模型的预测准确性。

  • 持续微调与反馈学习:在系统运行过程中,不断收集用户反馈数据,对模型进行持续微调,确保模型的性能能够随着业务需求的变化不断提升。

8.3 LLM 的主要挑战和限制

尽管大语言模型(LLM)在自然语言处理领域表现出色,但它们仍面临多种挑战和限制,主要包括以下几个方面:

事实准确性和知识局限

  • 数据偏差:LLM 的训练数据通常来自互联网,可能包含不准确或偏见的信息。这会导致模型在生成文本时重复和放大这些偏见,从而影响输出的准确性和公平性。

  • 缺乏专业知识:在处理特定领域的专业知识时,LLM 可能表现不足。缺乏对某些领域的深入理解,导致生成的内容缺乏准确性和可信度。

  • 知识幻觉:LLM 有时会生成看似合理但实际上不真实的信息,这种现象被称为“知识幻觉”。这使得用户在依赖模型输出时需谨慎。

模型推理能力不足

  • 逻辑推理能力有限:虽然 LLM 可以生成连贯的文本,但在处理复杂的逻辑推理时,模型往往无法给出正确的答案。这是因为它们主要依赖于统计模式,而非逻辑规则。

  • 常识推理能力不足:在涉及常识性推理的问题上,LLM 可能无法准确理解和推断。这限制了其在日常决策中的应用。

计算资源和成本

  • 高计算成本:训练和优化 LLM 需要大量的计算资源和时间,这使得其开发成本相对较高。对于一些企业来说,这可能成为使用 LLM 的障碍[4]。

  • 实时学习能力不足:当前的 LLM 通常是静态的,无法在使用过程中实时学习新信息。这限制了它们适应快速变化环境的能力。

伦理与安全问题

  • 数据隐私与伦理风险:LLM 的训练数据可能包含敏感信息,存在侵犯隐私的风险。此外,由于模型输出可能带有偏见,如何确保其生成内容的公平性和安全性也是一个重要挑战。

  • 可解释性差:LLM 的决策过程往往是一个“黑箱”,难以解释其生成某个特定输出的原因。这使得用户对模型的信任度受到影响。

表 5 LLM目前的主要挑战

参考文献和链接

  1. https://mp.weixin.qq.com/s/JJpUJamWnZP_q7tEcKjPww

  2. https://ai-bot.cn/best-ai-coding-assistant-tools/#codefuse

  3. https://codegeex.cn/zh-CN/bloginfo/2b34c45370a34c80a27244004f259510

  4. Zheng Q, Xia X, Zou X, et al. Codegeex: A pre-trained model for code generation with multilingual evaluations on humaneval-x[J]. arXiv preprint arXiv:2303.17568, 2023.

  5. Zhao W X, Zhou K, Li J, et al. A survey of large language models[J]. arXiv preprint arXiv:2303.18223, 2023.

  6. 田海东,张明政,常锐,等.大模型训练技术综述[J].中兴通讯技术,2024,30(02):21-28.

  7. 罗锦钊,孙玉龙,钱增志,等.人工智能大模型综述及展望[J].无线电工程,2023,53(11):2461-2472.

  8. 张乾君.AI大模型发展综述[J].通信技术,2023,56(03):255-262.

  9. Zhang Z, Chen C, Liu B, et al. A survey on language models for code[J]. arXiv preprint arXiv:2311.07989, 2023.

  10. 张俊, 徐箭, 许沛东, 等. 人工智能大模型在电力系统运行控制中的应用综述及展望[J]. 武汉大学学报 (工学版), 2023, 56(11): 1368-1379.

  11. 孙秋野, 杨凌霄, 张化光. 智慧能源——人工智能技术在电力系统中的应用与展望[J]. 控制与决策, 2018, 33(5): 938-949.

  12. 黄子硕, 何桂雄, 闫华光, 等. 园区级综合能源系统优化模型功能综述及展望[J]. Electric Power Automation Equipment/Dianli Zidonghua Shebei, 2020, 40(1).

  13. https://keg.cs.tsinghua.edu.cn/codegeex/index_zh.html




Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1