30天学会Python-29:大模型开发基础(如transformers库)
库中最高度抽象的工具,它封装了从分词、模型推理到后处理的完整流程,让你用几行代码就能完成一个任务。虽然 Pipeline 很方便,但理解其背后的手动流程更重要。Pipeline 是。
·
学习目标
- 理解大语言模型(LLM)和 Transformer 架构的基本概念。
- 了解 Hugging Face 生态系统(Hub, Transformers, Tokenizers)的核心作用。
- 掌握使用
transformers
库加载预训练模型和分词器。 - 能够使用 Pipeline(管道)快速完成文本分类、问答等常见 NLP 任务。
- 学习如何使用模型和分词器进行手动推理。
1. 核心概念
- 大语言模型 (LLM): 指的是在海量文本数据上训练过的、参数数量巨大(通常数十亿以上)的深度学习模型。它们能够理解和生成类似人类的文本。
- Transformer 架构: 由 Google 在 2017 年提出,是现代几乎所有主流大模型(如 GPT, BERT)的基础。其核心是自注意力机制 (Self-Attention),使其能高效处理长距离依赖关系。
- Hugging Face: 目前最流行、最核心的开源 AI 社区和公司。
- Model Hub: 一个庞大的模型仓库,用户可以在上面分享和下载数以万计的预训练模型。
transformers
库: 提供了统一的 API 来加载和使用 Hub 上的各种模型。tokenizers
库: 提供了高效的分词工具,用于将文本转换为模型可以理解的数字。
2. 安装与准备
pip install transformers
pip install torch # transformers 通常需要 PyTorch 或 TensorFlow 作为后端
3. Pipeline:最简单的入门方式
Pipeline 是 transformers
库中最高度抽象的工具,它封装了从分词、模型推理到后处理的完整流程,让你用几行代码就能完成一个任务。
from transformers import pipeline
# 1. 情感分析 (Text Classification)
# 这会自动从 Hub 下载一个适合情感分析的预训练模型
classifier = pipeline('sentiment-analysis')
result = classifier('We are very happy to show you the Transformers library.')
print("情感分析:", result) # [{'label': 'POSITIVE', 'score': 0.9998...}]
# 2. 文本生成 (Text Generation)
generator = pipeline('text-generation', model='gpt2') # 指定使用 gpt2 模型
result = generator('In a world where AI is becoming more powerful,', max_length=30, num_return_sequences=2)
print("文本生成:", result)
# 3. 问答 (Question Answering)
qa_pipeline = pipeline('question-answering')
context = "The capital of France is Paris."
question = "What is the capital of France?"
result = qa_pipeline(question=question, context=context)
print("问答:", result) # {'score': ..., 'start': ..., 'end': ..., 'answer': 'Paris'}
4. 手动推理:深入理解流程
虽然 Pipeline 很方便,但理解其背后的手动流程更重要。
- 加载模型 (Model) 和分词器 (Tokenizer)。
- 分词: 将输入文本转换为模型能理解的 ID。
- 模型推理: 将 ID 输入模型,得到输出(logits)。
- 后处理: 将模型的输出转换为人类可读的结果。
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# 模型标识符,可以在 Hugging Face Hub 上找到
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
# 1. 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
# 2. 准备并分词文本
raw_inputs = ["I love this movie, it's fantastic!", "This is a terrible film."]
inputs = tokenizer(raw_inputs, padding=True, truncation=True, return_tensors="pt")
# 'pt' 表示返回 PyTorch tensors
# 3. 模型推理
with torch.no_grad(): # 在推理时关闭梯度计算,节省资源
outputs = model(**inputs)
# 4. 后处理
logits = outputs.logits
predictions = torch.nn.functional.softmax(logits, dim=-1)
print("模型预测概率:", predictions)
# 将预测概率转换为标签
predicted_labels = torch.argmax(predictions, dim=-1)
for i, label_id in enumerate(predicted_labels):
label = model.config.id2label[label_id.item()]
print(f"'{raw_inputs[i]}' -> 预测标签: {label}")
5. AutoClass
的作用
AutoTokenizer
,AutoModel...
等AutoClass
是transformers
的一大特色。- 你只需要提供模型的名称(如
"bert-base-uncased"
),AutoClass
会自动识别模型类型,并从 Hub 下载、加载正确的模型架构和权重。这极大地简化了模型加载过程。
6. 今日练习
-
Pipeline 探索:
- 创建
day29_exercise.py
文件。 - 使用 Pipeline 尝试
zero-shot-classification
(零样本分类) 任务。给一段文本和几个候选标签,看模型能把它分到哪一类。 - 尝试
fill-mask
(掩码填充) 任务,例如填充句子 “Hello I’m a<mask>
model.”。
- 创建
-
翻译任务:
- 在 Hugging Face Hub 上找到一个用于“英译法”的翻译模型(例如搜索 “translation english to french”)。
- 使用 Pipeline 或手动推理的方式,翻译几个英文句子。
-
手动推理练习:
- 选择一个你感兴趣的文本分类模型(例如,用于新闻分类或垃圾邮件检测的模型)。
- 按照手动推理的步骤,加载模型和分词器,对几个自定义的句子进行分类,并解释模型的输出结果。
-
思考题:
- 什么是“分词 (Tokenization)”?为什么它是处理文本数据的第一步,而且如此重要?
- Pipeline 和手动推理各有什么优缺点?在快速原型开发和需要深度定制的场景中,你分别会选择哪种方式?

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)