赞
踩
因为要研究的相关内容有大量的transformer的东西(如下)所以我这边要先学一下transformer的使用。入门一下。
问一下gpt,第一步是创建环境,这里就跳过了。第二部,安装pytorch和transformer
我的cuda版本是11.3.58。如果你的不是cudatoolkit=11.3这个参数要修改
- # 安装 PyTorch,确保选择适合你 CUDA 版本的命令
- conda install pytorch torchvision torchaudio cudatoolkit=(你的cuda版本) -c pytorch
-
- # 安装 Hugging Face 的 Transformers 库
- pip install transformers
安装完成之后我运行代码
- from transformers import pipeline
-
- # 加载一个预训练的模型和它的 tokenizer,用于情感分析
- classifier = pipeline('sentiment-analysis')
-
- # 对一段文本进行情感分析
- result = classifier("I love using transformers. They're fantastic!")
-
- # 打印结果
- print(result)
结果import的时候报错了,我试了一下,import tchnsformer也不行
报错
AttributeError: module 'charset_normalizer' has no attribute 'md__mypyc'
我怀疑是版本问题,试着用conda重新安装一下transformer还是不行,我就想会不会charset_normalizer不是transformer的组件。
用pip更新了charset_normalizer后可以了。说明对于我的环境(CUDA 11.3)并不要求特定版本,最新版本即可。
pip install --upgrade charset-normalizer
然后又出现了新的问题,pipeline函数下载不了需要的模型。
经过查找发现这应该是因为huggingface.co连不上了。
这里使用镜像站。hf-mirror.com - Huggingface 镜像站
我使用方法一,也就是用hugging cli命令行下载模型"distilbert-base-uncased-finetuned-sst-2-english"
这是镜像站上面的教程
贴在下面方便复制
pip install -U huggingface_hub
export HF_ENDPOINT=https://hf-mirror.com
(下面是两个例子的代码,不用运行):
huggingface-cli download --resume-download bigscience/bloom-560m --local-dir bloom-560m
huggingface-cli download --token hf_*** --resume-download meta-llama/Llama-2-7b-hf --local-dir Llama-2-7b-hf
在镜像站找到"distilbert-base-uncased-finetuned-sst-2-english"
这个模型应该是pipeline函数在情感分析任务中默认使用的。
这个网站还可以通过API试,明明是english但是也支持其他语言。
比如我最讨厌的笑死:
但是在朋友S的提醒下,我又试了几个,发现不对,所有中文都是是negative0.8上下,positve0.2上下,浮动。
我还当模型也认为是负面的,模型所见略同。这个网页内容和报错中的网址打开的网页内容一致(包括评论),说明就相当于官网站,镜像站上面的Use in Transformers里也是官网的代码,复制过去是没用的。
继续回到我们的解决环境问题上。
可以点击旁边的files and versions下载后使用模型,可以看到有一个h5权重文件。
然后把模型放到下面的目录
/home/yourname/.cache/torch/transformers
这个目录也是pipeline自动下载模型到的位置
这边要提醒一下,如果你也是用ubuntu的linux系统小白,并且/home/yourname(你的用户名)/ 下没有.cache那是被隐藏了,按ctrl+h可以显示。
我这里把模型直接下载到了./ 下。可以看左边的目录结构
然后修改了代码,用了AutoModelForSequenceClassification方法读取本地模型。再把读取后的模型model用pipeline(方法)创建一个封装了模型和tokenizer的情感分析pipeline(实例),然后通过这个pipeline(实例)来处理文本。
这里要注意的是,我其实首先用了官网文档教学里的AutoModelForCausalLM方法来读取本地模型,结果报错了,问了gpt之后发现是对于不同类型的模型要用不同方法读取。
例如,对于文本分类,你可以使用AutoModelForSequenceClassification
;对于问答,可以使用AutoModelForQuestionAnswering
。
最后这里把我的代码给一下,代码要求把模型distilbert/distilbert-base-uncased-finetuned-sst-2-english at main (hf-mirror.com)
下载到本地
- from transformers import AutoModelForSequenceClassification, AutoTokenizer, pipeline
-
- # 指定模型路径
- model_path = "./distilbert-base-uncased-finetuned-sst-2-english"
-
- # 加载模型和tokenizer
- model = AutoModelForSequenceClassification.from_pretrained(model_path)
- tokenizer = AutoTokenizer.from_pretrained(model_path)
-
- # 创建情感分析pipeline
- classifier = pipeline("text-classification", model=model, tokenizer=tokenizer)
-
- # 对一段文本进行情感分析
- result = classifier("I love u")
-
- # 打印结果
- print(result)
结果:
i love u 积极 0.9998
i hate u 消极 0.9993
I am xiaoxiantong 积极 0.843 哈哈哈
我爱CSDN
p.s.
还有一个简单的办法是在最初的代码前加这个,修改下载源
- import os
- os.environ['HF_ENDPOINT'] = 'http://hf-mirror.com'
也就是这样
- from transformers import pipeline
- import os
- os.environ['HF_ENDPOINT'] = 'http://hf-mirror.com'
-
- pipe = pipeline("text-classification", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
- # 加载一个预训练的模型和它的 tokenizer,用于情感分析
- classifier = pipe
-
- # 对一段文本进行情感分析
- result = classifier("I love using transformers. They're fantastic!")
-
- # 打印结果
- print(result)
但是有一些环境可以换源,有一些不行,比如我的,如果有人知道为什么或者用这个换源成功了可以分享一下,感激。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。