Jozu Hub containers
Jozu Hub automatically generates Docker containers for each ModelKit. This is possible because ModelKits are stored as Open Container Initiative (OCI) artifacts, which is a format similar to (and derived from) containers.
TIP
For more information on how ModelKits are created, you can learn more in the KitOps documentation
INFO
This feature is still in active development at the moment, and we hope to improve the experience over time. In the mean time, we would love to hear your feedback. Reach us at [email protected].
How it works
Each ModelKit is described by a manifest, which contains one or more layers describing each part of the ModelKit (for example, the 'model', 'datasets', and 'code' sections). While these layers are intended for use with ModelKits specifically, they are also designed to be compatible with the layers used in a Docker container, meaning we can combine a ModelKit's manifest with a Docker container's manifest to create a container with a runtime model layer unaltered from the corresponding layer in the ModelKit.
When you use a CLI such as docker
(or reference the container in a Kubernetes pod), your system will download the container's filesystem layers — which define the operating system the container runs — then add the model layer from the ModelKit. This is possible because both the container and the ModelKit use OCI-compatible layers, and means that the container runtime uses the ModelKit's layers safely and with all the guarantees of containers, such as immutability.
Immutability of ModelKits, extended to containers
A key feature of ModelKits is their immutability — each ModelKit is identified by a unique digest, and this digest ensures that everyone who downloads the ModelKit receives identical data. We use this immutability to ensure the exact same data that is stored in the ModelKit is included in the container. This means you can inspect the containers downloaded from Jozu Hub to ensure they are using the same model weights as the ModelKit you pushed earlier.
Limitations
Since we are using the layers from a ModelKit directly, there are specific technical limitations on the containers produced by Jozu Hub at the moment. The files in the container that are contributed by the ModelKit will be
- Stored, by default, in the root path of the container
- Owned by the root user, with the same permissions as the original files
- Included as-is within the container, with no additional processing.
While we can work around these limitations by designing containers to work with ModelKits directly, you may run into compatibility issues on certain platforms. If you encounter issues or have any feedback, please email us at [email protected].