Hy4 preview

Hy4 preview

Hy4 preview는 Tencent의 차세대 플래그십 Mixture-of-Experts 언어 모델이에요. 총 770B 파라미터, 토큰당 활성 49B로, DeepSeek 스타일 MLA + sparse attention 스택에 Hunyuan의 잔차 제어, MoE 라우팅, 어텐션 게이팅을 결합했어요. 텍스트 전용 모델(vocab 120,832, 엔드포인트가 이미지 입력을 의도적으로 거부)이며 Apache-2.0으로 출시됐어요.

BF16(~1.5TB 가중치)과 MXFP8(~760GB 가중치) 두 체크포인트로 제공되며, 내장 MTP(NextN) draft 레이어로 추측 디코딩을 즉시 지원하고 최대 1M 포지션의 장문 컨텍스트를 지원해요.

출처: 문서

본문

Deployment

Install SGLang

모든 방법과 하드웨어 플랫폼은 공식 SGLang 설치 가이드를 참조하세요. 아래 Docker 경로는 명령 패널의 Docker 프레이밍에 해당해요.

Docker:

docker pull lmsysorg/sglang:hy4-preview

Note: hy4-preview 이미지는 HYV4 모델 코드, suffix-aware hunyuan reasoning/tool-call 파서, NEXTN MTP 런타임을 번들해요. 이들을 포함하는 태그 릴리스가 나오면 :latest로 전환하세요.

이미지 실행 방법은 Install → Method 3: Using Docker을 참고하고, 안쪽 sglang serve ...를 아래 명령 생성기가 만들어 주는 것으로 바꿔 끼우세요.

하드웨어와 레시피를 골라 실행 명령을 생성하세요. 두 서빙 전략은 MTP(NextN) draft 레이어의 켜짐 여부에 대응해요:

  • Low-Latency — MTP 추측 디코딩 켜짐 (steps=3, draft-tokens=4). 단일 사용자에게 가장 빠른 응답; 채팅에 적합.
  • High-Throughput — MTP 꺼짐. 포화 상태에서는 draft+verify 오버헤드가 속도 향상을 능가. 배치 작업에 최적.

패널 컨트롤 (명령 상자 상단):

  • Python / Docker — 기존 SGLang 환경의 bare sglang serve … 또는 위 Install SGLang 패널의 하드웨어별 이미지에 대한 docker run … sglang serve … 래퍼.
  • ⧉ Copy — 현재 명령을 클립보드로 복사.
  • $ cURL — 서버가 떠 있는지 확인하는 localhost:30000 대상 샘플 요청.
  • ⚙ Env — 명령과 cURL이 공유하는 플레이스홀더(HOST_IP, PORT, HF_TOKEN, NODE_RANK, NODE0_IP) 편집.
  • Badge — 단일 노드 레시피는 초록 Verified(실제 하드웨어에서 end-to-end 실행)를 보여주고, 2노드 BF16 레시피는 In Progress를 보여주며 멀티노드 검증이 완료되면 Verified로 바뀌어요.

Playground

Playground는 현재 선택된 Deploy 셀 위에 추가 노브를 켤 수 있는 곳이에요. 베이스는 Deploy 선택에서 실시간으로 읽어오며, 당신의 오버라이드만 변경돼요.

노브는 두 종류예요:

  • 내장 SGLang 기능 — 병렬 처리 오버라이드(TP / DP-Attention), MoE a2a 백엔드(DeepEP, EP = TP 설정), reasoning / tool-call 파서, 추측 디코딩 프리셋, prefill/decode disaggregation, HiCache 계층.
  • Hy4 특정--reasoning-parser auto / --tool-call-parser auto가 suffix-aware Hunyuan 파서로 해석되고 런타임에 토크나이저 vocab에서 실제 구조 토큰 문자열을 읽어요.

