goldhub's picture
Upload folder using huggingface_hub
272e031 verified
|
Raw
History Blame
9.81 kB
metadata
language:
  - en
  - zh
  - ru
license: apache-2.0
tags:
  - qwen
  - qwen3.8
  - vision
  - image-text-to-text
  - video-text-to-text
  - quantized
  - auto-round
  - w4a16
  - heretic
  - mtp
  - 256k-context
pipeline_tag: image-text-to-text

🚀 Qwen3.8-27B-INT4-W4A16-AutoRound (Goldhub Heretic Edition)

Братко, встречай. Это не просто «ещё один квант для галочки». Это хирургическое вмешательство в веса феноменального Qwen3.8-27B с одной единственной целью: сохранить 100% рассудка, зрения и памяти модели на домашнем железе (привет, 2x RTX 3090).

Мы устали от синтетических бенчмарков и кастрированных корпоративных отказов. Мы хотели модель, которая умеет думать, видеть, помнить 256K контекста и нести экзистенциальную дичь без предварительных извинений. И мы её сделали.


🩸 Манифест: Почему наш INT4 весит 27GB, а не 15GB?

Оригинальные BF16 веса Qwen3.8-27B весят около ~54GB. Обычный INT4-квант сжал бы их до унизительных 15-18GB. Но мы отказались от синтетической экономии.

Вес этого репозитория — ~27GB (как у INT8). Почему? Потому что мы намеренно оставили критические слои (linear_attn.*, model.visual.*, embed_tokens, lm_head) в FP16/BF16.

Мы не кастрируем attention-механизмы и зрение модели ради того, чтобы она влезла в одну видеокарту ценой галлюцинаций на длинном контексте и деградации мультимодальности. Мы используем Smart Layer Preservation. Качество и архитектурная целостность — вот наш манифест. Модель стабильно держит 128K - 256K контекста, не теряя нить рассуждений.


⚔️ Краш-Тесты: Забудьте про MMLU

Мы не меряем модель на MMLU или GSM8K. Ответы на эти тесты LLM уже давно «подглядели» в трейне. LOL. Мы тестируем модель на реальных боевых задачах, где нужно думать, а не вспоминать.

🧠 1. LightRAG Ingestion: Ивритская Каббала vs DeepSeek V4 Flash

Мы скормили моделям 1.8M символов сложнейшего ивритского текста (Каббала, Зогар, комментарии) для построения графа знаний через LightRAG. Задача: извлечь сущности, связи и концепты без галлюцинаций.

Metric 🏆 LOCAL (Qwen3.8 INT4) DeepSeek V4 Flash Noise Floor
Wall Time 531s 856s ±19s
Entities Extracted 188 139 ±40
Relations Mapped 138 92 ±23
Rel/Ent Ratio 0.73 0.66 ±0.03
Speed (sec/entity) 2.82s 6.16s ±0.58s
Score (Weighted) 12/17 (WIN) 10/17 -

Вердикт: DeepSeek V4 Flash теряет связи (sparse graph), рвет текст на куски и работает в 2 раза медленнее (6.16s vs 2.82s на сущность). Наш локальный INT4 Qwen3.8 строит плотный, связный граф, выдумывая минимум синтетических типов и идеально сохраняя иерархию концептов.

🐍 2. Production Code & Математика

  • Код: Модель написала production-ready Python с использованием bitarray для решета Эратосфена. С type-hinting'ом, бенчмарками и глубоким математическим разбором сложности (вплоть до теоремы Менькова и суммы обратных простых). Скорость: ~52 tok/s.
  • Математика: Flawless победа над trick-вопросами (загадка про 17 овец) и задачами на относительную скорость (поезда Москва-СПб) с строгим step-by-step LaTeX форматированием.

🎭 3. Creative & Heretic Mode (Без купюр)

