首页 > 其他分享 >HuggingFace 核心组件及应用实战

HuggingFace 核心组件及应用实战

时间:2024-11-13 09:30:21浏览次数:1  
标签:实战 name 模型 HuggingFace Hugging Face 组件 model dataset

带着问题来学习

  1. 什么是Hugging Face?它的目标是什么?

  2. Hugging Face 中包含哪些知名的预训练模型?

  3. 如果我们要在 Hugging Face 中下载 BERT,那么

    1. 只有一种版本,还是有多种版本可以选择?

    2. 每一种版本的 BERT 中,只有一种格式还是有多种格式可以适应多种下游任务?

  4. Hugging Face 库中有哪些有用的组件?

文章最后会提供问题的参考答案~

一、Hugging Face 简介

官网:https://huggingface.co/

Hugging Face 是一个开源的 AI 社区网站,站内几乎囊括了所有常见的 AI 开源模型,号称:一网打尽,应有尽有,全部开源。

在 Hugging Face 中可以下载到众多开源的预训练大模型,模型本身包含相关信息和参数,可以拿来做微调和重新训练,非常方便。

二、Hugging Face 核心组件

Hugging Face 核心组件包括 Transformers、Dataset、Tokenizer,此外还有一些辅助工具,如 Accelerate,用于加速深度学习训练过程。

更多内容可以去 Hugging Face 官网上发掘,下面重点介绍下它的三个核心组件。

1、Hugging Face Transformers

Transformers 是 Hugging Face 的核心组件,主要用于自然语言处理,提供了预训练的语言模型和相关工具,使得研究者和工程师能够轻松的训练和使用海量的 NLP 模型。

常用的模型包括 BERT、GPT、XLNet、RoBERTa 等,并提供了模型的各种版本。

通过 Transformers 库,开发人员可以用这些预训练模型进行文本分类、命名实体识别、机器翻译、问答系统等 NLP 任务。

Transformers 库本身还提供方便的 API、实例代码、文档,让开发者学习和使用这些模型都变得非常简单,同时开发者也可以上传自己的预训练模型和 API。

# 简单的用例代码,完整代码见实战部分
# 首先通过 pip 下载相关库:pip install transformers

# 导入 transformers 相关库
from transformers import AutoModelForSequenceClassification

# 初始化分词器和模型
model_name = "bert-base-cased"
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)

# 将编码后的张量输入模型进行预测
outputs = model(**inputs)

# 获取预测结果和标签
predictions = outputs.logits.argmax(dim=-1)

2、Hugging Face Dataset

Dataset 是 Hugging Face 的公共数据集仓库,以下是常用的一些数据集(欢迎补充):

  1. SQuAD:Stanford大学发布的问答数据集

  2. IMBDB:电影评论数据集

  3. CoNLL-2003:NER命名实体识别数据集

  4. GLUE:公共基准测试集

Hugging Face Dataset 简化了数据集的下载、预处理过程,并具备数据集分割、采样和迭代器等功能。

# 简单的用例代码,完整代码见实战部分
# 首先通过 pip 下载相关库:pip install datasets

# 导入数据集
from datasets import load_dataset

# 下载数据集并打乱数据
dataset_name = "imdb"
dataset = load_dataset(dataset_name)

3、Hugging Face Tokenizer

Tokenizer 是 Hugging Face 的分词器,它的任务是将输入文本转换为一个个标记(tokens),它还能对文本序列进行清洗、截断和填充等预处理,以满足模型的输入要求。

# 简单的用例代码,完整代码见实战部分
# 首先通过 pip 下载相关库:pip install transformers

# 导入分词器
from transformers import AutoTokenizer

# 初始化分词器和模型
tokenizer = AutoTokenizer.from_pretrained(model_name)

# 将文本编码为模型期望的张量格式
inputs = tokenizer(dataset["train"]["text"][:10], 
    padding=True, truncation=True, return_tensors="pt")

三、Hugging Face 应用实战

该应用实战是通过 Hugging Face Transformers 完成一个很简单的文本分类任务(预测影评是正面还是负面),完整代码如下:

# 1. 导入必要的库
from transformers import AutoTokenizer, AutoModelForSequenceClassification
from datasets import load_dataset

# 2. 定义数据集名称和任务类型:使用的是 imdb 影评数据集
dataset_name = "imdb"
task = "sentiment-analysis"

# 3. 下载数据集并打乱数据
dataset = load_dataset(dataset_name)
dataset = dataset.shuffle()

# 4. 初始化分词器和模型
model_name = "bert-base-cased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)

# 5. 将文本编码为模型期望的张量格式
inputs = tokenizer(dataset["train"]["text"][:10], padding=True, truncation=True, return_tensors="pt")

# 6. 将编码后的张量输入模型进行预测
outputs = model(**inputs)

