文章

AI 大模型技术综述

AI 大模型技术综述

背景知识

一、什么是大模型

为了对人类语言的内在规律进行建模,研究者们提出使用语言模型(Language Model)来准确预测词序列中“下一个词”或“缺失的词”的概率。

语言模型的发展经历了四个主要阶段:

  • 统计语言模型 (Statistical Language Model, SLM): 使用马尔可夫假设来建模语言序列的 n-gram 语言模型。
  • 神经语言模型 (Neural Language Model, NLM): 基于神经网络(如 RNN)构建,并学习上下文相关的词表示(词嵌入)。代表性工作是 Word2Vec。
  • 预训练语言模型 (Pre-trained Language Model, PLM): 使用大量无标注数据预训练双向 LSTM 或 Transformer,然后在下游任务上进行微调。代表性工作包括 ELMo、BERT 和 GPT-1/2。
  • 大语言模型 (Large Language Model, LLM): 基于“扩展法则”(Scaling Law),通过增加模型参数或训练数据来提升性能,并展现出小模型不具备的“涌现能力”。代表性工作有 GPT-3、ChatGPT、Claude 和 Llama。

语言模型发展历程

二、大模型是如何构建的

大模型的构建过程通常分为三个阶段:预训练(Pretraining)、有监督微调(Supervised Fine-tuning, SFT)和基于人类反馈的强化学习对齐(Reinforcement Learning from Human Feedback, RLHF)。

1. 预训练 (Pretraining)

预训练是使用海量数据进行模型参数的初始学习,旨在为模型参数找到一个优质的“起点”。这一概念最初在计算机视觉领域兴起,随后被自然语言处理(NLP)领域采纳。

  • 发展: 从 word2vec、ELMo、BERT 到 GPT 系列,预训练技术从解决特定任务发展到构建通用解决方案。
  • 主流范式: 随着 GPT 系列的成功,“解码器架构 + 预测下一个词”的策略成为当前主流。
  • 数据与算力:
    • 数据: 预训练需要海量的、高质量且多样化的文本数据。例如,Llama 系列模型的预训练数据量从 1T 增长到了 15T tokens。
    • 算力: 预训练对计算资源的需求极为庞大。以 Llama-1 (65B) 为例,其在 2048 块 A100 80GB GPU 上训练nearly三周。
  • 挑战: 预训练不仅是技术挑战,更是对数据质量、算力投入和研发经验的综合考验。

2. 有监督微调 (Supervised Fine-tuning, SFT)

预训练后的模型虽具备丰富的世界知识,但更擅长文本补全,不适合直接解决具体任务。为了解锁其任务解决能力,需要进行微调。

  • 指令微调 (Instruction Tuning): 利用成对的“任务输入-预期输出”数据,训练模型以问答形式解决问题,使其展现出强大的指令遵循能力。
  • 作用: 指令微调更多是激活模型已有的潜在能力,而非灌输新知识。
  • 数据量: 相较于预训练,SFT 所需数据量显著减少(数十万至数百万条),甚至少量高质量数据(数千条)也能达到良好效果,降低了对计算资源的依赖。

3. 基于人类反馈的强化学习对齐 (RLHF)

为了使大模型与人类的期望、需求及价值观对齐(Alignment),需要进行对齐训练。

  • RLHF: 由 OpenAI 在 InstructGPT 中提出,通过构建一个反映人类偏好的奖励模型(Reward Model),并利用强化学习算法(如 PPO)来优化语言模型,使其输出更符合人类价值观。
  • 替代方案: 为了简化对齐过程,研究者提出了如 直接偏好优化 (Direct Preference Optimization, DPO) 等非强化学习的对- 齐算法。DPO 以类似有监督微调的复杂度,实现了与 RLHF 相当的效果,且超参数调整更为简单。

Llama-2-Chat 为例,其训练流程如下:

Llama-2-Chat 训练流程

三、开源与闭源大模型

构建大模型需要海量数据和强大算力,因此全球只有少数机构能够承担。这些机构形成了两大阵营:

  • 开源阵营:
    • 理念: 秉持促进学术交流和技术创新的理念,开放模型代码和数据集,加速整个 AI 社区的发展。
    • 代表: Meta AI、浪潮信息等。
  • 闭源阵营:
    • 理念: 将模型作为核心竞争力,提供专有服务或产品以维持商业优势。
    • 代表: OpenAI、百度等。

无论是开源还是闭源,它们都在推动 AI 技术的进步。

四、源大模型开源体系

浪潮信息已发布了三个大模型:源1.0源2.0源2.0-M32

