File size: 1,627 Bytes
c33a7ce
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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