File size: 1,385 Bytes
40ed1bc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
MODEL_NAME=	open-llama-7b-v2
PYTHON?=	python
LLAMA_BUILD=	1132
LLAMA_TAR=	b$(LLAMA_BUILD).tar.gz
LLAMA_DIR=	llama.cpp-b$(LLAMA_BUILD)
LLAMA_FLAGS=
HF_REPO=	openlm-research/open_llama_7b_v2
HF_REF=		main
HF_FILES=	pytorch_model-00001-of-00002.bin \
		pytorch_model-00002-of-00002.bin \
		tokenizer.model \
		config.json \
		tokenizer_config.json
$(HF_FILES): 	SITE=	https://huggingface.co/$(HF_REPO)/resolve/$(HF_REF)
$(LLAMA_TAR): 	SITE=	https://github.com/ggerganov/llama.cpp/archive/refs/tags

QUANTS=		f16 q4_0 q4_1 q5_0 q5_1 q8_0 \
		q2_K \
		q3_K_S q3_K_M q3_K_L \
		q4_K_S q4_K_M \
		q5_K_S q5_K_M \
		q6_K

FILES=		$(HF_FILES) $(LLAMA_TAR)
MODEL_FILES=	$(foreach q,$(QUANTS),$(MODEL_NAME)-$(q).gguf)

.PHONY: all
all: $(MODEL_FILES) SHA256SUMS

$(FILES):
	curl -L -o $@ --url $(SITE)/$@

$(LLAMA_DIR): | $(LLAMA_TAR)
	tar -xf $(LLAMA_TAR)

$(LLAMA_DIR)/quantize: | $(LLAMA_DIR)
	$(MAKE) -C $(LLAMA_DIR) $(LLAMA_FLAGS) quantize

venv:
	$(PYTHON) -m venv venv
	venv/bin/pip install -e $(LLAMA_DIR)/gguf-py
	venv/bin/pip install -r $(LLAMA_DIR)/requirements.txt

$(MODEL_NAME)-f16.gguf: $(HF_FILES) | $(LLAMA_DIR) venv
	venv/bin/python $(LLAMA_DIR)/convert.py --outtype f16 --outfile $@ .

$(MODEL_NAME)-q%.gguf: $(MODEL_NAME)-f16.gguf | $(LLAMA_DIR)/quantize
	$(LLAMA_DIR)/quantize $< $@ q$*

%.sha: %
	sha256sum $< > $@

SHA256SUMS: $(addsuffix .sha,$(MODEL_FILES))
	cat $^ > $@