초록으로 강조된 줄은 오버라이드로 추가된 것, 빨간 취소선 줄은 베이스 레시피에 있었지만 오버라이드가 제거한 것이에요. 나열된 레시피를 벗어난 병렬 처리 조합(DP-Attention, DeepEP, 다른 TP degree)은 실험 영역이에요. 오버라이드는 구성이 end-to-end로 실행되어 제출될 때까지 배지를 Not Verified로 바꿔요.

패널 컨트롤은 Deploy 패널의 Python / Docker · ⧉ Copy · $ cURL · ⚙ Env를 재사용하고 하나가 더 있어요:

  • Submit ↗ — 사전 채워진 GitHub issue를 열어 오버라이드 콤보를 새 검증 cookbook 셀로 제출. 배지가 Not Verified일 때만 표시.

1. 모델 소개

Hy4 preview는 Tencent의 차세대 플래그십 Mixture-of-Experts 언어 모델이에요. 총 770B 파라미터, 토큰당 활성 49B로, DeepSeek 스타일 MLA + sparse attention 스택에 Hunyuan의 잔차 제어, MoE 라우팅, 어텐션 게이팅을 결합했어요. 텍스트 전용 모델(vocab 120,832; 엔드포인트가 이미지 입력을 의도적으로 거부)이며 Apache-2.0으로 출시됐어요.

핵심 아키텍처:

  • MoE: 78 레이어 — 레이어 0은 dense MLP, 나머지 77은 256개 라우팅 전문가 + 1개 공유 전문가가 있는 sparse MoE, top-8 sigmoid-scored 라우팅(routed scaling 2.827), 전문가 중간 크기 2048, bounded SwiGLU (clamp 10.0).
  • 모든 레이어의 MLA + DSA: DeepSeek Sparse Attention 아래의 Multi-head Latent Attention(q_lora_rank 2048, kv_lora_rank 512, 192 nope + 64 rope head dims, v_head_dim 256) — 인덱서 top-k 2048, 32 index heads, 인덱서가 full/shared를 번갈아가며(4 레이어마다 하나의 full indexer), FP8 index cache.
  • iHC 잔차 제어: Hunyuan 자체의 레이어 간 잔차 게이팅(enable_ihc, hc_mult 4)과 pre-/post-residual gate 그룹. DeepSeek-V4의 mHC와 의미적으로 다르며(조합 스텝·Sinkhorn 없음) 구현은 상호 교환 불가.
  • Gated MLA + attention sink: fp32로 평가되는 요소별 어텐션 출력 게이팅, 모든 어텐션 백엔드를 통해 전파되는 학습 가능한 헤드별 attention sink.
  • MTP (NextN): 하나의 내장 multi-token-prediction draft 레이어(model.mtp_layers.0, 10B 파라미터 중 ~0.7B 활성, 두 체크포인트 모두에 있음)로 추측 디코딩을 즉시 지원.
  • 장문 컨텍스트: 최대 1M 포지션(RoPE theta 1e7). --context-length을 KV 예산에 맞게 지정 — §2의 크기 조정 표는 262,144(H200에서는 131,072)를 제안.

사용 가능한 모델:

권장 생성: temperature=0.9, top_p=1.0 (정보용 — SGLang이 체크포인트의 generation_config.json 기본값을 적용하므로 클라이언트 코드에 샘플링 파라미터를 하드코딩하지 마세요). thinking 깊이는 요청별 reasoning_effort로 제어(기본값 high; 직접 응답은 no_think — §3.1 참조).

리소스: HuggingFace · GitHub.

특수 토큰. Hy4 preview 토크나이저의 구조 토큰은 suffix를 가져요(<think:opensource>, <tool_calls:opensource>, <tool_call:opensource>, <arg_key:opensource>, <arg_value:opensource>). SGLang의 Hunyuan reasoning/tool-call 파서는 런타임에 토크나이저 vocab에서 실제 토큰 문자열을 해석하므로 --reasoning-parser auto --tool-call-parser auto가 바로 동작해요.

2. 구성 팁

