[AI/LLM] ModelScope/魔搭:开源AI大模型社区

1 概述

产品介绍

  • ModelScope(魔搭社区) 是由阿里达摩院联手中国计算机学会(CCF)开源发展委员会2022年11月在云栖大会推出的AI模型开源社区

其核心定位是"模型即服务"(Model-as-a-Service),旨在降低AI模型的使用门槛,让开发者能够像搭积木一样快速构建AI应用。

  • URL

诞生的背景与原因

  • AI模型碎片化问题:传统AI开发流程中,寻找模型、配置环境、编写代码、训练微调、部署上线等环节割裂,门槛极高
  • 中文AI生态缺失:国际上Hugging Face等平台以英文为主,中文模型和文档支持不足
  • 技术普惠需求:阿里云希望通过开源推动AI技术民主化,让更多开发者能够便捷使用大模型能力

解决的核心问题

问题 解决方案
模型获取困难 汇聚12万+开源模型,覆盖文本、图像、语音、视频等多模态
环境配置复杂 提供标准化Docker镜像和一键安装脚本
部署门槛高 支持一键部署至阿里云边缘云节点(SwingDeploy)
训练成本高 提供免费GPU算力(Notebook环境)和分布式训练框架
中文支持弱 深度优化中文模型(Qwen系列等),提供中文文档和技术支持

发展历程

时间节点 里程碑事件
2022年11月 在云栖大会正式推出,定位为AI大模型开源社区
2023年8月 模型下载量超4500万次,与清华、北大等20余所高校建立合作
2024年3月 发起"ModelScope-Sora开源计划",推动中国类Sora模型研发
2024年8月 举办AI夏令营及技术竞赛
2025年2月 模型下载量突破1亿次,开发者规模达280万
2025年5月 实现大模型一键部署至阿里云边缘云节点
2025年10月 汇聚超12万个开源模型和5500余项MCP服务,服务全球200余国家超2000万用户
2025年 上线国际版,发布科学智能专区与AIGC创作引擎FlowBench
2026年1月 杭州市宣布从数据、算力、空间等方面支持魔搭社区发展
2026年1月 魔搭社区代表参加世界互联网大会亚太峰会研究报告发布推进会
2026年3月 阿里云CTO周靖人代管模型一号位,阿里重申坚持开源策略
2026年3月 线下开发者中心已聚集超过100个开发者团体

核心功能

  • ModelScope提供从【模型发现】到【部署运维】的全生命周期服务

1. 模型库(ModelHub)

  • 12万+开源模型:涵盖Qwen、Kimi、DeepSeek、Llama、GLM等头部模型
  • 多模态覆盖:文本、图像、语音、视频、3D点云、科学计算
  • 参数规模:支持0.5B至110B参数规模的模型

2. 数据集(DatasetHub)

  • 提供MsDataset类统一管理数据集
  • 支持流式加载超大规模数据集(10TB+)
  • 内置1200+中文特色数据集

3. 开发工具链

工具 功能描述 GitHub地址
ms-swift 大模型训练/推理/部署一站式框架,支持600+ LLMs和400+多模态模型 modelscope/ms-swift
EvalScope 大模型评估和性能基准测试框架,支持100+评估数据集 modelscope/evalscope
ModelScope-Agent 智能体开发框架,支持API工具检索和任务规划 modelscope/ms-agent
Twinkle 分布式训练框架,支持Megatron并行策略 modelscope/twinkle

4. 部署能力

  • CPU/GPU资源选择:灵活适配不同算力场景
  • SwingDeploy:一键部署至阿里云边缘云节点
  • MaaS体系:模型即服务,按需付费与弹性伸缩

5. 创空间(Studio)

  • 可视化AI应用构建平台
  • 累计上线2.3万个AI应用,覆盖20+行业
  • 约95%由个人开发者完成

主要特点

1. 中文优化深度领先

  • 40%+模型为中文优化模型
  • 针对中文分词、成语理解、古汉语翻译等专项调优
  • 中文技术文档完善,社区响应平均2小时

