使用transformers中的pipeline调用huggingface中模型过程中可能遇到的问题和修改建议

前言

HuggingFace有一个巨大的模型库,其中包括很多的比较成熟的经典模型,这些模型即使不进行任何训练也能直接得出比较好的预测结果(Zero Shot Learning)。

transformers中提供的管线(pipeline)API隐藏了大量复杂的底层代码,直接使用现有的模型,不再需要再训练就可以获得较好的效果。

在学习transformers的初期可能会遇到一些问题,本篇文章将解决transformers中使用管线中可能遇到的问题。

管线使用中的问题和解决

在本篇中以情感分析任务为例,实现通过管线使用中的问题和解决。

huggingface的连接问题

使用管线进行情感分析的代码如下:

from transformers import pipeline

classifier = pipeline("sentiment-analysis")
result = classifier("I hate you") 

如果运行过程中出现以下报错,说明遇到了huggingface连接问题,受网络影响,无论是访问huggingface还是从huggingface上下载模型都可能存在连接问题,一般情况下我们会采用镜像源的方式解决。
在这里插入图片描述
从上述报错中我们可以看到,情感分析(sentiment-analysis)任务中,访问的链接是https://huggingface.co/distilbert-base-uncased-finetuned-sst-2-english,当不能访问huggingface时,这个链接自然也不能正常访问。这时需要将huggingface.co换成镜像源hf-mirror.com,可以通过访问镜像源来获取模型。有两种方式可以使用该模型进行情感分析——修改源继续使用pipeline和使用huggingface示例。

使用huggingface示例

我们将访问链接换成https://hf-mirror.com/distilbert-base-uncased-finetuned-sst-2-english可以直接访问镜像源中模型的页面,点击Files and versions可以查看模型文件
在这里插入图片描述
随后我们只需要将这些文件和文件夹全部下载下来并且放在同一个文件夹中即可。
在这里插入图片描述下载完成后我们返回到Model card向下拉可以看到使用这一模型的示例
在这里插入图片描述
如果没有下载模型,使用该代码也会自动下载,但有可能因为超时而断联,从而导致下载失败。所以这里建议先下载后,再执行示例。

在这里我模型下载的路径是"../huggingface_model/distilbert-base-uncased-finetuned-sst-2-english",将示例中模型名字换成本地路径即可。

import torch
from transformers import DistilBertTokenizer, DistilBertForSequenceClassification

tokenizer = DistilBertTokenizer.from_pretrained("../huggingface_model/distilbert-base-uncased-finetuned-sst-2-english")
model = DistilBertForSequenceClassification.from_pretrained("../huggingface_model/distilbert-base-uncased-finetuned-sst-2-english")

inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
with torch.no_grad():
    logits = model(**inputs).logits

predicted_class_id = logits.argmax().item()
print(model.config.id2label[predicted_class_id])

运行结果:

POSITIVE

修改源继续使用pipeline

修改后的代码如下:

import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
from transformers import pipeline

classifier = pipeline("sentiment-analysis")
result = classifier("I hate you") 
print(result)

这样修改的原理是将环境变量HF_ENDPOINT修改为https://hf-mirror.com(默认为https://huggingface.co),设置完之后将默认使用镜像源访问模型。

运行结果
在这里插入图片描述

[{'label': 'NEGATIVE', 'score': 0.9991129040718079}]

从运行结果可以看到链接地址已经变成了镜像源的地址,并且会自动下载模型,不过要注意的是模型默认会下载到C盘,在windows系统中,路径为:C:\Users\<你的主机名>\.cache\huggingface\hub
在这里插入图片描述

No module named ‘keras.engine’

在使用管线时还有可以存在以下问题,报错如下:No module named 'keras.engine'
在这里插入图片描述
这个报错是因为transformers、tensorflow、keras三者之间版本不匹配产生的问题,一般来讲将这三个包升级到最新版本即可。

pip install --upgrade tensorflow
pip install --upgrade keras
pip install --upgrade transformers

如果升级后还是有问题,不妨参照以下版本,至少在本案例中没有出现问题。

名称版本
tensorflow2.17.0
keras3.5.0
transformers4.45.1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾醒(AiXing-w)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值