随着 ChatGPT 的普及,大模型(Large Language Model,简称 LLM)已成为新时代的技术热点。对于开发者而言,理解其原理并在本地运行模型具有极高的实践价值。
什么是大模型
通俗来讲,大模型是通过输入海量语料,使计算机获得类似人类的'思考'能力,能够理解自然语言并执行文本生成、推理问答、对话及文档摘要等任务。
我们可以用'上学参加工作'来类比大模型的训练与使用过程:
- 找学校:训练 LLM 需要大量计算资源,通常需配备高性能 GPU,只有具备充足算力的机构才能训练自己的大模型。
- 确定教材:大模型数据量巨大,几千亿序列(Token)的输入是标配。
- 找老师:即选择何种算法讲述'书本'内容,让模型更好理解 Token 间的关系。
- 就业指导:学完知识后,为胜任特定行业需进行微调(Fine-tuning)。
- 搬砖:正式干活,如翻译、问答,在模型中称为推导(Inference)。
在 LLM 中,Token 被视为模型处理和生成的文本单位。它们可代表单个字符、单词或子单词,具体取决于分词方法(Tokenization)。Token 是原始文本与数字表示之间的桥梁。例如句子 "The cat sat on the mat" 会被分割成 "The", "cat", "sat" 等,并映射为词汇表 ID:
| Token | ID |
|---|---|
| The | 345 |
| cat | 1256 |
| sat | 1726 |
| … | … |
数字化便于计算机处理。为了让计算机理解 Token 间的联系,需将其表示为稠密矩阵向量,即 Embedding。常见算法包括:
- 基于统计:Word2Vec(上下文统计)、GloVe(共现统计)。
- 基于深度网络:CNN(卷积网络)、RNN/LSTM(序列模型)。
- 基于神经网络:BERT(Transformer+Masked LM)、Doc2Vec。
以 Transformer 为代表的大模型采用自注意力(Self-attention)机制学习 Token 依赖关系,生成高质量 Embedding。
大模型的'大'指参数多,主要是权重(Weight)与偏置(Bias)。例如 GPT-3 拥有 1750 亿参数,而词汇表 Token 数仅 5 万左右。
发展历程
这一切起源于 2017 年发布的 Attention Is All You Need 论文。此后预训练模型百花齐放:
- BERT (Bidirectional Encoder Representations from Transformers):Google 2018 年提出,创新双向预训练并行获取上下文语义,开创预训练范式。参数规模:1.1 亿到 3.4 亿。
- GPT (Generative Pre-trained Transformer):OpenAI 2018 年提出,仅使用自回归语言建模作为预训练目标,展示无监督大规模预训练的语言生成能力。参数规模:1750 亿。
- LLAMA (Large Language Model):Meta 2021 年提出,首个开源模型,提供系统化构建更大规模通用语言模型的方法。参数规模:十亿到千亿。
模型部署
由于 LLM 参数众多,内存占用极大。例如 GPT-2 有 1.5B 参数,若用 float32 表示,需 4 bytes * 1,500,000,000 = 6GB 内存。更先进的 LLAMA 有 65B 参数,需约 260GB 内存(不含词汇表)。因此实际部署时需进行压缩。
训练时 CPU 与内存传输速度常是瓶颈,核心数反而不是大问题,减小内存使用是首要优化点。使用更小数据类型是直接方式,如 16 位浮点数可将内存减半。英伟达最新硬件支持 bfloat16:
| Format | Significand |
|---|