2. 开箱即用体验

  • 统一pipeline接口设计,一行代码调用模型
  • 官方提供标准化Docker镜像
  • 免费GPU算力支持在线体验

3. 垂直领域深耕

  • 金融舆情分析、电商评论情感分析等行业解决方案
  • 科学智能专区(AI for Science)
  • 工业质检、医疗影像等专有模型

4. 全链路支持

  • 覆盖预训练、微调、推理、评估、量化、部署全流程
  • 支持GRPO、DPO、KTO等最新训练算法
  • 集成vLLM、SGLang、LMDeploy等推理加速引擎

5. 开源生态活跃

  • 与20余所高校联合开发课程
  • 定期举办AI编程马拉松、创客松等活动
  • 开发者中20.74%来自50人以下小组织,13.7%为独立开发者

局限性

局限性 具体表现 影响范围
国际化程度有限 相比Hugging Face的30万+模型,全球影响力较弱 国际开发者吸引力不足
模型数量差距 12万 vs 30万+(Hugging Face) 长尾模型选择较少
依赖阿里云生态 深度绑定阿里云服务,私有化部署灵活性受限 非阿里云用户迁移成本较高
英文支持相对弱 英文模型和文档覆盖度不如Hugging Face 国际化项目支持有限
社区规模差距 GitHub Star数、Fork数低于Hugging Face 第三方贡献和插件生态相对薄弱
部分领域模型缺失 某些前沿研究模型首发在Hugging Face 需要跨平台获取最新模型

适用场景

1. 中文NLP应用开发

  • 智能客服、知识库问答
  • 文本分类、情感分析、实体识别
  • 金融舆情监控、法律文书审核

2. 多模态AI应用

  • 图像生成与编辑(Qwen-Image-Edit)
  • 视频理解与生成(ModelScope-Sora计划)
  • 语音识别与合成

3. 大模型微调与部署

  • 基于私有数据的领域模型微调
  • 企业级模型服务化部署
  • 边缘计算场景模型推理

4. AI Agent开发

  • 智能体任务规划与工具调用
  • RAG检索增强生成系统
  • 自动化工作流构建

5. 教育与科研

  • AI教学实训平台
  • 学术研究模型验证
  • 学生创新项目孵化

同类竞品

竞品 核心定位 优势 劣势 适用场景
Hugging Face 全球AI开源社区 30万+模型、国际化生态、Transformers标准 中文支持弱、国内访问慢 国际研究、前沿探索
GitHub 通用代码托管 代码为主、版本管理完善 无专门AI模型支持、需自行部署 代码协作、项目托管
PaddlePaddle(百度) 国产深度学习框架 中文文档完善、国产芯片支持 生态相对封闭、模型数量较少 国产化替代、飞桨生态
Modelers(华为) 昇腾AI模型平台 国产算力优化 生态起步阶段 昇腾芯片用户
阿里百炼 商业AI服务平台 一站式服务、企业级支持 按需付费、非开源 企业商业化应用

ModelScope vs Hugging Face 详细对比

对比维度 ModelScope Hugging Face
核心定位 中文AI开源社区 全球AI开源社区
模型数量 12万+(中文为主) 30万+(全球)
中文优化 ⭐⭐⭐⭐⭐ ⭐⭐⭐
在线体验 免费GPU,直接运行 部分有Demo
社区语言 中文为主 英文为主
部署支持 完整Pipeline+边缘云 代码+推理
成本 完全免费 大部分免费
API响应延迟(中文) 120ms±15 210ms±30

发展趋势

开源社区活跃趋势

  • 开发者规模:从2023年的数十万增长至2025年的280万+,预计2026年突破500万
  • 模型数量:从2022年的数千增长至2025年的12万+,年增长率超过100%
  • 高校合作:与20余所顶尖高校建立深度合作,形成产学研闭环

Star/Fork趋势

