A tool to build modelcar images with layers per file
Project description
modelcar-maker
Downloads Hugging Face models and packages them as minimal OCI container images with one file per layer. Designed for use with KServe as Modelcar images.
Install
Requires Python 3.11+.
pip install modelcar-maker
Usage
modelcar-maker [OPTIONS] [MODEL]
| Argument / Option | Description |
|---|---|
MODEL |
Hugging Face model repo ID (e.g., meta-llama/Llama-3.2-3B-Instruct). Optional if models.default is configured. |
--registry |
Registry for the output image. Default: quay.io. |
-r, --repository |
Repository within the registry. Default: jharmison/models. |
--backend |
Build backend. Default: olot. The podman backend requires extra dependencies (included via pip install modelcar-maker[podman]) |
--base-image |
Base OCI image. Default: registry.access.redhat.com/ubi10/ubi-micro:10.2. |
--arch |
Target architecture(s). Repeat for multiple. Default: amd64, arm64. |
--pull / --no-pull |
Pull base image if a newer version is available. Default: --pull. |
--push / --no-push |
Push the image after building. Default: --push. |
-a, --authfile |
Path to Docker/podman auth config for registry push. |
--image-clean-up / --no-image-clean-up |
Remove local container image after push. Default: off. |
--model-clean-up / --no-model-clean-up |
Remove downloaded model files after build. Default: off. |
--skip-if-exists / --no-skip-if-exists |
Skip if the tag already exists at the registry. Default: on. |
-v |
Increase logging verbosity. Repeat for more. |
-V |
Print version and exit. |
Image tag format: {registry}/{repository}/{normalized-model}-modelcar
The model repo ID is normalized for use as a tag: slashes become --, dots become _, and the string is lowercased.
For example, meta-llama/Llama-3.2-3B-Instruct produces tag meta-llama--llama_3-2-3b-instruct-modelcar.
Examples:
# Build and push a model
modelcar-maker meta-llama/Llama-3.2-3B-Instruct
# Build locally without pushing
modelcar-maker BAAI/bge-large-en-v1.5 --no-push
# Explicit multi-arch build with cleanup
modelcar-maker mistralai/Mistral-7B --arch amd64 --arch arm64 --image-clean-up --model-clean-up
Configuration
Settings are resolved in layer order (later layers override earlier ones):
- Built-in defaults (
defaults.toml) /usr/share/modelcar-maker/config.toml/etc/modelcar-maker/config.toml~/.config/modelcar-maker/config.toml./config.toml(current working directory)- Environment variables with prefix
MODELCAR_MAKER_
Any setting can be overridden via environment variable by uppercasing the section and key and joining with underscores. For example:
| Env Var | Overrides |
|---|---|
MODELCAR_MAKER_IMAGE_REGISTRY |
image.registry |
MODELCAR_MAKER_IMAGE_PUSH |
image.push |
MODELCAR_MAKER_MODELS_DEFAULT |
models.default |
Example config.toml:
[image]
registry = "quay.io"
repository = "myorg/models"
push = true
architectures = ["amd64"]
[models]
default = ["meta-llama/Llama-3.2-3B-Instruct", "BAAI/bge-large-en-v1.5"]
Setting default models allows running modelcar-maker with no arguments to build all listed models.
Running as a Container
The tool is available as a container image at ghcr.io/jharmison-redhat/modelcar-maker:latest (versioned tags also
available).
podman run --rm ghcr.io/jharmison-redhat/modelcar-maker:latest --help
For authenticated pushes, mount a credential file. For gated downloads, provide the HF_TOKEN environment variable:
podman run --rm \
-v "$HOME/.docker/config.json:/config.json" \
-e HF_TOKEN="$HF_TOKEN" \
ghcr.io/jharmison-redhat/modelcar-maker:latest \
--authfile /config.json \
meta-llama/Llama-3.2-3B-Instruct
To persist downloaded model files across runs, mount a volume at /modelcar-maker:
podman run --rm \
-v modelcar-cache:/modelcar-maker \
-v "$HOME/.docker/config.json:/config.json" \
-e HF_TOKEN="$HF_TOKEN" \
ghcr.io/jharmison-redhat/modelcar-maker:latest \
--authfile /config.json \
--skip-if-exists \
meta-llama/Llama-3.2-3B-Instruct
docker may work but is untested.
License
ISC. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file modelcar_maker-0.4.1.tar.gz.
File metadata
- Download URL: modelcar_maker-0.4.1.tar.gz
- Upload date:
- Size: 36.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
573acaff8959c9853f69421a414a90d2a27ed7829d1ab51840f23660c54d99bf
|
|
| MD5 |
fabfb1a70d3c418b8f30e1e051f3ef5b
|
|
| BLAKE2b-256 |
092a79db5cd3ed7e962711a4fca1a680672db9f5f07ea74c19ce2f0b5a2da6ff
|
File details
Details for the file modelcar_maker-0.4.1-py3-none-any.whl.
File metadata
- Download URL: modelcar_maker-0.4.1-py3-none-any.whl
- Upload date:
- Size: 21.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a082879ad2e259ac9a61bf7071abce8f65536b40e78d68ac53f3ddc7ca7b0560
|
|
| MD5 |
ec70fe4d6faafe27f05be0e0aa98f194
|
|
| BLAKE2b-256 |
eddc80d5a8bd69c0db26533a9b12dd3f1f4f066ac4e735dc6a9e79898b0968c8
|