中文
本页内容

模型分享

在本教程中,您将学习如何在魔乐社区分享模型,包括以下三种方法:

  • 通过openMind Hub Client工具将模型上传到模型仓库。
  • 通过Git命令将模型上传到模型仓库。
  • 通过openMind Library中的push_to_hub将模型上传到模型仓库。

在魔乐社区分享模型之前,您需要先注册一个社区账号。

创建Token

由于在后续与openMind的交互操作过程中需要使用到Token,请您登录魔乐社区,在个人中心单击访问令牌,新建一个具有Write权限的令牌。

create_token

此Token仅在创建时展示,请妥善记录保存。

使用openMind Hub Client上传模型

基于openMind Hub Client,用户可使用命令行界面将模型上传到模型仓库。

安装openMind Hub Client

参考安装openMind Hub Client文档,安装openMind Hub Client

创建模型仓库

  • 登录魔乐社区,您可以在主页的顶部导航栏找到并单击模型库选项。进入模型库页面后,单击创建模型按钮以进行下一步操作,如下图所示。

create_model_repo

  • 填写仓库信息后,单击创建按钮,即可创建一个模型仓库。

也可以使用openMind Hub Client通过代码的方式来创建模型仓库,代码示例参考如下。

python
from openmind.utils.hub import create_repo
create_repo(repo_id="your-model-name", token="your-token")

模型仓库创建完成后,会自动生成一个模型卡片,模型卡片是一个包含模型信息的README.md文件。为了充分展示您的模型能力、约束等信息,您可以在页面上直接编辑README.md文件。

上传模型文件

openMind Hub Client提供了upload_folder函数向仓库中上传文件夹。常用参数:

  • folder_path: 要上传的本地文件夹的路径,必选。
  • repo_id:仓库地址,必选。
  • repo_type:仓库类型,若为model则可省略,为datasetspace则必选。

以下代码示例将本地/path/to/local/folder文件夹中所有文件上传到仓库username/your-model-name,默认情况下,文件夹内的所有文件都将上传到仓库的根目录。

python
import openmind_hub

openmind_hub.upload_folder(
    folder_path="/path/to/local/folder",
    repo_id="username/your-model-name",
    repo_type="model",
    token="your-token",
)

如需探索openMind Hub Client的其他上传接口,请参阅上传接口,这里详尽地列出了所有可用的上传接口及其使用方法,助您高效实现数据的上传和管理。

使用Git命令上传模型

如果您在本地有仓库的副本,则可以使用git lfs上传大型文件。

在通过Git上传模型之前,请确保您已经在社区中成功创建了相应的模型仓库,并且已经将该仓库克隆到您的本地环境中。

安装Git LFS

执行以下命令安装git lfs。安装只需执行一次即可,无需在每个本地仓库都执行。

bash
git lfs install

追踪大型文件

在本地Git仓库中追踪大型文件(100MB以上)。根据实际需要,追踪相应文件,可以是某一类型,也可以是具体的文件名。示例如下:

bash
git lfs track "*.7z" "*.bin" "*.bz2" "*.ckpt" "*.h5" "*.lfs.*" "*.mlmodel" "*.model"\
 "*.npy" "*.npz" "*.onnx" "*.pb" "*.pickle" "*.pkl" "*.pt" "*.pth" "*.rar" "*.safetensors"\
 "saved_model/**/*" "*.tar.*" "*.tar" "*.tgz" "*.zip" "*tfevents*" "*.gz"

也可以追踪特定大型文件,示例如下:

bash
git lfs track "big_file.bin"

克隆仓库

执行以下命令,将魔乐社区中的模型仓库克隆到您的本地机器上。

bash
git clone https://modelers.cn/<username>/<model_name>.git

将上述命令中的<username><model_name>替换为实际的用户名和模型仓库名称。

编辑仓库内容

进入克隆的仓库目录,您可以使用文本编辑器或IDE来编辑仓库中的文件。将您的模型文件复制或移动到仓库的适当位置。

使用Git上传

在本地仓库中,将模型文件添加到Git索引中,然后使用Git命令上传。

bash
git add .
git commit -m 'commit message'
git push

Git上传的账号密码

Git上传时需要输入账号与密码,示例如下:

bash
Username for 'https://modelers.cn': 魔乐社区账号名
Password for 'https://modelers.cn': 权限为write的token

需要注意的是,Git上传密码是权限为write的token

使用push_to_hub设置上传模型

push_to_hubopenMind LibraryTrainer模块接口提供的一个便捷接口。它能够在模型训练完成后将您的模型、配置文件以及其他相关文件上传到指定的魔乐社区仓库中。这一功能不仅简化了模型分享的流程,还使得魔乐社区的用户能够更方便地访问和使用您的优秀模型成果。

安装openMind Library以及openMind Hub Client

参考以下文档安装openMind Library以及openMind Hub Client

使用push_to_hub上传

示例:

python
from openmind import Trainer, TrainingArguments
from your_utils import YourModel, YourDataCollator, YourTokenizer
from your_datasets import your_train_dataset, your_eval_dataset
  
model = YourModel(...)  
tokenizer = YourTokenizer(...)  
data_collator = YourDataCollator(...)
  
training_args = TrainingArguments(  
    output_dir='./results',          # output directory  
    num_train_epochs=3,              # total number of training epochs  
    per_device_train_batch_size=16,  # batch size per device during training  
    warmup_steps=500,                # number of warmup steps for learning rate scheduler  
    weight_decay=0.01,               # strength of weight decay  
    logging_dir='./logs',            # directory for storing logs  
    push_to_hub=True,                # push the model to openMind Hub  
    hub_model_id="username/your-model-name",  # the name of the repository to push to  
    hub_token='your_token',          # your token with write permissions
    hub_private_repo=False,          # whether to set the model as private
)  
  
trainer = Trainer(  
    model=model,  
    args=training_args,  
    train_dataset=your_train_dataset,  
    eval_dataset=your_eval_dataset,  
    tokenizer=tokenizer,  
    data_collator=data_collator  
)  
  
trainer.train()

trainer.push_to_hub()                # push your model to openMind Hub  

在提供的示例代码中,通过调用trainer.push_to_hub()方法将训练完成的模型上传至魔乐社区。为了确保模型能够成功上传,您需要在training_args中添加以下参数:

  • push_to_hub:指定是否将模型推送至魔乐社区。将其设置为True表示您希望在训练完成后将模型上传至社区,与众多社区成员共享您的成果。
  • hub_model_id:仓库标识符,由您的魔乐社区用户名和您希望创建的仓库名称组成,确保了标识符的唯一性。
  • hub_token:具有写入权限的令牌,用于确保您的模型能够被正确上传至社区。
  • hub_private_repo:可选,是否将模型设置为私有,默认为False,即公开模型。

请注意,trainer.push_to_hub()会将模型、配置文件及相关文件的打包和上传,将它们上传到您指定的魔乐社区仓库。确保在执行此操作前,所有必要的参数都已正确设置。更多参数请参考Trainer模块接口

之后,您只需登录魔乐社区,访问您的个人仓库,即可查看和管理您上传的模型及其他文件。这一流程不仅简化了模型共享的流程,也有利于您的模型在魔乐社区中进行广泛的传播和应用。