【问题标题】:transformers and BERT downloading to your local machine变压器和 BERT 下载到您的本地机器
【发布时间】:2021-11-16 01:52:22
【问题描述】:

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

在我的工作场所,我们可以访问转换器和 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

【问题讨论】:

    标签: python torch bert-language-model transformer doc2vec


    【解决方案1】:

    回答“###update1”错误:'OSErrr:无法从 pytorch 检查点文件加载权重,用于 bert-base-uncased/pytorch_model.bin 中的 bert-base-uncased2/从 TF 2 检查点,请设置 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 模型已经返回隐藏状态,如下所述:“裸 Bert 模型转换器输出原始隐藏状态,没有任何特定的头部。”所以你不需要使用“output_hidden_​​states =真的”)

    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

    【讨论】:

    • 代码行 model = BertForMaskedLM.from_pretrained("C:/Users/........./bert-base-uncased") 出现相同错误,标记器正常工作
    【解决方案2】:

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

    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(终端):a.git lfs install 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. 将它们都放在一个名为“yourfilename”的文件夹中

    4. 将其用作:

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

    【讨论】:

    • 我需要将文件从huggingface.co/bert-base-uncased/blob/main/pytorch_model.bin重命名为pytorch_model.bin吗?
    • 不能在任何地方重命名
    • 当我尝试 `model = BertModel.from_pretrained("C:/Users/........./yourfilename"), i get message OSErrr: 无法从 pytorch 检查点文件加载权重对于 bert-base-uncased 在 bert-base-uncased/pytorch_model.bin 如果您尝试从 TF 2 检查点加载 pytroch 模型,请设置 from_tf=True`
    • 感谢您的更新。但仍然出现###update1 中提到的错误
    • 我得到了这个错误,但它是预期的 -> 初始化 BertModel 时未使用 C:/Users/bert-base-uncased2 处模型检查点的某些权重:['cls.predictions.transform.LayerNorm .bias','cls.predictions.transform.dense.bias','cls.predictions.decoder.weight','cls.predictions.transform.LayerNorm.weight','cls.seq_relationship.bias','cls.predictions .transform.dense.weight', 'cls.seq_relationship.weight', 'cls.predictions.bias']
    猜你喜欢
    • 2021-08-29
    • 2023-03-13
    • 2020-04-29
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多