以核心子项目 ms-swift 为例(截至2026年2月):

  • GitHub Stars: 12,799+(日增26+)
  • GitHub Forks: 1,218+
  • 入选GitHub Python热点项目榜单

项目发展趋势总结

ModelScope正在从"国产替代"走向"生态引领"——依托阿里云基础设施优势和中文场景深耕,逐步构建起覆盖模型开发、训练、部署、应用的全栈开源生态,成为中国最大的AI开源社区,并在全球开源版图中占据重要一席。未来将持续强化多模态能力、科学智能(AI4S)和边缘部署优势,推动"模型即服务"理念在千行百业落地。

2 工作原理与架构

整体架构

ModelScope采用分层模块化设计,核心组件包括:

┌─────────────────────────────────────────────────────────────┐
│                      应用层 (Application)                    │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐   │
│  │  创空间     │  │  Notebook   │  │  API服务           │   │
│  │  (Studio)   │  │  (在线开发)   │  │  (MaaS)            │   │
│  └─────────────┘  └─────────────┘  └─────────────────────┘   │
├─────────────────────────────────────────────────────────────┤
│                      服务层 (Service)                        │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐   │
│  │  Pipeline   │  │  Trainer    │  │  Server             │   │
│  │  (推理管道)  │  │  (训练框架)  │  │  (模型服务)         │   │
│  └─────────────┘  └─────────────┘  └─────────────────────┘   │
├─────────────────────────────────────────────────────────────┤
│                      模型层 (Model)                          │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐   │
│  │  ModelHub   │  │  MsDataset  │  │  Preprocessor       │   │
│  │  (模型仓库)  │  │  (数据集)   │  │  (预处理)           │   │
│  └─────────────┘  └─────────────┘  └─────────────────────┘   │
├─────────────────────────────────────────────────────────────┤
│                      基础设施层 (Infrastructure)               │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐   │
│  │  阿里云OSS  │  │  PAI-DSW    │  │  SwingDeploy        │   │
│  │  (存储)     │  │  (计算)     │  │  (边缘部署)         │   │
│  └─────────────┘  └─────────────┘  └─────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

Pipeline核心架构

Pipeline是ModelScope推理服务的核心抽象,采用三层设计

1. 基础层:Pipeline抽象基类

class Pipeline(ABC):
    def __init__(self, model, preprocessor, device):  # 初始化资源
    def preprocess(self, inputs):                     # 数据预处理
    def forward(self, inputs):                        # 模型推理
    def postprocess(self, inputs):                    # 结果格式化
    def __call__(self, inputs):                       # 统一调用接口

设计原则

  • 依赖注入:通过构造函数注入模型、预处理工具和计算设备
  • 组件解耦:各组件可独立替换,如Stable Diffusion管道重写preprocess支持文生图

2. 管理层:构建器与注册表

def build_pipeline(cfg: ConfigDict, task_name: str = None):
    # 1. 解析配置文件确定管道类型
    # 2. 根据任务类型加载预处理器
    # 3. 初始化模型并分配设备
    # 4. 返回实例化的管道对象
  • 任务注册表机制:开发者注册新任务类型即可自动获得Pipeline支持
  • 已内置100+任务管道:覆盖CV/NLP/Audio等多模态场景

3. 执行层:统一调用接口

from modelscope.pipelines import pipeline

# 创建管道实例(自动下载模型)
word_seg = pipeline('word-segmentation', 
                    model='damo/nlp_structbert_word-segmentation_chinese-base')

# 执行推理
result = word_seg('欢迎使用ModelScope模型服务框架')

Trainer训练框架架构

from modelscope.trainers import build_trainer
from modelscope.metainfo import Trainers

# 配置训练参数
kwargs = dict(
    model='damo/nlp_gpt3_text-generation_1.3B',
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    max_epochs=10,
    work_dir='./gpt3_poetry'
)

# 构建训练器并开始训练
trainer = build_trainer(name=Trainers.gpt3_trainer, default_args=kwargs)
trainer.train()

