[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
- 参见: 安装 on Linux - 博客园/千千寰宇
/etc/miniforge3///root/miniforge3/
- 创建虚拟环境
# 使用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.modelscope、Hubs.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:
- 使用虚拟环境隔离(conda或venv)
- 分步安装核心依赖:
pip install filelock requests setuptools tqdm urllib3 pip install modelscope - 遇到
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:
- 启用流式加载:
use_streaming=True - 使用量化模型:支持GPTQ、AWQ、BNB、FP8等量化技术
- 减小batch size或输入长度
- 使用CPU推理替代GPU(速度较慢但内存占用低)
Q: Windows系统下音频模型无法使用怎么办?
A:
Windows对音频处理库支持有限,建议:
- 使用Linux环境(WSL或虚拟机)
- 安装Linux依赖:
sudo apt install -y libsndfile1 ffmpeg - 或改用云端Notebook环境运行音频任务
Q: 如何参与ModelScope社区贡献?
A:
- 在GitHub提交Issue或Pull Request
- 上传自定义模型到ModelHub
- 分享数据集到DatasetHub
- 参与社区活动和开发者大赛
- 加入钉钉技术支持群:44837352
Q: ModelScope的模型可以用于商业用途吗?
A: 取决于具体模型的许可证。ModelScope上的模型采用多种开源协议:
- Apache 2.0:可自由商用(如Qwen系列)
- MIT:可自由商用
- GPL:需遵守开源协议要求
- 自定义协议:部分模型有特定限制
使用前请查看模型页面的License信息。
Y 推荐文献
- ModelScope官方文档 - ModelScope
- ms-swift GitHub仓库 - GitHub
- EvalScope GitHub仓库 - GitHub
- ModelScope-Agent GitHub仓库 - GitHub
- Qwen大模型实战指南 - ModelScope社区
- THE NEXT WAVE: AI时代开发者生态白皮书 - ModelScope×知乎
X 参考文献
- ModelScope 魔搭社区 - 官网
- 魔搭社区 - 百度百科
- ms-swift/README.md - GitHub
- twinkle/README_ZH.md - GitHub
- MS-Agent: 赋能智能体自主探索的轻量级框架 - GitHub
- ModelScope vs Hugging Face:AI模型平台全面对比 - CSDN
- BAAI/bge-m3社区生态:Hugging Face与ModelScope对比 - CSDN
- 30分钟吃透ModelScope Pipeline:从架构到落地的AI服务化实战 - ModelScope社区
- ModelScope数据集Hub使用:高效管理训练数据 - ModelScope社区
- 2026-02-28 GitHub 热点项目精选 - 稀土掘金
- ModelScope环境部署全攻略:从零搭建AI模型服务平台 - CSDN
- GTE-large开源部署教程:ModelScope库安装+离线模型加载全流程 - CSDN
- 魔搭社区推出ModelScope-Agent开发框架,打造属于你的智能体 - ModelScope社区
浙公网安备 33010602011771号