Skip to content

The easiest & fastest way to run customized and fine-tuned LLMs locally or on the edge

License

Notifications You must be signed in to change notification settings

abhillman/llama-utils

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

llama-utils

The llama-utils makes it easy for you to run LLM inference apps and create OpenAI-compatible API services for the Llama2 series of LLMs.

Quick start

Run a single command in your command line terminal.

bash <(curl -sSfL 'https://code.flows.network/webhook/iwYN1SdN3AmPgR5ao5Gt/run-llm.sh')

Follow the on-screen instructions to install the WasmEdge Runtime and download your favorite open-source LLM. Then, choose whether you want to chat with the model via the CLI or via a web UI.

See it in action | Docs

How it works?

The Rust source code for the inference applications are all open source and you can modify and use them freely for your own purposes.

  • The folder simple contains the source code project to generate text from a prompt using run llama2 models.
  • The folder chat contains the source code project to "chat" with a llama2 model on the command line.
  • The folder 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 tech stack

The Rust+Wasm stack provides a strong alternative to Python in AI inference.

  • Lightweight. The total runtime size is 30MB.
  • Fast. Full native speed on GPUs.
  • Portable. Single cross-platform binary on different CPUs, GPUs, and OSes.
  • Secure. Sandboxed and isolated execution on untrusted devices.
  • Container-ready. Supported in Docker, containerd, Podman, and Kubernetes.

For more information, please check out Fast and Portable Llama2 Inference on the Heterogeneous Edge.

Models

The llama-utils 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.

Platforms

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.

  • Nvidia Jetson AGX Orin 64GB developer kit
  • Intel i7-10700 + Nvidia GTX 1080 8G GPU
  • AWS EC2 g5.xlarge + Nvidia A10G 24G GPU + Amazon deep learning base Ubuntu 20.04

If you're using CPU only machine, the installer will install the OpenBLAS version of the plugin instead. You may need to install libopenblas-dev by apt update && apt install -y libopenblas-dev.

Troubleshooting

  • After running apt update && apt install -y libopenblas-dev, you may encounter the following error:

    ...
    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?

    This indicates that you are not logged in as root. Please try installing again using the sudo command:

    sudo apt update && sudo apt install -y libopenblas-dev
  • After running the wasmedge command, you may receive the following error:

    [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

    This suggests that your plugin installation was not successful. To resolve this issue, please attempt to install your desired plugin again.

  • After executing the wasmedge command, you might encounter the error message: [WASI-NN] GGML backend: Error: unable to init model. This error signifies that the model setup was not successful. To resolve this issue, please verify the following:

    1. Check if your model file and the WASM application are located in the same directory. The WasmEdge runtime requires them to be in the same location to locate the model file correctly.
    2. Ensure that the model has been downloaded successfully. You can use the command 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.
image

Credits

The WASI-NN ggml plugin embedded llama.cpp as its backend.

About

The easiest & fastest way to run customized and fine-tuned LLMs locally or on the edge

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 86.1%
  • Shell 13.9%