核心组件

  • Dataset模块:MsDataset统一管理数据加载
  • Model模块:支持PyTorch、TensorFlow等多框架
  • Optimizer模块:集成主流优化器和学习率调度
  • Callback模块:支持训练过程监控和自定义扩展

ms-swift架构(训练推理框架)

  • ms-swift是ModelScope社区的大模型训练推理工具箱,架构如下:
┌─────────────────────────────────────────────────────────────┐
│                      算法层 (Algorithms)                     │
│  GRPO / DAPO / GSPO / SAPO / DPO / KTO / SFT / CPT ...     │
├─────────────────────────────────────────────────────────────┤
│                      并行层 (Parallelism)                    │
│  TP (Tensor Parallel) / PP (Pipeline Parallel) /             │
│  CP (Context Parallel) / EP (Expert Parallel) / VPP          │
├─────────────────────────────────────────────────────────────┤
│                      引擎层 (Engines)                        │
│  vLLM / SGLang / LMDeploy / Transformers                    │
├─────────────────────────────────────────────────────────────┤
│                      模型层 (Models)                         │
│  Qwen3 / Qwen3.5 / DeepSeek-R1 / Llama4 / GLM4.5 ...       │
└─────────────────────────────────────────────────────────────┘

ModelScope-Agent架构

Agent框架采用任务规划-执行-反馈的循环机制:

用户请求 → LLM规划调度 → API工具检索 → 执行API → 结果返回LLM → 整理回复 → 用户

核心能力

  • 工具检索引擎:基于文本向量模型自动检索相关API
  • 多轮对话支持:维护上下文状态,支持复杂任务分解
  • 配套数据集:MSAgent-Bench(中英文工具指令调用数据集)

3 使用指南

安装部署

环境要求

配置项 最低要求 推荐配置
Python版本 3.7+ 3.8-3.11
内存 8GB 16GB+
GPU 可选 NVIDIA显卡(CUDA 11.0+)
操作系统 Linux/Windows/macOS Ubuntu 20.04+

Linux系统部署

1. 基础环境准备

# 更新系统包管理器
sudo apt update && sudo apt upgrade -y

# 安装必要依赖
sudo apt install -y python3 python3-pip python3-venv git build-essential

2. 创建虚拟环境

  • 安装 conda
  • 创建虚拟环境
# 使用conda(推荐)
conda create -n modelscope python=3.10 -y
conda activate modelscope

# 或使用Python内置venv
python3 -m venv modelscope-env
source modelscope-env/bin/activate

3. 安装ModelScope核心库

# 基础安装
pip install modelscope

# 或指定稳定版本
pip install modelscope==1.15.1

# 从源码安装(开发者)
git clone https://github.com/modelscope/modelscope.git
cd modelscope
pip install -e .

4. 安装领域扩展(按需)

# 计算机视觉模型支持
pip install "modelscope[cv]"

# 自然语言处理扩展
pip install "modelscope[nlp]"

# 音频处理能力
pip install "modelscope[audio]"

# 多模态模型支持
pip install "modelscope[multi-modal]"

Windows系统部署

1. 开发环境准备

  • 安装Python 3.8+(64位版本)
  • 安装Git客户端
  • 安装Visual Studio Build Tools(可选,用于编译某些依赖)

2. 创建虚拟环境

# 创建虚拟环境
python -m venv modelscope-env

# 激活环境
modelscope-env\Scripts\activate

3. 安装与验证

pip install modelscope

Windows注意事项

  • 音频模型支持有限,建议Linux环境
  • 注意路径中的中文字符问题
  • 部分CV模型需要额外安装mmcv-full

Docker部署(推荐生产环境)

# 拉取官方镜像
docker pull registry.modelscope.cn/modelscope/modelscope:latest

# 运行容器
docker run -it --gpus all \
  -v /path/to/models:/models \
  -p 5000:5000 \
  registry.modelscope.cn/modelscope/modelscope:latest

关键操作

0. 模型下载

  • shell 方式

