我正在尝试使用下面的代码创建一个简单的模型,几乎直接取自文档,并收到错误
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
我希望我必须更改火炬配置或变量的类型,但不清楚在哪里,并且源代码不是很有帮助。 有人知道我哪里错了吗?
你到底想做什么?您似乎只是为模型初始化一个空包装器,然后在不指定或训练实际模型的情况下尝试使用
save_pretrained
保存该包装器(这意味着在训练后保存模型权重)。
您是否真的想要进行自定义预训练,即训练模型从头开始学习语言,还是想使用特定于任务的训练数据来微调新任务的基线模型?在后一种情况下,您可能应该使用像 huggingface trainer 这样的东西来开始,或者更直接地使用像 simpletransformers 或 FlairNLP 这样的 Huggingface 包装器。