transformers 和 BERT 下载到你的本地机器

transformers and BERT downloading to your local machine

我正在尝试复制 this page 中的代码。

在我的工作场所,我们可以访问 transformers 和 pytorch 库,但无法从我们的 python 环境连接到互联网。谁能帮助我们如何在手动将文件下载到我的机器后让脚本工作?

我的具体问题是 -

  1. 我应该去bert-base-uncased at main位置下载所有文件吗?我是否已将它们放在具有特定名称的文件夹中?

我应该如何更改下面的代码

# Load pre-trained model tokenizer (vocabulary)
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
# Tokenize our sentence with the BERT tokenizer.
tokenized_text = tokenizer.tokenize(marked_text)

我应该如何更改下面的代码

# Load pre-trained model (weights)
model = BertModel.from_pretrained('bert-base-uncased',

                                  output_hidden_states = True, # Whether the model returns all hidden-states.

                              )

如果有人这样做过请告诉我...谢谢

###update1

我去了 link 并手动将所有文件下载到一个文件夹,并在我的代码中指定了该文件夹的路径。 Tokenizer 工作,但这一行 model = BertModel.from_pretrained('bert-base-uncased', output_hidden_states = True, # Whether the model returns all hidden-states. ) 失败。知道我该怎么办吗?我注意到下载的 4 个大文件的名称很奇怪...我应该将它们重命名为与上页所示相同的名称吗?我需要下载任何其他文件吗?

错误信息是OSErrr: unable to load weights from pytorch checkpoint file for bert-base-uncased2/ at bert-base-uncased/pytorch_model.bin If you tried to load a pytroch model from a TF 2 checkpoint, please set from_tf=True

克隆模型 repo 以下载所有文件

git lfs install
git clone https://huggingface.co/bert-base-uncased

# if you want to clone without large files – just their pointers
# prepend your git clone with the following env var:
GIT_LFS_SKIP_SMUDGE=1

git 用法:

  1. 从这里下载 git https://git-scm.com/downloads

  2. 将这些粘贴到您的 cli(终端):
    一种。 gitlfs 安装
    b. git 克隆 https://huggingface.co/bert-base-uncased

  3. 等待下载,需要时间。如果你想监控你的网络性能

  4. 找到当前目录只需将 cd 粘贴到您的 cli 并获取文件路径(例如“C:/Users/........./bert-base-uncased”)

  5. 用作:

     from transformers import BertModel, BertTokenizer
     model = BertModel.from_pretrained("C:/Users/........./bert-base-uncased")
     tokenizer = BertTokenizer.from_pretrained("C:/Users/........./bert-base-uncased")
    

手动下载,无git:

  1. 从这里下载所有文件https://huggingface.co/bert-base-uncased/tree/main

  2. 将它们放在名为“yourfoldername”的文件夹中

  3. 用作:

     model = BertModel.from_pretrained("C:/Users/........./yourfoldername")
     tokenizer = BertTokenizer.from_pretrained("C:/Users/........./yourfoldername")
    

仅限机型(手动下载,无git):

  1. 只需单击此处的下载按钮并仅下载 pytorch 预训练模型。大约 420mb https://huggingface.co/bert-base-uncased/blob/main/pytorch_model.bin

  2. 从这里下载 config.json 文件 https://huggingface.co/bert-base-uncased/tree/main

  3. 将它们都放在名为“您的文件名”的文件夹中

  4. 用作:

     model = BertModel.from_pretrained("C:/Users/........./yourfilename")
    

正在回答错误“###update1”:'OSErrr: unable to load weights from pytorch checkpoint file for bert-base-uncased2/ at bert-base-uncased/pytorch_model.bin If you tried to load a pytroch model from a TF 2 checkpoint, please set from_tf=True'

请尝试此方法 -> https://huggingface.co/transformers/model_doc/bert.html

from transformers import BertTokenizer, BertForMaskedLM
import torch

tokenizer = BertTokenizer.from_pretrained("C:/Users/........./bert-base-uncased")
model = BertForMaskedLM.from_pretrained("C:/Users/........./bert-base-uncased")

inputs = tokenizer("The capital of France is [MASK].", return_tensors="pt")
labels = tokenizer("The capital of France is Paris.", return_tensors="pt")["input_ids"]

outputs = model(**inputs, labels=labels)
loss = outputs.loss
logits = outputs.logits

如果有效,我们知道文件系统或文件夹名称没有问题。

如果它有效,请尝试在之后获取隐藏状态(请注意,bert 模型已经 returns hiddenstate,如所解释的:“裸 Bert 模型转换器输出原始隐藏状态,顶部没有任何特定的头部。”所以你不要需要使用“output_hidden_states = True,”)

from transformers import BertTokenizer, BertModel
import torch

tokenizer = BertTokenizer.from_pretrained("C:/Users/........./bert-base-uncased")
model = BertModel.from_pretrained("C:/Users/........./bert-base-uncased")

inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
outputs = model(**inputs)

last_hidden_states = outputs.last_hidden_state

如果此 不起作用 尝试使用这些方法之一加载 pytorch 模型

# Load all tensors onto the CPU
torch.load("C:/Users/........./bert-base-uncased/pytorch_model.bin", map_location=torch.device('cpu'))
# Load all tensors onto GPU 1
torch.load("C:/Users/........./bert-base-uncased/pytorch_model.bin", map_location=lambda storage, loc: storage.cuda(1))

如果pytorch 加载方法不起作用,我们了解到pytorch 1.4.0 与已发布的bert pytorch 模型之间存在pytorch 版本兼容性问题。或者您的 pytorch_model.bin 文件下载得不是很好。并且请注意pytorch 1.4.0发布的最后一个python是python3.4