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/virtgpu-forward-buffer.cpp from VladHong/llama-cpp-K2-FAST2: direct link, hf CLI and curl.
- Browser
- Download file 5.89 kB
-
https://huggingface.co/VladHong/llama-cpp-K2-FAST2/resolve/main/ggml/src/ggml-virtgpu/virtgpu-forward-buffer.cpp
- Command line
-
hf download hf://VladHong/llama-cpp-K2-FAST2/ggml/src/ggml-virtgpu/virtgpu-forward-buffer.cpp
-
curl -L -o virtgpu-forward-buffer.cpp https://huggingface.co/VladHong/llama-cpp-K2-FAST2/resolve/main/ggml/src/ggml-virtgpu/virtgpu-forward-buffer.cpp
5.89 kB
| void * apir_buffer_get_base(virtgpu * gpu, apir_buffer_context_t * buffer_context) { | |
| apir_encoder * encoder; | |
| apir_decoder * decoder; | |
| ApirForwardReturnCode ret; | |
| REMOTE_CALL_PREPARE(gpu, encoder, APIR_COMMAND_TYPE_BUFFER_GET_BASE); | |
| apir_encode_apir_buffer_host_handle_t(encoder, &buffer_context->host_handle); | |
| REMOTE_CALL(gpu, encoder, decoder, ret); | |
| uintptr_t base; | |
| apir_decode_uintptr_t(decoder, &base); | |
| remote_call_finish(gpu, encoder, decoder); | |
| return (void *) base; | |
| } | |
| void apir_buffer_set_tensor(virtgpu * gpu, | |
| apir_buffer_context_t * buffer_context, | |
| ggml_tensor * tensor, | |
| const void * data, | |
| size_t offset, | |
| size_t size) { | |
| apir_encoder * encoder; | |
| apir_decoder * decoder; | |
| ApirForwardReturnCode ret; | |
| REMOTE_CALL_PREPARE(gpu, encoder, APIR_COMMAND_TYPE_BUFFER_SET_TENSOR); | |
| apir_encode_apir_buffer_host_handle_t(encoder, &buffer_context->host_handle); | |
| apir_encode_ggml_tensor(encoder, tensor); | |
| virtgpu_shmem temp_shmem; // Local storage for large buffers | |
| virtgpu_shmem * shmem = &temp_shmem; | |
| bool using_shared_shmem = false; | |
| if (size <= gpu->data_shmem.mmap_size) { | |
| // Lock mutex before using shared data_shmem buffer | |
| if (mtx_lock(&gpu->data_shmem_mutex) != thrd_success) { | |
| GGML_ABORT(GGML_VIRTGPU "%s: Failed to lock data_shmem mutex", __func__); | |
| } | |
| using_shared_shmem = true; | |
| shmem = &gpu->data_shmem; | |
| } else if (virtgpu_shmem_create(gpu, size, shmem)) { | |
| GGML_ABORT(GGML_VIRTGPU "%s: Couldn't allocate the guest-host shared buffer", __func__); | |
| } | |
| memcpy(shmem->mmap_ptr, data, size); | |
| apir_encode_virtgpu_shmem_res_id(encoder, shmem->res_id); | |
| apir_encode_size_t(encoder, &offset); | |
| apir_encode_size_t(encoder, &size); | |
| REMOTE_CALL(gpu, encoder, decoder, ret); | |
| remote_call_finish(gpu, encoder, decoder); | |
| // Unlock mutex before cleanup | |
| if (using_shared_shmem) { | |
| mtx_unlock(&gpu->data_shmem_mutex); | |
| } else { | |
| virtgpu_shmem_destroy(gpu, shmem); | |
| } | |
| return; | |
| } | |
| void apir_buffer_get_tensor(virtgpu * gpu, | |
| apir_buffer_context_t * buffer_context, | |
| const ggml_tensor * tensor, | |
| void * data, | |
| size_t offset, | |
| size_t size) { | |
| apir_encoder * encoder; | |
| apir_decoder * decoder; | |
| ApirForwardReturnCode ret; | |
| REMOTE_CALL_PREPARE(gpu, encoder, APIR_COMMAND_TYPE_BUFFER_GET_TENSOR); | |
| apir_encode_apir_buffer_host_handle_t(encoder, &buffer_context->host_handle); | |
| apir_encode_ggml_tensor(encoder, tensor); | |
| virtgpu_shmem temp_shmem; // Local storage for large buffers | |
| virtgpu_shmem * shmem = &temp_shmem; | |
| bool using_shared_shmem = false; | |
| if (size <= gpu->data_shmem.mmap_size) { | |
| // Lock mutex before using shared data_shmem buffer | |
| if (mtx_lock(&gpu->data_shmem_mutex) != thrd_success) { | |
| GGML_ABORT(GGML_VIRTGPU "%s: Failed to lock data_shmem mutex", __func__); | |
| } | |
| using_shared_shmem = true; | |
| shmem = &gpu->data_shmem; | |
| } else if (virtgpu_shmem_create(gpu, size, shmem)) { | |
| GGML_ABORT(GGML_VIRTGPU "%s: Couldn't allocate the guest-host shared buffer", __func__); | |
| } | |
| apir_encode_virtgpu_shmem_res_id(encoder, shmem->res_id); | |
| apir_encode_size_t(encoder, &offset); | |
| apir_encode_size_t(encoder, &size); | |
| REMOTE_CALL(gpu, encoder, decoder, ret); | |
| memcpy(data, shmem->mmap_ptr, size); | |
| remote_call_finish(gpu, encoder, decoder); | |
| // Unlock mutex before cleanup | |
| if (using_shared_shmem) { | |
| mtx_unlock(&gpu->data_shmem_mutex); | |
| } else { | |
| virtgpu_shmem_destroy(gpu, shmem); | |
| } | |
| } | |
| bool apir_buffer_cpy_tensor(virtgpu * gpu, | |
| apir_buffer_context_t * buffer_context, | |
| const ggml_tensor * src, | |
| const ggml_tensor * dst) { | |
| apir_encoder * encoder; | |
| apir_decoder * decoder; | |
| ApirForwardReturnCode ret; | |
| REMOTE_CALL_PREPARE(gpu, encoder, APIR_COMMAND_TYPE_BUFFER_CPY_TENSOR); | |
| apir_encode_apir_buffer_host_handle_t(encoder, &buffer_context->host_handle); | |
| apir_encode_ggml_tensor(encoder, src); | |
| apir_encode_ggml_tensor(encoder, dst); | |
| REMOTE_CALL(gpu, encoder, decoder, ret); | |
| bool ret_val; | |
| apir_decode_bool_t(decoder, &ret_val); | |
| remote_call_finish(gpu, encoder, decoder); | |
| return ret_val; | |
| } | |
| void apir_buffer_clear(virtgpu * gpu, apir_buffer_context_t * buffer_context, uint8_t value) { | |
| apir_encoder * encoder; | |
| apir_decoder * decoder; | |
| ApirForwardReturnCode ret; | |
| REMOTE_CALL_PREPARE(gpu, encoder, APIR_COMMAND_TYPE_BUFFER_CLEAR); | |
| apir_encode_apir_buffer_host_handle_t(encoder, &buffer_context->host_handle); | |
| apir_encode_uint8_t(encoder, &value); | |
| REMOTE_CALL(gpu, encoder, decoder, ret); | |
| remote_call_finish(gpu, encoder, decoder); | |
| } | |
| void apir_buffer_free_buffer(virtgpu * gpu, apir_buffer_context_t * buffer_context) { | |
| apir_encoder * encoder; | |
| apir_decoder * decoder; | |
| ApirForwardReturnCode ret; | |
| REMOTE_CALL_PREPARE(gpu, encoder, APIR_COMMAND_TYPE_BUFFER_FREE_BUFFER); | |
| apir_encode_apir_buffer_host_handle_t(encoder, &buffer_context->host_handle); | |
| REMOTE_CALL(gpu, encoder, decoder, ret); | |
| remote_call_finish(gpu, encoder, decoder); | |
| } | |