/ Модель

Характеристики

Контекст
131 072 токена
Параметры
1,6 млрд
Размер весов
41,8 ГБ
Лицензия
Apache 2.0
Архитектура
gpt_oss · MoE
Базовая модель
gpt-oss-20b-dequantized
Библиотека
transformers
Опубликована
19 фев 2026

gpt-oss-20b-vision-preview

Генерация текстаТекст → текст3 профессии

Экспериментальная vision-language модель на базе GPT-OSS, которая отвечает на вопросы об одиночных изображениях и описывает их.

112скачиваний за 30 дней16лайковвеса обновлены21 фев 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

GPT-OSS-20B-Vision Preview — экспериментальная vision-language модель, созданная Vincent Kaufmann как proof of concept на базе GPT-OSS. Она добавляет анализ изображений к архитектуре GPT-OSS с помощью замороженного энкодера SigLIP-SO400M и метода PseudoDeepStack, объединяющего признаки нескольких уровней энкодера; визуальные токены проецируются двухслойным MLP. Модель дообучена с помощью QLoRA примерно на 2% параметров и принимает изображения размером 384×384, а также текст. По карточке, обучение достигло 22% запланированного объёма; модель распознаёт объекты и сцены и составляет описания изображений. Контекст составляет 131072 токена, основной язык карточки — английский.

Модель предназначена для ответов на вопросы об изображениях и их описания в диалоге. Среди ограничений — галлюцинации, слабое распознавание мелкого текста, неточный подсчёт и пространственные оценки; поддерживаются только одиночные изображения без видео, с фиксированным разрешением 384×384. Для полной BF16-модели требуется около 40 ГБ видеопамяти. Лицензия — Apache-2.0.

Сценарии применения

  • описание объектов и сцен на изображении
  • ответы на вопросы о содержимом фотографии
  • определение пространственных отношений между объектами
  • составление многофразового описания изображения
  • анализ еды, людей и помещений на изображениях

Ограничения

Модель находится на ранней стадии обучения и может выдумывать детали, плохо распознаёт мелкий текст, считает объекты и оценивает пространственные отношения. Поддерживает только одиночное изображение с фиксированным разрешением 384×384, без видео и нескольких изображений.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

GPT-OSS-20B-Vision Preview (Proof of Concept)

A vision-language model for GPT-OSS built from scratch on a single NVIDIA DGX Spark in a Dubai hotel room. Features PseudoDeepStack multi-scale visual features and the first documented analysis of why projector-only training fails on MoE architectures.

What This Is

This is a proof of concept — not a production model. It demonstrates that the GPT-OSS Mixture-of-Experts architecture can be given vision capabilities using a novel multi-scale feature injection method we call PseudoDeepStack.

At 22% through training (step 9,000 of 40,461), the model already:

  • Identifies objects, scenes, and spatial relationships in images
  • Generates coherent multi-sentence descriptions
  • Understands food, people, indoor/outdoor scenes

It also hallucinates details and misses fine-grained elements — expected at this training stage.

We need compute to finish training and scale to 120B. See below.

Architecture

ComponentDetails
Vision EncoderSigLIP-SO400M-patch14-384 (frozen)
Feature MethodPseudoDeepStack — multi-scale visual features from multiple encoder depths
Projector2-layer MLP, 18.2M parameters
Language ModelGPT-OSS-20B MoE (4-bit QLoRA, rank 128, alpha 256)
Visual Tokens729 per image (27x27 patches at 384px)
Training Data647K samples — LLaVA-Instruct + Infinity-MM Stage 4
HardwareSingle NVIDIA DGX Spark GB10 (128 GB unified memory)

PseudoDeepStack

Standard VLMs extract features from only the final vision encoder layer. We extract from multiple depths — capturing low-level edges and textures, mid-level shapes and parts, and high-level semantic features — then concatenate them into enriched visual tokens. This gives the language model a richer visual representation at zero additional inference cost (same 729 tokens).

How it works: SigLIP-SO400M has 27 transformer layers. Instead of using only the final layer's output, we extract hidden states from layers 9, 18, and 27 — representing three levels of visual understanding. Layer 9 captures low-level features like edges and textures. Layer 18 captures mid-level structure like shapes and object parts. Layer 27 captures high-level semantics. These three [729, 1152] feature maps are concatenated along the feature dimension into a single [729, 3456] tensor, then projected down to [729, 2880] by a 2-layer MLP to match the LLM's hidden size. The result: each of the 729 visual tokens carries information from three scales of understanding, at zero additional inference cost compared to standard single-layer extraction.

