欢迎光临

Hugging Face免费NLP课程教程:从入门到实战

AI学习

在大模型时代,掌握NLP(自然语言处理)技术已经成为AI从业者的必备技能。Hugging Face作为全球最大的开源AI社区,提供了一套完全免费的NLP课程——Hugging Face NLP Course,涵盖从Tokenizer到Transformer模型微调、再到部署的全流程。本文将带你梳理这门课程的核心内容,并提供实操代码示例,帮助你快速上手。

一、课程概览与学习路线

Hugging Face NLP Course(https://huggingface.co/learn/nlp-course)分为多个章节,主要包括:Transformer模型基础、使用Hugging Face Datasets加载数据、Tokenizers详解、模型微调(Fine-tuning)、构建Demo应用(Gradio)、以及高级主题如语义搜索和问答系统。整个课程配合交互式Notebook,边学边练。

学习这门课程需要一定的Python基础和机器学习入门知识。推荐先完成DeepLearning.AI的《Machine Learning Specialization》再来学习。

二、环境搭建与核心库安装

开始学习前,需要安装Hugging Face生态的核心库:


1
2
3
pip install transformers datasets tokenizers evaluate<br />
pip install torch  # 或 tensorflow<br />
pip install gradio  # 用于构建Demo

验证安装是否成功:


1
2
3
4
5
6
from transformers import pipeline
<h1 id="pipeline">使用pipeline快速体验文本分类</h1>
classifier = pipeline("sentiment-analysis")<br />
result = classifier("I love learning NLP with Hugging Face!")<br />
print(result)
<h1 id="label-positive-score-09998tokenizertokenizernlphugging-faceautotokenizertokenizerfrom-transformers-import-autotokenizer-automodel">[{'label': 'POSITIVE', 'score': 0.9998}]

三、Tokenizer与模型加载实战

Tokenizer是NLP的第一步,将文本转换为模型可以理解的数字序列。Hugging Face的AutoTokenizer支持自动加载与模型匹配的Tokenizer:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
from transformers import AutoTokenizer, AutoModel</h1>
<h1 id="berttokenizer">加载BERT的Tokenizer和模型</h1>
tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")<br />
model = AutoModel.from_pretrained("bert-base-chinese")
<h1 id="tokenize">对中文文本进行Tokenize</h1>
text = "Hugging Face的NLP课程非常实用"<br />
tokens = tokenizer(text, return_tensors="pt")<br />
print(tokenizer.convert_ids_to_tokens(tokens["input_ids"][0]))
<h1 id="cls-hugging-face-nl-p">['[CLS]', 'hugging', 'face', '的', 'nl', '##p', '课', '程',</h1>
<h1 id="sep">'非', '常', '实', '用', '[SEP]']</h1>
<h1 id="_1">模型推理</h1>
outputs = model(**tokens)<br />
print(outputs.last_hidden_state.shape)
<h1 id="torchsize1-13-768datasetshugging-face-datasetsfrom-datasets-import-load_dataset">torch.Size([1, 13, 768])

代码编程

四、使用Datasets库加载和处理数据

Hugging Face Datasets库提供了数千个公开数据集的一键加载能力,支持内存映射,即使在低配机器上也能处理大规模数据:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from datasets import load_dataset</h1>
<h1 id="imdb">加载IMDB情感分析数据集</h1>
dataset = load_dataset("imdb")<br />
print(dataset)
<h1 id="datasetdict">DatasetDict({</h1>
<h1 id="train-datasetfeatures-text-label-num_rows-25000">train: Dataset({features: ['text', 'label'], num_rows: 25000})</h1>
<h1 id="test-datasetfeatures-text-label-num_rows-25000">test: Dataset({features: ['text', 'label'], num_rows: 25000})</h1>
<h1 id="_2">})</h1>
<h1 id="_3">查看样本</h1>
print(dataset["train"][0]["text"][:200])<br />
print("Label:", dataset["train"][0]["label"])  # 0=负面, 1=正面
<h1 id="maptokenize">使用map进行批量Tokenize</h1>
def tokenize_fn(examples):<br />
    return tokenizer(examples["text"], truncation=True, padding=True, max_length=512)

tokenized = dataset.map(tokenize_fn, batched=True)

五、模型微调(Fine-tuning)完整流程

课程的核心章节之一是模型微调。使用Hugging Face的Trainer API,只需几行代码即可完成模型训练:


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
from transformers import (<br />
    AutoModelForSequenceClassification,<br />
    TrainingArguments,<br />
    Trainer<br />
)<br />
import evaluate<br />
import numpy as np
<h1 id="_4">加载预训练模型</h1>
model = AutoModelForSequenceClassification.from_pretrained(<br />
    "bert-base-uncased", num_labels=2<br />
)
<h1 id="_5">评估指标</h1>
accuracy = evaluate.load("accuracy")

def compute_metrics(eval_pred):<br />
    logits, labels = eval_pred<br />
    predictions = np.argmax(logits, axis=-1)<br />
    return accuracy.compute(predictions=predictions, references=labels)
<h1 id="_6">训练参数</h1>
training_args = TrainingArguments(<br />
    output_dir="./results",<br />
    eval_strategy="epoch",<br />
    learning_rate=2e-5,<br />
    per_device_train_batch_size=16,<br />
    num_train_epochs=3,<br />
    weight_decay=0.01,<br />
)
<h1 id="_7">开始训练</h1>
trainer = Trainer(<br />
    model=model,<br />
    args=training_args,<br />
    train_dataset=tokenized["train"],<br />
    eval_dataset=tokenized["test"],<br />
    compute_metrics=compute_metrics,<br />
)

trainer.train()
<h1 id="results-gradiodemogradionlpdemoimport-gradio-as-gr">训练完成后模型保存在 ./results 目录

六、使用Gradio快速构建Demo

课程还教你如何用Gradio快速搭建一个可交互的NLP应用Demo,只需几行代码:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import gradio as gr</h1>
from transformers import pipeline
<h1 id="pipeline_1">创建情感分析pipeline</h1>
pipe = pipeline("text-classification", model="./results")
<h1 id="gradio">定义Gradio接口</h1>
def predict(text):<br />
    result = pipe(text)<br />
    return {r["label"]: r["score"] for r in result}
<h1 id="demo">启动Demo</h1>
interface = gr.Interface(<br />
    fn=predict,<br />
    inputs=gr.Textbox(placeholder="输入要分析的文本..."),<br />
    outputs=gr.Label(num_top_classes=2),<br />
    title="NLP情感分析Demo",<br />
    description="基于Hugging Face课程微调的BERT模型"<br />
)<br />
interface.launch()

数据可视化

总结

Hugging Face免费NLP课程是目前最实用的NLP入门资源之一,核心要点如下:

1. 课程覆盖从Tokenizer到模型部署的完整流程,配合代码实践效果最佳。

2. Transformers库的pipeline可以快速体验各种NLP任务(分类、摘要、翻译、问答等)。

3. Trainer API极大简化了模型微调的代码量,无需手动编写训练循环。

4. Gradio让你几分钟内就能搭建可交互的模型Demo。

5. 全部课程免费,社区活跃,是系统学习NLP的最佳起点。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » Hugging Face免费NLP课程教程:从入门到实战
分享到: 更多 (0)