Files
2026-07-13 13:17:40 +08:00

42 lines
1.2 KiB
Python

import torch
from ray.train.torch import TorchCheckpoint
def assert_equal_torch_models(model1, model2):
# Check equality by comparing their `state_dict`
model1_state = model1.state_dict()
model2_state = model2.state_dict()
assert len(model1_state.keys()) == len(model2_state.keys())
for key in model1_state:
assert key in model2_state
assert torch.equal(model1_state[key], model2_state[key])
def test_from_model():
model = torch.nn.Linear(1, 1)
checkpoint = TorchCheckpoint.from_model(model)
assert_equal_torch_models(checkpoint.get_model(), model)
with checkpoint.as_directory() as path:
checkpoint = TorchCheckpoint.from_directory(path)
checkpoint_model = checkpoint.get_model()
assert_equal_torch_models(checkpoint_model, model)
def test_from_state_dict():
model = torch.nn.Linear(1, 1)
expected_state_dict = model.state_dict()
checkpoint = TorchCheckpoint.from_state_dict(expected_state_dict)
actual_state_dict = checkpoint.get_model(torch.nn.Linear(1, 1)).state_dict()
assert actual_state_dict == expected_state_dict
if __name__ == "__main__":
import sys
import pytest
sys.exit(pytest.main(["-v", "-x", __file__]))