1. 模型推理(Pipeline)

from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

# 情感分析
semantic_pipeline = pipeline(
    Tasks.text_classification,
    model='damo/nlp_structbert_sentiment-analysis_chinese-base'
)

result = semantic_pipeline('这个产品使用体验非常棒!')
print(result)
# 输出: {'text': '这个产品使用体验非常棒!', 'labels': ['positive'], 'scores': [0.998]}

2. 模型微调(Trainer)

from modelscope.metainfo import Trainers
from modelscope.msdatasets import MsDataset
from modelscope.trainers import build_trainer

# 加载数据集
train_dataset = MsDataset.load('chinese-poetry-collection', split='train')
eval_dataset = MsDataset.load('chinese-poetry-collection', split='test')

# 配置训练参数
kwargs = dict(
    model='damo/nlp_gpt3_text-generation_1.3B',
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    max_epochs=10,
    work_dir='./gpt3_poetry'
)

# 构建训练器并开始训练
trainer = build_trainer(name=Trainers.gpt3_trainer, default_args=kwargs)
trainer.train()

3. 数据集的下载与加载(MsDataset)

数据集的下载

  • shell 方式

亲测

# step1 安装 modelscope
pip install modelscope

# step2 模型下载
## 注: 默认存放路径 = C:\Users\{User}\.cache\modelscope\hub\datasets\KuugoRen\Chinese_Law
modelscope download --dataset KuugoRen/Chinese_Law

数据集的加载

from modelscope.msdatasets import MsDataset

# 加载公共数据集
dataset = MsDataset.load(
    'clue',
    subset_name='afqmc',
    split='train',
    download_mode='reuse_dataset_if_exists'  # 缓存优先
)

# 流式加载超大规模数据集
large_dataset = MsDataset.load(
    'Uni-Fold-Data',
    namespace='DPTech',
    split='train',
    use_streaming=True,  # 开启流式加载
    stream_batch_size=16
)

# 加载本地数据集
local_dataset = MsDataset.load('/path/to/local/data.csv', split='train')
本地数据集的加载
方法1:使用本地路径加载

未亲测

from modelscope.msdatasets import MsDataset

# 直接使用本地缓存目录的路径
dataset = MsDataset.load(
    dataset_name='C:/Users/EDY/.cache/modelscope/hub/datasets/KuugoRen/Chinese_Law',
    subset_name='default',  # 如果有子集,指定子集名称
    split='train'  # 指定数据分割
)
方法2:使用 dataset_config.json 配置

如果数据集目录下有 dataset_config.json 文件:

未亲测

from modelscope.msdatasets import MsDataset

dataset = MsDataset.load(
    dataset_name='KuugoRen/Chinese_Law',
    data_dir='C:/Users/EDY/.cache/modelscope/hub/datasets/KuugoRen/Chinese_Law'
)
方法3:完整示例代码

未亲测

from modelscope.msdatasets import MsDataset

# 设置本地数据集路径
data_path = r'C:\Users\EDY\.cache\modelscope\hub\datasets\KuugoRen\Chinese_Law'

try:
    # 加载数据集
    dataset = MsDataset.load(
        dataset_name=data_path,
        subset_name='default',
        split='train'
    )
    
    # 查看数据集信息
    print(f"数据集大小:{len(dataset)}")
    print(f"数据集列名:{dataset.column_names}")
    
    # 访问第一条数据
    if len(dataset) > 0:
        print(f"第一条数据:{dataset[0]}")
        
except Exception as e:
    print(f"加载失败:{e}")
检查数据集结构

首先确认你的数据集目录结构是否正确:

Chinese_Law/
├── dataset_config.json    # 配置文件(重要)
├── train/
│   └── *.parquet / *.json / *.csv
├── test/
│   └── *.parquet / *.json / *.csv
└── validation/
    └── *.parquet / *.json / *.csv
  • 如果没有配置文件,可能需要先创建或从 ModelScope 下载完整的元数据。

