跳转到内容

大模型学习路线

你好,这里是PyLLM,也即Python+LLM大模型。写这份路线的时候,我假设你和我当初一样,对大模型充满好奇,但又不知道从何处下手。别担心,这篇指南会带你从零开始,一步一步走进大语言模型的世界。

为什么学习大模型?

在开始之前,我想先和你聊聊为什么要学习大模型。

2022年11月,ChatGPT发布的那一刻,整个科技圈都沸腾了。不是因为它有多酷炫,而是因为它展示了人工智能的另一种可能性——让机器理解人类的语言,像人一样对话、推理、创作。

两年过去了,大模型已经从实验室走向了各行各业。从智能客服到代码助手,从文档总结到数据分析,大模型正在改变我们与计算机交互的方式。而这背后,需要大量懂得原理、能做开发、会做优化的工程师。

所以,如果你对人工智能感兴趣,想在这个领域深耕,大模型绝对是一个值得投入的方向。它不仅有挑战性,更有实实在在的应用价值。

我的学习经历

在聊具体路线之前,先和你分享一下我自己的经历,也许能给你一些启发。

我是从传统机器学习开始做起的。当年花了三个月啃完了吴恩达的机器学习课程,又花了两个月学了深度学习的基础。那时候觉得神经网络也不过如此——不就是反向传播、梯度下降嘛。

直到我第一次看到Transformer的论文,才发现自己懂得太少了。那种"原来还可以这样"的震撼,我现在还记得。后来做了几个项目,从数据处理到模型训练,从Prompt工程到RAG应用,一步一步才算对大模型有了比较全面的理解。

所以我想告诉你:大模型的学习没有捷径,但有方法。跟着这个路线走,你会少走很多弯路。

第一阶段:打好基础

关于Python

学习大模型,Python是必须掌握的。这不是建议,是必须。

为什么?因为目前主流的深度学习框架(PyTorch、TensorFlow)、大模型工具(Hugging Face、LangChain)、向量数据库,几乎都是用Python实现的。社区活跃、文档完善、示例丰富。

那Python需要学到什么程度呢?我建议达到这个水平:

  • 熟练使用列表、字典、集合等数据结构
  • 理解函数、类、继承的概念
  • 能读写文件和处理JSON数据
  • 了解常见的标准库用法

Python核心教程 涵盖了这些内容。如果你是初学者,建议仔细把教程过一遍,特别是函数和面向对象的部分。

关于数学

很多人在看到"数学基础"四个字就开始打退堂鼓。别怕,我来给你吃颗定心丸。

大模型涉及的数学知识可以分为三个部分:线性代数、概率统计、还有一点点微积分。

线性代数是大模型的核心。你知道吗,神经网络本质上就是一系列矩阵运算。一个词被转化为向量(Embedding),通过矩阵相乘得到新的表示,再通过Softmax得到概率分布。所以你需要理解:

  • 向量和矩阵是什么
  • 矩阵乘法怎么算
  • 什么是特征值和特征向量(虽然你可能不会手算,但要理解概念)
  • 矩阵分解有什么用(后面的Word2Vec会用到)

概率统计同样重要。机器学习本质上是在处理不确定性。一个词后面可能跟什么?下一个token是什么?这些问题都需要用概率来解决。

你需要理解:

  • 什么是概率分布(正态分布、二项分布等)
  • 什么是最大似然估计(这是训练神经网络的基础)
  • 贝叶斯公式是什么(理解它会让你对很多算法有新认识)

微积分的要求相对较低。你需要理解导数的几何意义——它描述的是变化率。在神经网络中,梯度下降就是沿着梯度的方向不断调整参数。

如果你的数学基础比较薄弱,我建议你先看一些入门视频或书籍。《机器学习的数学》是一本不错的书,专门为大模型学习者写的。如果你想看视频,3Blue1Brown的线性代数视频非常好,用动画把概念讲得很直观。

关于机器学习基础

在接触大模型之前,理解传统机器学习很重要。不是因为大模型要基于这些技术,而是很多核心概念是相通的。

什么是监督学习?给模型输入和输出,让它学会映射关系。什么是无监督学习?没有标签,让模型自己发现数据中的模式。什么是过拟合?模型记住了训练数据而不是学习规律。

这些概念你需要在正式学习大模型之前理解清楚。它们会帮助你理解为什么大模型需要预训练、为什么要微调、为什么会产生幻觉。

