# Hugging Face 免费课程教 FDE 把微调放到最后

> 前三章与客户项目的顺序一致：先用 pipeline() 建基线，再检查数据；建议每章学一周，每周 6 至 8 小时。

原文: https://fdetimes.net/zh/books-courses/hugging-face-llm-course-first-three-chapters/

设想一家物流公司，想把客服工单自动分成五类。那里没人会问 Transformer 是什么。他们关心的是：几周之内，你能不能交付一个在他们自己数据上跑得通的模型。

Hugging Face LLM Course 的前三章，差不多就在回答这个问题。Hugging Face 并没有把这门课定位成项目方法论，但用前线部署工程师（FDE）的眼光来读，这三章的顺序恰好对应客户现场的工作流程：先建基线，再看数据，最后才微调。

课程免费、无广告，并以 Apache-2.0 许可证开源。越南语版已列入已完成的译本。对想转向前线部署工程的开发者来说，入门成本几乎为零。

## 谁写的，该按什么节奏学？

十位作者来自 Hugging Face 及其贡献者，包括 Sylvain Gugger、Lewis Tunstall、Leandro von Werra、Merve Noyan 和 Ben Burtenshaw。官方页面标题是“Welcome to the 🤗 Course!”，引用格式为“The Hugging Face Course, 2022”。

GitHub README 对课程目标的描述是：教会读者把 Transformers 应用于各类自然语言处理任务及更多场景。建议节奏为每周一章，每周约 6-8 小时。

仓库对所有人开放阅读，但 Hugging Face 目前不接受社区为新章节贡献内容。这对学习者没有影响：你是来学习和读代码的，前三章已经足够开工。

## 思路一：先建基线，再选模型

第 1 章讲 `pipeline()` 函数，用于文本生成、分类等任务。听上去很简单，但正是这个习惯，把 FDE 和只会做 demo 的人区分开来。

回到那家物流公司。第一天不该提微调。拿几十条真实工单，丢进现成的分类 pipeline，数一数分错了多少条。这个数字就是基线：之后任何方案都必须超过它。

如果基线已经够用，你就替客户省下了几周工作量。如果不够，分错的工单清单会告诉你该往哪里查。

## 思路二：真实数据往往在分词器这一步变形

第 2 章把分词器的作用概括得很简洁：把文本转换成模型能处理的数据。随后比较了三种切分方式：按词（word-based）、按字符（character-based）和按比词更小的单位（subword）。子词一类包括 GPT-2 使用的 BPE、BERT 使用的 WordPiece，以及 SentencePiece/Unigram。

这一章要读得最慢，因为客户数据从来不像示例那样干净。假设物流工单里有“ko dc giao hang”这样的句子，这是越南语“没收到货”的缩写，打字时省掉了声调符号；或者句子中间粘着一个运单号。

从原理上说，基于词的分词器会经常遇到词表外的词。子词分词器会把陌生词拆成已知的片段，但这些片段是否还保留原意，只有亲眼看过才知道。

第一件事，就是用你打算采用的模型的分词器，去跑这些工单本身，亲眼看看切分结果。这五分钟往往就能解释基线为什么失败，赶在有人怪罪模型之前。

**要点:** 怪罪模型之前，先看看分词器把客户数据切成了什么样。

## 思路三：微调的大部分工作是准备数据

第 3 章按照当下的最佳实践，讲解如何用高层的 Trainer API 微调。但这一章的另一半，即借助 🤗 Datasets 的新功能从 Hub 准备大型数据集，才最贴近实际工作。

在物流的例子里，难点不在调用 `Trainer`，而在于把几千条杂乱的工单整理成数据集：标签清晰，训练集/测试集划分合理，并且使用第 2 章检查过的同一个分词器。

做完这些，剩下的就是把微调后的模型和第 1 章的基线放在一起对比。这份对比，就是你要拿给客户看的东西。

## 适合谁，按什么顺序学？

严格按 1、2、3 的顺序，每周一章。

理由很实际：只有手里有第 1 章的基线，才知道微调值不值得；而第 3 章的数据集，必须经过你在第 2 章弄明白的那个分词器。

如果有你所用语言的译本，会有帮助，但要和英文原版对照着用。读译本理解概念，代码和 API 名称看英文，因为文档、issue，以及以后客户提的问题，用的都是英文术语。

看岗位描述时，留意 Transformers、fine-tuning、tokenization、Hugging Face 这类关键词。简历上别写“学完了课程”，而是写一个三步项目：用 pipeline 建的基线、在真实数据上做的分词器分析、一个超过基线的微调模型，附上实测数字和仓库链接。

证书只能证明你学过。按这三章的顺序做出来的项目，才能证明你到了客户现场知道从哪里下手。

**本周动手试试:**

- 学完第 1 章，用 pipeline() 给你工作中的 20 段真实文本分类，记下模型分错的条目。
- 用两个不同的分词器处理同样这 20 段文本，比较它们如何处理缩写和省略了重音或声调符号的词。
- 打开 GitHub 上的 huggingface/course 仓库，找到你所用语言的版本，把第 1-3 章排进接下来的三周。

## 信源

- [Welcome to the 🤗 Course! (Hugging Face LLM Course)](https://huggingface.co/learn/llm-course/chapter1/1)

- [Tokenizers - Hugging Face LLM Course](https://huggingface.co/learn/llm-course/chapter2/4)

- [Introduction - Hugging Face LLM Course (Chapter 3)](https://huggingface.co/learn/llm-course/chapter3/1)

- [huggingface/course: The Hugging Face course on Transformers (GitHub)](https://github.com/huggingface/course)
