Skip to content

[bug] 不兼容huggingface的最新版本dataset #1571

@xy3xy3

Description

@xy3xy3

ImportError: cannot import name get_imports from datasets.utils.py_utils when using MsDataset

描述这个 Bug

在使用 modelscope.msdatasets.MsDataset 加载 openslr/librispeech_asr(子集 clean)时,仅仅导入 MsDataset 就会报错:

from modelscope.msdatasets import MsDataset

报错信息:

Traceback (most recent call last):
  File "/proj/rwkv-slm/src/./download/download_librispeech.py", line 2, in <module>
    from modelscope.msdatasets import MsDataset
  File "/proj/rwkv-slm/src/.venv/lib/python3.12/site-packages/modelscope/msdatasets/__init__.py", line 2, in <module>
    from modelscope.msdatasets.ms_dataset import MsDataset
  File "/proj/rwkv-slm/src/.venv/lib/python3.12/site-packages/modelscope/msdatasets/ms_dataset.py", line 25, in <module>
    from modelscope.msdatasets.utils.hf_datasets_util import load_dataset_with_ctx
  File "/proj/rwkv-slm/src/.venv/lib/python3.12/site-packages/modelscope/msdatasets/utils/hf_datasets_util.py", line 53, in <module>
    from datasets.utils.py_utils import get_imports
ImportError: cannot import name 'get_imports' from 'datasets.utils.py_utils' (/proj/rwkv-slm/src/.venv/lib/python3.12/site-packages/datasets/utils/py_utils.py)

看起来 modelscope/msdatasets/utils/hf_datasets_util.py 依赖了 datasets.utils.py_utils.get_imports 这个函数,但是当前版本的 datasets==4.4.1 中并没有这个符号,导致导入 MsDataset 失败。

同一个文件中还从 datasets.load 里导入了 resolve_trust_remote_code 等符号,对 datasets 版本的要求似乎比当前文档 / 依赖声明中要高一些。

我目前的需求是使用:

from modelscope.msdatasets import MsDataset

ds = MsDataset.load(
    'openslr/librispeech_asr',
    subset_name='clean',
    split='validation',
)
# 以及 split='test'

来下载 openslr/librispeech_asrclean 子集(validationtest),但在导入阶段就失败了。


复现步骤

  1. 创建虚拟环境并安装依赖(我这里使用的是 uv,等价于用 pip 安装如下版本):

    # 项目 pyproject.toml 中的关键依赖
    modelscope==1.32.0
    datasets==4.4.1

    当前实际环境中的版本(uv pip list | grep -E "datasets|modelscope"):

    datasets   4.4.1
    modelscope 1.32.0
    
  2. 运行最小复现脚本:

    # test_msdataset_import.py
    from modelscope.msdatasets import MsDataset
    
    ds = MsDataset.load(
        'openslr/librispeech_asr',
        subset_name='clean',
        split='validation',
    )
    print(len(ds))
  3. 执行:

    cd /proj/rwkv-slm/src
    uv run python test_msdataset_import.py
  4. 得到上面的 ImportError: cannot import name 'get_imports' from 'datasets.utils.py_utils'


期望行为

  • 希望在当前 modelscope==1.32.0datasets==4.4.1 组合下能够正常导入并使用 MsDataset,或者
  • 如果 MsDataset 实际上只支持更高版本的 datasets,希望:
    • modelscopeinstall_requires / 文档中明确给出对 datasets 的版本要求;
    • 或者在不兼容的组合上给出更明确的报错提示(例如提示所需的最小 datasets 版本)。

目前看起来 modelscopedatasets 之间存在一些 API 兼容性问题(例如依赖 get_importsresolve_trust_remote_code 等在老版本中不存在的符号),但 pip/uv 安装时没有任何版本冲突提示。


环境信息(必填)

以下信息来自实际运行环境命令输出。

  • OS:

    uname -a

    输出:

    Linux DESKTOP-AFQV2GT 6.6.87.1-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Mon Apr 21 17:08:54 UTC 2025 x86_64 GNU/Linux
    

    (运行在 Windows 11 的 WSL2 环境中)

  • CPU:

    lscpu

    关键信息:

    Architecture: x86_64
    CPU(s):       16
    Vendor ID:    AuthenticAMD
    Model name:   AMD Ryzen 7 5700G with Radeon Graphics
    
  • Python 版本(虚拟环境内):

    /proj/rwkv-slm/src/.venv/bin/python3 -V

    输出:

    Python 3.12.11
    
  • 包管理工具:

    cd /proj/rwkv-slm/src
    uv --version

    输出:

    uv 0.7.15
    
  • 关键 Python 包版本:

    uv pip show modelscope datasets

    输出:

    Name: datasets
    Version: 4.4.1
    Location: /proj/rwkv-slm/src/.venv/lib/python3.12/site-packages
    Requires: dill, filelock, fsspec, httpx, huggingface-hub, multiprocess, numpy, packaging, pandas, pyarrow, pyyaml, requests, tqdm, xxhash
    Required-by: rwkv-fla
    ---
    Name: modelscope
    Version: 1.32.0
    Location: /proj/rwkv-slm/src/.venv/lib/python3.12/site-packages
    Requires: filelock, requests, setuptools, tqdm, urllib3
    Required-by:
    
  • 安装方式:使用 uv sync 按照项目 pyproject.toml 安装依赖;中途曾尝试 uv add "datasets>=2.14.0",但最终环境中 datasets 版本仍为 4.4.1

  • PyTorch:由项目依赖安装(torch==2.9.1torchaudio==2.9.1),GPU 为 NVIDIA CUDA 12 相关包(详细版本略)。


额外信息 / 猜测

  • 从报错来看,modelscope.msdatasets 假设 datasets.utils.py_utils 中存在 get_imports,但在 datasets==4.4.1 中并没有这个 API。
  • 同一个模块中也从 datasets.load 导入了 resolve_trust_remote_code 等符号,这些在部分版本的 datasets 中也不存在。
  • 目前看不出 modelscopedatasets 版本有明确的依赖限制,所以容易出现“安装成功但运行直接 ImportError”的情况。

@ 相关维护者

@wangxingjun778

附件:

两个包的链接
https://pypi.org/project/modelscope/#history
最新版 1.33.0
https://pypi.org/project/datasets/#history
最新版 4.4.1

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions