Search code examples
pythonhuggingface-transformers

Error while loading a model from huggingface


I was trying to run autoformer from huggiingface I was getting this error. I have the latest version of transformers

KeyError                                  Traceback (most recent call last)
Cell In[2], line 6
  3 # Load model directly
  4 from transformers import AutoTokenizer, AutoformerForPrediction
  6 tokenizer = AutoTokenizer.from_pretrained("huggingface/autoformer-tourism- 
    monthly")
  7 model = AutoformerForPrediction.from_pretrained("huggingface/autoformer-tourism- 
    monthly")

File ~/anaconda3/lib/python3.11/site-packages/transformers/models/auto/tokenization_auto.py:841, in AutoTokenizer.from_pretrained(cls, pretrained_model_name_or_path, *inputs, **kwargs)
839 model_type = config_class_to_model_type(type(config).__name__)
840 if model_type is not None:
841     tokenizer_class_py, tokenizer_class_fast = TOKENIZER_MAPPING[type(config)]
842     if tokenizer_class_fast and (use_fast or tokenizer_class_py is None):
843         return tokenizer_class_fast.from_pretrained(pretrained_model_name_or_path, *inputs, **kwargs)

File ~/anaconda3/lib/python3.11/site- 
packages/transformers/models/auto/auto_factory.py:740, in _LazyAutoMapping.__getitem__(self, key)
738         model_name = self._model_mapping[mtype]
739         return self._load_attr_from_module(mtype, model_name)
740 raise KeyError(key)

KeyError: <class 'transformers.models.autoformer.configuration_autoformer.AutoformerConfig'>nter code here

I was running this code

# Load model directly
from transformers import AutoTokenizer, AutoformerForPrediction

tokenizer = AutoTokenizer.from_pretrained("huggingface/autoformer-tourism-monthly")
model = AutoformerForPrediction.from_pretrained("huggingface/autoformer-tourism-monthly")

this was link to hugging face


Solution

  • The model file which you shared does not have tokenizer file. Hence its throwing error. If you just load the model, the below code works fine.

    # Load model directly
    from transformers import AutoformerForPrediction
    
    model = AutoformerForPrediction.from_pretrained(""huggingface/autoformer-tourism-monthly"")
    model
    

    Output

    AutoformerForPrediction(
      (model): AutoformerModel(
        (scaler): AutoformerMeanScaler()
        (embedder): AutoformerFeatureEmbedder(
          (embedders): ModuleList(
            (0): Embedding(366, 2)
          )
        )
        (encoder): AutoformerEncoder(
          (value_embedding): AutoformerValueEmbedding(
            (value_projection): Linear(in_features=22, out_features=64, bias=False)
          )
          (embed_positions): AutoformerSinusoidalPositionalEmbedding(48, 64)
          (layers): ModuleList(
            (0-3): 4 x AutoformerEncoderLayer(
              (self_attn): AutoformerAttention(
                (k_proj): Linear(in_features=64, out_features=64, bias=True)
                (v_proj): Linear(in_features=64, out_features=64, bias=True)
                (q_proj): Linear(in_features=64, out_features=64, bias=True)
                (out_proj): Linear(in_features=64, out_features=64, bias=True)
              )
              (self_attn_layer_norm): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
              (activation_fn): GELUActivation()
              (fc1): Linear(in_features=64, out_features=32, bias=True)
              (fc2): Linear(in_features=32, out_features=64, bias=True)
              (final_layer_norm): AutoformerLayernorm(
                (layernorm): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
              )
              (decomp1): AutoformerSeriesDecompositionLayer(
                (avg): AvgPool1d(kernel_size=(25,), stride=(1,), padding=(0,))
              )
              (decomp2): AutoformerSeriesDecompositionLayer(
                (avg): AvgPool1d(kernel_size=(25,), stride=(1,), padding=(0,))
              )
            )
          )
          (layernorm_embedding): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
        )
        (decoder): AutoformerDecoder(
          (value_embedding): AutoformerValueEmbedding(
            (value_projection): Linear(in_features=22, out_features=64, bias=False)
          )
          (embed_positions): AutoformerSinusoidalPositionalEmbedding(48, 64)
          (layers): ModuleList(
            (0-3): 4 x AutoformerDecoderLayer(
              (self_attn): AutoformerAttention(
                (k_proj): Linear(in_features=64, out_features=64, bias=True)
                (v_proj): Linear(in_features=64, out_features=64, bias=True)
                (q_proj): Linear(in_features=64, out_features=64, bias=True)
                (out_proj): Linear(in_features=64, out_features=64, bias=True)
              )
              (activation_fn): GELUActivation()
              (self_attn_layer_norm): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
              (encoder_attn): AutoformerAttention(
                (k_proj): Linear(in_features=64, out_features=64, bias=True)
                (v_proj): Linear(in_features=64, out_features=64, bias=True)
                (q_proj): Linear(in_features=64, out_features=64, bias=True)
                (out_proj): Linear(in_features=64, out_features=64, bias=True)
              )
              (encoder_attn_layer_norm): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
              (fc1): Linear(in_features=64, out_features=32, bias=True)
              (fc2): Linear(in_features=32, out_features=64, bias=True)
              (final_layer_norm): AutoformerLayernorm(
                (layernorm): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
              )
              (decomp1): AutoformerSeriesDecompositionLayer(
                (avg): AvgPool1d(kernel_size=(25,), stride=(1,), padding=(0,))
              )
              (decomp2): AutoformerSeriesDecompositionLayer(
                (avg): AvgPool1d(kernel_size=(25,), stride=(1,), padding=(0,))
              )
              (decomp3): AutoformerSeriesDecompositionLayer(
                (avg): AvgPool1d(kernel_size=(25,), stride=(1,), padding=(0,))
              )
              (trend_projection): Conv1d(64, 22, kernel_size=(3,), stride=(1,), padding=(1,), bias=False, padding_mode=circular)
            )
          )
          (layernorm_embedding): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          (seasonality_projection): Linear(in_features=64, out_features=22, bias=True)
        )
        (decomposition_layer): AutoformerSeriesDecompositionLayer(
          (avg): AvgPool1d(kernel_size=(25,), stride=(1,), padding=(0,))
        )
      )
      (parameter_projection): ParameterProjection(
        (proj): ModuleList(
          (0-2): 3 x Linear(in_features=22, out_features=1, bias=True)
        )
        (domain_map): LambdaLayer()
      )
    )
    

    The repo used huggingface/autoformer-tourism-monthly is for time-series forecasting. Hence it won't contained any tokenizer file. If you are using to perform some time series prediction, you can refer the below Hugging face snippet here.