PaddleNLP icon indicating copy to clipboard operation
PaddleNLP copied to clipboard

TypeError: can't apply this __setattr__ to type object

Open cheeryoung79 opened this issue 3 years ago • 6 comments

在导入load_dataset时报错 ---------------------------------------------------------------------------TypeError Traceback (most recent call last)/tmp/ipykernel_92/3919490867.py in 5 import paddle 6 import paddle.nn.functional as F ----> 7 from paddlenlp.datasets import load_dataset 8 import paddlenlp 9 /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/init.py in 22 "Please import paddlenlp before datasets module to avoid download issues" 23 ) ---> 24 from . import data 25 from . import datasets 26 from . import embeddings /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/data/init.py in 14 15 from .collate import * ---> 16 from .data_collator import * 17 from .vocab import * 18 from .sampler import * /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/data/data_collator.py in 21 import warnings 22 from dataclasses import dataclass ---> 23 from ..transformers.tokenizer_utils_base import BatchEncoding, PretrainedTokenizerBase, PaddingStrategy 24 25 all = [ /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/transformers/init.py in 13 # limitations under the License. 14 ---> 15 from .model_utils import PretrainedModel, register_base_model 16 from .tokenizer_utils import PretrainedTokenizer, BPETokenizer, tokenize_chinese_chars, is_chinese_char, AddedToken, normalize_chars, tokenize_special_chars, convert_to_unicode 17 from .attention_utils import create_bigbird_rand_mask_idx_list /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/transformers/model_utils.py in 76 77 @six.add_metaclass(InitTrackerMeta) ---> 78 class PretrainedModel(Layer, GenerationMixin): 79 """ 80 The base class for all pretrained models. It mainly provides common methods /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/six.py in wrapper(cls) 892 if hasattr(cls, 'qualname'): 893 orig_vars['qualname'] = cls.qualname --> 894 return metaclass(cls.name, cls.bases, orig_vars) 895 return wrapper 896 /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/transformers/utils.py in init(cls, name, bases, attrs) 130 None) if 'init' in attrs else None 131 cls.init = InitTrackerMeta.init_and_track_conf( --> 132 init_func, pre_init_func, post_init_func) 133 super(InitTrackerMeta, cls).init(name, bases, attrs) 134 /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/transformers/utils.py in setattr(self, name, value) 170 def setattr(self, name, value): 171 value = adapt_stale_fwd_patch(self, name, value) --> 172 return super(InitTrackerMeta, self).setattr(name, value) TypeError: can't apply this setattr to type object

cheeryoung79 avatar Sep 13 '22 21:09 cheeryoung79

可否提供下使用的代码链接或者复现的代码呢

guoshengCS avatar Sep 14 '22 01:09 guoshengCS

遇到类似问题(直接import paddlenlp报错),能否帮忙看下

jshower avatar Sep 14 '22 09:09 jshower

遇到类似问题(直接import paddlenlp报错),能否帮忙看下

麻烦提供下使用的paddlenlp的版本看下呢

guoshengCS avatar Sep 14 '22 09:09 guoshengCS

遇到类似问题(直接import paddlenlp报错),能否帮忙看下

麻烦提供下使用的paddlenlp的版本看下呢

已解决,解决方案:编辑项目,项目框架设置为最新PaddlePaddle==2.3.2。

在AI Studio基础环境中,使用!pip install --upgrade paddlenlp,升级至2.4.0。

from functools import partial
import argparse
import os
import random
import time

import numpy as np
import paddle
import paddle.nn as nn
import paddle.nn.functional as F

import paddlenlp as ppnlp

运行至最后一行报错。

290532727.py in <module>
     10 import paddle.nn.functional as F
     11 
---> 12 import paddlenlp as ppnlp
     13 from paddlenlp.data import Stack, Tuple, Pad
     14 from paddlenlp.datasets import load_dataset
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/__init__.py in <module>
     22         "Please import paddlenlp before datasets module to avoid download issues"
     23     )
---> 24 from . import data
     25 from . import datasets
     26 from . import embeddings
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/data/__init__.py in <module>
     14 
     15 from .collate import *
---> 16 from .data_collator import *
     17 from .vocab import *
     18 from .sampler import *
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/data/data_collator.py in <module>
     21 import warnings
     22 from dataclasses import dataclass