吴恩达的机器学习课程是公认的入门好课。虽然有些内容已经有些年头了,但核心思想没有变。如果你时间有限,可以重点看前三周的内容,理解监督学习、无监督学习、神经网络基础即可。

第二阶段:理解核心原理

从Transformer开始

2017年,Google发表了一篇论文叫《Attention is All You Need》。这篇论文提出了Transformer架构,彻底改变了自然语言处理领域,也奠定了大模型的基础。

我第一次读这篇论文的时候,啃了三遍才大致理解。你可能会觉得奇怪——论文字数不多,公式也不算复杂,为什么这么难懂?

因为它是一个转折点。在那之前,NLP领域的主流是RNN(循环神经网络)。Transformer的出现打破了大家对RNN的迷信,提出了全新的思路。这种"范式转移"需要你放下之前学的很多概念,从头理解新的框架。

所以我的建议是:不要急,慢慢来。第一遍看不懂很正常,第二遍会有新发现,第三遍可能就会"啊哈"一下。

Self-Attention是什么

Transformer的核心是Self-Attention机制。让我用人话解释一下。

假设你读这句话:"小明和小刚一起去买东西,小刚把苹果给了小明。"

当读到"小刚把苹果给了"的时候,你的大脑会意识到"给了"这个动作的主语是"小刚","小明"是接受者。这种"建立联系"的过程,就是Attention在做的事。

Self-Attention的特殊之处在于:这种联系是序列内部各元素之间自己建立的,不需要外部信息。它会计算序列中每个位置对其他位置的"关注度",从而捕获依赖关系。

具体计算过程是这样的:

python
# 这是一个简化的Self-Attention计算
# 实际上会更复杂,涉及多头、掩码等

def self_attention(Q, K, V):
    # Q是查询,K是键,V是值
    # 你可以把它们想象成数据库的查询-键-值模式

    # 第一步:计算Q和K的相似度
    scores = torch.matmul(Q, K.transpose(-2, -1))

    # 第二步:归一化
    weights = F.softmax(scores, dim=-1)

    # 第三步:用权重对V加权求和
    output = torch.matmul(weights, V)

    return output, weights

等等,我好像又说得太技术了。让我重新解释:

想象你在图书馆找书。Q是你心里的问题,K是书的目录索引,V是书的内容。Self-Attention会找到最相关的"目录索引"(K),然后返回对应的"内容"(V)。

这就是Attention的本质:根据相关性权重,对值进行加权求和

GPT是怎么一步步进化来的

理解了Transformer,我们来看看GPT系列是怎么一步步走到今天的。

GPT-1(2018):OpenAI第一次尝试"预训练+微调"的范式。用无标签文本做预训练,然后在特定任务上微调。那时候大家还不看好这条路。

GPT-2(2019):OpenAI把模型做大到15亿参数,并展示了"Zero-shot"能力——模型不需要任何微调就能完成各种任务。这让人们意识到:大模型可能真的不一样。

GPT-3(2020):这是真正的突破。1750亿参数,展示了惊人的"Few-shot"能力——只需要给几个示例,模型就能学会新任务。这就是"涌现能力"的开始。

GPT-3.5(2022):配合人类反馈强化学习(RLHF),诞生了ChatGPT。模型不再只是生成文本,而是能够对话、推理、扮演角色。

GPT-4(2023):多模态能力,可以处理图像输入。推理能力大幅提升,在各种考试中表现超越大多数人类。

这个演进过程告诉我们:大模型的发展不是一蹴而就的。每一个版本都是在前一个版本基础上的改进。如果你有兴趣,可以去读读GPT系列的论文,会对模型的发展有更深的理解。

大模型的关键技术

在学习和使用大模型的过程中,你会不断遇到这些技术名词。让我解释一下它们的作用。

RLHF(人类反馈强化学习):这是让大模型"对齐"人类偏好的关键技术。简单说就是让人类评估模型的输出,然后让模型学习什么样的输出是"好的"。ChatGPT之所以效果好,RLHF功不可没。

LoRA(低秩适配):如果让你重新训练一个1750亿参数的模型,你需要多少算力?LoRA技术让你只需要训练1%不到的参数就能达到类似效果。这是普通开发者能做微调的基础。

Flash Attention:标准的Attention计算是O(n²)复杂度和高显存占用。Flash Attention通过优化计算流程,大幅提升了速度并降低了显存需求。

KV Cache:在生成文本时,每个token都要计算对前面所有token的注意力。KV Cache通过缓存已计算的Key和Value,避免了重复计算,可以提升3倍以上的推理速度。

