AI模型平台之——ModelScope(魔搭)
ModelScope 是什么?
ModelScope 是一个由阿里巴巴达摩院推出的开源模型库和工具集,旨在为开发者提供高效、便捷的机器学习模型和工具。ModelScope 提供了丰富的预训练模型、数据集和工具,支持多种任务和应用场景,如自然语言处理、计算机视觉、语音识别等。为AI开发者提供灵活、易用、低成本的一站式模型服务产品。
ModelScope 是一个开放的 AI 模型共享平台,是一个生态系统,涵盖了从模型开发、训练、部署到共享的全流程。
ModelScope提供了一个Web的界面,界面的地址: https://www.modelscope.cn/
当前界面样子如下:
在国外,与ModelScope对应的平台是: Hugging Face。
ModelScope 涉及的一些概念
1. 模型
是指一个具体的模型实例,包括模型网络结构和相应参数。
2. 模型库 (Model Hub)
是指对模型进行存储、版本管理和相关操作的模型服务,用户上传和共享的模型将存储至模型库中,同时用户也可在Model hub中创建属于自己的模型存储库,并沿用平台提供的模型库管理功能进行模型管理。
3. ModelScope 模型库
ModelScope的模型库(Model Hub)是共享机器学习模型、demo演示、数据集和数据指标的地方。
可以创建和管理自己的模型库,利用界面或开发环境来便捷地上传、下载相关模型文件,并从 Model Hub中获取有用的模型和数据集元数据。
4. ModelScope 和 ModelScope Library 的关系与区别
1. ModelScope
ModelScope 是一个开放的 AI 模型共享平台,旨在为开发者、研究者和企业提供丰富的预训练模型和工具。它是一个生态系统,涵盖了从模型开发、训练、部署到共享的全流程。
主要特点:
- 模型仓库:提供大量预训练模型,涵盖 NLP、CV、语音等多个领域。
- 模型共享:支持用户上传和共享自己的模型。
- 在线服务:提供模型的在线推理和 API 调用服务。
- 社区协作:促进开发者之间的协作与交流。
定位:
- ModelScope 是一个 平台,类似于 Hugging Face 或 TensorFlow Hub,专注于模型的共享和服务化。
2. ModelScope Library
ModelScope Library 是一个 Python 库,是 ModelScope 平台的核心工具之一。它为开发者提供了访问和使用 ModelScope 平台中模型的接口和工具。
主要特点:
- 模型加载:支持从 ModelScope 平台加载预训练模型。
- 模型推理:提供简单的 API 进行模型推理。
- 模型微调:支持基于预训练模型的微调。
- 工具集成:集成了数据处理、模型评估等工具。
定位:
- ModelScope Library 是一个 工具库,帮助开发者在本地或云端使用 ModelScope 平台中的模型。
3. 关系
- ModelScope 是平台,ModelScope Library 是工具。
- ModelScope Library 是 ModelScope 平台的一部分,用于与平台中的模型进行交互。
- 开发者通过 ModelScope Library 访问和使用 ModelScope 平台中的模型。
4. 区别
特性 | ModelScope(平台) | ModelScope Library(工具库) |
---|---|---|
定位 | 模型共享与服务平台 | 访问和使用模型的 Python 工具库 |
功能 | 模型存储、共享、在线服务、社区协作 | 模型加载、推理、微调、工具集成 |
使用方式 | 通过网页或 API 访问 | 通过 Python 代码调用 |
目标用户 | 开发者、研究者、企业 | 开发者、研究者 |
依赖关系 | 包含 ModelScope Library 作为工具 | 依赖 ModelScope 平台提供模型资源 |
5. 使用场景
-
ModelScope:
- 寻找和下载预训练模型。
- 共享自己的模型。
- 使用在线推理服务。
-
ModelScope Library:
- 在本地加载和使用 ModelScope 平台中的模型。
- 对模型进行微调和部署。
- 集成到自己的 AI 项目中。
6. 总结
- ModelScope 是一个开放的 AI 模型共享平台,提供模型存储、共享和服务化功能。
- ModelScope Library 是一个 Python 工具库,用于访问和使用 ModelScope 平台中的模型。
- 两者相辅相成,ModelScope 提供资源,ModelScope Library 提供工具,共同构建了一个完整的 AI 开发生态系统。
ModelScope 的主要特点
- 丰富的预训练模型:ModelScope 提供了大量的预训练模型,涵盖了多种任务和应用场景,开发者可以直接使用这些模型进行推理或微调。
- 便捷的工具集:ModelScope 提供了一系列工具,帮助开发者进行数据处理、模型训练、评估和部署。
- 开源和社区驱动:ModelScope 是一个开源项目,开发者可以自由使用、修改和贡献代码,促进社区的共同发展。
- 多语言支持:ModelScope 支持多种编程语言,如 Python、Java 等,方便开发者在不同的开发环境中使用。
ModelScope 的主要组件
- 模型库:ModelScope 提供了丰富的预训练模型,开发者可以根据需要选择合适的模型进行使用。
- 数据集:ModelScope 提供了多种数据集,方便开发者进行模型训练和评估。
- 工具集:ModelScope 提供了一系列工具,帮助开发者进行数据处理、模型训练、评估和部署。
Python环境和ModelScope Library 安装
这里通过Anaconda 安装和管理Python库及隔离环境, Anaconda 的安装参考:
AI开发之 ——Anaconda 介绍
- 创建Python隔离环境
可以在Anaconda 的界面(Anaconda Navigator)直接创建环境,环境相关文件的位置位于Anaconda 安装路径的envs 目录下:
也可以使用conda 命令行创建环境(如何conda 命令找不到则需要将Anaconda 路径的Scripts目录添加到Path 环境变量中)
conda create -n modelscope python=3.12
注意: 不管在哪个路径下执行创建环境命令,环境相关文件的位置都是在Anaconda 安装路径的envs 目录下,比如C:\Users\xx\anaconda3\envs
。
- 激活环境
conda activate modelscope
- 安装ModelScope Library
如果只需要ModelScope的核心hub支持,也就是只使用ModelScope下载模型,则运行如下命令:
pip install modelscope
如果需要ModelScope的完整功能,包括数据集的下载,外部模型的使用,则使用如下命令:
pip install modelscope[framework]
如何从模型库下载和使用模型
模型下载的存放路径
使用SDK或是命令行下载模型,默认会下载到当前用户目录的 ~/.cache/modelscope/hub
中,比如:
C:\Users\xxx\.cache\modelscope\hub
如果C盘不够或是其他原因需要更改存放的其他目录,可以使用环境变量: MODELSCOPE_CACHE
进行设置。
下载方式:
- 使用Git
Model Hub 上的模型通过 Git 进行存储和版本管理,可以下载单个文件或整个模型的所有相关文件。
注意: 需要安装Git LFS
# 公开模型下载
git lfs install
git clone https://www.modelscope.cn/<namespace>/<model-name>.git
# 例如: git clone https://www.modelscope.cn/iic/ofa_image-caption_coco_large_en.git
# 私有模型下载,前提是您有响应模型权限 方法1
git lfs install
git clone http://oauth2:your_git_token@www.modelscope.cn/<namespace>/<model-name>.git
# 方法2
git clone http://your_user_name@www.modelscope.cn/<namespace>/<model-name>.git
# Password for 'http://your_user_name@modelscope.cn':
# input git token
如果希望跳过LFS大文件的下载,可以在git clone命令前添加GIT_LFS_SKIP_SMUDGE=1,来只获取LFS指针,而不下载实际的大文件:
GIT_LFS_SKIP_SMUDGE=1 https://www.modelscope.cn/<namespace>/<model-name>.git
- 使用ModelScope SDK
ModelScope的SDK会自动缓存本地下载的模型文件,以便下次加载相同文件时无需重新下载。
from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('iic/nlp_xlmr_named-entity-recognition_viet-ecommerce-title', cache_dir='path/to/local/dir', revision='v1.0.1')
下载单个文件:
from modelscope.hub.file_download import model_file_download
model_dir = model_file_download(model_id='AI-ModelScope/rwkv-4-world',file_path='RWKV-4-World-CHNtuned-7B-v1-20230709-ctx4096.pth',revision='v1.0.0')
下载私有模型,需要先登录:
from modelscope import HubApi
from modelscope import snapshot_download
api=HubApi()
api.login('YOUR_MODELSCOPE_SDK_ACCESS_TOKEN')
# download your model, the model_path is downloaded model path.
model_path =snapshot_download(model_id='the_model_id', revision='the_model_version')
除了使用download()相关的方法下载模型之外,使用SDK加载模型时,也会触发的下载(前提是模型已集成至ModelScope的SDK中):
from modelscope.models import Model
model = Model.from_pretrained('iic/nlp_xlmr_named-entity-recognition_viet-ecommerce-title', revision='v1.0.1')
# revision为可选参数,不指定版本会取模型默认版本,默认版本,默认版本为ModelScope library发布前最后一个版本
# 如何得到发布时间
import modelscope
print(modelscope.version.__release_datetime__)
- 使用ModelScope 命令
可以使用以下命令查看具体的命令行:
modelscope download --help
这里以下载Qwen2-7B模型为例:
- 下载到默认cache 地址:
modelscope download --model 'Qwen/Qwen2-7b'
- 下载到指定目录:
modelscope download --model 'Qwen/Qwen2-7b' --local_dir D:/devworkspace/ai/modelscope/models
- 下载单个文件(tokenizer.json):
modelscope download --model 'Qwen/Qwen2-7b' tokenizer.json
- 下载多个文件:
modelscope download --model 'Qwen/Qwen2-7b' tokenizer.json config.json
- 下载匹配的文件:
modelscope download --model 'Qwen/Qwen2-7b' --include '*.safetensors'
- 过滤某些文件不下载:
modelscope download --model 'Qwen/Qwen2-7b' --exclude '*.safetensors'
- 指定下载cache_dir:
modelscope download --model 'Qwen/Qwen2-7b' --include '*.json' --cache_dir './cache_dir'
- 指定下载local_dir:
modelscope download --model 'Qwen/Qwen2-7b' --include '*.json' --local_dir './local_dir'
如果cache_dir和local_dir参数同时被指定,local_dir优先级高,cache_dir将被忽略。
local_dir 和 cache_dir
--local_dir
和 --cache_dir
是两个不同的选项,分别用于指定文件的下载位置和缓存位置。它们的作用和区别如下:
1. --local_dir
- 作用:指定模型文件下载后保存的目标目录。
- 特点:
- 文件会直接下载到该目录中。
- 适合需要将模型文件保存到特定位置的场景。
- 如果目录不存在,会自动创建。
- 示例:
模型文件会直接保存到modelscope download --model my-model --local_dir /path/to/save
/path/to/save
目录中。
2. --cache_dir
- 作用:指定模型文件的缓存目录。
- 特点:
- 文件会先下载到缓存目录中,后续使用时可以直接从缓存加载,避免重复下载。
- 适合需要重复使用同一模型的场景。
- 如果未指定
--local_dir
,文件会默认保存到缓存目录中。
- 示例:
模型文件会先下载到modelscope download --model my-model --cache_dir /path/to/cache
/path/to/cache
目录中,后续使用时可以直接从缓存加载。
主要区别
特性 | --local_dir | --cache_dir |
---|---|---|
用途 | 指定文件下载的目标目录。 | 指定文件缓存的目录。 |
文件存储方式 | 文件直接保存到指定目录。 | 文件先保存到缓存目录,后续使用时从缓存加载。 |
适用场景 | 需要将文件保存到特定位置。 | 需要重复使用同一模型,避免重复下载。 |
默认行为 | 如果未指定,文件会保存到缓存目录。 | 如果未指定,使用系统默认缓存目录。 |
使用建议
- 如果需要将模型文件保存到特定目录(如项目目录),使用
--local_dir
。 - 如果需要重复使用模型文件,使用
--cache_dir
以提高效率。
下载私有模型
下载私有模型需要登录,使用 login 选项进行登录
usage: modelscope <command> [<args>] login [-h] --token TOKEN
options:
-h, --help show this help message and exit
--token TOKEN The Access Token for modelscope.
modelscope login --token YOUR_MODELSCOPE_SDK_TOKEN
如何在ModelScope 创建自己的模型库
方式1: 使用Web页面进行
-
使用ModelScope的web页面创建模型库
在头像左侧会出现创建按钮,点击可创建模型或数据集。点击创建模型,进入模型页面填写基础信息实现模型库的创建。
-
完成创建后,平台将为分配一个存储地址,可通过页面或者git的方式将文件添加至该模型库中,也可通过页面上传相关的模型文件。
方式2: 使用SDK创建
- 获取SDK令牌
账号设置 > 访问令牌
SDK(Software Development Kit,软件开发工具包)是一组工具、库、文档和示例代码的集合,旨在帮助开发者快速构建特定平台、框架或服务的应用程序。
- 使用SDK编写代码创建模型库
from modelscope.hub.constants import Licenses, ModelVisibility
from modelscope.hub.api import HubApi
api = HubApi()
api.login(access_token="YOUR_MODELSCOPE_SDK_TOKEN")
username = 'user'
model_name = 'my-test-model'
model_id = f"{username}/{model_name}"
api.create_model(
model_id,
visibility=ModelVisibility.PUBLIC,
license=Licenses.APACHE_V2,
chinese_name="我的测试模型"
)
字段名 | 必填 | 类型 | 描述 |
---|---|---|---|
model_id | 是 | str | 模型ID |
visibility | 否 | int | 模型的可见性,1-私有,5-公开,不填默认5 |
license | 否 | str | 模型的许可证,不填默认为Apache-2.0 |
chinese_name | 否 | str | 模型的中文名称,默认None |
使用 ModelScope下载和使用模型的具体示例
具体的示例可以参考下面这篇:
编程大模型之—Qwen2.5-Coder
这一篇的后半部分使用ModelScope 下载Qwen2.5-Coder大模型,并使用这个模型产生一段代码。