Features do Cargo¶
A lista canônica de features do Cargo, com a descrição longa de cada uma. Veja o guia de Primeiros Passos para uma visão mais curta e orientada a tarefas.
Features padrão¶
Expande para:
Backends de computação¶
| Feature | Descrição |
|---|---|
openmp |
Backend CPU com OpenMP. Habilitado por padrão. |
metal |
Backend Apple Metal. Habilitado por padrão em aarch64-apple-darwin. |
cuda |
Backend NVIDIA CUDA. |
cuda-no-vmm |
Backend NVIDIA CUDA sem gerenciamento de memória virtual. |
vulkan |
Backend Vulkan / SPIR-V. |
rocm |
Backend AMD ROCm / HIP. |
opencl |
Backend OpenCL, primariamente para Android Adreno e dispositivos Arm64. |
kleidiai |
Kernels KleidiAI CPU para alvos Arm mobile. |
dynamic-link |
Linka llama.cpp como objeto compartilhado em vez de estático. |
dynamic-backends |
Carrega backends GGML dinamicamente. |
system-ggml |
Usa uma instalação GGML do sistema em vez da cópia empacotada. |
Subsistemas opcionais¶
| Feature | Descrição |
|---|---|
mtmd |
Suporte multimodal através de mtmd.h; ativa helpers de imagem e áudio. Necessário para visão. |
common |
Compila os utilitários common do llama.cpp usados pelos helpers de chat e gramática. Necessário para JSON-Schema → GBNF e o sampler grammar. |
llguidance |
Habilita a integração do sampler llguidance. Mais rápido e flexível que o sampler GBNF para gramáticas complexas. |
hf-tokenizer |
Habilita a integração com o crate tokenizers do Hugging Face. Use quando carregar um modelo a partir de um tokenizer.json em vez do tokenizador embutido no GGUF. |
disk-cache |
Habilita o cache de prompt persistente baseado em sled. |
Apenas mobile / Android¶
| Feature | Descrição |
|---|---|
shared-stdcxx |
Usa c++_shared para builds Android. |
static-stdcxx |
Usa c++_static para builds Android. O padrão histórico. |
Estas duas são mutuamente exclusivas. Se nenhuma for definida,
o Android mantém o comportamento legado de c++_static.
Grupos mutuamente exclusivos¶
| Grupo | Escolha no máximo um |
|---|---|
| Variante CUDA | cuda, cuda-no-vmm |
| Runtime C++ Android | shared-stdcxx, static-stdcxx |
O build.rs do crate falhará o build com um erro claro se duas
features mutuamente exclusivas forem habilitadas juntas.
Combinações recomendadas¶
Detectando quais features estão ativas¶
O LlamaBackend compilado expõe algumas sondas de capacidade que
você pode chamar em tempo de execução:
use llama_crab::LlamaBackend;
let backend = LlamaBackend::init()?;
println!("Offload GPU: {}", backend.supports_gpu_offload());
println!("mmap : {}", backend.supports_mmap());
println!("mlock : {}", backend.supports_mlock());
println!("RPC : {}", backend.supports_rpc());
E quanto às features padrão na CI?¶
A CI fixa as combinações de features que ela de fato exercita:
| Linha da matriz CI | Features |
|---|---|
linux-cpu |
openmp |
linux-cuda |
cuda, openmp |
linux-vulkan |
vulkan, openmp |
linux-rocm |
rocm, openmp |
macos-metal |
metal, openmp |
macos-cpu |
openmp |
windows-cpu |
openmp |
Se você quer que um backend seja oficialmente suportado na CI, abra uma issue e proponha a adição à matriz.
Por onde ir a partir daqui¶
- Features do Cargo (Primeiros Passos) — a visão orientada a tarefas.
- Backends & offload de GPU — a configuração em tempo de execução.
- Distribuição mobile — as receitas para iOS e Android.