第三阶段:工程实践

动手前的准备

好了,理论说得够多了,让我们开始动手吧。

首先,你需要一台有显卡的电脑。不是因为没有显卡就学不了大模型,而是有显卡你才能真正跑起来、看效果、有感觉。

对于学习来说,一张8GB以上显存的显卡基本够用。RTX 3080、RTX 3090、RTX 4090,或者A100/A6000都可以。如果你的显卡比较小,也不用担心,后面我们会讲到量化技术,可以把大模型压缩到更小的显存里运行。

软件环境方面,你需要安装:

bash
# 创建conda环境
conda create -n llm python=3.10
conda activate llm

# 安装PyTorch(根据你的CUDA版本选择)
pip install torch torchvision torchaudio

# 安装 transformers 和其他常用库
pip install transformers accelerate bitsandbytes

安装完成后,可以用 nvidia-smi 检查显卡是否被识别,用 python -c "import torch; print(torch.cuda.is_available())" 验证PyTorch能否用GPU。

模型的下载和运行

有了环境,我们可以跑第一个模型了。我建议从LLaMA 2或者ChatGLM开始,它们都是开源的、效果不错的模型。

使用Hugging Face的Transformers库,加载模型非常简单:

python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_name = "meta-llama/Llama-2-7b-chat-hf"

tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="auto"
)

# 生成文本
input_text = "大语言模型是什么?"
inputs = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0]))

第一次运行的时候,模型会从Hugging Face下载,大概占用10-20GB的磁盘空间。如果下载太慢,可以配置国内镜像。

模型的微调

预训练模型虽然强大,但在特定任务上往往不够精准。这时候就需要微调。

微调有几种方式,从易到难分别是:

Prompt Tuning:不改模型,只改输入的Prompt。这严格来说不算微调,但效果往往出乎意料。

LoRA微调:只训练少量附加参数,模型主体保持冻结。一个7B参数的模型,LoRA微调可能只需要训练几十MB的参数。

Full Fine-tuning:训练所有参数。效果最好,但需要最多的算力。

对于学习目的,我建议从LoRA开始。开源的LLaMA-Factory、Unsloth等项目让LoRA微调变得非常简单。你可以用自己的数据,几个小时就能训练出一个专属模型。

推理优化

当你想要部署模型的时候,推理优化就变得很重要了。毕竟没有人愿意等一分钟才得到一个回复。

常见的优化技术有:

量化(Quantization):把模型的FP32权重转换成INT8甚至INT4。4-bit量化后,7B模型只需要4GB显存就能运行。

蒸馏(Distillation):让小模型学习大模型的行为。TinyLLaMA就是用这种方式从LLaMA蒸馏来的。

剪枝(Pruning):移除不重要的神经元或连接。模型会变得更小,但精度可能有损失。

KV Cache:我之前提到过,主要加速生成过程。

这些技术往往可以叠加使用。比如先量化再蒸馏,可以得到又小又快的模型。

第四阶段:应用开发

Prompt工程

进入应用阶段,第一件事是学会写Prompt。

很多人觉得Prompt不就是"请帮我写一首诗"这样的句子吗?没那么简单。好的Prompt需要:

  • 清晰的任务描述:让模型知道你想要什么
  • 适当的上下文:给模型必要的信息
  • 明确的输出格式:让模型知道怎么组织答案
  • 示例(Few-shot):通过例子让模型理解你的意图

举几个例子:

python
# 不好的Prompt
"写一首诗"

# 好的Prompt
"请根据以下关键词写一首七言绝句:
关键词:月亮、思念、乡愁
要求:
1. 押平声韵
2. 颔联和颈联需要对仗
3. 不超过28个字"
python
# 角色Prompt示例
"你是一位资深Python后端工程师,擅长Django和PostgreSQL。
请用Django实现一个用户认证API,包括注册、登录、修改密码功能。
代码需要包含完整的错误处理和输入验证。"

Prompt工程是经验和艺术的结合。多尝试、多总结,你会发现一些规律。

RAG:让模型拥有最新知识

大模型的知识是有截止日期的。GPT-4 Turbo的知识截止到2024年4月,之前的模型更早。如果你问它今天天气怎么样,它回答不了。

RAG(检索增强生成)就是为了解决这个问题。它让模型在回答问题之前,先去知识库检索相关信息,然后结合检索结果生成答案。

RAG的工作流程是这样的:

