Files
2026-07-13 13:18:33 +08:00

60 lines
1.8 KiB
Python

# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0
# Apache-2.0 License Copyright (c) UChicago Argonne LLC, operator of Argonne National Laboratory.
# DeepSpeed Team
from deepspeed.runtime.checkpoint_engine.checkpoint_engine import \
CheckpointEngine, CheckpointCommitInfo
ENGINE_NAME = "DataStatesCheckpointEngine"
class DataStatesCheckpointEngine(CheckpointEngine):
def __init__(self, deepspeed_config, rank):
super().__init__(deepspeed_config)
self.commit_info = None
self.ckpt_engine = None
try:
from datastates import CheckpointEngine as DataStatesEngine
self.ckpt_engine = DataStatesEngine(deepspeed_config, rank)
except ImportError:
raise RuntimeError("Please install DataStates from https://github.com/DataStates/datastates-llm.")
except Exception as e:
raise RuntimeError(f"An error occurred while initializing DataStates Checkpoint Engine: {e}")
def __del__(self):
self.cleanup()
def create(self, info: CheckpointCommitInfo):
self.commit_info = info
return None
def save(self, state_dict, path: str):
return self.ckpt_engine.save(state_dict, path)
def load(self, path: str, map_location=None):
return self.ckpt_engine.load(path, map_location)
def commit(self, info: CheckpointCommitInfo):
if info is None:
return
assert info == self.commit_info
self.ckpt_engine.wait(persist=True)
self.commit_info = None
return True
def cleanup(self):
self.commit(self.commit_info)
if self.ckpt_engine:
self.ckpt_engine.wait(persist=True)
del self.ckpt_engine
def is_decoupled(self):
return True
def preserves_storage_sharing(self):
return False