はじめに
Qwenチームが2026年8月、画像・動画理解と長時間エージェント処理に対応するオープンモデル「Qwen3.8-27B」を公開しました。本稿では、モデル仕様と評価値に加え、Transformers、vLLM、SGLang、OpenAI互換APIで試す手順を整理します。
参考記事
- タイトル: Qwen/Qwen3.8-27B
- 著者: Qwen Team
- 発行元: Hugging Face
- 発行日: 2026年8月
- URL: https://huggingface.co/Qwen/Qwen3.8-27B
関連記事


要点
- Qwen3.8-27Bは27BパラメータのdenseなVision-Language Modelで、Apache 2.0ライセンスで公開されている
- context lengthは262,144トークンで、YaRN設定により最大100万トークンへ拡張できる
- 推論は既定で有効で、reasoning_effortとpreserve_thinkingにより深さと履歴保持を調整できる
- Transformers、vLLM、SGLang、OpenAI互換APIなど複数の実行経路が用意されている
- Qwenの評価ではTerminal Bench 2.1が73.0、SWE-bench Proが61.7、OSWorld-Verifiedが84.3である
詳細解説
モデル仕様と利用前の確認
Qwen3.8-27Bは、Vision Encoderを持つcausal language modelです。言語部は27Bパラメータ、hidden dimensionは5,120、64層で、Gated DeltaNetとGated Attentionを組み合わせています。画像と動画をネイティブに扱い、文書、STEM図、長時間動画、コンピューター操作を含む用途を想定しています。重みはSafetensors形式で、モデルカードのライセンスはApache 2.0です。
ローカル実行では、27BのBF16重みだけでも大きなGPUメモリが必要です。量子化版、複数GPU、offloadの条件によって必要量が変わるため、導入前にGPUメモリ、CUDA、PyTorch、推論frameworkの対応版を確認します。Hugging Faceは、productionや高throughputでは最新のSGLang、vLLM、TokenSpeedなど専用engineを推奨しています。
Transformersで画像を試す
まずPythonとpip(Pythonのpackage管理tool)のversionを確認し、仮想環境を用意します。仮想環境は、他projectとdependency versionが衝突するのを避けるために使います。
Pythonとpipのversionを確認します
python --version
pip --versionHugging Faceのpipelineを使う最小例です。初回はmodel weightのdownloadが発生します。
高水準のpipeline APIを読み込みます
from transformers import pipeline画像と文章を扱うpipelineをmodel IDから作成します
pipe = pipeline("image-text-to-text", model="Qwen/Qwen3.8-27B")user messageへ画像URLと質問を含めます
messages = [
{
"role": "user",
"content": [
{
"type": "image",
"url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG",
},
{"type": "text", "text": "What animal is on the candy?"},
],
},
]pipelineへmessageを渡します
result = pipe(text=messages)
print(result)processorとmodelを直接読み込む場合は、次のように生成範囲を明示できます。device_map=”auto”は利用可能なdeviceへ配置を割り当てます。
from transformers import AutoProcessor, AutoModelForMultimodalLMtokenizerと画像processorを読み込みます
processor = AutoProcessor.from_pretrained("Qwen/Qwen3.8-27B")modelを読み込み、利用可能なdeviceへ自動配置します
model = AutoModelForMultimodalLM.from_pretrained(
"Qwen/Qwen3.8-27B",
device_map="auto",
)
messages = [
{
"role": "user",
"content": [
{
"type": "image",
"url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG",
},
{"type": "text", "text": "What animal is on the candy?"},
],
},
]chat templateをtensorへ変換します
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)最大40tokenを生成し、入力部分を除いてdecodeします
outputs = model.generate(**inputs, max_new_tokens=40)
answer = processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])
print(answer)vLLMとSGLangでAPI serverを起動する
vLLMではpackageをinstallし、model IDを指定してOpenAI互換serverを起動します。
vLLMをinstallします
pip install vllmport 8000でQwen3.8-27Bを配信します
vllm serve "Qwen/Qwen3.8-27B"起動後はChat Completions互換endpointを呼び出せます。
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "Qwen/Qwen3.8-27B",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image in one sentence."},
{
"type": "image_url",
"image_url": {
"url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg"
}
}
]
}
]
}'SGLangを使う場合はport 30000でserverを起動します。
SGLangをinstallします
pip install sglangmodel pathとlisten addressを指定してserverを起動します
python3 -m sglang.launch_server \
--model-path "Qwen/Qwen3.8-27B" \
--host 0.0.0.0 \
--port 30000Dockerを使う場合はshared memoryとGPUを明示します。HF_TOKENは実際のtokenを会話やlogへ出さず、環境変数として設定します。
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 "Qwen/Qwen3.8-27B" \
--host 0.0.0.0 \
--port 30000注意: localhost以外へ公開する場合は、認証、TLS、rate limit、request size制限を別途設けます。model serverをそのままinternetへ公開しないことが重要です。
reasoning_effortと思考履歴を調整する
Qwen3.8-27Bはthinking modeが既定で有効です。reasoning_effortはxhigh、medium、lowに対応します。低い設定は1turnを速くできますが、分析不足からretryが増え、task全体の時間やtokenが増える場合があるとQwenは説明しています。
from openai import OpenAIOPENAI_BASE_URLとOPENAI_API_KEYを環境変数から読みます
client = OpenAI()
messages = [
{
"role": "user",
"content": "Write a Python function to merge two sorted linked lists.",
}
]thinkingを保持し、xhighでstreaming実行します
completion = client.chat.completions.create(
model=”Qwen/Qwen3.8-27B”,
messages=messages,
extra_body={
“chat_template_kwargs”: {
“enable_thinking”: True,
“preserve_thinking”: True,
},
},
reasoning_effort=”xhigh”,
stream=True,
stream_options={“include_usage”: True},
)
for chunk in completion:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end=””, flush=True)
thinkingを無効にする場合はsampling parameterもnon-thinking向けに調整します。
chat_response = client.chat.completions.create(
model=”Qwen/Qwen3.8-27B”,
messages=messages,
temperature=0.7,
top_p=0.8,
presence_penalty=1.5,
extra_body={
“top_k”: 20,
“chat_template_kwargs”: {“enable_thinking”: False},
},
)
print(chat_response)
preserve_thinkingは過去messageのthinking blockを保持し、agent taskの判断一貫性とKV cache利用を高める設定です。最新のuser messageだけに限定したい場合はFalseへ変更します。
chat_response = client.chat.completions.create(
model=”Qwen/Qwen3.8-27B”,
messages=messages,
extra_body={
“chat_template_kwargs”: {“preserve_thinking”: False},
},
)
262,144から100万トークンへ拡張する
native contextは262,144トークンです。これを超える用途ではYaRNによるRoPE scalingを利用できます。config.jsonのtext_config.rope_parametersを次のように設定します。
{
"mrope_interleaved": true,
"mrope_section": [11, 11, 10],
"rope_type": "yarn",
"rope_theta": 10000000,
"partial_rotary_factor": 0.25,
"factor": 4.0,
"original_max_position_embeddings": 262144
}vLLMの起動時に上書きする例です。
VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 vllm serve "Qwen/Qwen3.8-27B" \
--hf-overrides '{"text_config":{"rope_parameters":{"mrope_interleaved":true,"mrope_section":[11,11,10],"rope_type":"yarn","rope_theta":10000000,"partial_rotary_factor":0.25,"factor":4.0,"original_max_position_embeddings":262144}}}' \
--max-model-len 1000000static YaRNは短い入力でも同じscaling factorを使うため、短文性能へ影響する可能性があります。典型的なcontextが524,288ならfactor 2.0を検討するなど、必要な長さに合わせて設定します。最大長へ広げるほどKV cacheのmemoryも増えるため、GPU構成と同時に評価する必要があります。
ベンチマークを導入判断へ使う
Qwenのmodel cardでは、Terminal Bench 2.1が73.0、SWE-bench Proが61.7、QwenSWEBenchが79.0、CoWorkBenchが70.7と報告されています。視覚系ではOSWorld-Verifiedが84.3、WebArena-Verifiedが64.8、AndroidWorldが81.9、Vision2Webが62.9です。27Bのopen modelとして、coding、computer use、長時間taskを一つのmodelで扱える点が特徴です。
ただし評価にはClaude Code harness、Qwen独自benchmark、修正済みdata、特定のtemperatureやcontext長が使われています。数字だけでproduction採用を決めず、自社taskで精度、latency、GPU memory、retry率、出力の安全性を測ります。特にreasoning_effortごとのtask完了率と総token数を合わせて比較することが重要だと思います。
まとめ
Qwen3.8-27Bは、27Bのdense modelで画像・動画、agent coding、思考制御、長いcontextを一つにまとめています。まずTransformersかOpenAI互換APIで小さく確認し、productionではvLLMやSGLangの認証、GPU memory、長文設定を含めて評価する進め方が適切だと思います。
