LLM 学习入门完整指南
# 📌 LLM 学习入门完整指南
适合人群:AI初学者、想学习大语言模型的开发者、机器学习爱好者
学习目标:从零基础到能够训练和使用LLM
标签:入门指南 - 系统化学习LLM技术
# 📖 目录
# 🎯 基础概念
# Q1: 什么是大语言模型(LLM)?
回答要点:
大语言模型(Large Language Models,LLM)是基于深度学习的自然语言处理模型,能够理解和生成人类语言。
核心特征:
- 大规模参数:通常包含数十亿到数千亿个参数
- 预训练数据:在海量文本数据上训练
- 通用能力:可以执行多种语言任务
- 涌现能力:随着规模增大出现新的能力
主流模型对比:
| 模型系列 | 代表模型 | 特点 | 应用场景 |
|---|---|---|---|
| GPT | GPT-3.5/4 | 自回归生成 | 对话、创作、代码生成 |
| BERT | BERT/RoBERTa | 双向理解 | 文本分类、问答 |
| T5 | T5/UL2 | 统一架构 | 文本到文本转换 |
| PaLM | PaLM/PaLM-2 | 大规模多语言 | 通用对话、推理 |
代码示例:
# 使用 HuggingFace 加载预训练模型
from transformers import AutoTokenizer, AutoModelForCausalLM
# 加载 GPT-2 模型
model_name = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# 文本生成
text = "人工智能的未来是"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=50)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(result)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# Q2: LLM 与传统 NLP 方法有什么区别?
回答要点:
| 方面 | 传统 NLP | LLM |
|---|---|---|
| 方法 | 规则 + 统计 | 端到端深度学习 |
| 特征工程 | 需要手工设计 | 自动学习特征 |
| 数据需求 | 相对较少 | 需要大量数据 |
| 泛化能力 | 特定任务 | 通用性强 |
| 可解释性 | 较好 | 较差(黑盒) |
| 计算资源 | 较少 | 大量 GPU/TPU |
演进历程:
传统方法 → 深度学习 → Transformer → 大规模预训练 → LLM
1
# 📊 数学基础
# Q3: 学习 LLM 需要哪些数学基础?
回答要点:
# 1. 线性代数(核心)
重要概念:
- 矩阵运算:乘法、转置、逆矩阵
- 特征值和特征向量
- 奇异值分解(SVD)
- 向量空间和基
实际应用:
import numpy as np
# 矩阵乘法 - Transformer 中的核心运算
def attention_scores(Q, K):
"""计算注意力分数"""
d_k = K.shape[-1]
scores = np.dot(Q, K.T) / np.sqrt(d_k)
return scores
# 示例
Q = np.random.randn(3, 4) # Query 矩阵
K = np.random.randn(5, 4) # Key 矩阵
scores = attention_scores(Q, K)
print(f"注意力分数矩阵形状: {scores.shape}")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 2. 概率论与统计
重要概念:
- 条件概率和贝叶斯定理
- 最大似然估计(MLE)
- 信息论:熵、交叉熵
- 分布:正态分布、softmax
代码示例:
import torch
import torch.nn.functional as F
# Softmax 函数 - 用于注意力权重
def softmax_attention(scores):
"""计算注意力权重"""
return F.softmax(scores, dim=-1)
# 交叉熵损失 - 语言模型的核心损失函数
def language_model_loss(logits, targets):
"""计算语言模型损失"""
return F.cross_entropy(logits.view(-1, logits.size(-1)), targets.view(-1))
# 示例
logits = torch.randn(10, 5, 1000) # 预测分数
targets = torch.randint(0, 1000, (10, 5)) # 真实标签
loss = language_model_loss(logits, targets)
print(f"语言模型损失: {loss.item():.4f}")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 3. 微积分
重要概念:
- 链式法则:反向传播的基础
- 偏导数:梯度计算
- 优化:梯度下降、Adam
反向传播示例:
import torch
# 简单的反向传播示例
def simple_backprop():
x = torch.tensor(2.0, requires_grad=True)
y = x ** 2 + 3 * x + 1
# 前向传播
print(f"y = {y.item()}")
# 反向传播
y.backward()
print(f"dy/dx = {x.grad.item()}") # 应该是 2*x + 3 = 7
simple_backprop()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 4. 优化方法
重要算法:
- 梯度下降(GD)
- 随机梯度下降(SGD)
- Adam 优化器
- 学习率调度
import torch.optim as optim
# Adam 优化器 - LLM 训练中的常用选择
def setup_optimizer(model, learning_rate=1e-4):
"""设置 Adam 优化器"""
optimizer = optim.Adam(model.parameters(), lr=learning_rate)
# 学习率调度器
scheduler = optim.lr_scheduler.CosineAnnealingLR(
optimizer, T_max=1000, eta_min=1e-6
)
return optimizer, scheduler
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 💻 编程环境
# Q4: 如何搭建 LLM 开发环境?
回答要点:
# 1. Python 环境配置
推荐工具:
# 使用 conda 创建虚拟环境
conda create -n llm python=3.9
conda activate llm
# 或者使用 venv
python -m venv llm_env
source llm_env/bin/activate # Linux/Mac
# llm_env\Scripts\activate # Windows
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 2. 核心库安装
# 深度学习框架
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# HuggingFace 生态系统
pip install transformers datasets accelerate
# 数据处理和可视化
pip install numpy pandas matplotlib seaborn
# 实验跟踪
pip install wandb tensorboard
# 模型部署
pip install gradio streamlit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 3. GPU 环境配置
CUDA 环境检查:
import torch
# 检查 CUDA 是否可用
print(f"CUDA 可用: {torch.cuda.is_available()}")
print(f"CUDA 版本: {torch.version.cuda}")
print(f"GPU 数量: {torch.cuda.device_count()}")
if torch.cuda.is_available():
print(f"当前 GPU: {torch.cuda.get_device_name(0)}")
print(f"GPU 内存: {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB")
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 4. 开发工具配置
# Jupyter Notebook 配置
# 安装 Jupyter 扩展
pip install jupyter jupyterlab
# VS Code 推荐扩展
# - Python
# - Jupyter
# - GitLens
# - Python Docstring Generator
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 🧠 核心原理
# Q5: Transformer 架构是如何工作的?
回答要点:
# 1. 整体架构
Transformer 是 LLM 的核心架构,由编码器和解码器组成:
import torch
import torch.nn as nn
import math
class MultiHeadAttention(nn.Module):
"""多头注意力机制"""
def __init__(self, d_model, num_heads):
super().__init__()
self.d_model = d_model
self.num_heads = num_heads
self.d_k = d_model // num_heads
self.W_q = nn.Linear(d_model, d_model)
self.W_k = nn.Linear(d_model, d_model)
self.W_v = nn.Linear(d_model, d_model)
self.W_o = nn.Linear(d_model, d_model)
def scaled_dot_product_attention(self, Q, K, V, mask=None):
"""缩放点积注意力"""
scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(self.d_k)
if mask is not None:
scores = scores.masked_fill(mask == 0, -1e9)
attention_weights = torch.softmax(scores, dim=-1)
output = torch.matmul(attention_weights, V)
return output, attention_weights
def forward(self, query, key, value, mask=None):
batch_size = query.size(0)
# 线性变换
Q = self.W_q(query)
K = self.W_k(key)
V = self.W_v(value)
# 重塑为多头
Q = Q.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
K = K.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
V = V.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
# 注意力计算
attention_output, attention_weights = self.scaled_dot_product_attention(Q, K, V, mask)
# 合并多头
attention_output = attention_output.transpose(1, 2).contiguous().view(
batch_size, -1, self.d_model
)
output = self.W_o(attention_output)
return output, attention_weights
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 2. 位置编码
class PositionalEncoding(nn.Module):
"""位置编码"""
def __init__(self, d_model, max_len=5000):
super().__init__()
pe = torch.zeros(max_len, d_model)
position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
div_term = torch.exp(torch.arange(0, d_model, 2).float() *
(-math.log(10000.0) / d_model))
pe[:, 0::2] = torch.sin(position * div_term)
pe[:, 1::2] = torch.cos(position * div_term)
pe = pe.unsqueeze(0).transpose(0, 1)
self.register_buffer('pe', pe)
def forward(self, x):
return x + self.pe[:x.size(0), :]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 3. 前馈网络
class FeedForward(nn.Module):
"""前馈神经网络"""
def __init__(self, d_model, d_ff):
super().__init__()
self.linear1 = nn.Linear(d_model, d_ff)
self.linear2 = nn.Linear(d_ff, d_model)
self.relu = nn.ReLU()
self.dropout = nn.Dropout(0.1)
def forward(self, x):
return self.linear2(self.dropout(self.relu(self.linear1(x))))
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# Q6: 预训练和微调有什么区别?
回答要点:
# 1. 预训练(Pre-training)
目标:学习通用的语言表示
方法:
- 自回归语言建模(GPT 系列):预测下一个词
- 掩码语言建模(BERT 系列):预测被掩盖的词
- 混合目标:结合多种预训练任务
# 自回归语言建模示例
def autoregressive_loss(model, tokenizer, text):
"""计算自回归损失"""
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)
# 输入和目标(右移一位)
input_ids = inputs["input_ids"][:, :-1]
targets = inputs["input_ids"][:, 1:]
# 前向传播
outputs = model(input_ids)
logits = outputs.logits
# 计算损失
loss = F.cross_entropy(logits.reshape(-1, logits.size(-1)), targets.reshape(-1))
return loss
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 2. 微调(Fine-tuning)
目标:针对特定任务优化模型
方法对比:
| 方法 | 参数量 | 训练成本 | 效果 | 适用场景 |
|---|---|---|---|---|
| 全参数微调 | 100% | 高 | 最好 | 数据充足、资源充足 |
| LoRA | 1-5% | 低 | 接近全参数 | 资源受限 |
| Adapter | 3-8% | 中 | 好 | 多任务学习 |
| Prompt Tuning | 0.1% | 极低 | 中等 | 快速原型 |
LoRA 微调示例:
from peft import LoraConfig, get_peft_model, TaskType
# LoRA 配置
lora_config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
inference_mode=False,
r=16, # rank
lora_alpha=32,
lora_dropout=0.1,
target_modules=["q_proj", "v_proj"] # 目标模块
)
# 应用 LoRA
model = get_peft_model(base_model, lora_config)
# 训练
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 🚀 实践项目
# Q7: 如何开始第一个 LLM 项目?
回答要点:
# 项目一:使用预训练模型进行文本生成
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
# 1. 使用 pipeline(最简单)
generator = pipeline("text-generation", model="gpt2")
result = generator("人工智能的未来是", max_length=100, num_return_sequences=1)
print(result[0]["generated_text"])
# 2. 手动控制(更灵活)
def text_generation_demo():
model_name = "microsoft/DialoGPT-medium"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# 对话生成
conversation = "Hello, how are you?"
for step in range(3):
inputs = tokenizer.encode(conversation + tokenizer.eos_token, return_tensors="pt")
outputs = model.generate(inputs, max_length=100, pad_token_id=tokenizer.eos_token_id)
response = tokenizer.decode(outputs[:, inputs.shape[-1]:][0], skip_special_tokens=True)
conversation += " " + response
print(f"Bot: {response}")
text_generation_demo()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 项目二:微调中文对话模型
from datasets import Dataset
from transformers import TrainingArguments, Trainer
# 1. 准备数据
def prepare_chat_data():
"""准备对话数据"""
conversations = [
{"instruction": "你好", "response": "你好!很高兴见到你!"},
{"instruction": "今天天气怎么样?", "response": "抱歉,我无法获取实时天气信息。"},
# 更多对话数据...
]
dataset = Dataset.from_list(conversations)
return dataset
# 2. 数据预处理
def preprocess_data(examples, tokenizer):
"""预处理对话数据"""
inputs = [f"Instruction: {inst}\nResponse: {resp}"
for inst, resp in zip(examples["instruction"], examples["response"])]
model_inputs = tokenizer(inputs, truncation=True, padding=True, max_length=512)
model_inputs["labels"] = model_inputs["input_ids"].copy()
return model_inputs
# 3. 训练配置
training_args = TrainingArguments(
output_dir="./chat-model",
num_train_epochs=3,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
warmup_steps=100,
learning_rate=5e-5,
logging_steps=10,
save_steps=500,
evaluation_strategy="steps",
eval_steps=500,
)
# 4. 开始训练
def train_chat_model():
dataset = prepare_chat_data()
tokenizer = AutoTokenizer.from_pretrained("uer/gpt2-chinese-cluecorpussmall")
model = AutoModelForCausalLM.from_pretrained("uer/gpt2-chinese-cluecorpussmall")
# 添加 pad_token
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
# 预处理数据
processed_dataset = dataset.map(
lambda x: preprocess_data(x, tokenizer),
batched=True,
remove_columns=dataset.column_names
)
# 创建训练器
trainer = Trainer(
model=model,
args=training_args,
train_dataset=processed_dataset,
tokenizer=tokenizer,
)
# 开始训练
trainer.train()
trainer.save_model()
# train_chat_model()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# 项目三:构建聊天机器人 Web 应用
import gradio as gr
# 使用 Gradio 快速构建界面
def create_chatbot_interface():
"""创建聊天机器人界面"""
def chat_response(message, history):
"""处理用户输入并生成回复"""
# 这里调用你的模型
response = generate_response(message)
return response
# 创建 Gradio 界面
interface = gr.ChatInterface(
fn=chat_response,
title="AI 聊天机器人",
description="基于大语言模型的智能对话系统",
examples=["你好", "介绍一下人工智能", "写一首诗"],
cache_examples=False,
)
return interface
# 启动应用
if __name__ == "__main__":
demo = create_chatbot_interface()
demo.launch(share=True) # share=True 可以生成公共链接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 🛠️ 工具推荐
# Q8: 学习 LLM 需要掌握哪些工具?
回答要点:
# 1. 核心开发工具
| 工具类别 | 推荐工具 | 用途 | 学习优先级 |
|---|---|---|---|
| 深度学习框架 | PyTorch | 模型开发、训练 | ⭐⭐⭐⭐⭐ |
| 模型库 | HuggingFace Transformers | 预训练模型、快速原型 | ⭐⭐⭐⭐⭐ |
| 数据处理 | Datasets | 数据加载、预处理 | ⭐⭐⭐⭐ |
| 微调工具 | PEFT | LoRA、Adapter 微调 | ⭐⭐⭐⭐ |
| 实验跟踪 | Weights & Biases | 训练监控、实验管理 | ⭐⭐⭐ |
| 模型部署 | Gradio/Streamlit | 快速原型、演示 | ⭐⭐⭐ |
# 2. 环境配置工具
# Docker 环境(推荐用于生产)
docker run --gpus all -it --rm \
-v $(pwd):/workspace \
pytorch/pytorch:latest bash
# 云平台选择
# - Google Colab (免费 GPU)
# - Kaggle Notebooks (免费 GPU)
# - AWS SageMaker (付费,功能完整)
# - 阿里云 PAI (国内用户友好)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 3. 代码示例:完整的训练流程
import torch
from transformers import (
AutoTokenizer, AutoModelForCausalLM,
TrainingArguments, Trainer, DataCollatorForLanguageModeling
)
from datasets import load_dataset
import wandb
# 实验跟踪
wandb.init(project="llm-learning", name="first-experiment")
# 1. 加载模型和分词器
model_name = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# 添加特殊token
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
# 2. 加载数据
def load_and_preprocess_data():
"""加载并预处理数据"""
# 使用 HuggingFace 数据集
dataset = load_dataset("wikitext", "wikitext-2-raw-v1")
def tokenize_function(examples):
return tokenizer(
examples["text"],
truncation=True,
padding=True,
max_length=512
)
tokenized_dataset = dataset.map(
tokenize_function,
batched=True,
remove_columns=dataset["train"].column_names
)
return tokenized_dataset
# 3. 训练配置
training_args = TrainingArguments(
output_dir="./gpt2-finetuned",
overwrite_output_dir=True,
num_train_epochs=1,
per_device_train_batch_size=4,
per_device_eval_batch_size=4,
warmup_steps=500,
weight_decay=0.01,
logging_dir="./logs",
logging_steps=100,
save_steps=1000,
evaluation_strategy="steps",
eval_steps=1000,
load_best_model_at_end=True,
report_to="wandb", # 集成 wandb
)
# 4. 数据整理器
data_collator = DataCollatorForLanguageModeling(
tokenizer=tokenizer,
mlm=False, # GPT 使用因果语言建模,不是掩码
)
# 5. 创建训练器
def create_trainer():
dataset = load_and_preprocess_data()
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset["train"],
eval_dataset=dataset["validation"],
data_collator=data_collator,
tokenizer=tokenizer,
)
return trainer
# 6. 开始训练
def main():
trainer = create_trainer()
trainer.train()
trainer.save_model()
# 测试生成
test_prompt = "The future of artificial intelligence is"
inputs = tokenizer(test_prompt, return_tensors="pt")
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=50,
do_sample=True,
temperature=0.7,
pad_token_id=tokenizer.eos_token_id
)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(f"Generated text: {result}")
if __name__ == "__main__":
main()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# 📚 学习路径
# Q9: 如何制定适合自己的学习计划?
回答要点:
# 1. 初学者路径(3-6个月)
第一阶段:基础准备(1-2个月)
- [ ] 掌握 Python 编程基础
- [ ] 学习 PyTorch 基础操作
- [ ] 了解深度学习基本概念
- [ ] 完成线性代数复习
第二阶段:理论理解(1-2个月)
- [ ] 学习 Transformer 架构
- [ ] 理解注意力机制
- [ ] 掌握预训练和微调概念
- [ ] 阅读经典论文
第三阶段:实践项目(1-2个月)
- [ ] 使用 HuggingFace 进行文本生成
- [ ] 完成一个微调项目
- [ ] 构建简单的聊天机器人
- [ ] 部署模型到 Web 应用
# 2. 进阶路径(6-12个月)
深度学习方向:
- [ ] 实现自己的 Transformer 模型
- [ ] 研究最新的架构改进
- [ ] 参与开源项目贡献
- [ ] 发表技术博客或论文
应用开发方向:
- [ ] 构建完整的 LLM 应用
- [ ] 学习模型优化和部署
- [ ] 掌握多模态模型
- [ ] 探索 RAG(检索增强生成)
# 3. 学习资源推荐
在线课程:
- CS224n: Natural Language Processing with Deep Learning (opens new window)
- CS231n: Convolutional Neural Networks for Visual Recognition (opens new window)
- Deep Learning Specialization (Coursera) (opens new window)
书籍推荐:
- 《深度学习》(Ian Goodfellow)
- 《自然语言处理综论》(Daniel Jurafsky)
- 《动手学深度学习》(李沐)
论文必读:
- Attention Is All You Need (opens new window)
- BERT: Pre-training of Deep Bidirectional Transformers (opens new window)
- Language Models are Few-Shot Learners (opens new window)
# Q10: 如何评估学习进度?
回答要点:
# 1. 知识掌握检查清单
基础概念(必须掌握):
- [ ] 能够解释什么是 LLM
- [ ] 理解 Transformer 的工作原理
- [ ] 掌握注意力机制的计算过程
- [ ] 了解预训练和微调的区别
实践能力(必须掌握):
- [ ] 能够使用 HuggingFace 加载和使用模型
- [ ] 可以完成简单的文本生成任务
- [ ] 能够进行基础的模型微调
- [ ] 可以部署模型到 Web 应用
进阶能力(可选掌握):
- [ ] 能够实现自定义的 Transformer 组件
- [ ] 理解各种优化技术(LoRA、Adapter等)
- [ ] 能够分析和解决训练中的问题
- [ ] 可以设计完整的 LLM 应用架构
# 2. 项目里程碑
入门项目:
- [ ] 文本生成器(使用预训练模型)
- [ ] 情感分析工具
- [ ] 简单的问答系统
进阶项目:
- [ ] 中文对话机器人
- [ ] 代码生成助手
- [ ] 多轮对话系统
高级项目:
- [ ] RAG 问答系统
- [ ] 多模态模型应用
- [ ] 模型优化和量化
# 3. 持续学习建议
保持更新:
- 关注最新的论文和技术动态
- 参与开源社区讨论
- 定期实践新学到的技术
建立作品集:
- 在 GitHub 上维护项目代码
- 写技术博客记录学习过程
- 参与技术分享和讨论
# 🎯 总结
这份 LLM 学习指南为你提供了:
- ✅ 系统化的学习路径:从基础到实践的完整规划
- ✅ 丰富的代码示例:可直接运行的实践代码
- ✅ 实用的工具推荐:提高学习效率的工具链
- ✅ 清晰的项目规划:循序渐进的实践项目
- ✅ 持续的学习支持:评估标准和进阶建议
通过遵循这个指南,你将能够:
- 建立扎实的理论基础
- 掌握核心的实践技能
- 完成有意义的项目作品
- 具备持续学习的能力
开始你的 LLM 学习之旅吧!记住,最重要的是保持好奇心,持续实践,不断学习。🚀
上次更新: 2025/10/09, 23:53:03