---> 23 from ..transformers.tokenizer_utils_base import BatchEncoding, PretrainedTokenizerBase, PaddingStrategy
     24 
     25 __all__ = [
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/transformers/__init__.py in <module>
     13 # limitations under the License.
     14 
---> 15 from .model_utils import PretrainedModel, register_base_model
     16 from .tokenizer_utils import PretrainedTokenizer, BPETokenizer, tokenize_chinese_chars, is_chinese_char, AddedToken, normalize_chars, tokenize_special_chars, convert_to_unicode
     17 from .attention_utils import create_bigbird_rand_mask_idx_list
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/transformers/model_utils.py in <module>
     76 
     77 @six.add_metaclass(InitTrackerMeta)
---> 78 class PretrainedModel(Layer, GenerationMixin):
     79     """
     80     The base class for all pretrained models. It mainly provides common methods
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/six.py in wrapper(cls)
    892         if hasattr(cls, '__qualname__'):
    893             orig_vars['__qualname__'] = cls.__qualname__
--> 894         return metaclass(cls.__name__, cls.__bases__, orig_vars)
    895     return wrapper
    896 
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/transformers/utils.py in __init__(cls, name, bases, attrs)
    130                                  None) if '__init__' in attrs else None
    131         cls.__init__ = InitTrackerMeta.init_and_track_conf(
--> 132             init_func, pre_init_func, post_init_func)
    133         super(InitTrackerMeta, cls).__init__(name, bases, attrs)
    134 
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/transformers/utils.py in __setattr__(self, name, value)
    170     def __setattr__(self, name, value):
    171         value = adapt_stale_fwd_patch(self, name, value)
--> 172         return super(InitTrackerMeta, self).__setattr__(name, value)
TypeError: can't apply this __setattr__ to type object

项目设置中的项目框架PaddlePaddle==2.1.2。

(upgrade中会报需求pyzmq-18.1.1,但pyzmq-18.1.1又不符合jupyter-client 7.3.5的需求。)

parl 1.4.1 requires pyzmq==18.1.1, but you have pyzmq 23.2.1 which is incompatible.

CCWUCMCTS avatar Sep 22 '22 01:09 CCWUCMCTS

Python版本: python 3.7
框架版本: PaddlePaddle 2.1.2
paddlenlp:2.4.0 

上述版本会报这个错,将paddlenlp 降级为2.0.8 就不会报错啦

GerogeLiu avatar Sep 25 '22 09:09 GerogeLiu

遇到类似的问题,降低版本可以解决这个问题,但是又引入了其他错误。。。。

lylcst avatar Nov 02 '22 08:11 lylcst

我也遇到这个问题, import paddle 报错

fengyunzaidushi avatar Nov 15 '22 00:11 fengyunzaidushi

python 3.7 paddlenlp 2.4.2 paddlepaddle-gpu 2.1.3.post112,

一样的TypeError: can't apply this setattr to type object

Traceback (most recent call last):
  File "web.py", line 15, in <module>
    from paddlenlp import Taskflow
  File "/opt/conda/lib/python3.7/site-packages/paddlenlp/__init__.py", line 24, in <module>
    from . import data
  File "/opt/conda/lib/python3.7/site-packages/paddlenlp/data/__init__.py", line 16, in <module>
    from .data_collator import *
  File "/opt/conda/lib/python3.7/site-packages/paddlenlp/data/data_collator.py", line 23, in <module>
    from ..transformers.tokenizer_utils_base import BatchEncoding, PretrainedTokenizerBase, PaddingStrategy
  File "/opt/conda/lib/python3.7/site-packages/paddlenlp/transformers/__init__.py", line 15, in <module>
    from .model_utils import PretrainedModel, register_base_model
  File "/opt/conda/lib/python3.7/site-packages/paddlenlp/transformers/model_utils.py", line 78, in <module>
    class PretrainedModel(Layer, GenerationMixin):
  File "/opt/conda/lib/python3.7/site-packages/six.py", line 894, in wrapper
    return metaclass(cls.__name__, cls.__bases__, orig_vars)
  File "/opt/conda/lib/python3.7/site-packages/paddlenlp/transformers/utils.py", line 132, in __init__
    init_func, pre_init_func, post_init_func)
  File "/opt/conda/lib/python3.7/site-packages/paddlenlp/transformers/utils.py", line 172, in __setattr__
    return super(InitTrackerMeta, self).__setattr__(name, value)
TypeError: can't apply this __setattr__ to type object

SoulOH avatar Nov 15 '22 13:11 SoulOH

This issue is stale because it has been open for 60 days with no activity. 当前issue 60天内无活动,被标记为stale。

github-actions[bot] avatar Feb 25 '23 00:02 github-actions[bot]

This issue was closed because it has been inactive for 14 days since being marked as stale. 当前issue 被标记为stale已有14天,即将关闭。

github-actions[bot] avatar Mar 12 '23 00:03 github-actions[bot]

升级一下paddle版本

w5688414 avatar May 16 '23 02:05 w5688414