Inspired by Qwen3-VL's DeepStack, but designed to work with frozen/quantized LLMs without architectural modifications.

Key Finding: MoE Models Need LoRA for Vision

We discovered that projector-only training fails for Mixture-of-Experts architectures. Unlike dense models where the LLM can sometimes process visual tokens without adaptation, MoE models produce incoherent output when visual tokens bypass the expert routing learned during pretraining. QLoRA adaptation of the attention layers allows the router to learn how to handle this new modality.

How This Compares to InternVL3.5-GPT-OSS-20B

OpenGVLab (Shanghai AI Laboratory) released InternVL3.5-GPT-OSS-20B-A4B in August 2025 — a team of dozens of researchers with access to large-scale A100 clusters, months of development, and a 4-stage training pipeline including reinforcement learning. Their model is also a Preview.

This project reached a comparable milestone in 7 days, with one person, one DGX Spark, and a novel feature method they don't use. Different project, different approach:

This ProjectInternVL3.5-GPT-OSS-20B
Training methodQLoRA (~2% of parameters)Full model training (4 stages incl. RL)
Hardware requiredSingle DGX Spark (consumer device)Multi-GPU cluster
Vision encoderSigLIP-SO400M (frozen, off-the-shelf)InternViT-300M (custom, trained)
Feature extractionPseudoDeepStack (multi-scale, 3 depths)Single-layer
ResolutionFixed 384pxDynamic 448px, up to 12 tiles
Video supportNoYes
Training hardwareSingle NVIDIA DGX Spark ($3,999)Multi-GPU cluster (thousands+)
ReproducibilityNovel architecture, single-device training pipelineStandard multi-GPU distributed training

Why this project matters:

  • Efficiency through ingenuity: Achieved vision capability on a single consumer device by designing a novel training pipeline that works within extreme hardware constraints
  • PseudoDeepStack: A new multi-scale feature extraction method that captures richer visual information than single-layer approaches, not used by InternVL
  • MoE routing analysis: First documented explanation of why projector-only training fails on MoE architectures, saving the community from a dead-end approach
  • Parameter-efficient adaptation: Trained only ~2% of model parameters to achieve vision, demonstrating that brute-force full training isn't the only path

Usage

Requirements

pip install torch transformers accelerate pillow

Quick Start

import torch
from PIL import Image
from transformers import (
    AutoTokenizer, AutoModelForCausalLM,
    SiglipImageProcessor, SiglipVisionModel,
)
from huggingface_hub import hf_hub_download

REPO = "vincentkaufmann/gpt-oss-20b-vision-preview"
DEVICE = "cuda"

# 1. Load vision encoder (SigLIP — runs on CPU to save GPU memory)
processor = SiglipImageProcessor.from_pretrained("google/siglip-so400m-patch14-384")
vision = SiglipVisionModel.from_pretrained(
    "google/siglip-so400m-patch14-384", torch_dtype=torch.float32
).eval()

# 2. Load projector (PseudoDeepStack: multi-scale visual features)
proj_path = hf_hub_download(REPO, "projector-step9000.pt")
proj_ckpt = torch.load(proj_path, map_location="cpu", weights_only=False)
projector = torch.nn.Sequential(
    torch.nn.Linear(3456, 2880), torch.nn.GELU(), torch.nn.Linear(2880, 2880)
)
projector.load_state_dict({
    k.replace("projector.", ""): v
    for k, v in proj_ckpt["state_dict"].items()
})
projector = projector.to(DEVICE).to(torch.bfloat16).eval()

# 3. Load merged LLM (LoRA already merged into weights)
tokenizer = AutoTokenizer.from_pretrained(REPO, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    REPO, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True
)
model.eval()

# 4. Process image
image = Image.open("your_image.jpg").convert("RGB")
inputs = processor(images=image, return_tensors="pt")
with torch.no_grad():
    out = vision(**inputs, output_hidden_states=True)
    # PseudoDeepStack: extract features from multiple encoder depths
    features = torch.cat([out.hidden_states[l] for l in [9, 18, 27]], dim=-1)
    visual_tokens = projector(features.to(torch.bfloat16).to(DEVICE))

# 5. Generate
prompt = tokenizer("Describe this image in detail.", return_tensors="pt").to(DEVICE)
embeds = model.get_input_embeddings()(prompt["input_ids"])
input_embeds = torch.cat([visual_tokens, embeds], dim=1)

