UNPKG

@wllama/wllama

Version:

WebAssembly binding for llama.cpp - Enabling on-browser LLM inference

54 lines (45 loc) 1.94 kB
services: llamacpp-wasm-builder: container_name: llamacpp-wasm-builder build: context: . dockerfile_inline: | ARG EMSDK_IMAGE_TAG=none # modify it in build_wasm.sh FROM emscripten/emsdk:$${EMSDK_IMAGE_TAG} RUN apt update && apt install -y git args: EMSDK_IMAGE_TAG: ${EMSDK_IMAGE_TAG} user: "${D_UID}:${D_GID}" volumes: - ..:/source:Z entrypoint: /bin/bash command: - -c - | set -e cd /source mkdir -p wasm/single-thread cd wasm/single-thread export SHARED_EMCC_CFLAGS="--no-entry -O3 -msimd128 -DNDEBUG -flto=full -frtti -fwasm-exceptions -sEXPORT_ALL=1 -sEXPORT_ES6=0 -sMODULARIZE=0 -sINITIAL_MEMORY=128MB -sMAXIMUM_MEMORY=4096MB -sALLOW_MEMORY_GROWTH=1 -sFORCE_FILESYSTEM=1 -sEXPORTED_FUNCTIONS=_main,_wllama_malloc,_wllama_start,_wllama_action,_wllama_exit,_wllama_debug -sEXPORTED_RUNTIME_METHODS=ccall,cwrap -sNO_EXIT_RUNTIME=1" # emcc --clear-cache emcmake cmake ../.. export EMCC_CFLAGS="$$SHARED_EMCC_CFLAGS" emmake make wllama -j cd ../.. mkdir -p wasm/multi-thread cd wasm/multi-thread export EMCC_CFLAGS="" # temporary clear it emcmake cmake ../.. export EMCC_CFLAGS="$$SHARED_EMCC_CFLAGS -pthread -sUSE_PTHREADS=1 -sPTHREAD_POOL_SIZE=Module[\\\"pthreadPoolSize\\\"]" emmake make wllama -j # go back to root cd ../.. # list files echo "wasm/single-thread"; ls -lh wasm/single-thread echo "wasm/multi-thread"; ls -lh wasm/multi-thread # copy output files mkdir -p src/multi-thread cp wasm/multi-thread/wllama.js src/multi-thread cp wasm/multi-thread/wllama.wasm src/multi-thread cp wasm/single-thread/wllama.js src/single-thread cp wasm/single-thread/wllama.wasm src/single-thread