Skip to content

State Management Important ​

Since Roblox games rely on DataStoreService for persistence, Gradien provides utilities to serialize models and optimizers into simple tables that can be saved directly.

Models ​

Dumping ​

Converts the model's parameters into a serializable Snapshot format.

lua
local snapshot = Gradien.State.dump(model:parameters())
-- Returns: { { shape={...}, dtype="f32", data={...} }, ... }

Loading ​

Restores parameters from a snapshot. This modifies the model in-place.

lua
Gradien.State.load(model:parameters(), snapshot)

Binary Serialization (Buffer) Recommended ​

For maximum storage efficiency, you can serialize snapshots into binary buffers. This significantly reduces the data size compared to JSON tables.

State.toBuffer ​

Converts a snapshot table into a compact buffer.

lua
local snapshot = Gradien.State.dump(model:parameters())
local binaryData = Gradien.State.toBuffer(snapshot)

-- Save binaryData to DataStore
-- (Ensure your DataStore implementation supports buffer or encode to base64)

State.fromBuffer ​

Restores a snapshot from a binary buffer.

lua
local snapshot = Gradien.State.fromBuffer(binaryData)
if snapshot then
    Gradien.State.load(model:parameters(), snapshot)
end

Optimizers ​

Optimizers contain state (like momentum buffers in Adam) that must be saved to resume training effectively.

lua
-- Save
local optState = Gradien.State.dumpOptimizer(optimizer)

-- Load
Gradien.State.loadOptimizer(optimizer, optState)

Full Trainer Checkpoint ​

You can save the entire state of a Trainer instance, including the model, optimizer, current epoch, and best metric.

lua
local checkpoint = Gradien.State.dumpTrainer(trainer)

-- Save to DataStore
DataStore:SetAsync("TrainingCheckpoint", checkpoint)

-- Load later
Gradien.State.loadTrainer(trainer, checkpoint)