源1.0

  • 发布时间: 2021年9月
  • 参数量: 2457亿
  • 特点: 当时全球最大规模的 AI 模型,展现了出色的中文理解与创作能力。
  • 开源内容: API、高质量中文数据集和代码。
  • 相关链接:

源1.0 模型

源2.0

  • 发布时间: 2023年11月
  • 参数规模: 1026亿、518亿、21亿
  • 特点: 提出了局部注意力过滤增强机制(LFA),在数理逻辑、代码生成方面表现出色。
  • 开源内容: 全系列模型参数和代码免费下载使用。
  • 相关链接:

源2.0 模型

源2.0-M32

  • 发布时间: 2024年5月
  • 模型类型: 混合专家(Mixture of Experts, MoE)大模型
  • 参数量: 400亿(3.7亿激活参数)
  • 特点: 包含32个专家,基于 LFA+Attention Router 的 MoE 结构。在数理逻辑、代码生成等方面对标 Llama3-70B,但推理算力降至其 1/19。
  • 开源内容: 全面开源。
  • 相关链接:

源2.0-M32 模型

五、大模型时代的应用开发范式

如何充分挖掘大模型的潜能是应用开发的关键。以下是几种主流的开发策略:

1. Prompt 工程 (Prompt Engineering)

通过精心构造提示(Prompt)来直接调教大模型。关键技术包括:

  • 上下文学习 (In-Context Learning, ICL): 将任务说明和示例融入提示中,让模型无需额外训练即可学习新任务。
  • 思维链提示 (Chain-of-Thought, CoT): 在提示中引入连贯的逻辑推理链条,增强模型处理复杂问题的能力。

2. Embedding 辅助(外接大脑)

大模型在知识局限性、数据安全性和幻觉问题上存在不足。通过 检索增强生成 (Retrieval-Augmented Generation, RAG),可以为 LLM 外接知识库:

  • 流程: 将外部知识转换为 Embedding 向量存入知识库,在需要时检索相关知识作为背景信息提供给大模型。
  • 优势: 能够生成更准确、符合上下文的答案,并有效减少模型幻觉。

3. 参数高效微调 (Parameter-Efficient Fine-Tuning, PEFT)

当大模型在特定任务上能力不足或需要学习新能力时,模型微调是有效的解决方案。

  • 挑战: 全量参数微调需要巨大的计算资源。
  • 解决方案: 参数高效微调(PEFT)通过只训练极少数模型参数(如 LoRA),在保证性能的同时,大幅降低了算力消耗。

六、大模型应用开发必知必会

一个完整的大模型应用通常包含客户端和服务端。

大模型应用架构

1. 客户端开发

客户端负责接收用户请求并展示回复。常用的开发框架有 GradioStreamlit

Gradio 基础概念

Gradio 通过组合不同的组件来快速构建 UI。

  • 核心组件:
    • 输入/输出组件: 如 TextboxImage,用于内容交互。
    • 布局组件: 如 ColumnRow,用于规划界面布局。
    • 控制组件: 如 Button,用于触发函数调用。
  • 设计哲学: 输入、输出与布局分离,推荐使用 gradio.Blocks() 构建复杂交互界面。
  • 更多信息:

Gradio 概念

Streamlit 基础概念

Streamlit 是另一个流行的快速 Web 应用开发框架,以其简洁的 Pythonic 语法著称。

2. 服务端开发

服务端负责与大模型交互。主要有两种方式:

  • 调用大模型 API: 将请求发送给服务商(如 OpenAI、讯飞星火),等待 API 返回结果。
  • 大模型本地部署: 在本地硬件(GPU/CPU)上下载模型文件,并基于推理框架进行部署。

两种方式的优缺点对比如下:

方式优点缺点
调用 API1. 便捷性: 无需关心模型维护。
2. 资源效率: 按需付费,成本灵活。
3. 稳定性与安全: 专业团队管理。
4. 扩展性: 易于集成和高并发。
1. 网络延迟: 受网络影响。
2. 数据隐私: 数据需传输至服务商。
3. 成本控制: 高频调用费用可能较高。
4. 依赖性: 受服务商政策影响。
本地部署1. 数据主权: 数据在本地处理,更安全。
2. 性能可控: 低延迟,响应快。
3. 成本固定: 初始投入后,长期成本固定。
4. 定制化: 易于微调和扩展。
1. 硬件投资: 初期硬件成本高。
2. 运维复杂: 需自行管理和维护。
3. 技术门槛: 部署和优化有一定门槛。
4. 资源利用率: 低负载时资源可能闲置。

选择哪种方式取决于具体的应用场景、数据敏感性、预算以及对性能的需求。

本文由作者按照 CC BY 4.0 进行授权