ModelPackage¶
A dict-like collection of named ir.Model objects forming a complete model.
from mobius import ModelPackage
Class Signature¶
class ModelPackage(UserDict[str, ir.Model]):
config: object | None
def __init__(
self,
models: dict[str, ir.Model] | None = None,
config: object | None = None,
) -> None: ...
Methods¶
save()¶
Save all component models to a directory.
def save(
self,
directory: str,
*,
external_data: str = "onnx",
max_shard_size_bytes: int | None = None,
max_workers: int = 8,
components: Callable[[str], bool] | None = None,
progress_bar: bool = True,
check_weights: bool = True,
include_policy_components: bool = True,
include_adapter_artifacts: bool = True,
) -> None:
Parameter |
Type |
Default |
Description |
|---|---|---|---|
|
|
(required) |
Output directory path. |
|
|
|
|
|
|
|
Maximum shard size for ONNX or safetensors external data. |
|
|
|
ONNX external-data writer threads when supported; use |
|
|
|
Predicate to select components to save. |
|
|
|
Show serialization progress. |
|
|
|
Verify all initializers have weight data. |
|
|
|
Save attached generation-policy models under |
|
|
|
Save attached parameter-adapter bundles under |
For packages whose weight-loading report sets streaming_external_data=True,
and for qualifying packages with an export report, save() publishes
transactionally to a destination that must not already exist. Models and
external data are first written to a staging directory and moved into place
only after every selected component succeeds. A failed lazy transform or
serializer call does not leave a success-shaped output directory.
Loaders may register source checkpoint artifacts on the package. For packages
that do so, save() rejects exact source-directory collisions for safetensors
outputs and output files that resolve to the same file as a registered source,
including hard-link and symlink aliases. Native GPT-OSS MXFP4 opts into both
this registration and transactional publication.
load()¶
Load models from a directory.
@classmethod
def load(cls, directory: str) -> ModelPackage:
apply_weights()¶
Apply weights from a state dict to all component models.
def apply_weights(
self,
state_dict: dict[str, torch.Tensor],
prefix_map: dict[str, str] | None = None,
) -> None:
Examples¶
from mobius import build
# Build and save
pkg = build("meta-llama/Llama-3.2-1B")
pkg.save("output/llama/")
# Access individual models
model = pkg["model"]
print(model.graph.name)
# Check components
print(list(pkg.keys())) # ["model"] for single-model
# ["model", "vision", "embedding"] for VLM
# Load from disk
pkg = ModelPackage.load("output/llama/")
# Save as safetensors
pkg.save("output/llama/", external_data="safetensors")
# Bound serializer concurrency
pkg.save("output/llama-serial/", max_workers=1)
Output Layout¶
Single model:
directory/model.onnx+directory/model.onnx.dataMulti model:
directory/{name}/model.onnxfor each component
Checkpoint shards used by lazy sources are inputs, not package outputs. Saving does not remove them from the HuggingFace cache.