initial commit
This commit is contained in:
commit
b03851545e
|
@ -0,0 +1,2 @@
|
|||
models/*.gguf
|
||||
out/*
|
|
@ -0,0 +1,11 @@
|
|||
FROM stagex/core-busybox@sha256:01b31cc07543733fbf6889e596427af943aba2780bc2f514a3d30bb290da7e2a AS core-busybox
|
||||
FROM stagex/core-musl@sha256:23d0614f60449015add2369959c89a6ea08e208302773b9a0811ce1195afc3a4 AS core-musl
|
||||
FROM stagex/core-gcc@sha256:02896413375c15cbff666fbab7c534caefc8936d53e167a6ea457a05c27e8096 AS core-gcc
|
||||
FROM stagex/user-llama-cpp@sha256:04c47c26ef9dec4477317b686cb537a22ac3847c7f206ed17b05216b602f7ea0 AS user-llama-cpp
|
||||
FROM scratch as shell
|
||||
COPY --from=core-busybox . /
|
||||
COPY --from=core-musl . /
|
||||
COPY --from=core-gcc /usr/lib/ /usr/lib
|
||||
COPY --from=user-llama-cpp . /
|
||||
WORKDIR /workdir
|
||||
CMD ["sh"]
|
|
@ -0,0 +1,37 @@
|
|||
.DEFAULT_GOAL :=
|
||||
.PHONY: default
|
||||
default: out/shell.digest
|
||||
|
||||
.PHONY: models
|
||||
models: \
|
||||
models/mistral7b.gguf
|
||||
|
||||
out:
|
||||
mkdir -p out
|
||||
|
||||
models/mistral7b.gguf: models/mistral7b.sha256
|
||||
wget -nc -O $@ \
|
||||
https://huggingface.co/TheBloke/MetaMath-Mistral-7B-GGUF/resolve/main/metamath-mistral-7b.Q5_K_M.gguf || :
|
||||
sha256sum --check --status < $< || mv $@ $@.fail
|
||||
touch $@
|
||||
|
||||
out/shell.digest: Containerfile | out
|
||||
docker build --target shell -f Containerfile -q . > $@
|
||||
|
||||
.PHONY: shell
|
||||
shell: out/shell.digest models
|
||||
docker run -it -v ./models:/workdir/models $(shell cat $<)
|
||||
|
||||
.PHONY: reproduce
|
||||
vm: out/shell.digest models
|
||||
docker run -it -v ./models:/workdir/models $(shell cat $<) sh -c "\
|
||||
llama-cpp --version
|
||||
"
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -rf out
|
||||
|
||||
.PHONY: update
|
||||
update:
|
||||
python3 scripts/update.py
|
|
@ -0,0 +1 @@
|
|||
31ad02ec68e43ea73fc0372c29d6ba23f3da8ff3347a82b7fabd2b6c74287208 models/mistral7b.gguf
|
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/env python3
|
||||
from requests import Session
|
||||
from fileinput import FileInput
|
||||
|
||||
target = "Containerfile"
|
||||
source = "https://codeberg.org/stagex/stagex/raw/branch/main/digests/"
|
||||
stages = ["core","user","bootstrap"]
|
||||
|
||||
digests = {}
|
||||
for stage in stages:
|
||||
response = Session().get(f"{source}{stage}.txt")
|
||||
for line in response.iter_lines():
|
||||
if not line:
|
||||
continue
|
||||
digest,name = line.decode("utf-8").split(" ")
|
||||
digests[name] = digest
|
||||
|
||||
with FileInput(target, inplace=True, backup='.bak') as f:
|
||||
for line in f:
|
||||
if line.startswith("FROM stagex/"):
|
||||
name = line.split("/")[1].split(":")[0]
|
||||
tag = line.split(":")[1].split("@")[0]
|
||||
if name not in digests:
|
||||
for stage in stages:
|
||||
if f"{stage}-{name}" in digests:
|
||||
name = f"{stage}-{name}"
|
||||
print(f"FROM stagex/{name}:{tag}@sha256:{digests[name]} AS {name}")
|
||||
else:
|
||||
print(line,end='')
|
Loading…
Reference in New Issue