在某些情况下,如在严格的网络安全环境下或者没有网络连接的情况(包括私有云,隔离环境等)下,使用Transformers库进行机器学习项目,我们需要在离线环境中运行Transformers。以下是实现Transformers和Datasets库离线使用的步骤和方法。
环境变量设置
为了在离线模式下运行Transformers,我们首先需要设置特定的环境变量来告诉库仅使用本地文件。这可以通过设置以下环境变量来实现:
- TRANSFORMERS_OFFLINE: 设置为1时,启用Transformers的离线模式。
- HF_DATASETS_OFFLINE: 设置为1时,启用Datasets的离线模式。
这些环境变量可以通过命令行在运行脚本前设定:
代码语言:bash复制export TRANSFORMERS_OFFLINE=1
export HF_DATASETS_OFFLINE=1
或者通过在运行Python脚本时直接在命令前添加这些变量:
代码语言:bash复制HF_DATASETS_OFFLINE=1 TRANSFORMERS_OFFLINE=1
python your_script.py
离线获取模型和分词器
在没有网络连接的情况下使用Transformers库,需要预先下载并保存所需的模型和分词器。以下简述了离线模式下准备模型和分词器的几种方法:
通过模型中心下载
访问模型中心,找到需要的模型,点击下载(↓)图标手动下载所需文件。
使用Transformers API
首先,在有网络连接的环境中使用from_pretrained方法下载模型和分词器,并使用save_pretrained保存到本地:
代码语言:python代码运行次数:0复制from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
# 下载模型和分词器
tokenizer = AutoTokenizer.from_pretrained("bigscience/T0_3B")
model = AutoModelForSeq2SeqLM.from_pretrained("bigscience/T0_3B")
# 保存到本地路径
tokenizer.save_pretrained("./your/path/bigscience_t0")
model.save_pretrained("./your/path/bigscience_t0")
之后,在离线环境中,您可以通过指定本地路径来重新加载这些模型和分词器:
代码语言:python代码运行次数:0复制from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
# 从本地路径加载
tokenizer = AutoTokenizer.from_pretrained("./your/path/bigscience_t0")
model = AutoModelForSeq2SeqLM.from_pretrained("./your/path/bigscience_t0")
使用huggingface_hub库
另一个选项是使用huggingface_hub库来下载模型文件到本地路径。首先,需要安装huggingface_hub:
代码语言:bash复制python -m pip install huggingface_hub
然后,使用hf_hub_download函数下载特定文件:
代码语言:bash复制from huggingface_hub import hf_hub_download
# 下载指定文件到本地路径
hf_hub_download(repo_id="bigscience/T0_3B", filename="config.json", cache_dir="./your/path/bigscience_t0")
使用下载的配置文件创建配置实例:
代码语言:python代码运行次数:0复制from transformers import AutoConfig
# 使用本地配置文件创建配置
config = AutoConfig.from_pretrained("./your/path/bigscience_t0/config.json")
总结
以上步骤说明了如何在离线环境下设置和使用Transformers和Datasets库。通过预先下载必要的模型和分词器,并通过设置环境变量来告诉库在离线模式下运行,可以有效地在没有网络连接的环境中进行机器学习项目的开发和测试。