deepseek-ai / DeepSeek-VL

DeepSeek-VL: Towards Real-World Vision-Language Understanding
https://huggingface.co/spaces/deepseek-ai/DeepSeek-VL-7B
MIT License
2.08k stars 195 forks source link

ImportError: cannot import name 'Mapping' from 'collections' #4

Closed NickLucche closed 8 months ago

NickLucche commented 8 months ago

Hey, thanks a lot for sharing this great accomplishment with the community! I have just tried running the cli_chat on Python3.11 and I get ImportError: cannot import name 'Mapping' from 'collections' at https://github.com/deepseek-ai/DeepSeek-VL/blob/main/deepseek_vl/models/modeling_vlm.py#L21. I believe this is due to attrdict being broken with python3.10+ https://stackoverflow.com/questions/72361026/how-can-i-get-attrdict-module-working-in-python.

Easiest thing would be to update Readme/requirements to specify >=python3.8, <3.10.

Fodark commented 8 months ago

I solved it by patching collections before loading deepseek_vl

Something like:

# Monkey patch collections
import collections
import collections.abc
for type_name in collections.abc.__all__:
    setattr(collections, type_name, getattr(collections.abc, type_name))

from deepseek_vl.models import VLChatProcessor, MultiModalityCausalLM

if you want to stay on Python 3.10.

insightbuilder commented 8 months ago

I did a bit of hardway... went to each of the files in the lib folders and moded it...

After doing it, came for posting the solution to find that, there is a smarter solution. Thanks to Fodark.

import collections.abc
for type_name in collections.abc.__all__:
    setattr(collections, type_name, getattr(collections.abc, type_name))
Fodark commented 8 months ago

Fixed in #21