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_idstr模型ID
visibilityint模型的可见性,1-私有,5-公开,不填默认5
licensestr模型的许可证,不填默认为Apache-2.0
chinese_namestr模型的中文名称,默认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_idstr模型ID,确保您的访问令牌具有上传至对应仓库的权限。
folder_pathstr本地待上传文件夹的绝对路径
path_in_repostr文件夹将被上传到的具体路径及设置的文件夹名称
commit_messagestr此次上传提交所包含的更改信息
tokenstr有权限上传的用户token。前置已经登陆时,可缺省
repo_typestr仓库类型,不填默认为model
allow_patternsstr允许上传的文件类型模板,例如*.json, 默认为None
ignore_patternsstr上传时忽略的文件类型模板,例如*.log,默认为None
max_workersint上传时开启的线程数量,默认为 min(8,os.cpu_count() + 4))
revisionstr上传的分支,默认为"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_fileobjstr本地待上传文件的绝对路径
path_in_repostr文件将被上传到的具体路径及设置的文件名称
repo_idstr模型ID,确保您的访问令牌具有上传至对应仓库的权限。
tokenstr有权限上传的用户token。前置已经登陆时,可缺省
repo_typestr仓库类型,如不填则默认为model
commit_messagestr本次提交的信息
commit_descriptionstr本次提交的描述
buffer_size_mbint计算hash时的buffer size,单位为MB,默认为1
tqdm_descstr进度条描述,默认为[Uploading]
disable_tqdmbool是否禁用进度条,默认为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_idstr模型ID,确保您的访问令牌具有上传模型的权限
model_dirstr本地待上传模型的绝对路径
visibilityint新创建模型的可见性,1-私有,5-公开,不填默认为5。
licensestr新创建模型的许可证,默认None。
chinese_namestr新创建模型的中文名称。默认None,且前端展示为英文名称
commit_messagestr推送请求的提交信息,默认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
tokenSDK 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:YOUR-GIT-TOKEN@www.modelscope.cn/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 <your_file_name>

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

给模型打版本#

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值