Instructions to use elichen-skymizer/GAP-models 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 elichen-skymizer/GAP-models 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 elichen-skymizer/GAP-models:UD-Q4_K_XL # Run inference directly in the terminal: llama cli -hf elichen-skymizer/GAP-models:UD-Q4_K_XL
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf elichen-skymizer/GAP-models:UD-Q4_K_XL # Run inference directly in the terminal: llama cli -hf elichen-skymizer/GAP-models:UD-Q4_K_XL
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 elichen-skymizer/GAP-models:UD-Q4_K_XL # Run inference directly in the terminal: ./llama-cli -hf elichen-skymizer/GAP-models:UD-Q4_K_XL
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 elichen-skymizer/GAP-models:UD-Q4_K_XL # Run inference directly in the terminal: ./build/bin/llama-cli -hf elichen-skymizer/GAP-models:UD-Q4_K_XL
Use Docker
docker model run hf.co/elichen-skymizer/GAP-models:UD-Q4_K_XL
- LM Studio
- Jan
- Ollama
How to use elichen-skymizer/GAP-models with Ollama:
ollama run hf.co/elichen-skymizer/GAP-models:UD-Q4_K_XL
- Unsloth Desktop
- Pi
How to use elichen-skymizer/GAP-models with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf elichen-skymizer/GAP-models:UD-Q4_K_XL
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "elichen-skymizer/GAP-models:UD-Q4_K_XL" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use elichen-skymizer/GAP-models with Docker Model Runner:
docker model run hf.co/elichen-skymizer/GAP-models:UD-Q4_K_XL
- Lemonade
How to use elichen-skymizer/GAP-models with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull elichen-skymizer/GAP-models:UD-Q4_K_XL
Run and chat with the model
lemonade run user.GAP-models-UD-Q4_K_XL
List all available models
lemonade list
- Hermes Agent
How to use elichen-skymizer/GAP-models with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf elichen-skymizer/GAP-models:UD-Q4_K_XL
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 elichen-skymizer/GAP-models:UD-Q4_K_XL
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use elichen-skymizer/GAP-models with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf elichen-skymizer/GAP-models:UD-Q4_K_XL
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 "elichen-skymizer/GAP-models:UD-Q4_K_XL" \ --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"
File size: 4,403 Bytes
b2a9359 | 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 | #!/usr/bin/env python3
"""Validate current BPW inventory, arithmetic, HF matches, and newly added GGUFs."""
from pathlib import Path
import hashlib, json, math, os, re, sys
from datetime import datetime, timezone
ROOT=Path(__file__).resolve().parent
sys.path.insert(0,str(Path.home()/'projects/llama.cpp/gguf-py'))
from gguf import GGUFReader, GGMLQuantizationType, GGML_QUANT_SIZES
native=json.loads((ROOT/'native-bpw.json').read_text())
hf=json.loads((ROOT/'hf/hf-bpw-estimates.json').read_text())
lookup={tuple(sorted(r['local_paths'])):r for r in hf}
files={p['path']:p for p in native['files']}
assert len(lookup)==len(hf)==len(native['rows'])
count=0
for item in native['files']:
stat=Path(item['path']).stat()
assert (stat.st_size,stat.st_mtime_ns)==(item['file_bytes'],item['mtime_ns'])
for t in item['tensors']:
block,size=GGML_QUANT_SIZES[GGMLQuantizationType[t['type'].upper()]]
n=math.prod(t['shape'])
assert t['shape'][0]%block==0 and n==t['elements'] and n//block*size==t['bytes'],t['name']
count+=1
for row in native['rows']:
h=lookup[tuple(sorted(row['files']))]
assert h['status']=='comparable' and h['hf_sibling_bytes']==row['file_bytes'] and h['hf_gguf_total']==row['llama_cpp_parameters']
tensors=[t for p in row['files'] for t in files[p]['tensors']]
assert len({t['name'] for t in tensors})==len(tensors)==row['tensor_count']
excluded=set(row['embedded_mtp_tensors'])
main=[t for t in tensors if t['name'] not in excluded]
for group,paramkey,byteskey,bpwkey in [(tensors,'llama_cpp_parameters','llama_cpp_tensor_bytes','llama_cpp_bpw'),(main,'main_parameters','main_tensor_bytes','main_bpw')]:
params=sum(t['elements'] for t in group); size=sum(t['bytes'] for t in group)
assert params==row[paramkey] and size==row[byteskey] and size*8/params==row[bpwkey]
assert not re.search(r'(?:^|[-_.])Q3_K_[MLS](?=[-_.]|$)',Path(row['model']).name,re.I)
shapes={}
for family in ('qwen3.5-4b','qwen3.6-35b-a3b'):
variants=[]
for row in [r for r in native['rows'] if r['family']==family]:
excluded=set(row['embedded_mtp_tensors'])
shape=sorted((t['name'],t['shape']) for p in row['files'] for t in files[p]['tensors'] if t['name'] not in excluded)
digest=hashlib.sha256(json.dumps(shape,separators=(',',':')).encode()).hexdigest()
variants.append({'model':row['model'],'tensor_count':len(shape),'main_tensor_names_shapes_sha256':digest})
assert len({v['main_tensor_names_shapes_sha256'] for v in variants})==1
shapes[family]=variants
(ROOT/'main-tensor-shape-validation.json').write_text(json.dumps({'status':'passed','families':shapes},indent=2)+'\n')
actual=set()
for folder,dirs,names in os.walk(native['provenance']['models_dir']):
dirs[:]=[d for d in dirs if not d.startswith('.')]
actual.update(str(Path(folder)/name) for name in names if Path(name).suffix.lower()=='.gguf')
assert actual==set(files)|{p['path'] for p in native['excluded']}
newchecks=[]
# Optional positional paths select files for the independent Python reader check.
for filename in sorted({str(Path(arg).expanduser().resolve()) for arg in sys.argv[1:]}):
assert filename in files, f"File not in current scan: {filename}"
reader=GGUFReader(filename)
expected=files[filename]['tensors']
actualt={t.name:(int(t.n_elements),int(t.n_bytes)) for t in reader.tensors}
assert actualt=={t['name']:(t['elements'],t['bytes']) for t in expected}
newchecks.append({'file':filename,'tensor_count':len(expected),'exact_match':True})
del reader
print('GGUFReader verified new file:',filename,flush=True)
result={'status':'passed','updated_utc':datetime.now(timezone.utc).isoformat(),'variants':len(native['rows']),
'families':len({r['family'] for r in native['rows']}),'main_files':len(files),'excluded_files':len(native['excluded']),
'visible_files_accounted_for':len(actual),'tensor_descriptors_independently_recalculated':count,
'native_scan_errors':native['errors'],'hf_pairing_and_bpw':'all matched','removed_Q3_K_M_L_S_absent':True,
'main_tensor_shape_check':'both Qwen families passed','added_files_independent_GGUFReader':newchecks}
(ROOT/'refresh-validation.json').write_text(json.dumps(result,indent=2)+'\n')
print(json.dumps({k:v for k,v in result.items() if k!='added_files_independent_GGUFReader'},indent=2))
|