ModelScope 模型的上传

本文介绍在 ModelScope 社区上传模型的两种方式:

  1. 使用 Python SDK 创建并上传模型
  2. 使用 GIT 上传模型

准备#

在进行模型上传之前,请先完成账号注册、登陆。此外需要上传的模型内容,也请另外在本地模型文件夹准备好。

使用 Python SDK 创建并上传模型#

通过 ModelScope 的 Python SDK,您有多种方式可以方便地将模型上传到 ModelScope 平台。

前提条件#

  • 确保您已经安装了modelscope库。如果没有安装,可以使用以下命令进行安装:

     

    pip install modelscope

  • 在 SDK 中完成访问令牌登陆

     

    from modelscope.hub.api import HubApi YOUR_ACCESS_TOKEN = '请从https://modelscope.cn/my/myaccesstoken 获取SDK令牌' api = HubApi() api.login(YOUR_ACCESS_TOKEN)

    访问的SDK令牌(token)可前往【账号设置】->【访问令牌】获取。

步骤#

1. 创建模型库#

假设您的账户名是user,期望的模型英文名称为my-test-model

 
  

from modelscope.hub.constants import Licenses, ModelVisibility owner_name = 'user' model_name = 'my-test-model' model_id = f"{owner_name}/{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

更多的参数可以参见开源代码的接口文档。

2. 使用SDK上传模型#

通过文件接口上传#

ModelScope 库提供基于 http 的文件及文件夹上传接口,保障更稳定的上传体验,同时也对文件的大小、文件夹的数量进行必要的检查。

  • 上传模型文件夹
 
  

api.upload_folder( repo_id=f"{owner_name}/{model_name}", folder_path='/path/to/your_model_dir', commit_message='upload model folder to repo', )

参数说明

字段名 必填 类型 描述
repo_id str 模型ID,确保您的访问令牌具有上传至对应仓库的权限。
folder_path str 本地待上传文件夹的绝对路径
path_in_repo str 文件夹将被上传到的具体路径及设置的文件夹名称
commit_message str 此次上传提交所包含的更改信息
token str 有权限上传的用户token。前置已经登陆时,可缺省
repo_type str 仓库类型,不填默认为model
allow_patterns str 允许上传的文件类型模板,例如*.json, 默认为None
ignore_patterns str 上传时忽略的文件类型模板,例如*.log,默认为None
max_workers int 上传时开启的线程数量,默认为 min(8,os.cpu_count() + 4))
revision str 上传的分支,默认为"master"

更多的参数可以参见开源代码的接口文档。

  • 上传模型文件
 
  

api.upload_file( path_or_fileobj='/path/to/local/your_file.suffix', path_in_repo='repo_path/your_file.suffix', repo_id=f"{owner_name}/{model_name}", commit_message='upload model file to repo', )

参数说明

字段名 必填 类型 描述
path_or_fileobj str 本地待上传文件的绝对路径
path_in_repo str 文件将被上传到的具体路径及设置的文件名称
repo_id str 模型ID,确保您的访问令牌具有上传至对应仓库的权限。
token str 有权限上传的用户token。前置已经登陆时,可缺省
repo_type str 仓库类型,如不填则默认为model
commit_message str 本次提交的信息
commit_description str 本次提交的描述
buffer_size_mb int 计算hash时的buffer size,单位为MB,默认为1
tqdm_desc str 进度条描述,默认为[Uploading]
disable_tqdm bool 是否禁用进度条,默认为False

更多的参数可以参见开源代码的接口文档。

通过push_model接口上传#

ModelScope 库也提供基于 Git 封装的上传到模型repo的接口push_model。但这个接口后续将被 deprecate ,推荐使用upload_folder等基于 Http 上传的接口。

 
  

