Qwythos-9B 怎麼用?vLLM、SGLang 和 Transformers 部署指南

Qwythos-9B-Claude-Mythos-5-1M 是 Empero AI 發布的 9B 推理模型,基於 Qwen3.5-9B,主打 1M 上下文、原生工具調用、長文本推理和 Apache-2.0 授權。本文整理模型特點、vLLM/SGLang 部署方式、採樣參數和使用注意事項。

Qwythos-9B-Claude-Mythos-5-1M 是 Empero AI 在 Hugging Face 上發布的 9B 推理模型。

模型地址:empero-ai/Qwythos-9B-Claude-Mythos-5-1M

它最吸引人的幾個點很直接:

  • 基於 Qwen3.5-9B
  • 9B 參數規模;
  • Apache-2.0 授權;
  • 預設配置 1,048,576 token 上下文;
  • 支援 Qwen3.5 風格的 function calling;
  • 面向長文本推理、工具調用和 agentic 場景;
  • 模型卡給出了 vLLM、SGLang、Transformers 的使用方式。

如果你正在找一個小體量、長上下文、能接工具的開權重模型,Qwythos-9B 值得看一眼。

先說適合誰

Qwythos-9B 不太像一個普通聊天模型。

它更適合這些場景:

  • 長文件分析;
  • 多檔案程式碼庫閱讀;
  • 長鏈路 agent 任務;
  • 帶工具調用的問答;
  • 需要 Python 執行器或搜尋工具輔助驗證的任務;
  • 研究、推理、數學、程式碼和技術文件處理;
  • 想測試 1M context 的本地或私有部署。

不太適合的場景:

  • 只想輕量聊天;
  • 沒有 GPU 資源;
  • 不想處理 <think> 推理區塊;
  • 想要開箱即用的消費級聊天體驗;
  • 對安全邊界沒有額外應用層控制。

模型卡裡明確提到它是一個 reasoning model,回答會先出現 <think> 推理區塊,再給最終答案。如果你要把它接到面向使用者的產品裡,需要自己處理或隱藏這部分。

模型基本資訊

按 Hugging Face 模型卡資訊,Qwythos-9B 的基礎資訊大致如下:

項目 資訊
模型名 empero-ai/Qwythos-9B-Claude-Mythos-5-1M
發布方 Empero AI
基座 Qwen/Qwen3.5-9B
參數規模 9B
格式 Safetensors
授權 Apache-2.0
上下文 1,048,576 tokens
特點 reasoning、function calling、long-context、agentic

它不是簡單的 prompt 包裝,而是 full-parameter fine-tune。模型卡描述中提到,訓練資料包含超過 5 億 token 的 Claude Mythos / Claude Fable traces,以及 Empero AI 內部工具 rethink 生成的 chain-of-thought 資料。

這類模型的使用重點不是「它會不會聊天」,而是看它能不能在複雜上下文裡持續推理、調用工具並修正答案。

1M 上下文意味著什麼

Qwythos-9B 模型卡中最醒目的能力,是預設啟用 YaRN rope scaling,把上下文擴展到:

1
1,048,576 tokens

也就是約 1M token。

配置裡包含類似這樣的參數:

1
2
3
4
5
6
7
8
9
"rope_parameters": {
  "rope_type": "yarn",
  "factor": 4.0,
  "original_max_position_embeddings": 262144,
  "mrope_interleaved": true,
  "mrope_section": [11, 11, 10],
  "rope_theta": 10000000
},
"max_position_embeddings": 1048576

這對幾個場景很有吸引力:

  • 把大型程式碼庫直接塞進上下文;
  • 處理 10 到 20 篇論文加筆記;
  • 長時間 agent 任務中保留工具輸出;
  • 多文件交叉分析;
  • 長 traceback、日誌、API 返回內容的連續推理。

不過要現實一點:1M context 不等於你隨便一張消費級顯卡就能舒服跑滿。

模型卡也提示,完整 1M window 更適合 tensor parallel 多 GPU 或 aggressive KV-cache offload。單張高階卡可能更適合 256k 到 512k 級別,具體還要看後端、量化、KV cache 和顯存。

