The LlamaEdge project makes it easy for you to run LLM inference apps and create OpenAI-compatible API services for open-source LLMs locally.
⭐ Like our work? Give us a star!
📖 Checkout our official docs and a Manning ebook on how to customize open source models.
🔥 Run multiple models with LlamaEdge! LLM (Text Generation) | Embedding | Speech to Text | Text to speech | Text to Image | Multimodal
Prerequisite: Install WasmEdge via the following command line.
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install_v2.sh | bash
Step 1: Download an LLM model file. Here we use the Meta Llama 3.2 1B model as an example.
curl -LO https://huggingface.co/second-state/Llama-3.2-1B-Instruct-GGUF/resolve/main/Llama-3.2-1B-Instruct-Q5_K_M.gguf
Step 2: Download the LlamaEdge CLI chat app. It is also a cross-platform portable Wasm app that can run on many CPU and GPU devices.
curl -LO https://github.com/second-state/LlamaEdge/releases/latest/download/llama-chat.wasm
Step 3: Run the following command to chat with the LLM.
wasmedge --dir .:. --nn-preload default:GGML:AUTO:Llama-3.2-1B-Instruct-Q5_K_M.gguf llama-chat.wasm -p llama-3-chat
Next steps:
Serve any GenAI model in OpenAI-compatible web service endpoints:
/v1/chat/completion endpoints) -- https://github.com/LlamaEdge/LlamaEdge (this repo)/v1/embeddings endpoints) -- https://github.com/LlamaEdge/LlamaEdge (this repo)/v1/audio/transcriptions endpoints) -- https://github.com/LlamaEdge/whisper-api-server/v1/audio/speech endpoints) -- https://github.com/LlamaEdge/tts-api-server/v1/images/generations endpoints) -- https://github.com/LlamaEdge/sd-api-serverThe Rust source code for the inference applications are all open source and you can modify and use them freely for your own purposes.
llama-simple contains the source code project to generate text from a prompt using run llama2 models.llama-chat contains the source code project to "chat" with a llama2 model on the command line.llama-api-server contains the source code project for a web server. It provides an OpenAI-compatible API service, as well as an optional web UI, for llama2 models.The Rust+Wasm stack provides a strong alternative to Python in AI inference.
For more information, please check out Fast and Portable Llama2 Inference on the Heterogeneous Edge.
The LlamaEdge project supports all Large Language Models (LLMs) based on the llama2 framework. The model files must be in the GGUF format. We are committed to continuously testing and validating new open-source models that emerge every day.
Click here to see the supported model list with a download link and startup commands for each model. If you have success with other LLMs, don't hesitate to contribute by creating a Pull Request (PR) to help extend this list.
The compiled Wasm file is cross platfrom. You can use the same Wasm file to run the LLM across OSes (e.g., MacOS, Linux, Windows SL), CPUs (e.g., x86, ARM, Apple, RISC-V), and GPUs (e.g., NVIDIA, Apple).
The installer from WasmEdge 0.13.5 will detect NVIDIA CUDA drivers automatically. If CUDA is detected, the installer will always attempt to install a CUDA-enabled version of the plugin. The CUDA support is tested on the following platforms in our automated CI.
g5.xlarge + Nvidia A10G 24G GPU + Amazon deep learning base Ubuntu 20.04If you're using CPU only machine, the installer will install the OpenBLAS version of the plugin instead. You may need to install
libopenblas-devbyapt update && apt install -y libopenblas-dev.
Q: Why I got the following errors after starting the API server?
[2024-03-05 16:09:05.800] [error] instantiation failed: module name conflict, Code: 0x60
[2024-03-05 16:09:05.801] [error] At AST node: module
A: TThe module conflict error is a known issue, and these are false-positive errors. They do not impact your program's functionality.
Q: Even though my machine has a large RAM, after asking several questions, I received an error message returns 'Error: Backend Error: WASI-NN'. What should I do?
A: To enable machines with smaller RAM, like 8 GB, to run a 7b model, we've set the context size limit to 512. If your machine has more capacity, you can increase both the context size and batch size up to 4096 using the CLI options available here. Use these commands to adjust the settings:
-c, --ctx-size <CTX_SIZE>
-b, --batch-size <BATCH_SIZE>
Q: After running apt update && apt install -y libopenblas-dev, you may encounter the following error:
bash
...
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
A: This indicates that you are not logged in as root. Please try installing again using the sudo command:
bash
sudo apt update && sudo apt install -y libopenblas-dev
Q: After running the wasmedge command, you may receive the following error:
bash
[2023-10-02 14:30:31.227] [error] loading failed: invalid path, Code: 0x20
[2023-10-02 14:30:31.227] [error] load library failed:libblas.so.3: cannot open shared object file: No such file or directory
[2023-10-02 14:30:31.227] [error] loading failed: invalid path, Code: 0x20
[2023-10-02 14:30:31.227] [error] load library failed:libblas.so.3: cannot open shared object file: No such file or directory
unknown option: nn-preload
A: This suggests that your plugin installation was not successful. To resolve this issue, please attempt to install your desired plugin again.
Q: After executing the wasmedge command, you might encounter the error message: [WASI-NN] GGML backend: Error: unable to init model.
A: This error signifies that the model setup was not successful. To resolve this issue, please verify the following:
shasum -a 256 <gguf-filename> to verify the model's sha256sum. Compare your result with the correct sha256sum available on the Hugging Face page for the model.The WASI-NN ggml plugin embedded llama.cpp as its backend.
$ claude mcp add LlamaEdge \
-- python -m otcore.mcp_server <graph>