4. 模型服务部署(Server)

from modelscope.server import start_service

# 启动模型服务
start_service(
    host="0.0.0.0",
    port=5000,
    model_path="damo/nlp_structbert_word-segmentation_chinese-base"
)

或使用CLI工具:

modelscope server start --config configs/examples/configuration.yaml

5. 离线模型部署

from modelscope.hub.snapshot_download import snapshot_download

# 下载模型到本地
model_dir = snapshot_download(
    'iic/nlp_gte_sentence-embedding_chinese-large',
    revision='v1.0.0'
)
print(f"模型已下载至:{model_dir}")

# 离线加载模型
from modelscope.pipelines import pipeline
offline_pipeline = pipeline(
    'sentence-embedding',
    model=model_dir  # 使用本地路径
)

核心 API

modelscope.msdatasets.MsDataset#load:加载数据集

解释 modelscope 的 modelscope.msdatasets.MsDataset#load 这个API 的各个参数

...

class MsDataset:
    ...

    def load(
        dataset_name: Union[str, list],
        namespace: Optional[str] = DEFAULT_DATASET_NAMESPACE,
        target: Optional[str] = None,
        version: Optional[str] = DEFAULT_DATASET_REVISION,
        hub: Optional[Hubs] = Hubs.modelscope,
        subset_name: Optional[str] = None,
        split: Optional[str] = None,
        data_dir: Optional[str] = None,
        data_files: Optional[Union[str, Sequence[str],
                                   Mapping[str, Union[str,
                                                      Sequence[str]]]]] = None,
        download_mode: Optional[DownloadMode] = DownloadMode.
        REUSE_DATASET_IF_EXISTS,
        cache_dir: Optional[str] = MS_DATASETS_CACHE,
        features: Optional[Features] = None,
        use_streaming: Optional[bool] = False,
        stream_batch_size: Optional[int] = 1,
        custom_cfg: Optional[Config] = Config(),
        token: Optional[str] = None,
        dataset_info_only: Optional[bool] = False,
        trust_remote_code: Optional[bool] = False,
        **config_kwargs,
    ) -> Union[dict, 'MsDataset', NativeIterableDataset]:
        ...

我来为你详细解释 modelscope.msdatasets.MsDataset.load 这个API的各个参数:

核心参数
dataset_name (Union[str, list])
  • 必需参数
  • 数据集的名称或标识符
  • 可以是单个字符串,也可以是列表(用于加载多个数据集)
namespace (Optional[str])
  • 默认: DEFAULT_DATASET_NAMESPACE
  • 数据集的命名空间,用于组织和区分不同来源的数据集
  • 类似于GitHub的username/repo中的username概念
target (Optional[str])
  • 默认: None
  • 指定要加载的数据集目标路径或特定资源
version (Optional[str])
  • 默认: DEFAULT_DATASET_REVISION
  • 数据集的版本号或修订版本(如Git commit hash或tag)
  • 用于确保可复现性
hub (Optional[Hubs])
  • 默认: Hubs.modelscope
  • 指定从哪个Hub加载数据集
  • 选项包括:Hubs.modelscopeHubs.huggingface
数据集选择参数
subset_name (Optional[str])
  • 默认: None
  • 数据集的子集名称
  • 某些数据集包含多个子集(如多语言数据集中的特定语言)
split (Optional[str])
  • 默认: None

  • 指定要加载的数据分割

  • 常见值:"train""test""validation""train+test"

  • split 的核心作用:

split 参数不是随便取值的,它有特定的意义和约束。

split 用于指定加载数据集的哪个数据分割(子集)。这源于机器学习的标准实践:将完整数据集划分为不同用途的子集。

  • 常见的标准 split
Split 值 含义 用途
"train" 训练集 模型训练
"test" 测试集 最终模型评估
"validation" / "dev" 验证集/开发集 调参、早停、模型选择
"train+test" 训练集+测试集 需要合并数据时
"all" 全部数据 加载所有可用分割
  • 为什么不能随便取值?

