nsarrazin commited on
Commit
ffc89fe
·
unverified ·
1 Parent(s): 3536a58

fix: build llama.cpp locally in dockerfile (#1788)

Browse files

* fix: build llama.cpp locally in dockerfile

* fix: build for good

* refactor: move model folder to /data/models

Dockerfile CHANGED
@@ -24,7 +24,7 @@ RUN touch /app/.env.local
24
  RUN npm i --no-package-lock --no-save playwright@1.47.0
25
  USER root
26
  RUN apt-get update
27
- RUN apt-get install gnupg curl -y
28
  RUN npx playwright install --with-deps chromium
29
  RUN chown -R 1000:1000 /home/user/.npm
30
  USER user
@@ -37,7 +37,6 @@ COPY --chown=1000 package-lock.json /app/package-lock.json
37
 
38
  RUN chmod +x /app/entrypoint.sh
39
 
40
-
41
  FROM node:20 AS builder
42
 
43
  WORKDIR /app
@@ -72,7 +71,11 @@ COPY --from=mongo /usr/bin/mongo* /usr/bin/
72
  ENV MONGODB_URL=mongodb://localhost:27017
73
  USER root
74
  RUN mkdir -p /data/db
 
 
75
  RUN chown -R 1000:1000 /data/db
 
 
76
  USER user
77
  # final image
78
  FROM local_db_${INCLUDE_DB} AS final
@@ -88,8 +91,11 @@ ARG PUBLIC_APP_COLOR=blue
88
  ARG PUBLIC_COMMIT_SHA=
89
  ENV PUBLIC_COMMIT_SHA=${PUBLIC_COMMIT_SHA}
90
  ENV BODY_SIZE_LIMIT=15728640
 
 
91
  #import the build & dependencies
92
  COPY --from=builder --chown=1000 /app/build /app/build
93
  COPY --from=builder --chown=1000 /app/node_modules /app/node_modules
 
94
 
95
  CMD ["/bin/bash", "-c", "/app/entrypoint.sh"]
 
24
  RUN npm i --no-package-lock --no-save playwright@1.47.0
25
  USER root
26
  RUN apt-get update
27
+ RUN apt-get install gnupg curl git cmake clang libgomp1 -y
28
  RUN npx playwright install --with-deps chromium
29
  RUN chown -R 1000:1000 /home/user/.npm
30
  USER user
 
37
 
38
  RUN chmod +x /app/entrypoint.sh
39
 
 
40
  FROM node:20 AS builder
41
 
42
  WORKDIR /app
 
71
  ENV MONGODB_URL=mongodb://localhost:27017
72
  USER root
73
  RUN mkdir -p /data/db
74
+ RUN mkdir -p /data/models
75
+
76
  RUN chown -R 1000:1000 /data/db
77
+ RUN chown -R 1000:1000 /data/models
78
+
79
  USER user
80
  # final image
81
  FROM local_db_${INCLUDE_DB} AS final
 
91
  ARG PUBLIC_COMMIT_SHA=
92
  ENV PUBLIC_COMMIT_SHA=${PUBLIC_COMMIT_SHA}
93
  ENV BODY_SIZE_LIMIT=15728640
94
+ ENV MODELS_STORAGE_PATH=/data/models
95
+
96
  #import the build & dependencies
97
  COPY --from=builder --chown=1000 /app/build /app/build
98
  COPY --from=builder --chown=1000 /app/node_modules /app/node_modules
99
+ COPY --from=builder --chown=1000 /app/node_modules/node-llama-cpp/llama /app/build/server/llama
100
 
101
  CMD ["/bin/bash", "-c", "/app/entrypoint.sh"]
src/lib/server/endpoints/local/utilsLocal.ts CHANGED
@@ -1,3 +1,37 @@
1
  import { getLlama } from "node-llama-cpp";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
- export const llama = await getLlama();
 
 
 
 
1
  import { getLlama } from "node-llama-cpp";
2
+ import { logger } from "$lib/server/logger";
3
+ import { building } from "$app/environment";
4
+ export const llama = await getLlama({
5
+ logger: (level, message) => {
6
+ // Log messages based on their level
7
+ switch (level) {
8
+ case "fatal":
9
+ logger.fatal(message);
10
+ break;
11
+ case "error":
12
+ logger.error(message);
13
+ break;
14
+ case "warn":
15
+ logger.warn(message);
16
+ break;
17
+ case "info":
18
+ logger.info(message);
19
+ break;
20
+ case "log":
21
+ logger.info(message); // Map 'log' to 'info' since pino doesn't have a 'log' level
22
+ break;
23
+ case "debug":
24
+ logger.debug(message);
25
+ break;
26
+ default:
27
+ // For 'disabled' or any other unexpected levels
28
+ break;
29
+ }
30
+ },
31
+ build: building ? "try" : "never",
32
+ });
33
 
34
+ if (building) {
35
+ // lazy load llama
36
+ llama.getSwapState();
37
+ }