/
githubmirror
/
ColossalAI
Обзор
Документация
Войти
/
githubmirror
/
ColossalAI
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
tests/test_optimizer/test_nvme.py
49 строк
2 KB
Hongxin Liu
[devops] remove post commit ci (#5566)
08 апр 2024, 10:09
Не верифицирован
08 апр 2024, 10:09
641b1ee
Код
Авторство
О чём код?
import pytest import torch from colossalai.nn.optimizer import CPUAdam, HybridAdam from colossalai.testing import clear_cache_before_run, parameterize from tests.kit.model_zoo import model_zoo def move_some_params_to_cuda(model, torch_model): model.embed.weight.data = model.embed.weight.cuda() torch_model.embed.weight.data = model.embed.weight.cuda() model.ln1.weight.data = model.ln1.weight.cuda() torch_model.ln1.weight.data = model.ln1.weight.cuda() def check_params_equal(model, torch_model): for p, torch_p in zip(model.parameters(), torch_model.parameters()): assert torch.allclose(p, torch_p, atol=1e-3), f"diff: {torch.abs(p - torch_p)}" # TODO Something wrong with ci when running this test. @pytest.mark.skip(reason="skip because of something wrong with CI") @clear_cache_before_run() @parameterize("nvme_offload_fraction", [0.0, 0.5, 1.0]) @parameterize("nvme_offload_dir", ["./offload", None]) @parameterize("adam_cls", [CPUAdam, HybridAdam]) def test_nvme_adam(nvme_offload_fraction, nvme_offload_dir, adam_cls): model_builder, data_gen_fn, *_ = next(iter(model_zoo.get_sub_registry("custom_simple_net").values())) model = model_builder() torch_model = model_builder() move_some_params_to_cuda(model, torch_model) optimizer = adam_cls( model.parameters(), lr=0.1, nvme_offload_fraction=nvme_offload_fraction, nvme_offload_dir=nvme_offload_dir ) torch_optimizer = torch.optim.Adam(torch_model.parameters(), lr=0.1) with torch.no_grad(): for p, torch_p in zip(model.parameters(), torch_model.parameters()): torch_p.copy_(p) p.grad = torch.rand_like(p) torch_p.grad = p.grad for _ in range(3): optimizer.step() torch_optimizer.step() check_params_equal(model, torch_model) if __name__ == "__main__": test_nvme_adam(0.5, "./offload", CPUAdam)