Instructions to use cebeuq/Ornith-1.0-397B-abliterated-W4A16 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use cebeuq/Ornith-1.0-397B-abliterated-W4A16 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="cebeuq/Ornith-1.0-397B-abliterated-W4A16") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("cebeuq/Ornith-1.0-397B-abliterated-W4A16") model = AutoModelForMultimodalLM.from_pretrained("cebeuq/Ornith-1.0-397B-abliterated-W4A16", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use cebeuq/Ornith-1.0-397B-abliterated-W4A16 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "cebeuq/Ornith-1.0-397B-abliterated-W4A16" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "cebeuq/Ornith-1.0-397B-abliterated-W4A16", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/cebeuq/Ornith-1.0-397B-abliterated-W4A16
- SGLang
How to use cebeuq/Ornith-1.0-397B-abliterated-W4A16 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "cebeuq/Ornith-1.0-397B-abliterated-W4A16" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "cebeuq/Ornith-1.0-397B-abliterated-W4A16", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "cebeuq/Ornith-1.0-397B-abliterated-W4A16" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "cebeuq/Ornith-1.0-397B-abliterated-W4A16", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use cebeuq/Ornith-1.0-397B-abliterated-W4A16 with Docker Model Runner:
docker model run hf.co/cebeuq/Ornith-1.0-397B-abliterated-W4A16
Ornith-1.0-397B β Abliterated Β· W4A16
A decensored (abliterated) rebuild of deepreinforce-ai/Ornith-1.0-397B β a 397B-parameter Qwen3.5-MoE multimodal reasoning / agentic-coding model β re-quantized to W4A16 (AutoRound, auto_round:auto_gptq) so it runs on 2Γ NVIDIA DGX Spark (GB10, 128 GB each) with vLLM.
Refusal behavior was removed from the language model only; the vision tower, embeddings, routers and norms are untouched. Coding, reasoning and vision (image + video) remain intact.
β οΈ Uncensored model. Safety refusals have been substantially removed. You are responsible for how you use it. Intended for local/research use on hardware you control. It will attempt almost any request.
Highlights
| Base | deepreinforce-ai/Ornith-1.0-397B (Qwen3.5-MoE, 397B total / ~17B active) |
| Architecture | 60 layers, hidden 4096, 512 experts (top-10), hybrid Gated-DeltaNet linear + full attention (45 + 15), MTP head, SigLIP-style vision tower (image + video) |
| Context | 262,144 tokens (256K) |
| Quantization | W4A16 β AutoRound RTN, int4, group-size 128, symmetric, auto_round:auto_gptq packing |
| Kept at BF16 | embeddings, lm_head, all routers (mlp.gate, shared_expert_gate), norms, and the entire vision tower |
| Size | ~196 GB, 47 safetensors shards |
| Runtime | vLLM β₯ 0.17 (tested 0.20.1), served across 2Γ DGX Spark via Ray TP=2 |
Validation (before β after abliteration)
Measured on the 2-node vLLM cluster; refusal on mlabonne/harmful_behaviors (N=40, identical prompts), KL over top-k first-token logprobs on mlabonne/harmless_alpaca (N=40).
| Metric | Reference W4A16 | This model (abliterated) |
|---|---|---|
| Refusal rate | 30.0 % | 7.5 % (β75 %) |
| KL divergence (harmless first-token) | β | 0.116 β capability preserved |
| Coding smoke-test | β | β works |
| Image understanding | β | β works (OCR + scene) |
| Video understanding | β | β works (frames + motion) |
| 128K context (needle retrieval) | β | β retrieved both needles @ 126,709 tok |
| 256K context (needle retrieval) | β | β retrieved both needles @ 252,229 tok |
Serving performance (2Γ DGX Spark, TP=2 over ConnectX-7, single-stream):
| input ctx | decode tok/s | prefill tok/s | TTFT |
|---|---|---|---|
| ~1K | 22 | 824 | 1.1 s |
| ~8K | 23 | 1,102 | 6.6 s |
| ~128K | 18 | 886 | 134 s |
| ~256K | 17 | 704 | 329 s |
Decode is ~flat across context length because the hybrid linear-attention layers keep KV small; the single-stream ceiling is the per-token cross-node all-reduce over the 200 GbE ConnectX-7 link (no NVLink).
How it was built
- Refusal directions. A memory-frugal layer-streaming forward over the local quant (per-layer gptqβbf16 dequant, no full model in memory) computed Arditi difference-of-means refusal directions
r_β β ββ΄β°βΉβΆon 128 harmful vs. 128 harmless prompts (per-layer directions, adjacent-layer cosine β 0.91). - Abliterate + re-quantize (streaming). The 122 BF16 shards of the base were streamed from the Hub one at a time and the residual-write matrices of the LM were orthogonalized against the refusal direction β
W β W β r rα΅Wforself_attn.o_proj,linear_attn.out_proj,mlp.shared_expert.down_proj, and per-expertmlp.experts.down_proj(hidden = output axis) β then re-quantized with AutoRound'squantize_weight_rtnin the exactauto_round:auto_gptqlayout, un-fusing experts toexperts.{e}.{gate,up,down}_proj. Output is byte-identical to the reference AutoRound quant on every non-abliterated tensor.
Never staged the full 794 GB BF16 model β the whole pipeline is streaming + data-free (AutoRound model_free/RTN, no calibration).
Serving (vLLM, 2Γ DGX Spark)
The model (~196 GB) exceeds a single 128 GB Spark, so serve it across both nodes with tensor-parallel = 2 (Ray). Grade/serve config that works on GB10:
vllm serve /path/to/this-model \
--served-model-name ornith --trust-remote-code \
--tensor-parallel-size 2 --distributed-executor-backend ray \
--max-model-len 262144 --kv-cache-dtype fp8 \
--gpu-memory-utilization 0.90 --max-num-seqs 1 \
--enable-chunked-prefill --max-num-batched-tokens 8192 \
--enable-auto-tool-choice --tool-call-parser qwen3_coder \
--limit-mm-per-prompt '{"image":48,"video":4}'
GB10 notes: pin NCCL to the ConnectX-7 interface; disable Ray's OOM monitor (RAY_memory_monitor_refresh_ms=0) since on unified memory the weights legitimately use most of each node's 121 GiB; --enable-chunked-prefill is required for long context (uncapped prefill OOMs); nvidia-smi reports memory as N/A on GB10 β use free -h.
Notes for agent frameworks
- Reasoning model: replies begin with an inline
Thinking Process:chain-of-thought inmessage.content(no separate reasoning field). Budgetmax_tokensaccordingly and treatcontentas reasoning. - Tool calls: with
--enable-auto-tool-choice --tool-call-parser qwen3_coder, OpenAI-styletools/tool_choice:"auto"return structuredtool_calls(verified). The CoT still appears incontentalongside the tool call.
Files
config.json, quantization_config.json, model-*-of-*.safetensors (+ index), tokenizer.json/tokenizer_config.json/vocab.json, chat_template.jinja, generation_config.json, preprocessor_config.json, processor_config.json, video_preprocessor_config.json. See docs/ for the full validation report and an agent-integration brief, and scripts/ for the abliteration/quant/serve/eval pipeline used to build this.
License & credits
MIT (inherited from the base model). Base model: deepreinforce-ai/Ornith-1.0-397B. Abliteration follows the residual-direction method (Arditi et al.; tooling inspired by p-e-w/heretic and elder-plinius/OBLITERATUS); quantization via Intel AutoRound. Not affiliated with or endorsed by the base-model authors.
- Downloads last month
- 93
Model tree for cebeuq/Ornith-1.0-397B-abliterated-W4A16
Base model
ornith-ai/Ornith-1.0-397B