MindSpore计算框架如何发布训练好的模型到官方模型仓库MindSpore_Hub上
相关官方资料:
https://www.mindspore.cn/tutorial/training/zh-CN/r1.2/use/publish_model.html
参考地址:
https://gitee.com/mindspore/hub/blob/r1.2/mshub_res/README.md
https://gitee.com/mindspore/mindspore/blob/r1.2/CONTRIBUTING.md
==========================================================
将你的预训练模型托管在可以访问的存储位置。
这里假设我们训练的网络模型参数文件为 ckpt 文件,我们需要提前把参数文件保存到一个可以公开访问的地址,如:
但是这个地址是不是一定是http服务的呢?这里也是搞不太清楚,具体讨论看问末尾。
2. 参照模板,在你自己的代码仓中添加模型生成文件mindspore_hub_conf.py
,文件放置的位置如下:
这一步骤是说我们需要提供网络的定义文件,当然如果你可以提供网络的具体说明,训练代码,测试代码,等等吧,这是更好的,但是最低要求是需要提供一个网络定义的文件。而这个网络定义的文件需要满足两个条件:
1). 以代码库的形式来体现,如:
repo-link: https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/googlenet
这里我们可以使用gitee 或 github 来存放自己构建的代码库,该代码库中存放网络定义的文件。
2). 代码库中需要提供mindspore_hub可以调用的API接口文件。
在你自己的代码仓中添加模型生成文件mindspore_hub_conf.py
,该文件存储位置为根目录,如上图所示。
文件mindspore_hub_conf.py
编写格式参考:
"""hub config."""
from src.googlenet import GoogleNet def googlenet(*args, **kwargs):
return GoogleNet(*args, **kwargs) def create_network(name, *args, **kwargs):
if name == "googlenet":
return googlenet(*args, **kwargs)
raise NotImplementedError(f"{name} is not implemented in the repo")
也就是说 文件mindspore_hub_conf.py
中需要有 函数 def create_network(name, *args, **kwargs):
通过调用函数 create_network 我们可以获得返回的定义好的mindspore框架下的网络对象,即上面代码中的 return googlenet(*args, **kwargs) 。
mindspore_hub中load网络时便会自动调用 create_network函数获得定义好后的网络模型,并通过访问模型参数托管的位置来加载网络参数。
3. 编写说明文件,即 .md 文件,然后以提交PR的形式提交给mindspore_hub官方代码库。(这里假设已经从官方gitee地址mindspore上拉取了hub库)
.md 文件的存放地址(在自己拉取的mindspore的官方hub库下的位置,因为我们最后是以提交PR的形式提交给官方的)
参照模板,在hub/mshub_res/assets/mindspore/ascend/0.7
文件夹下创建{model_name}_{model_version}_{dataset}.md
文件,其中ascend
为模型运行的硬件平台,0.7
为MindSpore的版本号,hub/mshub_res
的目录结构为:
假设我们是用的mindspore1.3gpu版本,那么我们存放.md文件在自己拉取的hub代码库的路径为:
hub/mshub_res/assets/mindspore/gpu/1.3
而 .md 文件的命名格式:
{model_name}_{model_version}_{dataset}.md
中的 googlenet_v1_cifar10.md
其中,googlenet 为我们训练的神经网络的名称, v1 为我们个人命名的版本号(这个可以自己自由随便起),cifar10 是我们用来进行训练的数据集名称。
.md 文件的内容最少包括:
注意,{model_name}_{model_version}_{dataset}.md
文件中需要补充如下所示的file-format
、asset-link
和 asset-sha256
信息,它们分别表示模型文件格式、模型存储位置(步骤1所得)和模型哈希值。
即:
file-format: ckpt
asset-link: https://download.mindspore.cn/model_zoo/official/cv/googlenet/goolenet_ascend_0.2.0_cifar10_official_classification_20200713/googlenet.ckpt
asset-sha256: 114e5acc31dad444fa8ed2aafa02ca34734419f602b9299f3b53013dfc71b0f7
其中,模型存储位置 asset-link ,则是我们前文说的那个可以公网访问的地址。
而 asset-sha256 字符串需要使用hub代码库中的代码进行计算,如下操作:
cd /hub/mshub_res/tools
python get_sha256.py --file ../googlenet.ckpt
获得hash码后填写回 .md 文件,完成 .md 文件的编写。
验证 .md 文件的编写是否符合规范:
使用hub/mshub_res/tools/md_validator.py
在本地核对.md
文件的格式,执行以下命令,输出结果为All Passed
,表示.md
文件的格式和内容均符合要求。
如:
python md_validator.py --check_path ../assets/mindspore/gpu/1.3/googlenet_v1_cifar10.md
4. 完成个人拉取的hub代码库中 .md 文件的编写后提交PR给官方请求合并。
==========================================================
相关问题:
想发布模型到MindSpore_hub上所需asset-link的地址可以是百度网盘吗,除http服务可以访问以外ftp服务行吗
官方需要我们提供已经训练好的模型的参数文件地址,该地址需要是可以访问的,那这个地址是不是一定要是http服务访问的呢?
因为我们很有可能是没有公网IP下的http服务器的,而如果必须是可访问的http服务的地址可能就很难满足了,但是如果可以用百度云盘之类的存储方式就可以很好解决了,但是是否可以呢,我们可以关注下上面的帖子。
MindSpore计算框架如何发布训练好的模型到官方模型仓库MindSpore_Hub上的更多相关文章
- 【codenet】代码相似度计算框架调研 -- 把内容与形式分开
首发于我的gitpages博客 https://helenawang.github.io/2018/10/10/代码相似度计算框架调研 代码相似度计算框架调研 研究现状 代码相似度计算是一个已有40年 ...
- [.NET网格计算框架] Alchemi
Alchemi [.NET网格计算框架] 是 一个以使用简易为目的的Windows下的网格计算框架.它提供了:a)开发网格软件的编程环境 和 b)建造网格和运行网格软件的运行机制. A ...
- 高通量计算框架HTCondor(一)——概述
目录 1. 正文 2. 目录 3. 参考 4. 相关 1. 正文 HTCondor是威斯康星大学麦迪逊分校构建的分布式计算软件和相关技术,用来处理高通量计算(High Throughput Compu ...
- Storm分布式实时流计算框架相关技术总结
Storm分布式实时流计算框架相关技术总结 Storm作为一个开源的分布式实时流计算框架,其内部实现使用了一些常用的技术,这里是对这些技术及其在Storm中作用的概括介绍.以此为基础,后续再深入了解S ...
- Spark Streaming实时计算框架介绍
随着大数据的发展,人们对大数据的处理要求也越来越高,原有的批处理框架MapReduce适合离线计算,却无法满足实时性要求较高的业务,如实时推荐.用户行为分析等. Spark Streaming是建立在 ...
- Storm实时计算框架的编程模式
storm分布式流式计算框架. nimbus:主进程服务(职责就是任务的分配的,程序的分发) supervisor:工作进程服务(职责就是启动线程池,接受任务,运行任务,报告任务的运行状态) 注意容错 ...
- 开源图计算框架GraphLab介绍
GraphLab介绍 GraphLab 是由CMU(卡内基梅隆大学)的Select 实验室在2010 年提出的一个基于图像处理模型的开源图计算框架.框架使用C++语言开发实现. 该框架是面向机器学习( ...
- 大数据计算框架Hadoop, Spark和MPI
转自:https://www.cnblogs.com/reed/p/7730338.html 今天做题,其中一道是 请简要描述一下Hadoop, Spark, MPI三种计算框架的特点以及分别适用于什 ...
- (第4篇)hadoop之魂--mapreduce计算框架,让收集的数据产生价值
摘要: 通过前面的学习,大家已经了解了HDFS文件系统.有了数据,下一步就要分析计算这些数据,产生价值.接下来我们介绍Mapreduce计算框架,学习数据是怎样被利用的. 博主福利 给大家赠送一套ha ...
- Dream_Spark-----Spark 定制版:005~贯通Spark Streaming流计算框架的运行源码
Spark 定制版:005~贯通Spark Streaming流计算框架的运行源码 本讲内容: a. 在线动态计算分类最热门商品案例回顾与演示 b. 基于案例贯通Spark Streaming的运 ...
随机推荐
- chrome edge CORS 允许跨域
edge: edge://flags/#block-insecure-private-network-requests chrome: 在谷歌浏览器地址栏输入"chrome://flags/ ...
- redis安全篇
redis被攻击,作为突破口,服务器惨遭毒手的事太常见了. 大多数云服务器被攻击,都是redis,mongodb等数据库被入侵. 因此修改端口,密码,以及注意bind运行地址,是必须. 思考是否要暴露 ...
- Vue3:介绍
Vue 3 相较于 Vue 2 在多个方面进行了改进和优化,主要优势包括但不限于以下几个方面: 响应式系统优化: Vue 3 引入了基于 Proxy 的响应式系统,取代了 Vue 2 中基于 Obje ...
- LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning、Lora、Prefix tuing等]
LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning.Lora.Prefix tuing等] 由于LLM参数量都是在亿级以上,少则数十亿,多则 ...
- LangChain结合LLM做私有化文档搜索
我们知道LLM(大语言模型)的底模是基于已经过期的公开数据训练出来的,对于新的知识或者私有化的数据LLM一般无法作答,此时LLM会出现"幻觉".针对"幻觉"问题 ...
- readhat8搭建SFTP双机高可用并配置Rsync数据实时同步
环境准备: 主机 host-61-118 : 192.168.61.118 host-61-119:192.168.61.119 vip:192.168.61.220 检测openssh版本,版本必须 ...
- 慕课DJANGO配置
重写内置的错误处理视图 在项目urls.py中添加配置 handler500 = "app01.views.page_500" handler404 = "app01.v ...
- QT学习:03 信号与槽
--- title: framework-cpp-qt-03-信号与槽 EntryName: framework-cpp-qt-03-signal-slot date: 2020-04-09 13:5 ...
- 【论文阅读】ICRA2022: Panoptic Multi-TSDFs: a Flexible Representation for Online Multi-resolution Volumetric Mapping and Long-term Dynamic Scene Consistency
Type: ICRA Year: 2022 tag: SLAM 参考与前言 论文链接:https://arxiv.org/abs/2109.10165 代码链接:https://github.com/ ...
- “进口”双核A53@1.4GHz仅188元起,超高性价比!“邮票孔”AM62x工业核心板,正式发布!
创龙科技作为TI官方合作伙伴,在2022年9月即推出搭载TI最新明星处理器AM62x的工业核心板-SOM-TL62x(B2B版本).为了让工业客户进一步降低产品成本,并提高产品连接的可靠性,我们再次推 ...