Model reference · open weights
HyperCLOVAX-SEED-Think is an open-weight language model from naver-hyperclovax. HyperCLOVAX-SEED-Think-32B (BF16) weighs 66.6 GB; the smallest configuration that runs it is H100 80 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the naver-hyperclovax/HyperCLOVAX-SEED-Think-32B model card, 2026-10-01
What it is
| Released by | naver-hyperclovax |
|---|---|
| Released | 2025-12-23 |
| Parameters | 33.3B |
| VRAM | 66.6 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory | |
|---|---|---|---|---|
| 8K each | 32K each | |||
| RTX 3060 12 GB … L40S 48 GB 6 smaller cards | ||||
| A100 80 GB | 3 | 31K | 78.2 GB | |
| H100 80 GB | 2 | 16K | 78.1 GB | |
| RTX PRO 6000 Blackwell 96 GB | 8 | 2 | 68K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 14 | 3 | 113K | 107 GB |
| H200 141 GB | 26 | 6 | all 128K | 138 GB |
| B200 180 GB | 42 | 10 | all 128K | 176 GB |
| 4× RTX 4090 24 GB tensor parallel | 7 | 1 | 60K | 23.4 GB a card |
| 4× RTX 3090 24 GB tensor parallel | 7 | 1 | 61K | 23.4 GB a card |
| 4× RTX 5090 32 GB tensor parallel | 20 | 5 | all 128K | 31.0 GB a card |
| 2× H100 80 GB tensor parallel | 31 | 7 | all 128K | 78.1 GB a card |
| 2× A100 80 GB tensor parallel | 35 | 8 | all 128K | 78.2 GB a card |
| 4× L40S 48 GB tensor parallel | 41 | 10 | all 128K | 44.0 GB a card |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 71.2 GB | 78.4 GB |
| 5 | 80.8 GB | 117 GB |
| 8 | 88.1 GB | 146 GB |
| 16 | 107 GB | 223 GB |
| 32 | 146 GB | 378 GB |
| 64 | 223 GB | 687 GB |
One card, with vLLM's small-card settings.
From the model card
HyperCLOVA X SEED 32B Think is an updated vision-language thinking model that advances the SEED Think 14B line beyond simple scaling, pairing a unified vision-language Transformer backbone with a reasoning-centric training recipe. SEED 32B Think processes text tokens and visual patches within a shared embedding space, supports long-context multimodal understanding up to 128K tokens, and provides an optional “thinking mode” for deep, controllable reasoning. Building on the earlier 14B model, SEED 32B Think further strengthens Korean-centric reasoning and agentic capabilities, improving practical reasoning quality and reliability in real-world use.
We provide OmniServe, a production-ready multimodal inference system with OpenAI-compatible API.
# Clone OmniServe
git clone https://github.com/NAVER-Cloud-HyperCLOVA-X/OmniServe.git
cd OmniServe
# Install dependencies
pip install huggingface_hub safetensors torch openai easydict
# Download model (~60GB)
huggingface-cli download naver-hyperclovax/HyperCLOVAX-SEED-Think-32B \
--local-dir ./models/HyperCLOVAX-SEED-Think-32B
# Convert model to component format
python convert_model.py \
--input ./models/HyperCLOVAX-SEED-Think-32B \
--output ./track_a \
--track a
# Configure environment
cp .env.example .env
# Edit .env:
# VLM_MODEL_PATH=./track_a/llm/HyperCLOVAX-SEED-Think-32B
# VLM_ENCODER_VISION_MODEL_PATH=./track_a/ve/HyperCLOVAX-SEED-Think-32B
# Build and run
docker compose --profile track-a build
docker compose --profile track-a up -d
# Wait for model loading (~5 minutes)
docker compose logs -f vlm
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/a/v1",
api_key="not-needed"
)
# Image understanding
response = client.chat.completions.create(
model="track_a_model",
messages=[
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}},
{"type": "text", "text": "Describe this image."}
]
}
],
max_tokens=512,
extra_body={"chat_template_kwargs": {"thinking": False}}
)
print(response.choices[0].message.content)
Enable chain-of-thought reasoning for complex tasks:
response = client.chat.completions.create(
model="track_a_model",
messages=[
{"role": "user", "content": "Solve step by step: 3x + 7 = 22"}
],
max_tokens=1024,
extra_body={
"thinking_token_budget": 500,
"chat_template_kwargs": {"thinking": True}
}
)
# Response includes ... with reasoning process
print(response.choices[0].message.content)
response = client.chat.completions.create(
model="track_a_model",
messages=[
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/video.mp4"}},
{"type": "text", "text": "Describe this video."}
]
}
],
max_tokens=512,
extra_body={"chat_template_kwargs": {"thinking": False}}
)
import base64
with open("image.png", "rb") as f:
image_b64 = base64.b64encode(f.read()).decode()
response = client.chat.completions.create(
model="track_a_model",
messages=[
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image_b64}"}},
{"type": "text", "text": "What is in this image?"}
]
}
],
max_tokens=512,
extra_body={"chat_template_kwargs": {"thinking": False}}
)
curl -X POST http://localhost:8000/a/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "track_a_model",
"messages": [
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}},
{"type": "text", "text": "Describe this image."}
]
}
],
"max_tokens": 512,
"extra_body": {"chat_template_kwargs": {"thinking": false}}
}'
| Input | Output |
|---|---|
| Text | Text |
| Image | Text |
| Video | Text |
| Image + Text | Text |
| Video + Text | Text |
Features:
... output User Request
(Image/Video/Text)
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ OmniServe │
│ POST /a/v1/chat/completions │
│ │
│ ┌────────────────────────────────────────────────Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.