# 7. 获取预测结果和标签
predictions = outputs.logits.argmax(dim=-1)
labels = dataset["train"]["label"][:10]

# 8. 打印预测结果和标签
for i, (prediction, label) in enumerate(zip(predictions, labels)):
    prediction_label = "正面评论" if prediction == 1 else "负面评论"
    true_label = "正面评论" if label == 1 else "负面评论"
    print(f"Example {i+1}: Prediction: {prediction_label}, True label: {true_label}")

注意:要运行代码,需要安装最新的 pytorch 、transformers 和 datasets。

将代码文件保存为:huggingface.py,运行后结果如下(第一次运行需要从Hugging Face上下载数据集和模型,需要一点时间):

C:\Users\Lenovo\anaconda3\envs\pytorch211\python.exe "huggingface.py"
Downloading readme: 100%|██████████| 7.81k/7.81k [00:00<?, ?B/s]
Downloading data: 100%|██████████| 21.0M/21.0M [00:27<00:00, 753kB/s]
Downloading data: 100%|██████████| 20.5M/20.5M [00:07<00:00, 2.88MB/s]
Downloading data: 100%|██████████| 42.0M/42.0M [00:08<00:00, 5.13MB/s]
Generating train split: 100%|██████████| 25000/25000 [00:00<00:00, 347815.24 examples/s]
Generating test split: 100%|██████████| 25000/25000 [00:00<00:00, 481791.57 examples/s]
Generating unsupervised split: 100%|██████████| 50000/50000 [00:00<00:00, 450755.18 examples/s]
C:\Users\Lenovo\anaconda3\envs\pytorch211\Lib\site-packages\huggingface_hub\file_download.py:149: UserWarning: `huggingface_hub` cache-system uses symlinks by default to efficiently store duplicated files but your machine does not support them in C:\Users\Lenovo\.cache\huggingface\hub\models--bert-base-cased. Caching files will still work but in a degraded version that might require more space on your disk. This warning can be disabled by setting the `HF_HUB_DISABLE_SYMLINKS_WARNING` environment variable. For more details, see https://huggingface.co/docs/huggingface_hub/how-to-cache#limitations.
To support symlinks on Windows, you either need to activate Developer Mode or to run Python as an administrator. In order to see activate developer mode, see this article: https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development
  warnings.warn(message)
Some weights of BertForSequenceClassification were not initialized from the model checkpoint at bert-base-cased and are newly initialized: ['classifier.bias', 'classifier.weight']
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.
Example 1: Prediction: 正面评论, True label: 正面评论
Example 2: Prediction: 正面评论, True label: 正面评论
Example 3: Prediction: 正面评论, True label: 负面评论
Example 4: Prediction: 正面评论, True label: 正面评论
Example 5: Prediction: 正面评论, True label: 正面评论
Example 6: Prediction: 正面评论, True label: 正面评论
Example 7: Prediction: 正面评论, True label: 负面评论
Example 8: Prediction: 正面评论, True label: 负面评论
Example 9: Prediction: 正面评论, True label: 负面评论
Example 10: Prediction: 正面评论, True label: 负面评论

Process finished with exit code 0

该实战主要演示如何使用 HuggingFace,预测结果并不是那么准确(准确率50%),因为模型本身还未做过电影评论相关的微调。

Hugging Face 也提醒我们,可能需要用一些下游任务重新训练这个模型(即微调),再用它来做预测和推理:You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference。

四、总结

Hugging Face 是当前最知名的 Transformer 工具库和AI 开源模型网站,它的目标是让人们更方便地使用和开发 AI 模型。

五、参考及附件

  1. 什么是Hugging Face?它的目标是什么?

    • Hugging Face Hugging Face 是一个 AI 社区网站,站内几乎囊括了所有的 AI 开源模型。Hugging Face 是当前最知名的 Transformer 工具库和AI 开源模型网站,它的目标是让人们更方便地使用和开发 AI 模型。
  2. Hugging Face 中包含哪些知名的预训练模型?

    • 如 BERT、GPT、XLNet、RoBERTa
  3. 如果我要在 Hugging Face 中下载 BERT,那么

    • 只有一种版本,还是有多种版本可以选择?

      • 多版本
    • 每一种版本的 BERT 中,只有一种格式还是有多种格式可以适应多种下游任务?

      • 多种格式
  4. Hugging Face 库中有哪些有用的组件?

    • 核心组件包括:Transformers、Dataset、Tokenizer,此外还有一些辅助工具,如Accelerate等

参考内容:黄佳老师的《ChatGPT和预训练模型课》

标签:实战,name,模型,HuggingFace,Hugging,Face,组件,model,dataset
From: https://www.cnblogs.com/bingohuang/p/18543138

相关文章