ChatGLM-Tuning icon indicating copy to clipboard operation
ChatGLM-Tuning copied to clipboard

抛出异常 No module named 'transformers_modules.'

Open dayu1979 opened this issue 1 year ago • 11 comments

在执行单元格: from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("../ChatGLM-6B/models/chatglm-6b, trust_remote_code=True)

抛出异常 No module named 'transformers_modules.' 当我切换transformers成4.26.1时 执行如下代码异常: model.enable_input_require_grads() 抛出 enable_input_require_grads属性不存在

因此我无法无法正常微调,希望能给出指示。

dayu1979 avatar Mar 30 '23 15:03 dayu1979

就是说如若按照默认的transformers4.27.1版本,在执行 tokenizer = AutoTokenizer.from_pretrained("../ChatGLM-6B/models/chatglm-6b, trust_remote_code=True)时报错 因此我切换到transformers成4.26.1,上面错误没有了,但是 结果另外一个单元格执行出错: enable_input_require_grads属性不存在

dayu1979 avatar Mar 30 '23 15:03 dayu1979

我和你一样的情况,但是transformers4.27.1版本换成"THUDM/ChatGLM-6B"就行了(就是不用本地的../ChatGLM-6B/models/chatglm-6b,换成huggingface的那个)

-------------------------------2023.4.5----------------------------------- 我找到原因了兄弟们,注意下在4.27版本transformers时使用本地模型得使用/,用\就不得行 eg: .\models\chatGLM 改为./models/chatGLM

chewing000111 avatar Mar 31 '23 06:03 chewing000111

同问。如何不用huggingface,用本地的完成呢

Schweik7 avatar Apr 03 '23 10:04 Schweik7

关注,finetune之后evaluate的时候,同样出现此错误: Traceback (most recent call last): File "D:\works\ChatGLM-6B\ptuning\main.py", line 393, in <module> main() File "D:\works\ChatGLM-6B\ptuning\main.py", line 107, in main config = AutoConfig.from_pretrained(model_args.model_name_or_path, trust_remote_code=True) File "D:\tools\miniconda\envs\llama\lib\site-packages\transformers\models\auto\configuration_auto.py", line 911, in from_pretrained config_class = get_class_from_dynamic_module( File "D:\tools\miniconda\envs\llama\lib\site-packages\transformers\dynamic_module_utils.py", line 399, in get_class_from_dynamic_module return get_class_in_module(class_name, final_module.replace(".py", "")) File "D:\tools\miniconda\envs\llama\lib\site-packages\transformers\dynamic_module_utils.py", line 177, in get_class_in_module module = importlib.import_module(module_path) File "D:\tools\miniconda\envs\llama\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked ModuleNotFoundError: No module named 'transformers_modules.' --------------------------------add---------------------------------- evaluate的时候更换为4.26.1可正常进行推理 -------------------------------add----------------------------------- transoformer版本为4.27.1时,把模型路径更改为绝对路径,一切正常

lastrei avatar Apr 04 '23 08:04 lastrei

关注,finetune之后evaluate的时候,同样出现此错误: Traceback (most recent call last): File "D:\works\ChatGLM-6B\ptuning\main.py", line 393, in <module> main() File "D:\works\ChatGLM-6B\ptuning\main.py", line 107, in main config = AutoConfig.from_pretrained(model_args.model_name_or_path, trust_remote_code=True) File "D:\tools\miniconda\envs\llama\lib\site-packages\transformers\models\auto\configuration_auto.py", line 911, in from_pretrained config_class = get_class_from_dynamic_module( File "D:\tools\miniconda\envs\llama\lib\site-packages\transformers\dynamic_module_utils.py", line 399, in get_class_from_dynamic_module return get_class_in_module(class_name, final_module.replace(".py", "")) File "D:\tools\miniconda\envs\llama\lib\site-packages\transformers\dynamic_module_utils.py", line 177, in get_class_in_module module = importlib.import_module(module_path) File "D:\tools\miniconda\envs\llama\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked ModuleNotFoundError: No module named 'transformers_modules.' --------------------------------add---------------------------------- evaluate的时候更换为4.26.1可正常进行推理

同上,把transformer降级为4.26.1即可正常运行。

YXHXianYu avatar Apr 05 '23 05:04 YXHXianYu

我找到原因了兄弟们,注意下在4.27版本transformers时使用本地模型得使用/,用\就不得行 eg: .\models\chatGLM 改为./models/chatGLM

chewing000111 avatar Apr 05 '23 14:04 chewing000111

鉴于chatglm模型目前更新非常频繁,而其又依赖于多个开源工具,最好不要使用绝对路径加载,而是选择跟保持huggingface hub 上的代码和模型同步(trust_remote_code)。如果你已经下载了 bin 模型文件(每个1-2G,总共8个),可以这样子做: 1、设置环境变量 HF_HOME 到指定的存放数据目录。 2、使用 trust_remote_code = True 参数 运行 from_pretrained,huggingface 会试图从 remote 下载 shards,这时请退出。 3、找到 $HF_HOME/hub/models--THUDM--chatglm-6b/blobs,将已下载 bin 文件拷贝到此处。 4、在 https://huggingface.co/THUDM/chatglm-6b 目录下,打开每个 bin 模型文件,找到其 SHA256。 5、用SHA256重新命名blobs下的 bin 文件 6、重新启动 from_pretrained

如果确实要用本地文件,可以将huggingface_hub 设置为offline 模式并且在 from_pretrained 时指定 local_files_only,具体参考 'mange cache'

gongfuchang avatar Apr 07 '23 02:04 gongfuchang

同问。如何不用huggingface,用本地的完成呢

tokenizer = AutoTokenizer.from_pretrained("./", trust_remote_code=True) model = AutoModel.from_pretrained("./", trust_remote_code=True).half().cuda() 模型文件在当前目录即可。我之前是“.”,也报错 No module named 'transformers_modules.',后来改成 “./”, 就OK了

hanswang73 avatar Apr 08 '23 08:04 hanswang73

鉴于chatglm模型目前更新非常频繁,而其又依赖于多个开源工具,最好不要使用绝对路径加载,而是选择跟保持huggingface hub 上的代码和模型同步(trust_remote_code)。如果你已经下载了 bin 模型文件(每个1-2G,总共8个),可以这样子做: 1、设置环境变量 HF_HOME 到指定的存放数据目录。 2、使用 trust_remote_code = True 参数 运行 from_pretrained,huggingface 会试图从 remote 下载 shards,这时请退出。 3、找到 $HF_HOME/hub/models--THUDM--chatglm-6b/blobs,将已下载 bin 文件拷贝到此处。 4、在 https://huggingface.co/THUDM/chatglm-6b 目录下,打开每个 bin 模型文件,找到其 SHA256。 5、用SHA256重新命名blobs下的 bin 文件 6、重新启动 from_pretrained

如果确实要用本地文件,可以将huggingface_hub 设置为offline 模式并且在 from_pretrained 时指定 local_files_only,具体参考 'mange cache'

我用本地bin文件,好像没设置那么多,就把 AutoTokenizer.from_pretrained 函数第一个参数改成 “./",然后确保 bin 文件和 py 文件在一个目录即可。centos 7

hanswang73 avatar Apr 08 '23 08:04 hanswang73

鉴于chatglm模型目前更新非常频繁,而其又依赖于多个开源工具,最好不要使用绝对路径加载,而是选择跟保持huggingface hub 上的代码和模型同步(trust_remote_code)。如果你已经下载了 bin 模型文件(每个1-2G,总共8个),可以这样子做: 1、设置环境变量 HF_HOME 到指定的存放数据目录。 2、使用 trust_remote_code = True 参数 运行 from_pretrained,huggingface 会试图从 remote 下载 shards,这时请退出。 3、找到 $HF_HOME/hub/models--THUDM--chatglm-6b/blobs,将已下载 bin 文件拷贝到此处。 4、在 https://huggingface.co/THUDM/chatglm-6b 目录下,打开每个 bin 模型文件,找到其 SHA256。 5、用SHA256重新命名blobs下的 bin 文件 6、重新启动 from_pretrained 如果确实要用本地文件,可以将huggingface_hub 设置为offline 模式并且在 from_pretrained 时指定 local_files_only,具体参考 'mange cache'

我用本地bin文件,好像没设置那么多,就把 AutoTokenizer.from_pretrained 函数第一个参数改成 “./",然后确保 bin 文件和 py 文件在一个目录即可。centos 7

选择 trust remote 而不是本地目录,不需要操心模型更新。

gongfuchang avatar Apr 10 '23 02:04 gongfuchang

使用绝路路径吧

energy888666 avatar Aug 11 '23 08:08 energy888666