一、什么是Transformers库
Hugging Face Transformers 是一个由 Hugging Face 公司开发和维护的开源库,它创建的目的是为自然语言处理(NLP)任务提供最先进的预训练模型和简便的使用方式。该库基于 Transformer 架构,支持数百种预训练模型,涵盖多种语言,方便开发者在各种 NLP 应用中快速部署和测试模型。
二、安装Transformers库
依赖关系
- PyTorch:HuggingFace Transformers 库默认使用 PyTorch 作为其后端框架。这意味着,如果你安装了 Transformers 库并且没有指定使用 TensorFlow,那么它会自动使用 PyTorch。
- TensorFlow:如果你希望使用 TensorFlow 作为其后端框架,你可以安装 Transformers 库的 TensorFlow 版本,或者在安装 Transformers 库时指定使用 TensorFlow。
安装选项
- 默认安装(使用 PyTorch):conda install transformers
- 安装 TensorFlow 版本:conda install -c conda-forge transformers[torch] # 安装 PyTorch 版本的transformers
conda install -c conda-forge transformers[tensorflow] # 安装 TensorFlow 版本的transformers
查看已安装包信息:
conda list transformers
# packages in environment at D:\App-Data\conda3\envs\pytorch241-gpu:
#
# Name Version Build Channel
transformers 4.46.2 pypi_0 pypi
总结
HuggingFace Transformers 库默认使用 PyTorch 作为其后端框架,但你也可以选择使用 TensorFlow。安装时可以根据需要选择安装 PyTorch 版本或 TensorFlow 版本。这样,你可以根据自己的需求和偏好选择合适的深度学习框架。
三、使用示例
使用 PyTorch
from transformers import AutoModel, AutoTokenizer
model_name = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name)
使用 TensorFlow
from transformers import TFAutoModel, AutoTokenizer
model_name = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = TFAutoModel.from_pretrained(model_name)
比较
两个代码片段都通过 transformers 库加载了相同的预训练模型和分词器, 都加载了一个名为 bert-base-uncased
的预训练 BERT 模型,并初始化对应的分词器,它们都能实现相同的 NLP 任务,例如文本嵌入、分类等。但分别使用了 PyTorch 和 TensorFlow 框架。模型类分别是AutoModel和 TFAutoModel。
四、HuggingFace模型管理
安装
huggingface-cli
是Hugging Face提供的一个命令行工具,用于管理和操作Hugging Face上的模型、数据集等资源。要使用conda安装huggingface-cli
(实际上是huggingface_hub
包),安装方法为:
conda install -c huggingface huggingface_hub
查看已安装版本号:
(pytorch241-gpu) C:\Users\86138>conda list huggingface
# packages in environment at D:\App-Data\conda3\envs\pytorch241-gpu:
#
# Name Version Build Channel
huggingface_hub 0.26.2 pyh0610db2_0 conda-forge
(pytorch241-gpu) C:\Users\86138>huggingface-cli version
huggingface_hub version: 0.26.2
查看工作环境
查看huggingface-cli的工作环境配置的命令为:huggingface-cli env。Hugging Face 将模型下载到默认的缓存目录配置HF_HUB_CACHE,配置值为 ~/.cache/huggingface/hub/。如果你希望永久修改缓存目录,可以修改Linux和Windows环境变量HF_HUB_CACHE为新的换成目录,例如E:\AppData\HF_HUB_CACHE。
(pytorch241-gpu) C:\Users\86138>huggingface-cli env
Copy-and-paste the text below in your GitHub issue.
- huggingface_hub version: 0.26.2
- Platform: Windows-10-10.0.22631-SP0
- Python version: 3.10.15
- Running in iPython ?: No
- Running in notebook ?: No
- Running in Google Colab ?: No
- Running in Google Colab Enterprise ?: No
- Token path ?: C:\Users\86138\.cache\huggingface\token
- Has saved token ?: True
- Who am I ?: XXX
- Configured git credential helpers: manager
- FastAI: N/A
- Tensorflow: N/A
- Torch: 2.4.1
- Jinja2: 3.1.4
- Graphviz: N/A
- keras: N/A
- Pydot: N/A
- Pillow: 10.4.0
- hf_transfer: N/A
- gradio: N/A
- tensorboard: N/A
- numpy: 1.26.4
- pydantic: 2.8.2
- aiohttp: 3.10.10
- ENDPOINT: https://huggingface.co
- HF_HUB_CACHE: E:\AppData\HF_HUB_CACHE
- HF_ASSETS_CACHE: C:\Users\86138\.cache\huggingface\assets
- HF_TOKEN_PATH: C:\Users\86138\.cache\huggingface\token
- HF_STORED_TOKENS_PATH: C:\Users\86138\.cache\huggingface\stored_tokens
- HF_HUB_OFFLINE: False
- HF_HUB_DISABLE_TELEMETRY: False
- HF_HUB_DISABLE_PROGRESS_BARS: None
- HF_HUB_DISABLE_SYMLINKS_WARNING: False
- HF_HUB_DISABLE_EXPERIMENTAL_WARNING: False
- HF_HUB_DISABLE_IMPLICIT_TOKEN: False
- HF_HUB_ENABLE_HF_TRANSFER: False
- HF_HUB_ETAG_TIMEOUT: 10
- HF_HUB_DOWNLOAD_TIMEOUT: 10
认证与登录
在使用 HuggingFace CLI 命令进行操作之前,需要进行认证。以下是详细的认证步骤: 生成访问令牌 访问 HuggingFace 官网。 登录你的账户。 进入 Settings -> Access Tokens。 点击 New Token,生成一个新的访问令牌。 使用访问令牌登录 在终端中运行以下命令,使用生成的访问令牌进行登录: huggingface-cli login 输入访问令牌后,系统会提示登录成功。 环境变量认证 你也可以通过设置环境变量来进行认证: export HUGGINGFACE_TOKEN=your_access_token 将 your_access_token 替换为你生成的访问令牌。 验证认证 认证完成后,可以通过以下命令验证是否认证成功: huggingface-cli whoami 如果显示你的用户信息,则说明认证成功。
查看本地模型列表
(pytorch241-gpu) C:\Users\86138>huggingface-cli scan-cache
REPO ID REPO TYPE SIZE ON DISK NB FILES LAST_ACCESSED LAST_MODIFIED REFS LOCAL PATH
------------------------------------- --------- ------------ -------- ----------------- ------------- ---- ----------------------------------------------------------------------
cross-encoder/ms-marco-MiniLM-L-12-v2 model 133.8M 5 a few seconds ago 5 weeks ago main E:\AppData\HF_HUB_CACHE\models--cross-encoder--ms-marco-MiniLM-L-12-v2
Done in 0.0s. Scanned 1 repo(s) for a total of 133.8M.
下载模型
例如:
huggingface-cli download Qwen/Qwen2-7B-Instruct-GGUF qwen2-7b-instruct-q5_k_m.gguf --local-dir . --local-dir-use-symlinks False
模型缓存
以加载预训练模型和分词器为例
model_name = "uer/roberta-base-finetuned-jd-binary-chinese"
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertForSequenceClassification.from_pretrained(model_name)
对应的缓存目录为:E:\App-Data\HF_HUB_CACHE\models–uer–roberta-base-finetuned-jd-binary-chinese。