AI 工具 101
Hugging Face LLM 工具完全初学者指南

Hugging Face 是一个人工智能研究实验室和中心,它建立了一个由学者、研究人员和爱好者组成的社区。在短时间内,Hugging Face 已在人工智能领域获得了显著的影响力。科技巨头包括谷歌、亚马逊和英伟达已向人工智能初创公司 Hugging Face 投入了大量资金,使其估值达到45亿美元。 在本指南中,我们将介绍 Transformer、LLM 以及 Hugging Face 库在培育开源人工智能社区方面所扮演的重要角色。我们还将通过动手实践的 Python 示例,介绍 Hugging Face 的核心功能,包括管道、数据集、模型等。
NLP 中的 Transformer
2017年,康奈尔大学发表了一篇颇具影响力的论文,介绍了Transformer。这是一种用于 NLP 的深度学习模型。这一发现推动了像ChatGPT这样的大型语言模型的发展。 大型语言模型(LLM)是利用 Transformer 来理解和生成类人文本的人工智能系统。然而,创建这些模型成本高昂,通常需要数百万美元,这限制了大型公司以外的可及性。 Hugging Face 成立于 2016 年,旨在让每个人都能使用 NLP 模型。尽管是一家商业公司,但它提供了一系列开源资源,帮助个人和组织以可负担的方式构建和使用 Transformer 模型。机器学习是教导计算机通过识别模式来执行任务,而深度学习作为机器学习的一个子集,创建了一个能够独立学习的网络。Transformer 是一种深度学习架构,它能有效且灵活地利用输入数据,由于训练时间要求更短,成为构建大型语言模型的热门选择。
Hugging Face 如何促进 NLP 和 LLM 项目

