|
|
include ../common/Makefile.common |
|
|
|
|
|
TARGET_MODELS_IMAGE ?= $(BOOTC_MODELS_IMAGE) |
|
|
FROM_BOOTC_IMAGE ?= $(BOOTC_IMAGE) |
|
|
|
|
|
GRANITE_MODEL_REPO ?= instructlab/granite-7b-lab |
|
|
|
|
|
HF_TOKEN ?= $(shell echo $$HF_TOKEN) |
|
|
|
|
|
BUILD_MODELS_PATH := $(shell realpath ..)/build/models |
|
|
COMMON_PATH := $(shell realpath ../common) |
|
|
|
|
|
MODEL_REPO ?= |
|
|
|
|
|
default: download |
|
|
|
|
|
.PHONY: image |
|
|
image: |
|
|
"${CONTAINER_TOOL}" build \ |
|
|
--file Containerfile \ |
|
|
--tag $(REGISTRY)/$(REGISTRY_ORG)/model-downloader:latest \ |
|
|
${CONTAINER_TOOL_EXTRA_ARGS} . |
|
|
|
|
|
.PHONY: download-all |
|
|
download-all: image |
|
|
$(MAKE) MODEL_REPO=$(GRANITE_MODEL_REPO) download-model |
|
|
|
|
|
.PHONY: download-model |
|
|
download-model: |
|
|
mkdir -p $(BUILD_MODELS_PATH) |
|
|
podman run \ |
|
|
-e HF_TOKEN=$(HF_TOKEN) \ |
|
|
-v $(BUILD_MODELS_PATH):/download:z \ |
|
|
--pull=never \ |
|
|
-e MODEL_REPO=$(MODEL_REPO) \ |
|
|
-t $(REGISTRY)/$(REGISTRY_ORG)/model-downloader:latest |
|
|
|
|
|
.PHONY: generate-model-cfile |
|
|
generate-model-cfile: download-all |
|
|
echo "FROM ${FROM_BOOTC_IMAGE}" > ${MODELS_CONTAINERFILE} |
|
|
echo "RUN rsync -ah --progress --exclude '.hug*' --exclude '*.safetensors' /run/.input/models /usr/share" >> ${MODELS_CONTAINERFILE} |
|
|
"${CONTAINER_TOOL}" run \ |
|
|
-v .:/work:z \ |
|
|
-v ${OUTDIR}:/run/.input:ro \ |
|
|
--pull=never \ |
|
|
--entrypoint python3 \ |
|
|
$(REGISTRY)/$(REGISTRY_ORG)/model-downloader:latest \ |
|
|
/work/generate-model-cfile.py /run/.input/models >> ${MODELS_CONTAINERFILE} |
|
|
|
|
|
.PHONY: bootc-models |
|
|
bootc-models: generate-model-cfile |
|
|
"${CONTAINER_TOOL}" build \ |
|
|
$(ARCH:%=--platform linux/%) \ |
|
|
--file ${MODELS_CONTAINERFILE} \ |
|
|
--security-opt label=disable \ |
|
|
--tag "${TARGET_MODELS_IMAGE}" \ |
|
|
-v ${OUTDIR}:/run/.input:ro |
|
|
|