-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
98 lines (80 loc) · 3.6 KB
/
Makefile
File metadata and controls
98 lines (80 loc) · 3.6 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
.PHONY: install deps gen-proto build run build-libs-cpu build-libs-gpu build-runner-cpu build-runner-gpu run-runner-cpu run-runner-gpu test-llama-cpu test-llama-gpu test clean
LLAMA_DIR := llm-runner/llama
RUN_ENV := LD_LIBRARY_PATH="$(PWD)/$(LLAMA_DIR):$(LD_LIBRARY_PATH)" LIBRARY_PATH="$(PWD)/$(LLAMA_DIR):$(LIBRARY_PATH)"
install:
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest \
&& go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
deps:
$(MAKE) -C $(LLAMA_DIR) -f Makefile deps
gen-go-proto:
@for proto in ./api/proto/app/*.proto; do \
name=$$(basename $$proto .proto); \
mkdir -p ./api/pb/app/$${name}pb; \
protoc --proto_path=./api/proto/app \
--go_out=paths=source_relative:./api/pb/app/$${name}pb \
--go-grpc_out=paths=source_relative:./api/pb/app/$${name}pb \
$$proto; \
done
@for proto in ./api/proto/llm-runner/*.proto; do \
name=$$(basename $$proto .proto); \
mkdir -p ./api/pb/llm-runner/$${name}pb; \
protoc --proto_path=./api/proto/llm-runner \
--go_out=paths=source_relative:./api/pb/llm-runner/$${name}pb \
--go-grpc_out=paths=source_relative:./api/pb/llm-runner/$${name}pb \
$$proto; \
done
gen-dart-proto:
mkdir -p ./client-app/lib/generated/grpc_pb
protoc --proto_path=./api/proto/app \
--dart_out=grpc:./client-app/lib/generated/grpc_pb \
./api/proto/app/*.proto
build:
mkdir -p ./build
go build -o ./build/gen-server ./cmd/gen
run:
go run ./cmd/gen
run-runner-cpu: build-libs-cpu
$(RUN_ENV) go run -tags="llama" ./cmd/gen-runner serve
run-runner-gpu: build-libs-gpu
$(RUN_ENV) go run -tags="llama,nvidia" ./cmd/gen-runner serve
build-libs-cpu:
$(MAKE) -C $(LLAMA_DIR) libbinding.a
ln -sf libllama.so $(LLAMA_DIR)/libllama.so.0
ln -sf libggml.so $(LLAMA_DIR)/libggml.so.0
ln -sf libggml-base.so $(LLAMA_DIR)/libggml-base.so.0
ln -sf libggml-cpu.so $(LLAMA_DIR)/libggml-cpu.so.0
build-libs-gpu:
$(MAKE) -C $(LLAMA_DIR) libbinding.a BUILD_TYPE=cublas
ln -sf libllama.so $(LLAMA_DIR)/libllama.so.0
ln -sf libggml.so $(LLAMA_DIR)/libggml.so.0
ln -sf libggml-base.so $(LLAMA_DIR)/libggml-base.so.0
ln -sf libggml-cpu.so $(LLAMA_DIR)/libggml-cpu.so.0
ln -sf libggml-cuda.so $(LLAMA_DIR)/libggml-cuda.so.0
build-runner-cpu: build-libs-cpu
@mkdir -p build build/gen-runner-lib
go build -tags="llama" -o build/gen-runner ./cmd/gen-runner
cp $(LLAMA_DIR)/libllama.so.0 ./build/gen-runner-lib/libllama.so.0
cp $(LLAMA_DIR)/libggml.so.0 ./build/gen-runner-lib/libggml.so.0
cp $(LLAMA_DIR)/libggml-base.so.0 ./build/gen-runner-lib/libggml-base.so.0
cp $(LLAMA_DIR)/libggml-cpu.so.0 ./build/gen-runner-lib/libggml-cpu.so.0
cp $(LLAMA_DIR)/libmtmd.so.0 ./build/gen-runner-lib/libmtmd.so.0
build-runner-gpu: build-libs-gpu
@mkdir -p build/gen-runner-lib
go build -tags="llama,nvidia" -o build/gen-runner ./cmd/gen-runner
cp $(LLAMA_DIR)/libllama.so.0 ./build/gen-runner-lib/libllama.so.0
cp $(LLAMA_DIR)/libggml.so.0 ./build/gen-runner-lib/libggml.so.0
cp $(LLAMA_DIR)/libggml-base.so.0 ./build/gen-runner-lib/libggml-base.so.0
cp $(LLAMA_DIR)/libggml-cpu.so.0 ./build/gen-runner-lib/libggml-cpu.so.0
cp $(LLAMA_DIR)/libggml-cuda.so.0 ./build/gen-runner-lib/libggml-cuda.so.0
clean:
rm -rf llm-runner/build
test:
go test ./... -race -count=1
test-llama-cpu: build-libs-cpu
$(RUN_ENV) go test -tags="llama" ./llm-runner/provider ./llm-runner/service
test-llama-gpu:
@if command -v nvidia-smi >/dev/null 2>&1 && $(MAKE) build-libs-gpu >/dev/null 2>&1; then \
$(RUN_ENV) go test -tags="llama,nvidia" ./provider ./service; \
else \
echo "Пропуск test-llama-gpu: библиотеки GPU/CUDA недоступны в этой среде"; \
fi