하드웨어 크기 조정. BF16 가중치는 ~1.5TB, MXFP8은 ~760GB예요. MLA KV 캐시(압축된 kv_lora 512 + rope 64, DSA FP8 인덱서 캐시 포함, ≈95KB/token)는 TP 랭크별로 복제되므로, 가중치 이후 남는 랭크별 풀(pool)이 컨텍스트 상한을 결정해요:

GPU VRAM MXFP8 (~760GB) BF16 (~1.5TB)
H200 141GB 미지원 — MXFP8 커널 경로는 SM100 (Blackwell) 필요 TP16, 2×8 nodes · 131K context
B200 192GB TP8, single node · 262K context TP16, 2×8 nodes · 262K context (8×192GB ≈ 가중치만)
B300 288GB TP4, single node · 262K context (~190GB/rank) TP8, single 8-GPU node · 262K context
GB300 288GB TP4, single node · 262K context TP8, 2×4 nodes · 262K context (GB300 호스트는 4 GPU 탑재)

H200(BF16, TP16 → 랭크당 ~95GB 가중치)에서는 랭크별 풀이 대략 260K 토큰의 KV를 담으므로 거기서 --context-length 131072로 설정하세요(모델 기본값은 1M 포지션으로 풀을 훨씬 넘어서요). 192GB 이상 부품은 262144를 편안하게 지원해요.

DSA 어텐션 백엔드. 모든 레이어가 DeepSeek Sparse Attention을 실행해요. SGLang은 HYV4에 DSA 백엔드를 자동 선택하므로(--attention-backend dsa + flashmla_sparse prefill/decode, bf16 KV 풀 위 FP8 인덱서 캐시) 레시피는 어텐션 플래그를 전달하지 않아요. 커널 특정 사유가 있을 때만 오버라이드하세요.

MXFP8 커널 스택. MXFP8 체크포인트는 ModelOpt hf_quant_config(동적 활성화, UE8M0 group-32 가중치 스케일)로 자체 설명하므로 --quantization 플래그가 필요 없어요. 레시피는 검증된 HYV4 MXFP8 경로인 --moe-runner-backend deep_gemm --fp8-gemm-backend deep_gemm을 고정해요(런타임은 플래그가 설정되지 않으면 HYV4에 둘 다 deep_gemm으로 기본 설정). MXFP8 커널 경로는 SM100+(Blackwell) 필요. H200(SM90)은 MXFP8 체크포인트를 서빙할 수 없으니 거기서는 BF16을 사용하세요.

CUDA graph decode vs eager. Decode CUDA-graph 캡처는 기본으로 켜져요. Hy4에서 그래프 경로의 장기 soak 검증은 진행 중이에요. 긴 혼합 에이전트 워크로드에서 불안정이 생기면 --disable-cuda-graph를 전달해 eager decode로 폴백하세요(어느 쪽이든 재시작이 깨끗하게 복구돼요).

MTP (NextN) 추측 디코딩. 두 체크포인트 모두 draft 레이어 하나를 담아요. 프리셋은 --speculative-algorithm NEXTN --speculative-num-steps 3 --speculative-num-draft-tokens 4 (top-k 1)이에요. 추측 디코딩은 요청당 4개의 draft 토큰 슬롯을 예약하므로 유효 요청 예산은 prompt_tokens + max_tokens + 4 ≤ context length예요. 정확한 컨텍스트 경계의 요청은 예약을 고려해 거부돼요.

Fail-fast 가드레일. 모델은 할당 전에 파이프라인 병렬 처리와 --enable-prefill-cp를 거부해요. 레시피는 순수 TP로 실행되어요. DP-Attention, DeepEP(런타임에 EP = TP 설정), 다른 TP degree는 Playground 실험 영역이에요.

멀티노드 BF16. BF16 가중치는 단일 H200/B200/GB300 호스트에 맞지 않으므로 해당 셀은 2노드 TP 레시피예요. 생성된 명령을 모든 노드에서 실행하고(패널이 --nnodes 2 --node-rank --dist-init-addr 주입) 가중치를 랭크 간 공유 저장소에 유지하세요.