每个数据集预定义了它支持的 split,你只能使用数据集实际提供的 split 。例如:

# 假设一个数据集只定义了 train 和 validation
dataset = MsDataset.load('some-dataset', split='train')      #✅ 成功
dataset = MsDataset.load('some-dataset', split='validation') #✅ 成功  
dataset = MsDataset.load('some-dataset', split='test')       #❌ 报错!该数据集没有 test 分割
  • 如何知道一个数据集支持哪些 split?
  • 方法1:查看数据集文档

ModelScope 数据集页面 查看具体数据集的说明。

  • 方法2:用 dataset_info_only 查询元信息
from modelscope.msdatasets import MsDataset

# 只获取数据集信息,不加载数据
info = MsDataset.load('glue', subset_name='sst2', dataset_info_only=True)
print(info)
# 输出中会包含 splits: ['train', 'validation', 'test']
# @command: pip install modelscope datasets addict
from modelscope.msdatasets import MsDataset

dataset_info = MsDataset.load(
    'KuugoRen/Chinese_Law',
    subset_name=None,
    # split='train',
    dataset_info_only = True,
    download_mode='reuse_dataset_if_exists'  # 缓存优先
)

print( f"dataset_info = {dataset_info}", ) 
# out: "dataset_info = {'default': ['train']}"
  • 方法3:加载后查看(如果数据集存在)
dataset = MsDataset.load('glue', subset_name='sst2', split='train')
print(dataset)  # 查看数据集信息,有时能看到可用 splits
  • 特殊用法:组合多个 split

某些实现支持组合操作:

# 加载多个 split(语法取决于具体实现)
dataset = MsDataset.load('glue', subset_name='sst2', split='train+validation')
  • 总结
要点 说明
不是任意的 必须是数据集实际定义的分割名称
大小写敏感 "Train""train" 可能被视为不同
因数据集而异 不同数据集支持的分割不同
常见标准 train/test/validation 是最通用的
  • 最佳实践:加载前先查看数据集文档或用 dataset_info_only=True 确认可用的 splits。
data_dir (Optional[str])
  • 默认: None
  • 本地数据目录的路径
  • 用于加载本地存储的数据集