api.push_model( model_id=model_id, # 如果model_id对应的模型库不存在,将会被自动创建 model_dir="my_local_model_dir" # 指定本地模型所在目录 )

参数说明

字段名 必填 类型 描述
model_id str 模型ID,确保您的访问令牌具有上传模型的权限
model_dir str 本地待上传模型的绝对路径
visibility int 新创建模型的可见性,1-私有,5-公开,不填默认为5。
license str 新创建模型的许可证,默认None。
chinese_name str 新创建模型的中文名称。默认None,且前端展示为英文名称
commit_message str 推送请求的提交信息,默认None

更多的参数可以参见开源代码的接口文档。

3. 使用 CLI 工具上传#

在安装完成modelscope库后,您也可以直接使用 CLI 命令行完成模型文件夹或文件的上传。假定 owner_name 为您期望上传的用户账户名或组织名,repo_name 为模型英文名称,即 owner_name/repo_name 为模型ID。

 
  

# 登陆 modelscope login --token Your-Modelscope-Token # 上传文件夹 modelscope upload owner_name/repo_name /path/to/your_folder # 上传文件 modelscope upload owner_name/repo_name /path/to/your_file.suffix data/your_file.suffix --repo-type model # 完整用法示例 modelscope upload [repo_id] [local_path] [path_in_repo] --repo-type model --include '*.bin' --exclude '*.log' --commit-message 'init' --commit-description 'my first commit' --token 'xxx-xxx' --max-workers 16 --endpoint 'https://www.modelscope.cn'

参数说明

字段名 必填 描述
repo_id 位置参数,上传的目标魔搭仓库ID,如 user_name/repo_name
local_path 位置参数,待上传的本地文件或文件夹路径
path_in_repo 位置参数,指定上传至魔搭仓库的文件夹或文件具体路径,包括路径及文件夹或文件具体名称
repo-type --repo-type 'model' 默认为 model
include 指定上传文件中应该包含文件类型的模板,例如--include '*.safetensors' 默认为None
exclude 指定上传文件中应该排除掉的文件类型模板,例如--exclude '*.log' 默认为None
commit-message 提交信息 例如--commit-message 'init' 默认为None
commit-description 本地提交的描述信息,例如--commit-description 'my first commit' 默认为None
token SDK token,--token 'xxx-xxx' 默认为None,获取来源:魔搭社区
max-workers 上传所用的线程数,--max-workers 16 默认为 min(8,os.cpu_count() + 4)
endpoint 服务端点,--endpoint 'https://www.modelscope.cn' 默认值:https://www.modelscope.cn

您也可以使用modelscope upload --help查看 CLI 工具的详细参数。

使用 GIT 上传模型#

您可以通过 Git 命令将本地模型同步至远程仓库。

前提条件#

请确保安装GitGit LFS

步骤#

1. 通过ModelScope站点页面创建模型库#

在 Modelscope 首页右上角「个人头像」处找到“创建模型”的快速入口,点击进入创建模型界面。 根据页面指引,填写必要的基础信息即可提交创建。详细创建流程请参考:创建自己的模型库

2. 通过 GIT 完成本地模型上传#

  • 远程模型仓库克隆

    假设您的账户名是user,模型名称为 my-test-model

     

    git lfs install git clone https://oauth2:[email protected]/user/my-test-model.git

    为了方便您后续的模型上传,请在git clone阶段,就直接提供Git token。您可以从平台Git 访问令牌页面,获取您的Git token。

  • 将您的模型文件,移动到clone下来的模型目录中,并通过 git addgit commitgit push等操作完成模型的上传。

注意事项#

  • 上传文件容量限制:
    • 单个文件大小不得超过 50 GB
    • 全部文件总数不得超过 100,000 个
    • 单个子文件夹内文件总数不得超过 10,000 个
    • 未标记为 LFS 的所有文件总大小不得超过 500 MB

为了确保上传过程的顺畅和高效,当单个文件大小超过5MB,或者所有文件的总大小超过500MB时,我们推荐使用 GIT LFS 来上传文件;

  • 通过文件/文件夹上传接口时,符合以下条件自动标记为 GIT LFS 上传:

    • 文件大小超过 5 MB
    • 平台会自动利用 LFS 上传以下后缀的文件:
     

    *.7z、*.arrow、*.bin、*.bin.*、*.bz2、*.ftz、*.gz、*.h5、*.joblib、*.lfs.*、*.model、*.msgpack、*.onnx、*.ot、*.parquet、*.pb、*.pt、*.pth、*.rar、saved_model/**/*、*.tar.*、*.tflite、*.tgz、*.xz、*.zip、*.zstandard、*.tfevents*、*.db*、*.ark*、**/*ckpt*data*、**/*ckpt*.meta、**/*ckpt*.index、*.safetensors、*.ckpt、*.gguf*、*.ggml、*.llamafile*、*.pt2

  • 基于GIT上传的时候,您需要提前扫描本地模型目录下所有大于5MB的文件,并通过手动标记 git lfs track

  • 无论是 GIT 上传,还是 Python SDK 上传 ,当前均不支持断点续传。请确保上传过程中的设备通电、网络稳定,否则失败后需要重新上传。

给模型打版本#

为保证模型被正确使用,您需要给您的模型合适的版本,以免您在更新模型时影响使用模型的服务。

你可能感兴趣的:(运维)