Skip to content

Commit 7547ce8

Browse files
author
Mark-ZhouWX
committed
add ckpt_to_mindir doc
1 parent d0352d3 commit 7547ce8

File tree

2 files changed

+80
-1
lines changed

2 files changed

+80
-1
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# 将CKPT转换成MINDIR
2+
3+
ckpt文件中存储了模型权重, mindir不仅存储了模型权重,还存储了网络结构、输入数据类型和shape等数据。因此,需要先将ckpt加载在网络结构中,并提供输入数据,才能将ckpt转为mindir。
4+
5+
## 环境依赖
6+
7+
硬件:Ascend 910B
8+
昇腾软件包:驱动+固件+CANN, 请前往[昇腾社区](https://www.hiascend.com/software/cann/commercial),按照说明下载安装。
9+
python: 3.7
10+
Mindspore: 2.0, 请前往[MindSpore官网](https://www.mindspore.cn/install),按照说明下载安装
11+
12+
## 转换方式
13+
14+
1. 克隆悟空画画export代码并安装依赖
15+
16+
```shell
17+
git clone https://github.com/Mark-ZhouWX/minddiffusion-export-ms2.0
18+
git checkout lite_infer_static # 切换分支
19+
cd ./vision/wukong-huahua
20+
pip install -r requirements.txt # 安装依赖
21+
```
22+
23+
2. 将模型权重ckpt文件放置在models文件夹下
24+
25+
```shell
26+
minddiffusion-export-ms2.0
27+
├──vision
28+
├── wukong-huahua
29+
├── models
30+
├── wukong-huahua-ms.ckpt # 模型权重ckpt, 名称可自定义
31+
```
32+
33+
3. 运行转换代码
34+
35+
```shell
36+
python txt2img.py --ckpt_name wukong-huahua-ms.ckpt --prompt "来自深渊 风景 绘画 写实风格" --n_samples 1 --sample_steps 15 --n_iter 1 --output_mindir_name wukong_youhua_512_512 --H 512 --W 512
37+
```
38+
39+
其中,`ckpt_name`表示自定义的待转换权重名称,`prompt`为用于测试转换效果的文字提示, `output_mindir_name`为转换后的`mindir`文件名称,`H``W`为模型的尺寸。
40+
转换完成后,可在`wukong-huahua`下查看生成的mindir模型(.mindir中存储了网络结构,variables文件夹中存储了模型权重,二者配套使用)和测试效果图。转换时间较长(15min左右),请耐心等待。
41+
42+
```shell
43+
minddiffusion-export-ms2.0
44+
├──vision
45+
├── wukong-huahua
46+
├── wukong_youhua_512_640_graph.mindir # 模型结构,名称为output_mindir_name指定
47+
├── wukong_youhua_512_640_variables # # 模型权重,名称为output_mindir_name指定
48+
├──output
49+
├──samples
50+
├──xxxxx.png # 测试效果图,名称为依次递增的数字
51+
```
52+
53+
## 转换原理
54+
55+
下面将使用伪代码描述转换的原理
56+
57+
1. 定义并实例化网络结构
58+
59+
```python
60+
net_inference = Txt2ImgInference(model, n_samples, H, W, sample_steps, order, scale)
61+
```
62+
63+
2. 再给定网络输入。悟空画画的网络输入为2个整型tensor,维度均为(batch_size, 77, 1024), 为了310P推理成功,应和310P推理batch_size保持一致,此处batch_size置为1
64+
65+
```python
66+
assert prompt.shape[0] == 1 and batch_size == 1
67+
unconditional_condition_token = tokenize(batch_size * [""])
68+
condition_token = tokenize(prompt)
69+
```
70+
71+
执行转换
72+
73+
```python
74+
import mindspore as ms
75+
ms.export(net_inference, unconditional_condition_token, condition_token, file_name=output_mindir_name, file_format="MINDIR")
76+
```
77+
78+
上述仅给出转换精简示例,具体代码实现细节请参考[悟空画画](https://github.com/Mark-ZhouWX/minddiffusion-export-ms2.0/blob/lite_infer_static/vision/wukong-huahua/txt2img.py#L143)

research/wukong/README_CN.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ Ascend-cann-toolkit_6.3.RC2.alpha003_linux-aarch64.run
2323

2424
1. 下载cann-toolkit。进入[昇腾社区CANN产品](https://www.hiascend.com/software/cann/community-history)页面,选择6.3.RC2.alpha003版本,勾选架构和文件格式过滤选项, 下载`Ascend-cann-toolkit_6.3.RC2.alpha003_linux-aarch64.run`
2525
![firmware-dirver.png](./resources/pics/cann-toolkit.png)
26-
2726
2. 下载firmware和driver。进入[昇腾社区固件与驱动](https://www.hiascend.com/zh/hardware/firmware-drivers/community?product=2&model=18&cann=6.3.RC2.alpha003&driver=1.0.19.alpha)页面,选择按图示勾选CANN版本和产品序列等,勾选组件、文件格式等过滤条件,下载firmware和driver包。注意cann版本需与步骤1中保持一致。
2827
![firmware-dirver.png](./resources/pics/firmware-dirver.png)
2928

@@ -100,6 +99,8 @@ diffusion模型和超分模型的权重可通过如下方式获取
10099
| origin_640_512.zip | [zip](https://download.mindspore.cn/toolkits/mindone/wukonghuahua/origin_640_512.zip) |
101100
| origin_512_512.zip | [zip](https://download.mindspore.cn/toolkits/mindone/wukonghuahua/origin_512_512.zip) |
102101

102+
_如您不想使用我们提供的原始mindir模型,而需要将自行训练的ckpt转成原始mindir,请参考[这里](CONVERT_CKPT_TO_MINDIR.md)_
103+
103104
要进行模型转换,首先需在`{project_root}/convert/convert_ms.py`脚本中配置相关参数,主要参数为配置文件路径`config_file`,输入模型`.mindir`路径`input_file`,输出模型文件名`output_file`,输出文件会自动添加后缀`_graph.mindir``variables`
104105

105106
```python

0 commit comments

Comments
 (0)