-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
54 lines (42 loc) · 2.01 KB
/
Copy pathMakefile
File metadata and controls
54 lines (42 loc) · 2.01 KB
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
PYTHON ?= python3
CC ?= cc
WINDOWS_CC ?= i686-w64-mingw32-clang
DEFAULT_TOKENS ?= 128
DEFAULT_CONTEXT ?= 0
FLOPPY_BYTES ?= 1474560
CFLAGS = -Os -ffunction-sections -fdata-sections -Wall -Wextra
DEFINES = -DDEFAULT_MAX_NEW_TOKENS=$(DEFAULT_TOKENS) -DDEFAULT_CONTEXT_OVERRIDE=$(DEFAULT_CONTEXT)
WINDOWS_LDFLAGS = -Wl,--gc-sections -Wl,-s -Wl,--subsystem,console:4.0 \
-Wl,--major-os-version,4 -Wl,--minor-os-version,0 \
-Wl,--disable-dynamicbase -Wl,--disable-nxcompat
.PHONY: all model native windows check clean
all: native
model: model/tiny1m-q8.bin model/tokenizer.bin
model/model-f32.bin:
mkdir -p model
curl -L --fail -o $@ https://huggingface.co/shibatch/tiny1m/resolve/main/model.bin
printf '%s %s\n' 80ba15bd7feed5f78c13c33bac83992617ff030661f16abbfed8fba0a6e335c1 $@ | sha256sum -c -
model/tokenizer.bin:
mkdir -p model
curl -L --fail -o $@ https://huggingface.co/shibatch/tiny1m/resolve/main/tokenizer.bin
printf '%s %s\n' 037cb335abb25d1fa9e8ecae30ed2a3a8ace9302862ebcdc05d51a6bbb10c312 $@ | sha256sum -c -
model/tiny1m-q8.bin: model/model-f32.bin tools/legacy_to_q8.py
$(PYTHON) tools/legacy_to_q8.py $< $@ 32
printf '%s %s\n' 43c16d0d0702c1f628f841cad10c01bfde4a3a94d7784221a2f6208853ce12c2 $@ | sha256sum -c -
native: model
mkdir -p dist
$(CC) $(CFLAGS) $(DEFINES) -o dist/floppy-llm-runner src/floppy_llm.c -lm
$(PYTHON) tools/pack_overlay.py dist/floppy-llm-runner model/tiny1m-q8.bin model/tokenizer.bin dist/floppy-llm
chmod +x dist/floppy-llm
$(PYTHON) tools/check_size.py dist/floppy-llm $(FLOPPY_BYTES)
windows: model
mkdir -p dist
$(WINDOWS_CC) $(CFLAGS) $(DEFINES) $(WINDOWS_LDFLAGS) \
-o dist/floppy-llm-runner.exe src/floppy_llm.c -lm
$(PYTHON) tools/pack_overlay.py dist/floppy-llm-runner.exe model/tiny1m-q8.bin model/tokenizer.bin dist/floppy-llm.exe
$(PYTHON) tools/check_size.py dist/floppy-llm.exe $(FLOPPY_BYTES)
check: native
./dist/floppy-llm --version
./dist/floppy-llm --prompt "Once upon a time, there was a little robot named Pip." --temperature 0 --tokens 20
clean:
$(RM) -r dist