用户问题 → 检索 → 相关文档 → 拼接到Prompt → 大模型生成 → 回答

一个完整的RAG系统包括:

  • 文档加载:把PDF、Word、网页等转换成文本
  • 文本分块:把长文档切成小段落
  • 向量化:用Embedding模型把文本变成向量
  • 向量存储:把向量存到向量数据库
  • 检索:找到与问题最相关的文档块
  • 生成:把检索结果和用户问题一起输入大模型

常用工具:

  • 文档加载:LangChain、Unstructured
  • 向量数据库:Milvus、Chroma、FAISS
  • Embedding:OpenAI text-embedding、BGE、Jina

Agent:大模型的未来

如果说RAG是让模型"看书",那Agent就是让模型"动手"。

Agent(智能体)是大模型加上了规划、工具使用、记忆能力。它不再只是回答问题,而是能够:

  • 分解复杂任务成多个步骤
  • 调用外部工具(搜索、计算、API)
  • 在执行过程中调整计划
  • 记住之前的对话和操作

想象一下,你对Agent说:"帮我分析一下特斯拉和比亚迪的股价走势,看看哪个更值得投资。"

Agent会:

  1. 先去搜索两只股票的近期价格
  2. 获取财务数据
  3. 进行计算对比
  4. 综合分析给出建议

这就是Agent的魅力。它让大模型从"纸上谈兵"变成了"真枪实弹"。

主流的Agent开发框架有LangChain、LlamaIndex、AutoGen、CrewAI等。每个框架都有自己的特点,选择一个深入学习即可。

发展方向建议

学完基础内容后,你可能会问:接下来我应该专攻哪个方向?

这是一个好问题。大模型领域很大,不同方向的技能要求和发展前景都不一样。让我给你分析几个主要方向:

基础模型研发

如果你对算法研究感兴趣,喜欢推导公式、写论文,这个方向适合你。

你需要非常扎实的数学基础,熟悉深度学习的各种架构,能复现论文实验。这个方向竞争很激烈,但做出成果的话影响力也最大。

模型微调与优化

如果你更偏工程,喜欢训练和优化模型,这个方向很有价值。

你需要理解各种微调技术,知道什么时候用什么方法。模型压缩、量化、加速,这些技能在工业界需求很大。

应用开发

如果你想快速做出产品,这个方向最直接。

Prompt工程、RAG开发、Agent应用,这些都是目前就业市场最火热的技能。这个方向更偏业务,需要理解用户需求,能快速迭代。

Infra(基础设施)

如果你对底层系统感兴趣,Infra方向不可或缺。

训练框架(DeepSpeed、Megatron)、推理引擎(vLLM、TensorRT-LLM)、分布式训练,这些都是大模型时代的"卖水人"。这个方向需要很强的系统工程能力,但竞争者相对较少。

常见问题解答

Q: 我没有GPU能学大模型吗?

A: 可以,但会有一些限制。你可以使用Google Colab的免费GPU配额,或者使用云服务(如AutoDL、Featurize)。另外,很多开源模型已经可以在CPU上运行,虽然速度慢,但学习够了。

Q: 需要多少时间才能入门?

A: 因人而异。如果你是全职学习,3-6个月可以入门。要达到能够独立做项目的水平,可能需要6-12个月。保持耐心,持续实践,这是最重要的。

Q: 大模型会不会很快被淘汰?

A: 不会。Transformer架构虽然可能不是最终形态,但它奠定的基础不会消失。理解了大模型的核心原理,学习新技术会很快。

Q: 应该先学理论还是先动手?

A: 我的建议是交替进行。学一点理论,动手实践一下,再学一点理论,再实践。这样既能保持兴趣,又能加深理解。

写在最后

学习大模型是一段漫长的旅程。你会遇到很多困难,会看不懂论文,会跑不通代码,会怀疑自己是不是不适合。但这些都是正常的,每个走过来的人都有过类似的经历。

我的建议是:

  1. 保持好奇心:对未知保持敬畏,对新知保持渴望
  2. 多动手实践:看十遍不如跑一遍,亲自跑通代码的感觉很不一样
  3. 加入社区:GitHub、知乎、微信群,找到同行者互相鼓励
  4. 输出是最好的输入:学完后试着用自己的话把概念讲清楚

希望这份指南对你有帮助。祝你学习顺利!

如果有任何问题,欢迎在评论区留言。我会尽量回复。


最后更新于:

基于 MIT 许可发布