텍스트 전용. 이미지 입력은 의도적으로 HTTP 400으로 거부돼요 — 이 엔드포인트에 비전 트래픽을 라우팅하지 마세요.

동시성 아래의 큰 prefill. 매우 큰 프롬프트의 first-prefill 지연 시간은 고동시성에서 30초를 넘을 수 있어요. 장문 컨텍스트 에이전트 워크로드에는 흔한 30초 기본값 대신 300초 클라이언트 타임아웃(그리고 적정 동시성)을 사용하세요.

3. 고급 사용

3.1 추론 (reasoning_effort)

Hy4 preview는 하이브리드 thinking 모델이에요. reasoning은 기본적으로 high(깊은 chain-of-thought — 수학, 코딩, 에이전트 작업에 적합)예요. 최상위 OpenAI reasoning_effort 필드는 표준 계층(예: high)을 받고, 직접 응답에는 모델 특정 no_thinkextra_body={"chat_template_kwargs": {"reasoning_effort": "no_think"}}로 전달하세요. Deploy 레시피는 reasoning parser(--reasoning-parser auto)를 활성화해 thinking을 reasoning_content로, 최종 답변을 content로 분리해요:

예제: thinking (reasoning_effort=high) (Python)

from openai import OpenAI

client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")

response = client.chat.completions.create(
    model="tencent/Hy4-preview-FP8",
    messages=[{"role": "user", "content": "Solve step by step: What is 15% of 240?"}],
    reasoning_effort="high",
    max_tokens=2048,
)

msg = response.choices[0].message
print("=============== Thinking =================")
print(msg.reasoning_content)
print("=============== Content =================")
print(msg.content)

예제 출력

Pending update — will be captured verbatim from a live Hy4 preview server.

예제: instant mode (reasoning_effort=no_think) (Python)

from openai import OpenAI

client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")

response = client.chat.completions.create(
    model="tencent/Hy4-preview-FP8",
    messages=[{"role": "user", "content": "Give me a one-line summary of relativity."}],
    extra_body={"chat_template_kwargs": {"reasoning_effort": "no_think"}},
    max_tokens=256,
)

print("Content:", response.choices[0].message.content)

예제 출력

Pending update — will be captured verbatim from a live Hy4 preview server.

3.2 툴 호출

Hy4 preview는 arg_key / arg_value 인자 형식의 suffixed 구조 토큰으로 툴 호출을 방출해요. SGLang의 Hunyuan 툴 호출 파서는 스트리밍·비스트리밍 요청 모두에서 이를 스키마 인지 타입 강제 변환과 함께 OpenAI 호환 message.tool_calls로 재조립해요. Deploy 레시피는 두 파서를 함께 활성화해요(--reasoning-parser auto --tool-call-parser auto) — reasoning parser가 툴 호출 파서 실행 전에 thinking 토큰을 제거해요.

Note: 툴 호출 출력은 구문 분석되며 문법으로 제한되지 않아요: 현재 구현에서 tool_choice: "required" / named-function 강제는 구조 태그 유도 디코딩으로 강제되지 않아요.

예제: 비스트리밍 툴 호출 (Python)

from openai import OpenAI

client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a city.",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {"type": "string"},
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
                },
                "required": ["city"],
            },
        },
    }
]

response = client.chat.completions.create(
    model="tencent/Hy4-preview-FP8",
    messages=[{"role": "user", "content": "What's the weather in Beijing? Use fahrenheit."}],
    tools=tools,
)

msg = response.choices[0].message
print("Reasoning:", msg.reasoning_content)
print("Content:  ", msg.content)
for tc in msg.tool_calls or []:
    print(f"Tool Call: {tc.function.name}")
    print(f"  Arguments: {tc.function.arguments}")

예제 출력

Pending update — will be captured verbatim from a live Hy4 preview server.

더 알아보기 (Learn more)