用 vLLM 部署

如果你已經習慣 OpenAI-compatible API,vLLM 是最直接的方式之一。

安裝:

1
pip install vllm

啟動模型:

1
vllm serve "empero-ai/Qwythos-9B-Claude-Mythos-5-1M"

如果要顯式指定接近 1M 的上下文,可以參考模型卡裡的寫法:

1
vllm serve empero-ai/Qwythos-9B-Claude-Mythos-5-1M --max-model-len 1010000

調用介面:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
curl -X POST "http://localhost:8000/v1/chat/completions" \
  -H "Content-Type: application/json" \
  --data '{
    "model": "empero-ai/Qwythos-9B-Claude-Mythos-5-1M",
    "messages": [
      {
        "role": "user",
        "content": "What is the capital of France?"
      }
    ]
  }'

如果啟動時報顯存不足,先不要急著上 1M。可以先用更小的 --max-model-len 測通,例如 32k、64k、128k,再逐步往上加。

用 SGLang 部署

SGLang 也是模型卡中給出的部署方式。

安裝:

1
pip install sglang

啟動:

1
2
3
4
python3 -m sglang.launch_server \
  --model-path "empero-ai/Qwythos-9B-Claude-Mythos-5-1M" \
  --host 0.0.0.0 \
  --port 30000

如果要嘗試長上下文:

1
2
3
SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 python -m sglang.launch_server \
  --model-path empero-ai/Qwythos-9B-Claude-Mythos-5-1M \
  --context-length 1010000

調用:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
curl -X POST "http://localhost:30000/v1/chat/completions" \
  -H "Content-Type: application/json" \
  --data '{
    "model": "empero-ai/Qwythos-9B-Claude-Mythos-5-1M",
    "messages": [
      {
        "role": "user",
        "content": "What is the capital of France?"
      }
    ]
  }'

Docker 方式模型卡也給了示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
docker run --gpus all \
  --shm-size 32g \
  -p 30000:30000 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  --env "HF_TOKEN=<secret>" \
  --ipc=host \
  lmsysorg/sglang:latest \
  python3 -m sglang.launch_server \
    --model-path "empero-ai/Qwythos-9B-Claude-Mythos-5-1M" \
    --host 0.0.0.0 \
    --port 30000

部署前注意:如果模型需要訪問 gated 資源或私有快取,HF_TOKEN 要配置好。

用 Transformers 載入

模型卡給出的 text-only 推理示例使用 AutoModelForImageTextToTextAutoTokenizer

示例結構大致是:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import torch
from transformers import AutoModelForImageTextToText, AutoTokenizer

model_id = "empero-ai/Qwythos-9B-Claude-Mythos-5-1M"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(
    model_id, dtype="bfloat16", device_map="auto"
)

messages = [
    {
        "role": "user",
        "content": "Explain how tool calling helps a reasoning model verify exact facts."
    }
]

text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tok(text, return_tensors="pt").to(model.device)

out = model.generate(
    **inputs,
    max_new_tokens=16384,
    do_sample=True,
    temperature=0.6,
    top_p=0.95,
    top_k=20,
    repetition_penalty=1.05,
)

print(tok.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))

這裡有兩個重點:

  1. 模型回答會包含 <think>...</think>
  2. 推薦給足 max_new_tokens,模型卡建議 16384。

如果你是做產品輸出,一般要在後處理階段把 <think> 部分過濾掉,只展示最終回答。

推薦採樣參數

模型卡給出的推薦參數是:

1
2
3
4
5
6
7
8
gen_kwargs = dict(
    do_sample=True,
    temperature=0.6,
    top_p=0.95,
    top_k=20,
    repetition_penalty=1.05,
    max_new_tokens=16384,
)

不要一上來用 greedy decoding,也不要把 temperature 壓得太低。

模型卡裡提到,在 greedy 或很低溫度(T <= 0.3)下,這類 reasoning model 可能進入重複循環。預設按模型卡參數跑,通常更穩。

工具調用怎麼理解

