Instructions to use srock44/cipher-pro 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 srock44/cipher-pro 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 srock44/cipher-pro:Q4_K_M # Run inference directly in the terminal: llama cli -hf srock44/cipher-pro:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf srock44/cipher-pro:Q4_K_M # Run inference directly in the terminal: llama cli -hf srock44/cipher-pro:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf srock44/cipher-pro:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf srock44/cipher-pro:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf srock44/cipher-pro:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf srock44/cipher-pro:Q4_K_M
Use Docker
docker model run hf.co/srock44/cipher-pro:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use srock44/cipher-pro with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "srock44/cipher-pro" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "srock44/cipher-pro", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/srock44/cipher-pro:Q4_K_M
- Ollama
How to use srock44/cipher-pro with Ollama:
ollama run hf.co/srock44/cipher-pro:Q4_K_M
- Unsloth Studio
How to use srock44/cipher-pro with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for srock44/cipher-pro to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for srock44/cipher-pro to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for srock44/cipher-pro to start chatting
- Pi
How to use srock44/cipher-pro with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf srock44/cipher-pro:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "srock44/cipher-pro:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- OpenClaw new
How to use srock44/cipher-pro with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf srock44/cipher-pro:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "srock44/cipher-pro:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- Docker Model Runner
How to use srock44/cipher-pro with Docker Model Runner:
docker model run hf.co/srock44/cipher-pro:Q4_K_M
- Lemonade
How to use srock44/cipher-pro with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull srock44/cipher-pro:Q4_K_M
Run and chat with the model
lemonade run user.cipher-pro-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use srock44/cipher-pro with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf srock44/cipher-pro:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default srock44/cipher-pro:Q4_K_M
Run Hermes
hermes
- Atomic Chat
File size: 3,565 Bytes
02600fe | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | """
Export a trained LoRA adapter to llama.cpp-compatible GGUF.
This loads the base Qwen2.5-1.5B-Instruct model with the trained LoRA adapter,
merges the weights, and quantizes to the requested GGUF format(s).
Outputs:
outputs/gguf/grimoire-qwen2.5-1.5b-triage-q4_k_m.gguf
outputs/gguf/grimoire-qwen2.5-1.5b-triage-q3_k_m.gguf (optional)
outputs/gguf/grimoire-qwen2.5-1.5b-triage-q2_k.gguf (optional)
Usage:
python train/export_gguf.py
python train/export_gguf.py --methods q4_k_m q3_k_m
python train/export_gguf.py --lora_dir outputs/lora --base_model Qwen/Qwen2.5-1.5B-Instruct
"""
import argparse
from pathlib import Path
def parse_args():
parser = argparse.ArgumentParser(description="Export fine-tuned LoRA to GGUF")
parser.add_argument("--base_model", default="Qwen/Qwen2.5-1.5B-Instruct", help="Base HF model name/path")
parser.add_argument("--lora_dir", default="outputs/lora", help="Directory with LoRA adapter")
parser.add_argument("--output_dir", default="outputs/gguf", help="Where to write .gguf files")
parser.add_argument(
"--methods",
nargs="+",
default=["q4_k_m"],
help="Quantization methods to produce (e.g. q4_k_m q3_k_m q2_k)",
)
parser.add_argument("--max_seq_length", type=int, default=2048)
parser.add_argument("--merged_dir", default="outputs/merged", help="Optional merged HF model output")
return parser.parse_args()
def main(args):
from unsloth import FastLanguageModel
out_dir = Path(args.output_dir)
out_dir.mkdir(parents=True, exist_ok=True)
# This Unsloth build's from_pretrained() doesn't accept adapter_name_or_path
# (TypeError: Qwen2ForCausalLM.__init__() got an unexpected keyword argument
# 'adapter_name_or_path'). Loading the base model separately and attaching
# via plain peft.PeftModel.from_pretrained *works* for inference, but
# save_pretrained_gguf() doesn't recognize a plain PeftModel as PEFT
# ("Model is not a PEFT model. Saving directly without LoRA merge...") and
# then fails on an unrelated weight-conversion bug trying to save it as if
# it were a full model. Pointing model_name directly at the LoRA directory
# (which has adapter_config.json with base_model_name_or_path set) is
# Unsloth's own documented pattern for this and loads base+adapter as a
# single call, correctly tagged as PEFT.
print(f"Loading base model + LoRA adapter from {args.lora_dir} ...")
model, tokenizer = FastLanguageModel.from_pretrained(
model_name=args.lora_dir,
max_seq_length=args.max_seq_length,
dtype=None,
load_in_4bit=True,
)
# Export GGUF(s)
model_name = "grimoire-qwen2.5-1.5b-triage"
for method in args.methods:
print(f"Exporting GGUF with quantization={method} ...")
model.save_pretrained_gguf(
str(out_dir / model_name),
tokenizer,
quantization_method=method,
)
print("Done. Files:")
for f in sorted(out_dir.glob("*.gguf")):
print(f" {f} ({f.stat().st_size / 1e6:.1f} MB)")
# Save merged HF model (useful for non-GGUF inference / debugging)
if args.merged_dir:
merged_dir = Path(args.merged_dir)
merged_dir.mkdir(parents=True, exist_ok=True)
print(f"Saving merged HF model to {merged_dir}")
merged = model.merge_and_unload()
merged.save_pretrained(merged_dir)
tokenizer.save_pretrained(merged_dir)
if __name__ == "__main__":
args = parse_args()
main(args)
|