with torch.no_grad():
    output = model.generate(
        inputs_embeds=input_embeds,
        attention_mask=torch.ones(1, input_embeds.shape[1], device=DEVICE),
        max_new_tokens=256, temperature=0.7, top_p=0.9, repetition_penalty=1.1
    )
print(tokenizer.decode(output[0], skip_special_tokens=True))

Note: The full BF16 model requires ~40 GB VRAM. For 4-bit quantized loading, add load_in_4bit=True via BitsAndBytesConfig.

Training Details

ParameterValue
Training stageVisual instruction tuning (single-stage QLoRA)
Dataset647K samples (LLaVA-Instruct-150K + Infinity-MM Stage 4 curated)
Epochs1 (22% complete at this checkpoint)
LoRA rank128
LoRA alpha256
LoRA targetsQ, K, V, O, gate, up, down projections
Quantization4-bit NormalFloat (QLoRA)
OptimizerAdamW
HardwareSingle NVIDIA DGX Spark GB10 Blackwell
Training time~3.5 days to this checkpoint (of ~15 days total)

Limitations

This is an early proof of concept at 22% training:

  • Hallucinations: The model invents objects and details not present in images
  • Fine-grained understanding: Struggles with text in images, counting, and spatial precision
  • Single image only: No multi-image or video support
  • Resolution: Fixed 384x384 input (no dynamic resolution)

These limitations are expected to improve significantly with full training completion and architectural upgrades.

The Story

I'm Vincent — a solo builder who trained a VLM for GPT-OSS on a DGX Spark from my hotel room in Dubai. No lab, no cluster, no team of PhDs. Just a Spark, a laptop, and stubbornness.

While OpenGVLab's InternVL3.5 brought vision to GPT-OSS using their full training pipeline, this project takes a different approach: parameter-efficient QLoRA adaptation with a novel multi-scale feature method, built and trained on a single consumer device.

This proof of concept proves three things:

  1. PseudoDeepStack works — multi-scale visual features improve understanding at zero cost
  2. MoE architectures can see — with the right adaptation approach (QLoRA, not projector-only)
  3. Hardware constraints drive innovation — the right architecture lets a single DGX Spark do what typically requires a GPU cluster

What's needed to go from proof of concept to production:

  • Complete training (remaining ~31,000 steps) — estimated 11 more days on Spark
  • Scale to GPT-OSS-120B — same projector works due to shared hidden dimensions
  • Benchmark and evaluate against LLaVA-1.5, Qwen3-VL, and other VLMs
  • Dynamic resolution (AnyRes tiling) for higher-quality image understanding

Help Us Ship the Real Thing

This project needs compute. The DGX Spark is powerful for its size, but finishing training and scaling to 120B requires GPU hours I can't self-fund.

What your support enables:

TierCostWhat It Buys
Finish 20B training~$500Complete the remaining 78% of training on cloud GPUs
Train 120B version~$2,000Full GPT-OSS-120B-Vision with the same architecture
Production quality~$5,000Extended training on 3M+ samples, benchmarking, GGUF release

Every dollar goes directly to GPU time. No overhead, no team salaries — just compute.

Contact: vincentkaufmann@protonmail.com

Roadmap

  • PseudoDeepStack architecture design
  • Stage 1: Projector alignment (558K image-caption pairs)
  • Discovery: Projector-only fails for MoE → QLoRA required
  • Stage 2: QLoRA visual instruction tuning (647K samples)
  • Proof of concept checkpoint (this release)
  • Complete full training epoch
  • GPT-OSS-120B-Vision (same projector, larger LLM)
  • GGUF format for llama.cpp / LM Studio compatibility
  • Dynamic resolution (AnyRes tiling)
  • Comprehensive benchmark evaluation

Citation

@misc{kaufmann2026gptossvision,
  title={GPT-OSS-Vision: Efficient Vision-Language Adaptation of Sparse MoE Models via PseudoDeepStack},
  author={Vincent Kaufmann},
  year={2026},
  howpublished={\url{https://huggingface.co/vincentkaufmann/gpt-oss-20b-vision-preview}},
}

License

Apache 2.0 — same as the base GPT-OSS model.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers

Можно запустить

Подбираем GPU…

Класс архитектуры
GptOssForCausalLM
Ревизия весов
6b2bfae

0 моделей