gajesh's picture
Document immutable Darkbloom R2 publication
d5ee6d4 verified
|
Raw
History Blame Contribute Delete
5.85 kB
---
license: apache-2.0
library_name: mlx
pipeline_tag: image-text-to-text
base_model: Qwen/Qwen3-VL-30B-A3B-Instruct
tags:
- mlx
- apple-silicon
- qwen3-vl
- vision-language
- image-text-to-text
- moe
- 4-bit
---
# Qwen3-VL 30B-A3B Instruct — MLX 4-bit
This repository contains a 4-bit MLX conversion of
[Qwen/Qwen3-VL-30B-A3B-Instruct](https://huggingface.co/Qwen/Qwen3-VL-30B-A3B-Instruct),
validated for Apple Silicon and Darkbloom provider serving.
The weight conversion was produced by the LM Studio team and originally published as
[lmstudio-community/Qwen3-VL-30B-A3B-Instruct-MLX-4bit](https://huggingface.co/lmstudio-community/Qwen3-VL-30B-A3B-Instruct-MLX-4bit).
Eigen Labs did not re-quantize the weights. This mirror preserves those tensors, repairs
the converted snapshot's stale safetensor index, adds detailed provenance, and records
Darkbloom-specific validation.
## Artifact identity
| Field | Value |
|---|---|
| Darkbloom model tag | `qwen3-vl-30b-a3b-instruct` |
| Architecture | `qwen3_vl_moe` |
| Base model | `Qwen/Qwen3-VL-30B-A3B-Instruct` |
| Base architecture | 30B total / approximately 3B active MoE |
| Quantization | MLX affine 4-bit, group size 64 |
| Weight shards | 4 safetensor shards |
| Quantized tensor bytes | 18,251,885,024 |
| LM Studio source revision | `61c11f42d7bc01e00f5ea7f2e667c0a216f48397` |
| Original conversion base revision | `f562840f045590fb51be9ebb5e890141d51684c2` |
| Darkbloom R2 version | `2026-08-28-r1` |
| Darkbloom aggregate SHA-256 | `45327562e9de4bdac5c2d36df675aa1d8a981f9edf5dee419609e2e51bd82fff` |
| Public Darkbloom manifest | [`manifest.json`](https://models.darkbloom.ai/v2/qwen3-vl-30b-a3b-instruct--4e09d3bcf035/2026-08-28-r1/manifest.json) |
| License | Apache-2.0 |
## Validation
The exact artifact in this repository was checked as follows:
- All 19 files from the LM Studio source snapshot passed Hugging Face cache verification.
- `chat_template.json` is byte-identical to the official Qwen template
(`SHA-256 5c72a170d2a4a1a3bc5adad2e689ae28138a9700e5b8c96c0266331e86c0acce`).
- `chat_template.jinja` is exactly the decoded official `chat_template.json` template.
- All three runtime template sources (`chat_template.jinja`, `chat_template.json`, and
`tokenizer_config.json`) passed Darkbloom's canonical Swift-Jinja render suite,
including text, tools, null-bearing tool schemas, image parts, and video parts.
- The tokenizer has the same 151,643 base vocabulary entries, 151,387 BPE merges, and
26 added tokens as the original. LM Studio's array-form merge serialization is
semantically identical to Qwen's string-form serialization.
- Existing tokenizer and image/video processor values match the original; the conversion
only materializes otherwise implicit defaults and identifies `Qwen3VLProcessor`.
- The model parameter names match the original architecture. The converted tensors add
the expected 386 scale and 386 bias arrays for MLX quantization.
- Text completion, function-call generation, tool-response continuation, and image
inference were exercised through the shipping Swift runtime.
- A 100×100 red PNG with the prompt “What color is this image?” returned `red`.
### Safetensor index repair
The LM Studio snapshot carried the original BF16 `model.safetensors.index.json`, which
referenced 13 absent shards and reported 62,141,508,064 bytes. This mirror regenerates the
index from the four actual safetensor headers: 1,702 unique tensor keys across four present
shards and 18,251,885,024 tensor bytes. Weight payloads are unchanged.
### Darkbloom R2 publication
The immutable Darkbloom build is published under model tag
`qwen3-vl-30b-a3b-instruct`, version `2026-08-28-r1`. Its canonical manifest
contains 16 files and 18,268,169,822 bytes. All four remote multipart ETags
match locally recomputed ETags, and the public manifest and weight shards return
HTTP 200 with the expected sizes.
The Hugging Face repository retains `video_preprocessor_config.json`. It is not
part of the v0.8.14 Darkbloom integrity manifest because Qwen3-VL video serving
is intentionally fail-closed in that provider release; the supported text and
image paths use the included tokenizer, template, config, index, weights, and
`preprocessor_config.json`.
## Darkbloom support
Darkbloom provider `v0.8.14` supports this exact `qwen3_vl_moe` architecture through the
production contiguous ContinuousBatchingV2 path:
- text generation with request-owned M-RoPE state;
- image prefill with causal visual spans and every DeepStack level;
- load-time homogeneous MoE gate/up fusion with a strict heterogeneous fallback;
- one-image-at-a-time vision-tower execution to bound peak Metal memory.
The following paths remain intentionally disabled until separately production-proven:
video serving, paged KV, prefix reuse, packed prefill, compiled decode, and MTP.
For local Darkbloom serving after download:
```bash
darkbloom start --local \
--model EigenLabs/Qwen3-VL-30B-A3B-Instruct-MLX-4bit \
--port 8000
```
A 32 GB Apple Silicon Mac is the practical minimum for a single model slot. More unified
memory provides useful KV-cache and batching headroom.
## Upstream usage
This is a standard MLX VLM snapshot and can also be loaded with current
[mlx-vlm](https://github.com/Blaizzy/mlx-vlm) or
[mlx-swift-lm](https://github.com/ml-explore/mlx-swift-lm) tooling that supports
`qwen3_vl_moe`.
## Limitations
This model inherits the limitations and safety considerations of the original Qwen model.
Generated descriptions and answers may be inaccurate. Validate outputs before using them
for consequential decisions.
## Attribution
- Original model and architecture: Qwen Team
- MLX quantization: LM Studio team using `mlx-vlm`
- Artifact validation, safetensor-index repair, and Darkbloom integration: Eigen Labs