魔乐社区贡献指南
上传模型至魔乐社区
魔乐社区是一个模型托管平台,用户可以将自定义模型上传至魔乐社区进行托管。
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模型。