Instructions to use YCF-AI/CyberTiel-Coder-35B-MLX with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use YCF-AI/CyberTiel-Coder-35B-MLX with MLX:
# Make sure mlx-vlm is installed # pip install --upgrade mlx-vlm from mlx_vlm import load, generate from mlx_vlm.prompt_utils import apply_chat_template from mlx_vlm.utils import load_config # Load the model model, processor = load("YCF-AI/CyberTiel-Coder-35B-MLX") config = load_config("YCF-AI/CyberTiel-Coder-35B-MLX") # Prepare input image = ["http://images.cocodataset.org/val2017/000000039769.jpg"] prompt = "Describe this image." # Apply chat template formatted_prompt = apply_chat_template( processor, config, prompt, num_images=1 ) # Generate output output = generate(model, processor, formatted_prompt, image) print(output) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Pi
How to use YCF-AI/CyberTiel-Coder-35B-MLX with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "YCF-AI/CyberTiel-Coder-35B-MLX"
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "YCF-AI/CyberTiel-Coder-35B-MLX" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent
How to use YCF-AI/CyberTiel-Coder-35B-MLX with Hermes Agent:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "YCF-AI/CyberTiel-Coder-35B-MLX"
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 YCF-AI/CyberTiel-Coder-35B-MLX
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use YCF-AI/CyberTiel-Coder-35B-MLX with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "YCF-AI/CyberTiel-Coder-35B-MLX"
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 "YCF-AI/CyberTiel-Coder-35B-MLX" \ --custom-provider-id mlx-lm \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Download README.md from YCF-AI/CyberTiel-Coder-35B-MLX: direct link, hf CLI and curl.
- Browser
- Download file 14.9 kB
-
https://huggingface.co/YCF-AI/CyberTiel-Coder-35B-MLX/resolve/main/README.md
- Command line
-
hf download hf://YCF-AI/CyberTiel-Coder-35B-MLX/README.md
-
curl -L -o README.md https://huggingface.co/YCF-AI/CyberTiel-Coder-35B-MLX/resolve/main/README.md
license: mit
base_model:
- peculiar-ragdoll/Cyber-Tiel-Coder-35B-A3B-MLX-oQ6e-MTP
base_model_relation: quantized
pipeline_tag: image-text-to-text
library_name: mlx
language:
- en
- zh
tags:
- mlx
- omlx
- apple-silicon
- m1
- oq
- qwen35moe
- moe
- mtp
- speculative-decoding
- fixed-mtp
- fp16
- agentic-coding
- abliterated
- uncensored
- vision
CyberTiel-Coder-35B-MLX (FP16 tensors · fixed MTP head · tuned for oMLX on Apple Silicon)
English · 中文
A 35B-A3B MoE coding/agent model (6-bit oQ6e, vision-capable, abliterated) in the exact form we run every day on a Mac Studio M1 Ultra 64 GB with oMLX 0.7.0. Compared with the upstream pack it has two local changes, both measured:
- Non-quantized BF16 tensors cast to FP16 (M1/M2 have no native bfloat16). Prefill +28–50 %, decode at 16K context +22 %, quality unchanged (206/260 = 206/260).
- Rebuilt MTP head ("fixedmtp": 42-key fused layout) so that oMLX's Lightning MTP speculative decoding runs with an adaptive depth → 94–116 tok/s chat decode.
Everything below is measured on one machine; numbers are not a promise for yours. Full method and raw data: tuning notes dataset · GitHub.
⚠️ Abliterated (refusal-removed) model. Meant for emergency / red-team / research work. Run it inside an OS-level sandbox with restricted network and execution rights, and guard against prompt injection. You are responsible for how you use it.
Updated 2026-10-10: the retrieval pair of this stack is now BGE-M3 8-bit + bge-reranker-v2-m3 (FP16 embedding tables); the previous embedding model, Qwen3-Embedding-0.6B, was retired. 更新于 2026-10-10:本机栈的检索组合现为上述 BGE-M3 8-bit + bge-reranker-v2-m3,旧嵌入模型 Qwen3-Embedding-0.6B 已下线。
At a glance
| Item | Value |
|---|---|
| Architecture | Qwen3.5-MoE style, 35B total / ~3B active (256 experts, 8 active), vision tower included |
| Quantization | oQ6e mixed (≈6-bit) + non-quantized tensors in FP16 (this repo) |
| Size on disk | ≈ 28 GB (6 shards + MTP head) |
| Context | 131072 configured (native 262144); 16K / 32K / 64K / 128K measured below |
| Max output | 32768 (configured; context and output share one budget) |
| Speed (M1 Ultra, chat) | 107–116 tok/s decode; prefill 4K ≈ 1890, 16K ≈ 1640 tok/s |
| Thinking | On by default; reasoning_effort none/low/medium/xhigh works |
| Vision | Yes (emergency use: OCR digits sometimes wrong, counting weak) |
| Tool calling | Yes |
| License | MIT (upstream card; see LICENSE, README-upstream.md) |
Lineage: ornith-ai/Ornith-1.5-35B-A3B → huihui-ai/Huihui-Ornith-…-abliterated (refusal removal) → peculiar-ragdoll/Cyber-Tiel-Coder-35B-A3B-MLX-oQ6e-MTP (rev a443d4e) → our fixedmtp head → FP16 tensor cast (this repo). The previous BF16 build of this repo stays reachable as revision 32e067dd15c07fbfcf841d53efd011f90c6527b7 (recommended for Macs with native bf16, M3 and later — untested by us).
Measured results
1. BF16 → FP16 on M1 (the biggest free win)
| Metric (ABBA, same session) | BF16 (as published) | FP16 (this repo) |
|---|---|---|
| Prefill 1K / 4K / 16K (tok/s) | 1085 / 1406 / 1096 | 1393 / 1891 / 1644 |
| First token at 16K prompt | 14.9 s | 10.0 s |
| Decode at 16K context | 96 tok/s | 117 tok/s |
| Chat decode (3 prompts) | 102.5 / 108.7 | 109.1 / 112.3 |
| 260-question quality set (T=0) | 206 / 260 | 206 / 260 |
What was cast: 1569 tensors (scales, biases, norms, embeddings, MTP head, vision tower; 2.94 GB). Max |x| = 25.4 (far inside the FP16 range), 26 103 tiny values underflowed to zero. The quantized U32 data and model.safetensors.index.json are unchanged. Script: recipe/to_fp16_v2.py (aborts if any value would overflow).
A pure short-decode test showed no gain and misled us once — always measure prefill at 1K/4K/16K and 16K decode.
2. MTP depth (Lightning MTP, chat decode tok/s, BF16 baseline sweep)
Leave mtp_fixed_depth and mtp_adaptive_max_depth empty (0.7.0 model default = adaptive): 94.2 tok/s vs 89.8 for fixed d2, 84.7 for d3, 59.4 with MTP off. Note: oMLX 0.7.0 silently ignores the old mtp_num_draft_tokens field.
3. Long context (hot cache off)
| Context | Prefill tok/s | Decode tok/s |
|---|---|---|
| 16K | 1620 | ~100 |
| 32K | 1320 | 86–89 |
| 64K | 957 | 71 |
| 128K | 614 (first token 3.6 min) | 60 |
Peak memory with this model alone at 128K: 36.8 GB (fits the default 48 GB Metal limit on a 64 GB Mac).
4. Code quality depends on the thinking mode you use
We rejected a newer upstream requant (09-29) and a rival code model after testing in the thinking-on production mode (LiveCodeBench-60 subset 38 vs 40; 324 code questions 247 vs 242, p = 0.30). Benchmarking with thinking off would have picked the wrong model.
5. What we tried and rejected for this model
TurboQuant KV (decode −20 %), ANE prefill (slower), DFlash / SpecPrefill (no gain), model_type_override=llm to save memory (decode −23 %, image requests silently hallucinate — never do this), hot cache on 64 GB (starves long-context admission).
Recommended oMLX settings
Per-model entry: omlx/model_settings.entry.json (key = model directory name).
{
"max_context_window": 131072, "max_tokens": 32768,
"temperature": 0.6, "top_p": 0.95, "top_k": 20, "repetition_penalty": 1.0,
"enable_thinking": true, "thinking_budget_enabled": false,
"mtp_enabled": true, "vlm_mtp_enabled": false,
"ttl_seconds": 1800, "model_alias": "CyberTiel-35B"
}
Global (see the dataset repo's config/ for the full redacted files): hot cache off (hot_cache_max_size: "0"), SSD cache on, max_concurrent_requests: 8, memory_guard_tier: balanced with soft_threshold left at 0.85 (0.70 legacy values make models evict each other), TurboQuant/DFlash/SpecPrefill/ANE prefill all off.
Thinking control
| Goal | Request field |
|---|---|
| Thinking off | "reasoning_effort": "none" (or chat_template_kwargs: {"enable_thinking": false}) |
| Effort | "reasoning_effort": "low" | "medium" | "xhigh" (high/max = xhigh); default medium |
| Where the reasoning goes | separate reasoning_content field |
Quick start
# 1) download (mirror example for mainland China)
HF_ENDPOINT=https://hf-mirror.com hf download YCF-AI/CyberTiel-Coder-35B-MLX \
--local-dir ~/models/CyberTiel-Coder-35B-MLX
# 2) point oMLX model_dirs at ~/models, merge omlx/model_settings.entry.json into ~/.omlx/model_settings.json, restart oMLX
# 3) chat
curl http://127.0.0.1:8000/v1/chat/completions -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \
-d '{"model":"CyberTiel-35B","messages":[{"role":"user","content":"Write a Python LRU cache."}],"reasoning_effort":"low"}'
The MTP head (model-mtp.safetensors) is used by oMLX's Lightning MTP; we have not tested other runtimes with it. Verify downloaded files with the SHA-256 values in the HF file listing.
Moving to another machine — checklist
- Install the same oMLX version (0.7.0 or newer), put the model folder under a
model_dirspath. - Merge the settings entry above; keep MTP depth fields empty.
- Disable hot cache, keep concurrency 8, keep the memory guard at
balanced. - Measure your machine: 3-prompt chat decode, prefill 1K/4K/16K, 16K decode, then (only if you changed something) a fixed quality set with McNemar. Our protocol is in the dataset repo.
- If the chip has native bf16 (M3+), compare the BF16 revision with this one before choosing.
Known limits
- Vision is an emergency capability: digit OCR errors, weak counting. Use a dedicated VLM for precision (MiniCPM-V-4.6 build).
- Abliteration removes refusals, not hallucinations.
- All speed numbers: Mac Studio M1 Ultra 64-core GPU, 64 GB, macOS 15.8, oMLX 0.7.0 (build 2987), MLX 0.32.2, mlx-lm 0.31.4.dev, mlx-vlm 0.7.1.
中文说明
English · 中文
35B-A3B MoE 代码/智能体模型(6-bit oQ6e、带视觉、去审查),就是我们每天在 Mac Studio M1 Ultra 64 GB 上用 oMLX 0.7.0 实际运行的版本。相对上游打包有两处本地改动,均有实测:
- 非量化 BF16 张量转 FP16(M1/M2 没有原生 bf16):prefill **+28–50 %**、16K 上下文解码 **+22 %**,质量不变(260 题 206 = 206)。
- 重建 MTP 头(fixedmtp,42 键融合布局),配合 oMLX Lightning MTP 自适应深度,对话解码 94–116 tok/s。
所有数字来自同一台机器,不保证在你的机器上一致。完整方法与原始数据见调优笔记数据集、GitHub。
⚠️ 去审查(abliterated)模型,仅用于应急测试 / 红队 / 研究。请放进 OS 级沙箱,限制网络与执行权限,并防范提示注入;使用责任自负。
概览
| 项目 | 值 |
|---|---|
| 架构 | Qwen3.5-MoE 系,总参数 35B / 激活约 3B(256 专家激活 8),含视觉塔 |
| 量化 | oQ6e 混合(约 6-bit)+ 非量化张量 FP16(本仓库) |
| 体积 | 约 28 GB(6 个分片 + MTP 头) |
| 上下文 | 配置 131072(原生 262144);16K/32K/64K/128K 实测见下 |
| 最大输出 | 32768(上下文与输出共用一个预算) |
| 速度(M1 Ultra) | 解码 107–116 tok/s;prefill 4K ≈ 1890、16K ≈ 1640 tok/s |
| 思考模式 | 默认开;reasoning_effort 支持 none/low/medium/xhigh |
| 视觉 | 有(应急:OCR 数字偶错、计数弱) |
| 工具调用 | 有 |
| 许可 | MIT(上游卡片;见 LICENSE、README-upstream.md) |
血统: ornith-ai/Ornith-1.5-35B-A3B → huihui-ai/Huihui-Ornith-…-abliterated (refusal removal) → peculiar-ragdoll/Cyber-Tiel-Coder-35B-A3B-MLX-oQ6e-MTP(rev a443d4e)→ 自建 fixedmtp 头 → FP16 张量转换(本仓库)。本仓库此前的 BF16 版仍可用 revision 32e067dd15c07fbfcf841d53efd011f90c6527b7 取回(原生支持 bf16 的 M3 及以后机型可优先对比,我们未测)。
实测结果
1. BF16 → FP16(M1 上最大的免费收益)——图见上(英文部分 fp16 cast)。同时段 ABBA:prefill 1K/4K/16K 1085/1406/1096 → 1393/1891/1644 tok/s;16K 首字 14.9 → 10.0 s;16K 上下文解码 96 → 117;对话解码 102.5/108.7 → 109.1/112.3;260 题 206 = 206。
转换了 1569 个张量(scales、biases、norm、embedding、MTP 头、视觉塔;2.94 GB),最大绝对值 25.4,26103 个极小值下溢为 0;量化 U32 数据与 index 不变。脚本 recipe/to_fp16_v2.py(任何值溢出即中止)。只测短上下文纯解码会得出"无收益"的错误结论,必须测 1K/4K/16K prefill 与 16K 解码。
2. MTP 深度——mtp_fixed_depth 与 mtp_adaptive_max_depth 留空(0.7.0 默认=自适应)最优:94.2 tok/s,固定 d2 89.8、d3 84.7、关 MTP 59.4。注意 0.7.0 已静默忽略旧字段 mtp_num_draft_tokens。
3. 长上下文(hot cache 关闭):16K 1620/~100、32K 1320/86–89、64K 957/71、128K 614(首字 3.6 分钟)/60(prefill/解码 tok/s)。单模型 128K 峰值内存 36.8 GB,64 GB Mac 默认 48 GB Metal 上限内可用。
4. 代码质量取决于你实际使用的思考模式:我们用开思考的生产口径否决了上游 09-29 重量化版与另一款代码模型(LCB60 38 vs 40;324 题 247 vs 242,p=0.30);关思考评测会选错模型。
5. 试过并否决:TurboQuant KV(解码 −20 %)、ANE prefill(更慢)、DFlash/SpecPrefill(无收益)、model_type_override=llm 省内存(解码 −23 %、图片请求静默幻觉,切勿使用)、64 GB 上开 hot cache(挤占长上下文准入)。
推荐 oMLX 设置
单模型条目见 omlx/model_settings.entry.json(键名=模型目录名),参数见上方英文部分 JSON。全局:hot cache 关(hot_cache_max_size: "0")、SSD 缓存开、max_concurrent_requests: 8、memory_guard_tier: balanced 且 soft_threshold 保持 0.85(遗留的 0.70 会让模型互相驱逐)、TurboQuant/DFlash/SpecPrefill/ANE prefill 全关。完整脱敏配置见数据集仓库 config/。
思考控制
| 目标 | 请求字段 |
|---|---|
| 关闭思考 | "reasoning_effort": "none"(或 chat_template_kwargs: {"enable_thinking": false}) |
| 力度 | "reasoning_effort": "low" | "medium" | "xhigh"(high/max 等同 xhigh),默认 medium |
| 推理内容 | 走独立的 reasoning_content 字段 |
快速开始
# 下载(国内用镜像、直连不走代理)
HF_ENDPOINT=https://hf-mirror.com hf download YCF-AI/CyberTiel-Coder-35B-MLX --local-dir ~/models/CyberTiel-Coder-35B-MLX
# 把 ~/models 加入 oMLX 的 model_dirs,合并 omlx/model_settings.entry.json 到 ~/.omlx/model_settings.json,重启 oMLX
MTP 头 model-mtp.safetensors 由 oMLX Lightning MTP 使用,其他运行时我们未测。下载后请用 HF 文件列表中的 SHA-256 校验。
换机器部署清单
- 安装同版本 oMLX(0.7.0 或更新),把模型目录放进
model_dirs。 - 合并上面的设置条目,MTP 深度字段留空。
- 关 hot cache、并发 8、内存守卫
balanced。 - 在你的机器上实测:3 提示词对话解码、1K/4K/16K prefill、16K 解码;若改了东西,再用固定题集 + McNemar 检验。协议见数据集仓库。
- 芯片支持原生 bf16(M3+)时,先对比 BF16 版本再选。
已知限制
- 视觉仅应急:数字 OCR 会错、计数弱;精确任务请用专用 VLM(MiniCPM-V-4.6 版)。
- 去审查只去掉拒答,不去掉幻觉。
- 全部速度数据:Mac Studio M1 Ultra 64 核 GPU、64 GB、macOS 15.8、oMLX 0.7.0(build 2987)、MLX 0.32.2、mlx-lm 0.31.4.dev、mlx-vlm 0.7.1。



