test.py 1.52 KB
Newer Older
aiss's avatar
aiss committed
1
2
3
4
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0

# DeepSpeed Team
aiss's avatar
aiss committed
5

Samyam Rajbhandari's avatar
Samyam Rajbhandari committed
6
7
8
import torch
from deepspeed.pt.deepspeed_linear import LinearModuleForZeroStage3
from deepspeed.pt.log_utils import logger
aiss's avatar
aiss committed
9
from deepspeed.accelerator import get_accelerator
Samyam Rajbhandari's avatar
Samyam Rajbhandari committed
10
11
12
13
14
15
16
17


def see_memory_usage(message):

    # Print message except when distributed but not rank 0
    logger.info(message)
    logger.info(
        "Memory Allocated %s GigaBytes ",
aiss's avatar
aiss committed
18
        get_accelerator().memory_allocated() / (1024 * 1024 * 1024),
Samyam Rajbhandari's avatar
Samyam Rajbhandari committed
19
20
21
    )
    logger.info(
        "Max Memory Allocated %s GigaBytes",
aiss's avatar
aiss committed
22
        get_accelerator().max_memory_allocated() / (1024 * 1024 * 1024),
Samyam Rajbhandari's avatar
Samyam Rajbhandari committed
23
24
25
    )
    logger.info(
        "Cache Allocated %s GigaBytes",
aiss's avatar
aiss committed
26
        get_accelerator().memory_cached() / (1024 * 1024 * 1024),
Samyam Rajbhandari's avatar
Samyam Rajbhandari committed
27
28
29
    )
    logger.info(
        "Max cache Allocated %s GigaBytes",
aiss's avatar
aiss committed
30
        get_accelerator().max_memory_cached() / (1024 * 1024 * 1024),
Samyam Rajbhandari's avatar
Samyam Rajbhandari committed
31
32
33
    )


aiss's avatar
aiss committed
34
tens = torch.rand(1024, 16384, dtype=torch.half, device=torch.device(get_accelerator().device_name()))
Samyam Rajbhandari's avatar
Samyam Rajbhandari committed
35
36
37
38
39
40
tens_back = tens.detach().clone()

#linear_bk = torch.nn.functional.linear
#torch.nn.functional.linear = deepspeed.pt.deepspeed_linear.LinearFunctionForZeroStage3.apply
model = LinearModuleForZeroStage3(16384, 16384)

aiss's avatar
aiss committed
41
model.to(get_accelerator().device_name()).half()
Samyam Rajbhandari's avatar
Samyam Rajbhandari committed
42
43
44
45
46
47

see_memory_usage("Before forward")
y = model(tens)

see_memory_usage("After forward")

aiss's avatar
aiss committed
48
model.weight.data = torch.zeros(1, dtype=torch.half, device=torch.device(get_accelerator().device_name()))
Samyam Rajbhandari's avatar
Samyam Rajbhandari committed
49
50
51
52

see_memory_usage("After weight zero")

y.backward(tens_back)