"...git@developer.sourcefind.cn:wuxk1/megatron-lm.git" did not exist on "99a0c39ea23936072cfd7fb1ce1fd2b8298e9b20"
model_checkpoint.md 1.81 KB
Newer Older
1
# 模型Checkpoint
2
3
4

作者 : Guangyang Lu

5
6
> ⚠️ 此页面上的信息已经过时并将被废弃。请在[Booster Checkpoint](../basics/booster_checkpoint.md)页面查阅更新。

7
8
9
10
11
12
13
14
15
16
17
**预备知识:**
- [Launch Colossal-AI](./launch_colossalai.md)
- [Initialize Colossal-AI](./initialize_features.md)

**示例代码:**
- [ColossalAI-Examples Model Checkpoint](https://github.com/hpcaitech/ColossalAI-Examples/tree/main/utils/checkpoint)

**函数是经验函数.**

## 简介

18
本教程将介绍如何保存和加载模型Checkpoint。
19

20
为了充分利用Colossal-AI的强大并行策略,我们需要修改模型和张量,可以直接使用 `torch.save` 或者 `torch.load` 保存或加载模型Checkpoint。在Colossal-AI中,我们提供了应用程序接口实现上述同样的效果。
21
22
23
24
25
26
27
28

但是,在加载时,你不需要使用与存储相同的保存策略。

## 使用方法

### 保存

有两种方法可以使用Colossal-AI训练模型,即使用engine或使用trainer。
29
**注意我们只保存 `state_dict`.** 因此,在加载Checkpoint时,需要首先定义模型。
30
31
32
33
34
35
36
37
38
39
40
41
42
43

#### 同 engine 保存

```python
from colossalai.utils import save_checkpoint
model = ...
engine, _, _, _ = colossalai.initialize(model=model, ...)
for epoch in range(num_epochs):
    ... # do some training
    save_checkpoint('xxx.pt', epoch, model)
```

#### 用 trainer 保存
```python
44
from colossalai.legacy.trainer import Trainer, hooks
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
model = ...
engine, _, _, _ = colossalai.initialize(model=model, ...)
trainer = Trainer(engine, ...)
hook_list = [
            hooks.SaveCheckpointHook(1, 'xxx.pt', model)
            ...]

trainer.fit(...
            hook=hook_list)
```

### 加载

```python
from colossalai.utils import load_checkpoint
model = ...
load_checkpoint('xxx.pt', model)
... # train or test
```
64
<!-- doc-test-command: echo  -->