Instructions to use VladHong/llama-cpp-K2-FAST2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use VladHong/llama-cpp-K2-FAST2 with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf VladHong/llama-cpp-K2-FAST2 # Run inference directly in the terminal: llama cli -hf VladHong/llama-cpp-K2-FAST2
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf VladHong/llama-cpp-K2-FAST2 # Run inference directly in the terminal: llama cli -hf VladHong/llama-cpp-K2-FAST2
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf VladHong/llama-cpp-K2-FAST2 # Run inference directly in the terminal: ./build/bin/llama cli -hf VladHong/llama-cpp-K2-FAST2
Use Docker
docker model run hf.co/VladHong/llama-cpp-K2-FAST2
- Llama new
- LM Studio
- Jan
- Ollama
How to use VladHong/llama-cpp-K2-FAST2 with Ollama:
ollama run hf.co/VladHong/llama-cpp-K2-FAST2
- Unsloth Desktop
- Docker Model Runner
How to use VladHong/llama-cpp-K2-FAST2 with Docker Model Runner:
docker model run hf.co/VladHong/llama-cpp-K2-FAST2
- Lemonade
How to use VladHong/llama-cpp-K2-FAST2 with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull VladHong/llama-cpp-K2-FAST2
Run and chat with the model
lemonade run user.llama-cpp-K2-FAST2-{{QUANT_TAG}}List all available models
lemonade list
- Atomic Chat
Download ggml/src/ggml-virtgpu/apir_cs_ggml-rpc-front.cpp from VladHong/llama-cpp-K2-FAST2: direct link, hf CLI and curl.
- Browser
- Download file 3.51 kB
-
https://huggingface.co/VladHong/llama-cpp-K2-FAST2/resolve/main/ggml/src/ggml-virtgpu/apir_cs_ggml-rpc-front.cpp
- Command line
-
hf download hf://VladHong/llama-cpp-K2-FAST2/ggml/src/ggml-virtgpu/apir_cs_ggml-rpc-front.cpp
-
curl -L -o apir_cs_ggml-rpc-front.cpp https://huggingface.co/VladHong/llama-cpp-K2-FAST2/resolve/main/ggml/src/ggml-virtgpu/apir_cs_ggml-rpc-front.cpp
3.51 kB
| apir_rpc_tensor apir_serialize_tensor(const ggml_tensor * tensor) { | |
| apir_rpc_tensor result; | |
| result.id = reinterpret_cast<uint64_t>(tensor); | |
| result.type = tensor->type; | |
| if (tensor->buffer) { | |
| ggml_backend_buffer_t buffer = tensor->buffer; | |
| result.buffer = BUFFER_TO_HOST_HANDLE(buffer); | |
| } else { | |
| result.buffer = 0; | |
| } | |
| for (uint32_t i = 0; i < GGML_MAX_DIMS; i++) { | |
| result.ne[i] = tensor->ne[i]; | |
| result.nb[i] = tensor->nb[i]; | |
| } | |
| result.op = tensor->op; | |
| for (uint32_t i = 0; i < GGML_MAX_OP_PARAMS / sizeof(int32_t); i++) { | |
| result.op_params[i] = tensor->op_params[i]; | |
| } | |
| result.flags = tensor->flags; | |
| for (uint32_t i = 0; i < GGML_MAX_SRC; i++) { | |
| result.src[i] = reinterpret_cast<uint64_t>(tensor->src[i]); | |
| } | |
| result.view_src = reinterpret_cast<uint64_t>(tensor->view_src); | |
| result.view_offs = tensor->view_offs; | |
| result.data = reinterpret_cast<uint64_t>(tensor->data); | |
| if (tensor->data) { | |
| if (!tensor->buffer) { | |
| GGML_ABORT("%s: tensor has data but not buffer", __func__); | |
| } | |
| // tensor->data is serialized as an offset to the buffer base address | |
| result.data -= reinterpret_cast<uint64_t>(BUFFER_TO_GGML_CONTEXT(tensor->buffer)->base); | |
| } | |
| snprintf(result.name, GGML_MAX_NAME, "%s", tensor->name); | |
| return result; | |
| } | |
| void apir_add_tensor(ggml_tensor * tensor, | |
| std::vector<apir_rpc_tensor> & tensors, | |
| std::unordered_set<ggml_tensor *> & visited) { | |
| if (tensor == nullptr) { | |
| return; | |
| } | |
| if (visited.find(tensor) != visited.end()) { | |
| return; | |
| } | |
| visited.insert(tensor); | |
| for (int i = 0; i < GGML_MAX_SRC; i++) { | |
| apir_add_tensor(tensor->src[i], tensors, visited); | |
| } | |
| apir_add_tensor(tensor->view_src, tensors, visited); | |
| tensors.push_back(apir_serialize_tensor(tensor)); | |
| } | |
| void apir_serialize_graph(const ggml_cgraph * cgraph, std::vector<uint8_t> & output) { | |
| uint32_t n_nodes = cgraph->n_nodes; | |
| std::vector<apir_rpc_tensor> tensors; | |
| std::unordered_set<ggml_tensor *> visited; | |
| for (uint32_t i = 0; i < n_nodes; i++) { | |
| apir_add_tensor(cgraph->nodes[i], tensors, visited); | |
| } | |
| // serialization format: | |
| // | n_nodes (4 bytes) | nodes (n_nodes * sizeof(uint64_t) | n_tensors (4 bytes) | tensors (n_tensors * sizeof(apir_rpc_tensor)) | | |
| uint32_t n_tensors = tensors.size(); | |
| int output_size = | |
| sizeof(uint32_t) + n_nodes * sizeof(uint64_t) + sizeof(uint32_t) + n_tensors * sizeof(apir_rpc_tensor); | |
| output.resize(output_size, 0); | |
| memcpy(output.data(), &n_nodes, sizeof(n_nodes)); | |
| for (uint32_t i = 0; i < n_nodes; i++) { | |
| memcpy(output.data() + sizeof(n_nodes) + i * sizeof(uint64_t), &cgraph->nodes[i], sizeof(uint64_t)); | |
| } | |
| uint32_t * out_ntensors = (uint32_t *) (output.data() + sizeof(n_nodes) + n_nodes * sizeof(uint64_t)); | |
| *out_ntensors = n_tensors; | |
| apir_rpc_tensor * out_tensors = | |
| (apir_rpc_tensor *) (output.data() + sizeof(n_nodes) + n_nodes * sizeof(uint64_t) + sizeof(uint32_t)); | |
| memcpy(out_tensors, tensors.data(), n_tensors * sizeof(apir_rpc_tensor)); | |
| } | |