如何使用 Hugginface PreTrainedModel 创建自定义模型

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

我正在尝试使用下面的代码创建一个简单的模型,几乎直接取自文档,并收到错误

import torch
from transformers import PretrainedConfig, PreTrainedModel
from typing import List

class TextIntentConfig(PretrainedConfig):
    def __init__(self, num_classes: int = 1, **kwargs):
        self.num_classes=num_classes
        super().__init__(**kwargs)

class TextIntentModel(PreTrainedModel):
    config_class = TextIntentConfig
    def __init__(self,config):
        super().__init__(config)
        self.config = config

config = TextIntentConfig(100)
model = TextIntentModel(config)
model.save_pretrained("custom_text_intent")

new_model = TextIntentModel.from_pretrained("./custom_text_intent")
print(new_model)

错误是:

Traceback (most recent call last):
  File "/<path_to_venv>/intent/src/text_intent.py", line 18, in <module>
    model.save_pretrained("custom_text_intent")
  File "/<path_to_venv>/intent/lib/python3.12/site-packages/transformers/modeling_utils.py", line 2538, in save_pretrained
    model_to_save.config.torch_dtype = str(dtype).split(".")[1]
                                       ~~~~~~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range

我希望我必须更改火炬配置或变量的类型,但不清楚在哪里,并且源代码不是很有帮助。 有人知道我哪里错了吗?

python pytorch huggingface-transformers huggingface
1个回答
0
投票

你到底想做什么?您似乎只是为模型初始化一个空包装器,然后在不指定或训练实际模型的情况下尝试使用

save_pretrained
保存该包装器(这意味着在训练后保存模型权重)。

您是否真的想要进行自定义预训练,即训练模型从头开始学习语言,还是想使用特定于任务的训练数据来微调新任务的基线模型?在后一种情况下,您可能应该使用像 huggingface trainer 这样的东西来开始,或者更直接地使用像 simpletransformersFlairNLP 这样的 Huggingface 包装器。

© www.soinside.com 2019 - 2024. All rights reserved.