diff --git a/docs/mindspore/source_zh_cn/mindformers/faq/openmind_contribution.md b/docs/mindspore/source_zh_cn/mindformers/faq/openmind_contribution.md index 94331866da59b9bf4e73e0a8ad83cf736592d193..fbc8f7748539b03e76e0b29df31285f98de271ad 100644 --- a/docs/mindspore/source_zh_cn/mindformers/faq/openmind_contribution.md +++ b/docs/mindspore/source_zh_cn/mindformers/faq/openmind_contribution.md @@ -1,3 +1,95 @@ # openMind贡献指南 -[![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source.svg)](https://gitee.com/mindspore/docs/blob/master/docs/mindspore/source_zh_cn/mindformers/faq/openmind_contribution.md) \ No newline at end of file +[![查看源文件](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/master/resource/_static/logo_source.svg)](https://gitee.com/mindspore/docs/blob/master/docs/mindspore/source_zh_cn/mindformers/faq/openmind_contribution.md) + +## 上传模型至平行社区 + +用户可以将自定义模型上传至openMind社区进行托管。 + +### Mindformers内置模型 + +若用户的自定义模型使用了Mindformers提供的内置模型,即模型代码位于mindformers/models下的模型,且对模型结构代码未进行任何修改,则只需上传模型的权重文件和配置即可。 + +如,用户使用Mindformers的内置Llama-7B模型,进行了微调训练,想分享微调后的模型权重,那么上传模型配置和权重文件即可。 + +下面是保存模型配置和权重的代码 + +```python +import mindspore as ms +from mindformers import LlamaConfig, LlamaForCausalLM + +config = LlamaConfig() # 自定义超参的LlamaCofig +model = LlamaForCausalLM(config) +ms.load_checkpoint("path/model.ckpt", model) # 加载自定义权重 + +model.save_pretrained("./my_llama", save_json=True) + +# 运行后会保存 +# config.json +# mindspore_model.ckpt(较大权重会自动拆分保存) +``` + +保存后可使用openmind_hub库,进行模型上传,可参考[模型上传](https://modelers.cn/docs/zh/best-practices/community_contribution/model_contribution.html#%E4%BD%BF%E7%94%A8openmind-hub-client%E4%B8%8A%E4%BC%A0%E6%A8%A1%E5%9E%8B)。 + +```python +import openmind_hub + +openmind_hub.upload_folder( + folder_path="/path/to/local/folder", + repo_id="username/your-model-name", + token="your-token", +) +``` + +### 自定义模型 + +若用户有自定义的模型代码,则需要同时上传模型代码文件,并在json配置文件中添加映射,使其可以通过Auto类导入。 + +#### 命名规则 + +上传到社区的自定义代码文件,一般有统一的命名规则,假设自定义模型名为model,其代码命名应当如下 + +```text +---- model + |- configuration_model.py # Config类代码文件 + |- modeling_model.py # Model类代码文件 + |- tokenization_model.py # Tokenizer代码文件 +``` + +#### 添加auto映射 + +为让Auto类使用时,能够顺利找到用户自定义的模型类,需要在config.json文件中,添加auto映射。添加内容如下 + +```json +{ + "auto_map": { + "AutoConfig": "configuration_model.MyConfig", + "AutoModel": "modeling_model.MyModel", + "AutoModelForCausalLM": "modeling_model.MyModelForCausalLM", + }, +} +``` + +若有自定义tokenizer,则需要在tokenizer_config.json中添加auto映射 + +```json +{ + "auto_map": { + "AutoTokenizer": ["tokenization_model.MyTokenizer", "tokenization_model.MyFastTokenizer"] + }, +} +``` + +#### 上传模型 + +可使用openmind_hub库,进行模型上传,可参考[模型上传](https://modelers.cn/docs/zh/best-practices/community_contribution/model_contribution.html#%E4%BD%BF%E7%94%A8openmind-hub-client%E4%B8%8A%E4%BC%A0%E6%A8%A1%E5%9E%8B)。 + +```python +import openmind_hub + +openmind_hub.upload_folder( + folder_path="/path/to/local/folder", + repo_id="username/your-model-name", + token="your-token", +) +```