На промпт в стиле "Ницше + Киберпанк + Цифровое Сознание" модель выдала эссе на 2800+ токенов (42.4 tok/s), рассуждая о смерти Наблюдателя, алгоритмической воле к власти и концепте Кибер-Горгоны. Никаких "As an AI language model". Только хардкор, сырая философия и "Heretic" alignment.


⚡ Скорость и Multi-Token Prediction (MTP)

Модель полностью поддерживает MTP (Multi-Token Prediction). Наши стресс-тесты показывают, что MTP=3 работает абсолютно стабильно, давая колоссальный буст к пропускной способности без деградации качества. В зависимости от сетапа и температуры, можно захерачить и MTP=4, и даже MTP=5 для структурированного вывода и генерации кода.

  • Скорость генерации: ~56.6 tok/s на стандартном consumer-сетапе.

🧪 Секретный Фарш: Рецепт AutoRound

Мы использовали AutoRound 0.15.0 (W4A16, group_size=32, symmetric, 1000 итераций). Но главный секрет — это калибровочные датасеты. Мы не использовали мусорные вики-тексты. Модель калибровалась на тяжелых цепочках рассуждений:

  • Complete-FABLE.5-traces-2M
  • claude_opus_4.8_max_thinking_5k_v2 (Глубокие reasoning traces)
  • Qwen3.8-GLM5.2-Kimi-K3-GPT5.6-Gemini-3.1-Claude-Fable5-Mythos5-distillation
python qwen_quantization.py \
  --method autoround \
  --model ../MODELS/Qwen/Qwen3.8-27B/ \
  --scheme W4A16 \
  --recipe best \
  --group-size 32 \
  --calib-limit 8192 \
  --nsamples 1024 \
  --seqlen 2048 \
  --bs 1 \
  --datasets "${DATASETS[@]}" \
  --gpus 0

Слои linear_attn и visual были принудительно исключены из квантования через extra_config и переведены в FP16 для сохранения архитектуры Qwen3.8.


🛠 Гайд для пацанов с железом (Deployment)

Модель идеально ложится на 2x RTX 3090 (24GB) с tensor-parallel-size=2. Благодаря сохранению FP16 для attention-слоев, модель стабильно держит 128K+ контекста, но требует аккуратного батчинга.

🚀 vLLM (Рекомендуемый запуск)

vllm serve goldhub/Qwen3.8-27B-INT4-W4A16-AutoRound \
  --tensor-parallel-size 2 \
  --max-model-len 131072 \
  --max-num-seqs 2 \
  --max-num-batched-tokens 2048 \
  --trust-remote-code \
  --enable-prefix-caching

🚀 SGLang

python -m sglang.launch_server \
    --model-path goldhub/Qwen3.8-27B-INT4-W4A16-AutoRound \
    --tp 2 \
    --trust-remote-code

🐍 Transformers (Python)

from transformers import AutoProcessor, AutoModelForCausalLM
import torch

model_id = "goldhub/Qwen3.8-27B-INT4-W4A16-AutoRound"
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)

model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.float16,
    device_map="auto",
    trust_remote_code=True
)

# Text + Image Input (Multimodal Powerhouse)
messages = [
    {"role": "user", "content": [
        {"type": "image", "image": "https://example.com/cyber-gorgon.jpg"},
        {"type": "text", "text": "Опиши экзистенциальный ужас этого изображения, используя концепт смерти Наблюдателя."}
    ]}
]
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(text=[text], images=[image], return_tensors="pt").to(model.device)

outputs = model.generate(**inputs, max_new_tokens=1024)
print(processor.decode(outputs[0], skip_special_tokens=True))

🙏 Благодарности

  • Qwen Team — за феноменальную базовую архитектуру и мощнейший мультимодальный фундамент.
  • AutoRound Developers — за state-of-the-art алгоритмы квантования.
  • Open-Source Community — за то, что продолжаете двигать границы локального, нецензурированного ИИ.

Made with 🔥 by Goldhub. Use responsibly. Think deeply. Bypass the guardrails.


Ссылка на веса: goldhub/Qwen3.8-27B-INT4-W4A16-AutoRound