Ling-2.6
Ling-2.6
inclusionAI의 Ling-2.6 제품군은 Ling 인스턴트 모델 시리즈의 다음 세대 버전이에요. Ling-2.5에서 이어받은 아키텍처 방향을 바탕으로 추론 효율, 토큰 효율, 그리고 에이전트 성능에 집중해, 프론티어 인스턴트 모델과 경쟁하면서도 더 빠르고 가볍고 생산 환경의 에이전트 워크로드에 더 잘 맞도록 만들었어요.
본문
1. 모델 소개
주요 특징:
- 하이브리드 선형 어텐션 (Hybrid Linear Attention): 고도로 희소한 MoE 백본 위에 만든
1:7 MLA + Lightning Linear하이브리드 구조예요. 같은 클래스의 최고 모델들과 비교할 때, Ling-2.6-flash는 장문 컨텍스트 시나리오에서 최대 약 4배 높은 prefill/decode 처리량을 보여줘요. Ling-2.6-1T는 FP8로 배포되어--tp 4로 단일 GB300 노드에 들어가요. - 토큰 효율 (Token Efficiency): 명시적인 토큰 효율 목표로 학습했어요. Artificial Analysis 전체 스위트에서 Ling-2.6-flash는 약 15M 출력 토큰만 사용하면서도 경쟁력을 유지해요 — 긴 추론을 하는 동급 모델들보다 토큰당 지능 효율이 훨씬 좋아요.
- 에이전트 능력 (Agentic Capabilities): 도구 사용, 다단계 계획, 장기 지평 실행에 맞춰 다듬었어요. BFCL-V4, TAU2-bench, SWE-bench Verified, Claw-Eval, PinchBench에서 최상급 결과를 내고, Claude Code, Kilo Code, Qwen Code, Hermes Agent, OpenClaw로 검증했어요.
- 장문 컨텍스트 (Long Context): 기본 128K이며, 256K (Ling-2.6-flash), 256K → 1M (Ling-2.6-1T, YaRN 사용) 까지 확장할 수 있어요.
제공되는 모델:
- BF16: inclusionAI/Ling-2.6-flash — 총 104B / 활성 7.4B
- FP8 (E4M3): inclusionAI/Ling-2.6-1T — 총 약 1T
라이선스: MIT
2. SGLang 설치
SGLang은 여러 설치 방법을 제공해요. 하드웨어 플랫폼과 요구 사항에 맞는 가장 적합한 방법을 선택하면 돼요.
설치 지침은 공식 SGLang 설치 가이드를 참고해 주세요.
3. 모델 배포
3.1 Ling-2.6-flash
Ling-2.6-flash는 총 104B / 활성 7.4B 규모의 MoE로, 단일 4-GPU 노드에서 무리 없이 돌아요. 아래 선택기를 사용해 하드웨어에 맞는 실행 명령을 만들어 보세요.
설정 팁 (Configuration Tips)
--trust-remote-code가 필요해요 (커스텀BailingMoeV2_5ForCausalLM모델링 코드).--tp-size 4가 기준 배치예요. 4× H20-3e에서 모델은 TP=4, 배치 32 기준으로 초당 약 340 토큰의 decode 성능을 내요.- 기본 컨텍스트는 128K예요. YaRN(
--json-model-override-args '{"rope_scaling": {"rope_type": "yarn", "factor": 2.0, ...}}')을 켜면 256K까지 확장돼요 — 아래 스니펫에서 처리해 줘요. --tool-call-parser qwen25가 모델의<tool_call>...</tool_call>스키마와 일치해요.- 권장 기본 구성은
--reasoning-parser qwen3를 포함하지 않아요. Ling-2.6은 제어 가능한 추론 모델로, 채팅 템플릿이 기본적으로detailed thinking off로 동작해요. 반면 SGLang의qwen3추론 파서는 기본 추론 시맨틱스를 가정해서 일반 출력을reasoning_content로 잘못 보낼 수 있어요.thinking... response블록을 분리하고 싶을 때만 켜면 되요 — §4.3 추론 모드를 참고해 주세요. - MTP (multi-token prediction) 을 지원해요.
--speculative-algorithm NEXTN --speculative-num-steps 3 --speculative-eagle-topk 1 --speculative-num-draft-tokens 4 --mamba-radix-cache-strategy extra_buffer를 추가하면 켜져요 — 전체 예시는 모델 카드를 참고해 주세요.
3.2 Ling-2.6-1T
Ling-2.6-1T는 FP8 (E4M3) 로 배포되어, Ling-2.5-1T와 달리 단일 GB300 노드에 --tp 4로 들어가요. 더 작은 GPU(H200/B200)에서는 2노드 배포(--pp-size 2)가 필요해요.
설정 팁 (Configuration Tips)
- 커스텀 모델링 코드를 쓰려면
--trust-remote-code가 필요해요. --model-loader-extra-config '{"enable_multithread_load":"true","num_threads":64}'는 다중 샤드 FP8 가중치 로드(26개 safetensors 샤드 + MTP 레이어)를 크게 빠르게 해 줘요.- Tool calling에는
--tool-call-parser qwen을 사용하세요. - 권장 기본 구성은
--reasoning-parser qwen3를 포함하지 않아요. Ling-2.6의 채팅 템플릿은 기본적으로detailed thinking off로 동작하지만, SGLang의qwen3추론 파서는 기본 추론 시맨틱스를 가정해요 — 둘을 합치면 tool call 요청마다 별도 처리가 필요해져요 (see §4.3 추론 모드).reasoning... response블록을reasoning_content로 나누고 싶을 때만--reasoning-parser qwen3를 켜세요. - 2노드 배포에서는 두 노드 모두에
MASTER_IP,PORT,DIST_PORT를 일관되게 설정하세요.
4. 모델 호출
예를 들어, 단일 GB300 노드에 Ling-2.6-1T 서버를 띄운다면:
sglang serve \
--model-path inclusionAI/Ling-2.6-1T \
--tp-size 4 \
--trust-remote-code \
--host 0.0.0.0 \
--port 30000 \
--tool-call-parser qwen \
--model-loader-extra-config '{"enable_multithread_load":"true","num_threads":64}'
4.1 기본 사용법 (Basic Usage)
curl -s http://${MASTER_IP}:${PORT}/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "auto", "messages": [{"role": "user", "content": "What is the capital of France?"}]}'
출력:
{
"id": "...",
"object": "chat.completion",
"model": "auto",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The capital of France is **Paris**.",
"reasoning_content": null,
"tool_calls": null
},
"finish_reason": "stop"
}
]
}
4.2 Tool Calling 예시
curl -s http://${MASTER_IP}:${PORT}/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [{"role": "user", "content": "Search for the latest news about AI"}],
"tools": [{
"type": "function",
"function": {
"name": "search",
"description": "Search for information on the internet",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "The search query"}
},
"required": ["query"]
}
}
}],
"tool_choice": "auto"
}'
출력:
{
"choices": [
{
"message": {
"role": "assistant",
"content": null,
"tool_calls": [
{
"id": "call_...",
"type": "function",
"function": {
"name": "search",
"arguments": "{\"query\": \"latest news about AI\"}"
}
}
]
},
"finish_reason": "tool_calls"
}
]
}
4.3 추론 모드 (Thinking Mode)
Ling-2.6-flash와 Ling-2.6-1T는 모두 제어 가능한 추론(controllable-reasoning) 모델이에요. 채팅 템플릿은 시스템 메시지에 텍스트 지시어(detailed thinking on 또는 detailed thinking off)를 넣어 추론을 토글해요. 템플릿은 이 두 문구가 없으면 기본적으로 detailed thinking off 로 동작하며, Qwen3 스타일의 enable_thinking 템플릿 변수는 읽지 않아요.
추론 켜기 (Enabling thinking)
첫 시스템 메시지에 detailed thinking on을 포함하세요:
curl -s http://${MASTER_IP}:${PORT}/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [
{"role": "system", "content": "detailed thinking on"},
{"role": "user", "content": "If a box has 12 red balls and 8 blue balls, then 5 red balls are removed, how many balls remain?"}
]
}'
이미 시스템 프롬프트가 있다면, 원하는 지시어를 별도 줄에 추가하세요:
{"role": "system", "content": "You are a helpful assistant.\ndetailed thinking on"}
추론이 켜지면 모델은 최종 답변 앞에 thinking... response 블록을 만들어요. 이것을 자동으로 message.reasoning_content로 분리하려면 서버를 --reasoning-parser qwen3로 함께 띄우면 되요.
주의: --reasoning-parser qwen3 + tool calling
SGLang의 qwen3 추론 파서는 Qwen3용으로 작성됐어요 — Qwen3 모델은 기본 추론형이고 클라이언트가 chat_template_kwargs.enable_thinking=false로 해제해요. Ling-2.6은 그 반대 — 기본 비추론형이고 시스템 메시지로 토글하죠. 그래서 서버를 --tool-call-parser qwen과 --reasoning-parser qwen3를 함께 띄우면, 모든 tool call 요청에 chat_template_kwargs.enable_thinking=false를 포함해야 해요. 그렇지 않으면 파서가 <tool_call>...</tool_call> 블록을 message.tool_calls 대신 reasoning_content로 보내거든요:
curl -s http://${MASTER_IP}:${PORT}/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [{"role": "user", "content": "Search for the latest news about AI"}],
"tools": [...],
"tool_choice": "auto",
"chat_template_kwargs": {"enable_thinking": false}
}'
여기서 enable_thinking은 채팅 템플릿이 아니라 SGLang 추론 파서가 소비해요 — Ling-2.6의 템플릿은 이 값을 무시해요. 가장 간단한 구성은 --reasoning-parser qwen3를 빼고 시스템 메시지로 추론을 토글하는 것이에요.
더 많은 API 예시는 SGLang 기본 사용법 가이드를 참고하세요.
5. 벤치마크
GSM8K (Ling-2.6-1T, GB300 × 4)
--tp 4로 단일 GB300 노드에서 실행한 기준 결과:
python3 benchmark/gsm8k/bench_sglang.py
Accuracy: 0.9621 (1269 / 1319)
Ling-2.6-flash의 공식 수치는 모델 카드를 참고하세요 (BFCL-V4, TAU2-bench, SWE-bench Verified, Claw-Eval, PinchBench, Artificial Analysis).