- 一系列可供选择的预训练模型。
- 用于根据特定需求微调这些模型的工具和示例。
- 适用于各种环境的简易部署选项。
Hugging Face 提供的一个优秀资源是 Open LLM 排行榜。作为一个综合性平台,它系统地监控、排名和评估一系列大型语言模型(LLM)和聊天机器人的效率,对开源领域的进展提供有洞察力的分析。 LLM 基准测试通过四个指标来衡量模型:
- AI2 推理挑战(25-shot)—— 一系列围绕基础科学课程的问题。
- HellaSwag(10-shot)—— 一项常识推理测试,虽然对人类来说简单,但对前沿模型来说是一个重大挑战。
- MMLU(5-shot)—— 一项多方面的评估,涉及文本模型在 57 个不同领域的熟练程度,涵盖基础数学、法律和计算机科学等。
- TruthfulQA(0-shot)—— 一种用于确定模型是否倾向于重复网络上常见错误信息的工具。
这些基准测试使用诸如“25-shot”、“10-shot”、“5-shot”和“0-shot”等术语来描述,表示在评估过程中提供给模型的提示示例数量,以衡量其在各个领域的性能和推理能力。在“few-shot”范式中,模型会获得少量示例来指导其回答,而在“0-shot”设置中,模型不接收任何示例,必须完全依赖其先验知识来做出适当回应。
Hugging Face 的组件
管道
‘pipelines’ 是 Hugging Face 的 transformers 库的一部分,是一个有助于轻松使用 Hugging Face 仓库中预训练模型的功能。它为一系列任务提供了直观的 API,包括情感分析、问答、掩码语言建模、命名实体识别和摘要。 管道集成了三个核心的 Hugging Face 组件:
- 分词器:通过将文本转换为模型可以理解的格式来准备文本。
- 模型:这是管道的核心,基于预处理后的输入进行实际预测。
- 后处理器:将模型的原始预测转换为人类可读的形式。
这些管道不仅减少了大量编码工作,还提供了一个用户友好的界面来完成各种 NLP 任务。
使用 Hugging Face 库的 Transformer 应用
Hugging Face 库的一个亮点是 Transformers 库,它通过将模型与必要的预处理和后处理阶段连接起来,简化了 NLP 任务,从而简化了分析过程。要安装并导入该库,请使用以下命令:
pip install -q transformers from transformers import pipeline
完成此操作后,您可以执行 NLP 任务,首先是情感分析,它将文本分类为积极或消极情感。该库强大的 pipeline() 函数充当一个中心,包含其他管道,并促进音频、视觉和多模态领域的特定任务应用。
实际应用
文本分类
使用 Hugging Face 的 pipeline() 函数,文本分类变得轻而易举。以下是启动文本分类管道的方法:
classifier = pipeline("text-classification")
为了获得动手体验,将一个字符串或字符串列表输入到管道中以获得预测结果,这些结果可以使用 Python 的 Pandas 库清晰地可视化。以下是演示此过程的 Python 代码片段:
sentences = ["I am thrilled to introduce you to the wonderful world of AI.", "Hopefully, it won't disappoint you."] # Get classification results for each sentence in the list results = classifier(sentences) # Loop through each result and print the label and score for i, result in enumerate(results): print(f"Result {i + 1}:") print(f" Label: {result['label']}") print(f" Score: {round(result['score'], 3)}\n") 输出
1.0 0.996
命名实体识别(NER)
NER 在从文本中提取称为“命名实体”的现实世界对象方面至关重要。利用 NER 管道可以有效识别这些实体:
ner_tagger = pipeline("ner", aggregation_strategy="simple") text = "Elon Musk is the CEO of SpaceX." outputs = ner_tagger(text) print(outputs)
输出
Elon Musk: PER, SpaceX: ORG
问答
问答涉及从给定上下文中提取特定问题的精确答案。初始化一个问答管道,并输入您的问题和上下文以获得所需的答案:
reader = pipeline("question-answering") text = "Hugging Face is a company creating tools for NLP. It is based in New York and was founded in 2016." question = "Where is Hugging Face based?" outputs = reader(question=question, context=text) print(outputs)
输出
{'score': 0.998, 'start': 51, 'end': 60, 'answer': 'New York'} Hugging Face 的 pipeline 函数为不同的任务提供了一系列预构建的管道,除了文本分类、NER 和问答之外。以下是部分可用任务的详细信息:
表:Hugging Face 管道任务
| 任务 | 描述 | 管道标识符 |
| 文本生成 | 根据给定的提示生成文本 | pipeline(task=”text-generation”) |
| 摘要 | 总结冗长的文本或文档 | pipeline(task=”summarization”) |
| 图像分类 | 为输入图像打标签 | pipeline(task=”image-classification”) |
| 音频分类 | 对音频数据进行分类 | pipeline(task=”audio-classification”) |
| 视觉问答 | 使用图像和问题来回答问题 | pipeline(task=”vqa”) |
有关详细描述和更多任务,请参阅 Hugging Face 网站上的管道文档。
为什么 Hugging Face 正将其重点转向 Rust
Hugging Face(HF)生态系统已开始在其库中使用 Rust,例如 safesensors 和 tokenizers。 Hugging Face 最近还发布了一个名为 Candle 的新机器学习框架。与使用 Python 的传统框架不同,Candle 是用 Rust 构建的。使用 Rust 的目标是提高性能并简化用户体验,同时支持 GPU 操作。 Candle 的关键目标是促进无服务器推理,使得部署轻量级二进制文件成为可能,并将 Python 从生产工作负载中移除,因为 Python 的开销有时会减慢进程。这个框架旨在解决在使用像 PyTorch 这样完整机器学习框架时遇到的问题,这些框架在集群上创建实例时体积庞大且速度缓慢。 让我们探讨一下为什么 Rust 正变得比 Python 更受青睐。
- 速度和性能 – Rust 以其惊人的速度而闻名,优于传统上用于机器学习框架的 Python。Python 的性能有时会因其全局解释器锁(GIL)而减慢,但 Rust 没有这个问题,承诺更快地执行任务,从而在实施它的项目中提高性能。
- 安全性 – Rust 在没有垃圾回收器的情况下提供内存安全保证,这对于确保并发系统的安全性至关重要。这在像 safetensors 这样的领域中起着关键作用,因为处理数据结构时的安全性是优先考虑的事项。
Safetensors
Safetensors 受益于 Rust 的速度和安全性特性。Safetensors 涉及对张量(一种复杂的数学实体)的操作,使用 Rust 可以确保操作不仅快速,而且安全,避免了因内存处理不当而可能出现的常见错误和安全问题。
分词器
分词器 负责将句子或短语分解成更小的单元,例如单词或术语。Rust 通过加快执行时间来帮助这个过程,确保分词过程不仅准确而且迅速,从而提高自然语言处理任务的效率。 Hugging Face 分词器的核心是子词分词的概念,它在词级分词和字符级分词之间取得微妙的平衡,以优化信息保留和词汇表大小。它通过创建子词(如“##ing”和“##ed”)来运作,在保持语义丰富性的同时避免词汇表膨胀。 子词分词涉及一个训练阶段,以确定字符和词级分词之间最有效的平衡。它超越了简单的前缀和后缀规则,需要对大量文本语料库中的语言模式进行全面分析,以设计一个高效的子词分词器。生成的分词器能够通过将新词分解为已知的子词来处理它们,保持高水平的语义理解。
分词组件
分词器库将分词过程分为几个步骤,每个步骤处理分词的一个不同方面。让我们深入了解这些组件:
- 标准化器:对输入字符串进行初始转换,应用必要的调整,例如小写转换、Unicode 标准化和去除空格。
- 预分词器:负责根据预定义规则(例如空格分隔)将输入字符串分割成预分段。
- 模型:监督子词的发现和创建,适应输入数据的特性,并提供训练能力。
- 后处理器:增强构建功能,以促进与许多基于 Transformer 的模型(如 BERT)的兼容性,通过添加诸如 [CLS] 和 [SEP] 之类的标记。
要开始使用 Hugging Face 分词器,请使用命令 pip install tokenizers 安装该库,并将其导入到 Python 环境中。该库可以在极短的时间内对大量文本进行分词,从而为模型训练等更密集的任务节省宝贵的计算资源。 分词器库使用 Rust,它继承了 C++ 的语法相似性,同时引入了编程语言设计的新概念。结合 Python 绑定,它确保您在 Python 环境中工作时也能享受低级语言的性能。














