前言
随着 ChatGPT 的问世,大语言模型(Large Language Model,简称 LLM)已成为人工智能领域的核心 buzzword。虽然大多数用户直接使用云端产品即可满足需求,但对于希望深入理解底层机制的开发者而言,在本地环境运行大模型具有更高的研究价值。
本文旨在介绍大模型的基础知识、量化压缩技术以及在 macOS 环境下使用 llama.cpp 进行本地推理的完整流程。内容涵盖从 Token 化原理到模型部署优化的各个环节,适合有一定编程基础的技术人员阅读。
什么是大模型
通俗来讲,大模型是通过输入海量语料数据,训练计算机获得类似人类的'思考'能力,使其能够理解自然语言并执行文本生成、推理问答、对话交互及文档摘要等任务。
可以将大模型的训练与使用过程类比为人类的教育体系:
- 找学校:训练 LLM 需要巨大的计算资源,通常依赖高性能 GPU 集群,这类似于只有资源充足的顶尖学府才能开展前沿科研。
- 确定教材:大模型的核心在于数据规模,通常需要数千亿个 Token 作为输入,相当于海量的教科书。
- 找老师:即选择何种算法架构来解析数据中的语义关系,例如 Transformer 架构。
- 就业指导:预训练完成后,通过微调(Fine-tuning)使模型适应特定行业场景。
- 搬砖:正式应用阶段,如翻译、问答等,在大模型中称为推理(Inference)。
Token 与 Embedding
在 LLM 中,Token 被视为模型处理和生成的基本文本单位。它们可以代表单个字符、单词或子单词,具体取决于分词方法(Tokenization)。Token 是原始文本与数字表示之间的桥梁。
例如句子 "The cat sat on the mat" 会被分割为多个 Token,并映射为词汇表中的 ID:
| Token | ID |
|---|---|
| The | 345 |
| cat | 1256 |
| sat | 1726 |
| ... | ... |
为了便于计算机处理,这些数字化的 Token 需要被转换为稠密矩阵向量,这一过程称为 Embedding。常见的算法包括:
- 基于统计:Word2Vec、GloVe,利用上下文共现信息学习词向量。
- 基于深度网络:CNN、RNN/LSTM,利用序列模型捕捉特征。
- 基于神经网络:BERT、Doc2Vec,结合 Transformer 和掩码语言建模进行预训练。
以 Transformer 为代表的大模型采用自注意力(Self-attention)机制,能够高效学习不同 Token 之间的长距离依赖关系,生成高质量的语义向量。
参数规模
大模型的'大'主要体现在参数量上,即模型中的权重(Weight)与偏置(Bias)。例如 GPT-3 拥有约 1750 亿参数,而词汇表大小通常在 5 万至 10 万左右。参数量直接决定了模型的表达能力和泛化性能。
发展历程
现代大模型的起源可追溯至 2017 年发布的论文《Attention Is All You Need》。此后,基于大规模语料的预训练模型迅速发展:
- BERT (Bidirectional Encoder Representations from Transformers): Google 于 2018 年提出。创新性地引入双向预训练和掩码语言建模(MLM),开创了预训练语言表示范式。参数规模约为 1.1 亿至 3.4 亿。
- GPT (Generative Pre-trained Transformer): OpenAI 于 2018 年提出。仅使用自回归语言建模作为预训练目标,展示了无监督大规模预训练的语言生成能力。GPT-3 参数规模达 1750 亿。
- LLaMA (Large Language Model Meta AI): Meta 于 2023 年推出首个开源系列模型。为构建更大规模、更通用的语言模型提供了系统化的方法与工具,参数规模覆盖十亿至千亿级别。


