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 为例,其训练流程如下:
三、开源与闭源大模型
构建大模型需要海量数据和强大算力,因此全球只有少数机构能够承担。这些机构形成了两大阵营:
- 开源阵营:
- 理念: 秉持促进学术交流和技术创新的理念,开放模型代码和数据集,加速整个 AI 社区的发展。
- 代表: Meta AI、浪潮信息等。
- 闭源阵营:
- 理念: 将模型作为核心竞争力,提供专有服务或产品以维持商业优势。
- 代表: OpenAI、百度等。
无论是开源还是闭源,它们都在推动 AI 技术的进步。
四、源大模型开源体系
浪潮信息已发布了三个大模型:源1.0、源2.0 和 源2.0-M32。
源1.0
源2.0
- 发布时间: 2023年11月
- 参数规模: 1026亿、518亿、21亿
- 特点: 提出了局部注意力过滤增强机制(LFA),在数理逻辑、代码生成方面表现出色。
- 开源内容: 全系列模型参数和代码免费下载使用。
- 相关链接:
源2.0-M32
- 发布时间: 2024年5月
- 模型类型: 混合专家(Mixture of Experts, MoE)大模型
- 参数量: 400亿(3.7亿激活参数)
- 特点: 包含32个专家,基于 LFA+Attention Router 的 MoE 结构。在数理逻辑、代码生成等方面对标 Llama3-70B,但推理算力降至其 1/19。
- 开源内容: 全面开源。
- 相关链接:
五、大模型时代的应用开发范式
如何充分挖掘大模型的潜能是应用开发的关键。以下是几种主流的开发策略:
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. 客户端开发
客户端负责接收用户请求并展示回复。常用的开发框架有 Gradio 和 Streamlit。
Gradio 基础概念
Gradio 通过组合不同的组件来快速构建 UI。
- 核心组件:
- 输入/输出组件: 如
Textbox、Image,用于内容交互。 - 布局组件: 如
Column、Row,用于规划界面布局。 - 控制组件: 如
Button,用于触发函数调用。
- 输入/输出组件: 如
- 设计哲学: 输入、输出与布局分离,推荐使用
gradio.Blocks()构建复杂交互界面。 - 更多信息:
Streamlit 基础概念
Streamlit 是另一个流行的快速 Web 应用开发框架,以其简洁的 Pythonic 语法著称。
2. 服务端开发
服务端负责与大模型交互。主要有两种方式:
- 调用大模型 API: 将请求发送给服务商(如 OpenAI、讯飞星火),等待 API 返回结果。
- 大模型本地部署: 在本地硬件(GPU/CPU)上下载模型文件,并基于推理框架进行部署。
两种方式的优缺点对比如下:
| 方式 | 优点 | 缺点 |
|---|---|---|
| 调用 API | 1. 便捷性: 无需关心模型维护。 2. 资源效率: 按需付费,成本灵活。 3. 稳定性与安全: 专业团队管理。 4. 扩展性: 易于集成和高并发。 | 1. 网络延迟: 受网络影响。 2. 数据隐私: 数据需传输至服务商。 3. 成本控制: 高频调用费用可能较高。 4. 依赖性: 受服务商政策影响。 |
| 本地部署 | 1. 数据主权: 数据在本地处理,更安全。 2. 性能可控: 低延迟,响应快。 3. 成本固定: 初始投入后,长期成本固定。 4. 定制化: 易于微调和扩展。 | 1. 硬件投资: 初期硬件成本高。 2. 运维复杂: 需自行管理和维护。 3. 技术门槛: 部署和优化有一定门槛。 4. 资源利用率: 低负载时资源可能闲置。 |
选择哪种方式取决于具体的应用场景、数据敏感性、预算以及对性能的需求。






