如何使 Hugging Face 微调模型的 config.json 文件引用原始预训练模型的特定修订/提交?

问题描述 投票:0回答:1

我上传了这个模型:https://huggingface.co/pamessina/CXRFE,这是这个模型的微调版本:https://huggingface.co/microsoft/BiomedVLP-CXR-BERT-specialized

不幸的是,CXR-BERT-specialized 有这个问题:https://github.com/huggingface/transformers/issues/30412

我通过此拉取请求解决了问题:https://huggingface.co/microsoft/BiomedVLP-CXR-BERT-specialized/discussions/5

但是,当我保存微调后的模型时,config.json 文件不会指向特定的拉取请求,而是默认指向主分支,但 CXR-BERT-specialized 的主分支存在上述问题。因此,当我尝试使用我的模型时,它会触发底层模型主分支的错误,而如果使用我的拉取请求中的版本,这种情况不应该发生。

我已经尝试像这样明确执行我想要的修订:

model = AutoModel.from_pretrained('microsoft/BiomedVLP-CXR-BERT-specialized', revision="6cfc310817fb7d86762d888ced1e3709c57ac578", trust_remote_code=True)
...
model.save_pretrained("/home/pamessina/huggingface_models/CXRFE/")

但是保存的配置文件没有引用所需的修订版:

{
  "_name_or_path": "microsoft/BiomedVLP-CXR-BERT-specialized",
  "architectures": [
    "CXRBertModel"
  ],
  "attention_probs_dropout_prob": 0.25,
  "auto_map": {
    "AutoConfig": "microsoft/BiomedVLP-CXR-BERT-specialized--configuration_cxrbert.CXRBertConfig",
    "AutoModel": "microsoft/BiomedVLP-CXR-BERT-specialized--modeling_cxrbert.CXRBertModel"
  },
  "classifier_dropout": null,
  "gradient_checkpointing": false,
  "hidden_act": "gelu",
  "hidden_dropout_prob": 0.25,
  "hidden_size": 768,
  "initializer_range": 0.02,
  "intermediate_size": 3072,
  "layer_norm_eps": 1e-12,
  "max_position_embeddings": 512,
  "model_type": "cxr-bert",
  "num_attention_heads": 12,
  "num_hidden_layers": 12,
  "pad_token_id": 0,
  "position_embedding_type": "absolute",
  "projection_size": 128,
  "torch_dtype": "float32",
  "transformers_version": "4.41.2",
  "type_vocab_size": 2,
  "use_cache": true,
  "vocab_size": 30522
}

当我尝试在 Google Colab 上使用 Hugging Face 的微调模型时,出现以下错误:

enter image description here

如您所见,它正在调用与提交 ID“b59c09e51ab2410b24f4be214bbb49043fe63fc2”关联的版本,而它应该使用提交 ID“6cfc310817fb7d86762d888ced1e3709c57ac578”以及修复该错误的拉取请求。

我能做什么?

提前致谢。

nlp huggingface-transformers bert-language-model huggingface huggingface-hub
1个回答
0
投票

您是否尝试过向

revision
函数添加
save_pretrained
参数?

文档说

save_pretrained
接受
push_to_hub
参数,其中之一是
revision

huggingface_文档

喜欢:

model.save_pretrained("/home/pamessina/huggingface_models/CXRFE/", revision="6cfc310817fb7d86762d888ced1e3709c57ac578")
© www.soinside.com 2019 - 2024. All rights reserved.