AI prompts
base on a fast cross platform AI inference engine 🤖 using Rust 🦀 and WebGPU 🎮 # crabml
[](https://discord.gg/wbzqddT3QC)
`crabml` is a llama.cpp compatible (and equally fast!) AI inference engine written in 🦀 **Rust**, which runs everywhere with the help of 🎮 **WebGPU**.
## Project Goals
`crabml` is designed with the following objectives in mind:
- 🤖 Focus solely on inference.
- 🎮 Runs on browsers, desktops, and servers everywhere with the help of **WebGPU**.
- ⏩ **SIMD**-accelerated inference on inexpensive hardware.
- 💼 `mmap()` from day one, minimized memory requirement with various quantization support.
- 👾 Hackable & embeddable.
## Supported Models
`crabml` supports the following models in GGUF format:
- 🦙 Llama
- 🦙 CodeLlama
- 🦙 Gemma
- 〽️ Mistral
- 🚄 On the way: Mistral MoE, Phi, QWen, StarCoder, Llava, and more!
For more information, you can visit [How to Get GGUF Models](https://github.com/crabml/crabml/blob/main/docs/how-to-get-gguf-models.md) to learn how to download the GGUF files you need.
## Supported Quantization Methods
`crabml` supports the following quantization methods on CPUs with SIMD acceleration for ARM (including Apple Silicon) and x86 architectures:
| | Bits | Native CPU | NEON | AVX2 | RISC-V SIMD | WebGPU |
|------|--------|------------|------|------|-------------|--------|
| Q8_0 | 8 bits | ✅ | ✅ | ✅ | WIP | WIP |
| Q8_K | 8 bits | ✅ | ✅ | ✅ | WIP | WIP |
| Q6_K | 6 bits | ✅ | WIP | WIP | WIP | WIP |
| Q5_0 | 5 bits | ✅ | ✅ | ✅ | WIP | WIP |
| Q5_1 | 5 bits | ✅ | ✅ | ✅ | WIP | WIP |
| Q5_K | 5 bits | ✅ | WIP | WIP | WIP | WIP |
| Q4_0 | 4 bits | ✅ | ✅ | ✅ | WIP | WIP |
| Q4_1 | 4 bits | ✅ | ✅ | ✅ | WIP | WIP |
| Q4_K | 4 bits | ✅ | WIP | WIP | WIP | WIP |
| Q3_K | 3 bits | ✅ | WIP | WIP | WIP | WIP |
| Q2_K | 2 bits | ✅ | WIP | WIP | WIP | WIP |
As the table above suggests, WebGPU-accelerated quantizations are still under busy development, and `Q8_0`, `Q4_0`, `Q4_1` are currently the most recommended quantization methods on CPUs!
## Usage
### Building the Project
To build `crabml`, set the `RUSTFLAGS` environment variable to enable specific target features. For example, to enable NEON on ARM architectures, use `RUSTFLAGS="-C target-feature=+neon"`. Then build the project with the following command:
```bash
cargo build --release
```
This command compiles the project in release mode, which optimizes the binary for performance.
### Running an Example
After building the project, you can run an example inference by executing the `crabml-cli` binary with appropriate arguments. For instance, to use the `tinyllamas-stories-15m-f32.gguf` model to generate text based on the prompt "captain america", execute the command below:
```bash
./target/release/crabml-cli \
-m ./testdata/tinyllamas-stories-15m-f32.gguf \
"captain america" --steps 100 \
-t 0.8 -p 1.0
```
In this command:
- `-m` specifies the checkpoint file.
- `--steps` defines the number of tokens to generate.
- `-t` sets the temperature, which controls the randomness of the output.
- `-p` sets the probability of sampling from the top-p.
## License
This contribution is licensed under Apache License, Version 2.0, ([LICENSE](LICENSE) or <http://www.apache.org/licenses/LICENSE-2.0>)
", Assign "at most 3 tags" to the expected json: {"id":"8248","tags":[]} "only from the tags list I provide: []" returns me the "expected json"