Qwythos-9B 支援 Qwen3.5 風格的 function calling。

模型卡描述中提到,可以把 tools=[...] 傳給 chat template,模型會輸出符合 Qwen3.5 規範的 <tool_call> block。

一個簡化的工具定義結構類似:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
TOOLS = [
    {
        "type": "function",
        "function": {
            "name": "python_executor",
            "description": "Execute Python code and return stdout.",
            "parameters": {
                "type": "object",
                "properties": {
                    "code": {"type": "string"}
                },
                "required": ["code"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "web_search",
            "description": "Search the web for current facts and citations.",
            "parameters": {
                "type": "object",
                "properties": {
                    "query": {"type": "string"},
                    "max_results": {"type": "integer"}
                },
                "required": ["query"]
            }
        }
    }
]

模型會生成類似 <tool_call> 的內容,你的應用需要解析它,執行工具,再把結果餵回模型。

也就是說,Qwythos-9B 的工具調用不是「模型自己真的聯網」。

你需要提供工具執行環境。

對硬體的現實預期

9B 參數聽起來不大,但 1M context 是另一個維度的壓力。

部署時需要分別看:

  • 模型權重顯存;
  • KV cache;
  • 上下文長度;
  • batch size;
  • 併發數;
  • 是否使用量化;
  • 是否做 KV cache offload;
  • 後端是 vLLM、SGLang 還是 Transformers。

如果你只是想試模型能力,可以先從較小上下文開始:

1
32k -> 64k -> 128k -> 256k

確認穩定後再嘗試更長上下文。

不要把 1M context 理解成預設每次都要跑滿。更實際的做法是:只有在程式碼庫分析、多論文彙總、長 agent 軌跡這類任務裡,才逐步拉高上下文。

使用限制和安全邊界

模型卡裡有幾個限制值得認真看:

  • 它是 reasoning model,會輸出 <think>
  • 低溫或 greedy decoding 可能出現重複循環;
  • 具體標識符、CVE、藥物標籤、精確數值等仍需工具或檢索驗證;
  • 模型是 uncensored,面向複雜技術問題不會輕易拒答;
  • 視覺能力繼承自基座,但這次 fine-tune 是 text-only,視覺行為沒有被重點訓練或評估。

如果你把它用於面向使用者的應用,建議加上:

  • 輸出過濾;
  • 安全策略;
  • 工具調用白名單;
  • 速率限制;
  • 日誌審計;
  • 高風險領域人工複核;
  • 檢索或工具驗證機制。

特別是網路安全、醫療、藥理、財務、法律這類場景,不能把模型回答當最終事實。它可以做輔助推理,但最終仍要回到可靠來源、工具結果或人工審核。

適合怎麼測試

第一次測試 Qwythos-9B,不建議直接上超長上下文。

可以按這個順序:

  1. 先用 Transformers 或 vLLM 跑通短問答;
  2. 使用推薦採樣參數;
  3. 觀察 <think> 和最終回答格式;
  4. 再測試長一點的文件摘要;
  5. 再接入 Python executor;
  6. 最後嘗試 web_search 或 RAG;
  7. 穩定後再逐步拉長上下文。

測試 prompt 可以從這些開始:

1
請閱讀下面這段程式碼,找出可能的邊界條件問題,並給出最小修復建議。

或者:

1
請先列出你需要驗證的關鍵事實,再說明哪些可以用工具確認,哪些需要人工複核。

這類問題更能體現 reasoning model 和 tool-use 的價值。

一句話總結

Qwythos-9B-Claude-Mythos-5-1M 是一個偏工程和研究場景的 9B 推理模型。

它的看點不是單純參數規模,而是:

1
Qwen3.5-9B 基座 + 1M context + function calling + reasoning 訓練 + Apache-2.0

如果你想測試長上下文程式碼庫分析、多文件研究、帶工具驗證的 agent 工作流,它值得試。但部署時不要被 1M context 沖昏頭,先用小上下文跑穩,再根據顯存、KV cache 和後端能力逐步放大。

记录并分享
使用 Hugo 建立
主題 StackJimmy 設計