1. 前言

Hugging Face 是一个非常丰富的机器学习社区,可以很方便的查找并下载各种模型、数据集。配合Hugging Face的API,可以快速在PyTorch中部署以及调试预训练模型。

2. 在Hugging Face中查找合适的模型

打开模型列表页面,左侧列出了各种机器学习任务,以便我们搜索对应的模型,右侧列出了符合目标的模型。我们可以根据模型的点赞数,下载量,以及上传者来大致分辨模型质量好坏,选出较合适的模型。

3. 下载模型

找到目标模型后,我们需要将模型文件下载到本地,以便调用。这里以google/vit-base-patch16-224模型为例,在模型主页可以看到模型名称,是此模型在网站上的唯一标识符。右边可以看到模型的参数量以及精度,下方可以自己上传图片,在线试用模型。

接下来,我们在控制台安装huggingface-cli,以便我们下载。

pip install -U "huggingface_hub[cli]"

由于国内网络原因,常常不能裸连Hugging Face,因此需要配置国内镜像。

#Linux/Mac:
export HF_ENDPOINT=https://hf-mirror.com
#Windows:
set HF_ENDPOINT=https://hf-mirror.com

之后,可以通过命令行的形式来下载模型:

huggingface-cli download --resume-download <model_id> --local-dir <local_dir>

<model_id>处填写刚刚介绍的模型名字,<local_dir>处填写本地下载位置。

4. 配合PyTorch使用模型

绝大多数模型都会在刚刚的介绍页面写上模型的调用方法。对于google/vit-base-patch16-224,调用方法为:

#如果没有下载所需的库,需先通过pip下载
from transformers import ViTImageProcessor, ViTForImageClassification
from PIL import Image
import requests

url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)

#如已经下载好模型,此处from_pretrained函数内应换成本地文件夹路径
processor = ViTImageProcessor.from_pretrained('google/vit-base-patch16-224')
model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224')

inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
# model predicts one of the 1000 ImageNet classes
predicted_class_idx = logits.argmax(-1).item()
print("Predicted class:", model.config.id2label[predicted_class_idx])

这段代码让模型对指定的图片进行了分类。在上面的代码里,如果from_pretrained()函数内部填写的是模型名字,会自动下载模型文件。如果里面填写的是本地路径,会自动使用本地的模型文件。需要注意的是,每个模型的使用方法可能不一致,需参考模型主页的教程来进行使用。