魔乐社区贡献指南

查看源文件

上传模型至魔乐社区

魔乐社区是一个模型托管平台,用户可以将自定义模型上传至魔乐社区进行托管。

MindFormers内置模型

若用户的自定义模型使用了MindFormers提供的内置模型,即模型代码位于mindformers/models下的模型,且对模型结构代码未进行任何修改,则只需上传模型的权重文件和配置即可。

如,用户使用MindFormers的内置ChatGLM2模型,进行了微调训练,想分享微调后的模型权重,那么上传模型配置和权重文件即可。

下面是保存模型配置和权重的示例代码:

import mindspore as ms
from mindformers import ChatGLM2Config, ChatGLM2ForConditionalGeneration

config = ChatGLM2Config()
model = ChatGLM2ForConditionalGeneration(config)
ms.load_checkpoint("path/model.ckpt", model)  # 加载自定义权重

model.save_pretrained("./my_model", save_json=True)

上述代码运行后会保存config.json文件和mindspore_model.ckpt文件(较大权重会自动拆分保存)。

保存后可使用openmind_hub库,进行模型上传,可参考模型上传

import openmind_hub

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

已上传的例子可参考魔乐社区的OpenLlama模型

自定义模型

若用户有自定义的模型代码,则需要同时上传模型代码文件,并在json配置文件中添加映射,使其可以通过Auto类导入。

命名规则

上传到社区的自定义代码文件,一般有统一的命名规则,假设自定义模型名为model,其代码命名应当如下:

---- model
    |- configuration_model.py  # Config类代码文件
    |- modeling_model.py       # Model类代码文件
    |- tokenization_model.py   # Tokenizer代码文件

添加auto映射

为让Auto类使用时,能够顺利找到用户自定义的模型类,需要在config.json文件中,添加auto映射。添加内容如下:

{
  "auto_map": {
    "AutoConfig": "configuration_model.MyConfig",
    "AutoModel": "modeling_model.MyModel",
    "AutoModelForCausalLM": "modeling_model.MyModelForCausalLM",
  },
}

若有自定义tokenizer,则需要保存tokenizer:

tokenizer.save_pretrained("./my_model", save_json=True)

并在保存的tokenizer_config.json中添加auto映射:

{
  "auto_map": {
    "AutoTokenizer": ["tokenization_model.MyTokenizer", "tokenization_model.MyFastTokenizer"]
  },
}

上传模型

可使用openmind_hub库,进行模型上传,可参考模型上传

import openmind_hub

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

已上传的例子可参考魔乐社区的书生2模型