model_converter: 模型转换模块
该模块提供了以下功能:
1、将 mindspore 框架训练的模型转换为 pytorch 框架的模型
2、将分布式训练的 pytorch 模型转为单机模型,方便推理
3、将 pytorch 框架下的单机模型转为分布式训练模型;结合第二点功能,可以实现不同分布式训练策略的转换。
使用
-
将 mindspore 模型转换为 pytorch 模型
- 第一步,将mindspore 模型提取成为 numpy 文件。这个步骤需要使用 mindspore 框架,所以需要事项安装好 mindspore 环境。代码:
from pcl_pangu.model_converter import ms_2_numpy
ms_2_numpy(ms_ckpt_path='path/of/mindspore/ckpt',
npy_path='path/to/save/numpy/files')
要求安装 mindspore
- 第二步,将 numpy 文件加载到 pytorch 模型里面。需要先安装好 pytorch 环境。代码:
from pcl_pangu.model_converter import numpy_2_pt
from pcl_pangu.model import alpha
alpha_config = alpha.model_config_gpu(model='2B6')
numpy_2_pt(config = alpha_config,
numpy_ckpt = 'path/to/numpy/files')
要求安装 pytorch
-
将分布式训练的 pytorch 模型转为单机模型
from pcl_pangu.model import alpha
from pcl_pangu.model_converter import merge_pt
alpha_config = alpha.model_config_gpu(model='2B6')
merge_pt(config = alpha_config,
sharding_path='path/of/your/sharding/models',
num_ranks='num/of/model/rank')
要求安装 pytorch
-
将单机模型转为分布式模型
from pcl_pangu.model import alpha
from pcl_pangu.model_converter import split_pt
alpha_config = alpha.model_config_gpu(model='2B6')
split_pt(config=alpha_config,
merged_path='path/of/merged/model',
num_ranks='num/of/rank/you/want/to/split')
要求安装 pytorch