data_files (Optional[Union[str, Sequence[str], Mapping[str, Union[str, Sequence[str]]]])
  • 默认: None
  • 指定具体的数据文件路径
  • 支持:
    • 单个文件路径字符串
    • 文件路径列表
    • 字典映射(如 {"train": "train.csv", "test": "test.csv"}
下载与缓存参数
download_mode (Optional[DownloadMode])
  • 默认: DownloadMode.REUSE_DATASET_IF_EXISTS
  • 控制数据集的下载行为:
    • REUSE_DATASET_IF_EXISTS: 如果本地存在则复用
    • FORCE_REDOWNLOAD: 强制重新下载
    • REUSE_CACHE_IF_EXISTS: 复用缓存
cache_dir (Optional[str])
  • 默认: MS_DATASETS_CACHE
  • 指定数据集缓存的本地目录路径
数据处理参数
features (Optional[Features])
  • 默认: None
  • 预定义的数据集特征结构(列名和类型)
  • 用于覆盖数据集自动推断的特征
use_streaming (Optional[bool])
  • 默认: False
  • 是否使用流式加载模式
  • True: 按需加载数据,适合大数据集,内存友好
  • False: 一次性加载全部数据到内存
stream_batch_size (Optional[int])
  • 默认: 1
  • 流式模式下的批次大小
  • 控制每次加载的数据条数
高级配置参数
custom_cfg (Optional[Config])
  • 默认: Config()
  • 自定义配置对象
  • 用于传递额外的配置选项
token (Optional[str])
  • 默认: None
  • 访问令牌/认证token
  • 用于访问私有数据集或需要认证的数据集
dataset_info_only (Optional[bool])
  • 默认: False
  • True: 仅返回数据集元信息,不加载实际数据
  • False: 加载完整数据集
trust_remote_code (Optional[bool])
  • 默认: False
  • 是否信任并执行远程数据集加载脚本中的自定义代码
  • 安全提示: 设为True时需谨慎,确保数据源可信
**config_kwargs
  • 额外的关键字参数
  • 传递给底层数据集加载配置
  • 用于覆盖默认配置或传递特定数据集的专用参数
返回值
Union[dict, 'MsDataset', NativeIterableDataset]

根据参数不同,返回:

  • dict: 当 dataset_info_only=True 时返回元信息字典
  • MsDataset: 标准的数据集对象(非流式模式)
  • NativeIterableDataset: 流式数据集对象(use_streaming=True 时)
使用示例
from modelscope.msdatasets import MsDataset

# 基础用法
dataset = MsDataset.load('glue', subset_name='sst2', split='train')

# 流式加载大数据集
dataset = MsDataset.load(
    'large-corpus',
    use_streaming=True,
    stream_batch_size=100
)

# 加载本地数据文件
dataset = MsDataset.load(
    data_files={'train': 'path/to/train.csv', 'test': 'path/to/test.csv'}
)

# 仅从HuggingFace Hub加载
dataset = MsDataset.load('squad', hub='huggingface')

这个API设计非常灵活,既支持从ModelScope Hub加载,也兼容HuggingFace Hub,同时提供了丰富的选项来控制数据加载行为。

Z FAQ

Q: ModelScope和Hugging Face有什么区别?该如何选择?

A:

  • 选择ModelScope:如果你是中文项目开发者、需要中文模型优化、追求开箱即用体验、或深度使用阿里云服务
  • 选择Hugging Face:如果你需要最新国际前沿模型、追求全球化社区协作、或项目以英文为主
  • 两者结合:很多开发者会同时在两个平台获取模型,ModelScope用于中文业务快速落地,Hugging Face用于前沿研究探索

Q: 安装ModelScope时遇到依赖冲突怎么办?

A:

  1. 使用虚拟环境隔离(conda或venv)
  2. 分步安装核心依赖:
    pip install filelock requests setuptools tqdm urllib3
    pip install modelscope
    
  3. 遇到mmcv-full安装失败时:
    pip uninstall -y mmcv mmcv-full
    pip install openmim
    mim install mmcv-full
    

Q: 如何提升模型下载速度?

A:

  • 使用国内镜像源:pip install modelscope -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
  • 设置下载超时:snapshot_download(..., timeout=300)
  • 使用缓存机制:download_mode='reuse_dataset_if_exists'

Q: 模型推理时内存溢出怎么办?

A:

  1. 启用流式加载:use_streaming=True
  2. 使用量化模型:支持GPTQ、AWQ、BNB、FP8等量化技术
  3. 减小batch size或输入长度
  4. 使用CPU推理替代GPU(速度较慢但内存占用低)

Q: Windows系统下音频模型无法使用怎么办?

A:
Windows对音频处理库支持有限,建议:

  1. 使用Linux环境(WSL或虚拟机)
  2. 安装Linux依赖:sudo apt install -y libsndfile1 ffmpeg
  3. 或改用云端Notebook环境运行音频任务

Q: 如何参与ModelScope社区贡献?

A:

  1. 在GitHub提交Issue或Pull Request
  2. 上传自定义模型到ModelHub
  3. 分享数据集到DatasetHub
  4. 参与社区活动和开发者大赛
  5. 加入钉钉技术支持群:44837352

Q: ModelScope的模型可以用于商业用途吗?

A: 取决于具体模型的许可证。ModelScope上的模型采用多种开源协议:

  • Apache 2.0:可自由商用(如Qwen系列)
  • MIT:可自由商用
  • GPL:需遵守开源协议要求
  • 自定义协议:部分模型有特定限制

使用前请查看模型页面的License信息。


Y 推荐文献


X 参考文献

posted @ 2026-03-30 12:57  数据知音  阅读(99)  评论(0)    收藏  举报