大規模言語モデルの分野に新しい仲間が加わった。最近、大規模言語モデルのQwenファミリーが最新バージョンQwen3をリリースした。 開発チームによると、そのフラッグシップ・モデルであるQwen3-235B-A22Bは、コーディング、数学、汎用能力のベンチマークにおいて、Qwen3-235B-A22Bに勝るとも劣らないことが示されている。 ディープシーク-R1 , o1 . o3-ミニ Qwen3は、Grok-3やGemini-2.5-Proといった業界トップモデルの性能に匹敵するよう設計されています。これらの競争相手の選択は、現在の性能ベンチマークと直接対話することを目指すQwen3のポジショニングを反映しています。
興味深いことに、小型のMoE(Mixed Expert)モデルQwen3-30B-A3Bは、共変数の数が多いQwQ-32Bを(後者の活性化パラメータの10分の1ではあるが)上回り、さらに小型のQwen3-4BモデルでもQwen2.5-72B-Instructの性能に匹敵すると主張されている。これは、最適化されたモデル・アーキテクチャと改善された学習方法による大幅な効率向上を示している。
今回のリリースの目玉は、Qwen3-235B-A22B(総パラメーター2,350億、有効化220億)とQwen3-30B-A3B(総パラメーター300億、有効化30億)の2つのMoEモデルのウェイトを公開したことである。 MoEは、推論時にモデルが「エキスパート」ネットワークの一部のみを有効化することを可能にする技術である。MoEは、推論時にモデルが「エキスパート」ネットワークの一部のみを活性化することを可能にする技術であり、強力な性能を維持しながら計算要件を大幅に削減する。
また、Apache 2.0ライセンスに従い、Qwen3-32B、Qwen3-14B、Qwen3-8B、Qwen3-4B、Qwen3-1.7B、Qwen3-0.6Bの6つの高密度モデルの重みを公開した。
モデル仕様の概要(高密度モデル):
モデル | レイヤー | ヘッド(Q / KV) | ネクタイの埋め込み | コンテキストの長さ |
---|---|---|---|---|
クウェン3-0.6B | 28 | 16 / 8 | はい | 32K |
クウェン3-1.7B | 28 | 16 / 8 | はい | 32K |
クウェン3-4B | 36 | 32 / 8 | はい | 32K |
クウェン3-8B | 36 | 32 / 8 | いいえ | 128K |
クウェン3-14B | 40 | 40 / 8 | いいえ | 128K |
クウェン3-32B | 64 | 64 / 8 | いいえ | 128K |
モデル仕様の概要(MoEモデル):
モデル | レイヤー | ヘッド(Q / KV) | # エキスパート(合計/活性化) | コンテキストの長さ |
---|---|---|---|---|
クウェン3-30B-A3B | 48 | 32 / 4 | 128 / 8 | 128K |
クウェン3-235B-A22B | 94 | 64 / 4 | 128 / 8 | 128K |
これらのモデルとその事前学習済みバージョン(例:Qwen3-30B-A3B-Base)は、Hugging Face、ModelScope、Kaggleなどの主要なプラットフォームですでに稼働しています。モデルのデプロイには、SGLangと ブイエルエルエム などのフレームワークがある。ローカルな利用シーンでは、Ollama、LMStudio、MLX ラマ.cppそして Kトランスフォーマー といったツールで簡単にアクセスできる。
開発者は クウェン・チャット・ウェブ とモバイルアプリケーションでQwen3のパワーを体験してください。
コア機能の分析
Qwen3はいくつかの注目すべき機能を導入している:
- ハイブリッド思考法Qwen3は2つの問題解決モードをサポートしている:
- 思考モード。 モデルは段階的な推論を行い、思考過程を示し、そして最終的な答えを出す。これは綿密な分析を必要とする複雑な問題に適用される。
- 非思考モード。 このモデルは、スピードが重視され、問題が比較的単純なシナリオでは、高速で瞬時に近いレスポンスを提供する。
この設計により、ユーザーはタスクのニーズに応じてモデルの「思考の深さ」を柔軟にコントロールすることができる。さらに重要なことは、このハイブリッドモデルにより、モデルの「思考予算」を安定的かつ効率的に制御できることである。下図に示すように、Qwen3 の性能はスケーラビリティを示し、割り当てられた計算推論バジェットに直接関連したスムーズな改善が見られます。ユーザは、特定のタスクに対してより簡単に予算を設定することができ、費用対効果と推論品質のより良いバランスを見つけることができます。これは、実世界のアプリケーションにおける大規模モデルのコスト管理のための新しいアイデアを提供します。
- 豊富な多言語サポートQwen3モデルは最大 119の言語と方言.この広範な多言語機能は、国際化されたアプリケーションの新たな可能性を開き、グローバルユーザーがモデルを活用するのに役立ちます。
言語ファミリー 言語と方言 印欧 英語、フランス語、ポルトガル語、ドイツ語、ルーマニア語、スウェーデン語、デンマーク語、ブルガリア語、ロシア語、チェコ語、ギリシャ語、ウクライナ語、スペイン語、オランダ語、スロバキア語、クロアチア語。ポーランド語、リトアニア語、ノルウェー語ブークモール語、ノルウェー語ニーノシュク語、ペルシア語、スロベニア語、グジャラート語、ラトビア語、イタリア語、オック語、ネパール語、マラーティー語、ベラルーシ語。セルビア語、ルクセンブルク語、ベネチア語、アッサム語、ウェールズ語、シレジア語、アストゥリアス語、チャッティースガル語、アワディー語、マイティーリ語、ボジュプリ語、シンディー語、アイルランド語、フェロー語、ヒンディー語。パンジャブ語、ベンガル語、オリヤー語、タジク語、東イディッシュ語、ロンバルド語、リグーリア語、シチリア語、フリウリ語、サルデーニャ語、ガリシア語、カタロニア語、アイスランド語、トスク・アルバニア語。リンブルグ語、ダリ語、アフリカーンス語、マケドニア語、シンハラ語、ウルドゥー語、マガヒ語、ボスニア語、アルメニア語 中国チベット族 中国語(簡体字、繁体字、広東語)、ビルマ語 アフロアジア アラビア語(標準語、ナジュディ語、レバノン語、エジプト語、モロッコ語、メソポタミア語、タジ・アデニ語、チュニジア語)、ヘブライ語、マルタ語 オーストロネシア語族 インドネシア語、マレー語、タガログ語、セブアノ語、ジャワ語、スンダ語、ミナンカバウ語、バリ語、バンジャール語、パンガシナン語、イロコ語、ワライ語(フィリピン) ドラヴィダ語 タミル語、テルグ語、カンナダ語、マラヤーラム語 トルコ語 トルコ語、北アゼルバイジャン語、北ウズベク語、カザフ語、バシキール語、タタール語 タイカダイ タイ語、ラオス語 ウラル語 フィンランド語、エストニア語、ハンガリー語 オーストロアジア語 ベトナム語、クメール語 その他 日本語、韓国語、グルジア語、バスク語、ハイチ語、パピアメント語、カブベルディアヌ語、トクピシン語、スワヒリ語 - 強化されたエージェント能力Qwen3モデルは、コーディングとインテリジェントエージェント(Agent)としてのタスク実行能力に最適化されている。チームはMCP(Multi-Agent Collaboration Platform)のサポートも強化しました。以下のビデオリンクは、Qwen3がどのように考え、環境と相互作用するのか(例えば、ツールの起動)を示しています。プレゼンテーション・ビデオへのリンク:https://qianwen-res.oss-accelerate-overseas.aliyuncs.com/mcp.mov
トレーニングの詳細:データ、フェーズ、最適化
Qwen3の事前学習データ量は、18兆トークンを使用したQwen2.5と、その約2倍の約36兆トークンを使用し、119の言語と方言をカバーするQwen3を大幅に上回っている。
データソースにはウェブページだけでなく、PDFのような文書も含まれていた。チームは クウェン2.5-VL モデルはこれらの文書からテキストを抽出し、Qwen2.5 を使って抽出されたコンテンツの質を高めた。数学とコードデータの割合を増やすため、Qwen2.5-Math と Qwen2.5-Coder を使用して、教科書、クイズペア、コードスニペットなどの合成データも生成した。
プレトレーニングプロセスは3段階に分かれている:
- フェーズS1。 30兆ドル超 トークン この段階は、モデルに基本的な言語スキルと一般的な知識を与えることを目的としている。
- フェーズS2。 知識集約型データ(STEM、コーディング、推論タスクなど)の割合を増やし、データセットを最適化し、さらに5兆トークンで事前学習を継続する。
- フェーズS3。 高品質のロングコンテキストデータを使用することで、モデルのコンテキスト長が32Kトークン(モデルによっては128K)まで拡張され、モデルが長い入力を効率的に処理できるようになる。
モデル・アーキテクチャの改善、トレーニング・データの増加、およびより効率的なトレーニング手法のおかげで、Qwen3 の密なベース・モデルの全体的な性能は、共変数の数がはるかに多い Qwen2.5 のベース・モデルのレベルに達しました。例えば、Qwen3-1.7B/4B/8B/14B/32B-Base は、Qwen2.5-3B/7B/14B/32B/72B-Base に匹敵する。特に、Qwen3 の密なベースモデルは、特に STEM、符号化、推論の分野で、より大きな Qwen2.5 モデルをも凌駕しています。
Qwen3-MoEベースモデルでは、Qwen2.5密ベースモデルと同程度の性能を、約10%の活性化パラメータのみで達成。
研修後のプロセス
段階的推論と高速応答能力を組み合わせた混合モードモデルを開発するため、Qwenチームは4段階のポストトレーニングプロセスを実施した:
- ロングCoTコールドスタート。 モデルは、数学、コーディング、論理的推論、STEMなど、多様なタスクや領域をカバーする長い思考データの連鎖を使用して微調整され、基礎的な推論スキルを構築することを目的としている。
- 推論に基づくRL。 強化学習への計算資源の投資を拡大し、ルールベースの報酬(RBR)を活用してモデルの探索と利用を強化し、推論性能をさらに向上させる。
- 思考パターンの収束。 思考モデルへの非思考能力の統合。推論能力と迅速な対応能力の統合は、長いCoTデータと一般化されたコマンド微調整データ(フェーズ2の強化された思考モデルによって生成される)を混合して微調整することによって達成される。
- 一般的な強化学習(一般的なRL)。 強化学習は20以上の一般的なドメインタスクに適用され、モデルの一般的な能力(指示の順守、フォーマットの順守、エージェント能力など)をさらに強化し、望ましくない行動を修正する。
Qwen3による開発
ここでは、Qwen3をさまざまなフレームワークで使用するための簡単なガイドを示します。最初は、Hugging FaceトランスフォーマーライブラリでQwen3-30B-A3Bを使う標準的な例です:
from modelscope import AutoModelForCausalLM, AutoTokenizer model_name = "Qwen/Qwen3-30B-A3B" # 加载 tokenizer 和模型 tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype="auto", device_map="auto" ) # 准备模型输入 prompt = "给我简要介绍一下大型语言模型。" messages = [ {"role": "user", "content": prompt} ] # apply_chat_template 用于构建符合 Qwen 对话格式的输入 # enable_thinking=True 启用思考模式 (默认为 True) text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, enable_thinking=True # 在思考模式和非思考模式间切换,默认为 True ) model_inputs = tokenizer([text], return_tensors="pt").to(model.device) # 进行文本生成 generated_ids = model.generate( **model_inputs, max_new_tokens=32768 # 设置最大生成 token 数 ) # 提取生成的内容部分 (去除输入部分) output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist() # 解析思考内容 (如果存在) # 寻找 '</think>' 对应的 token id (151668) try: # rindex 从后往前查找 151668 index = len(output_ids) - output_ids[::-1].index(151668) except ValueError: # 如果没有找到 '</think>',说明没有思考内容 index = 0 # 分别解码思考内容和最终回复内容 thinking_content = tokenizer.decode(output_ids[:index], skip_special_tokens=True).strip("\n") content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("\n") print("思考内容:", thinking_content) print("最终回复:", content)
思考モードを無効にするには、enable_thinkingパラメータをFalseに設定するだけでよい:
text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, enable_thinking=False # 默认为 True )
モデルデプロイメントのために、OpenAI APIと互換性のあるエンドポイントは、sglang>=0.4.6.post1またはvllm>=0.8.4を使って作成できます:
- SGLangを使う。
python -m sglang.launch_server --model-path Qwen/Qwen3-30B-A3B --reasoning-parser qwen3
- vLLMを使用。
vllm serve Qwen/Qwen3-30B-A3B --enable-reasoning --reasoning-parser deepseek_r1
(注意: オリジナルの記事はdeepseek_r1パーサーを使用しています。開発者はQwen3との互換性を確認する必要があります)
ローカルの開発環境では、ollamaは簡単なコマンドで使用できる。 オラマ qwen3:30b-a3bを実行してモデルを操作する。さらに、LMStudio、llama.cpp、ktransformersなどのツールは、Qwen3のビルドとローカルでの実行をサポートしています。
高度な使用法:思考モードのダイナミックな切り替え
Qwen3は、enable_thinking=Trueの時のモデルの振る舞いを動的に制御できる「ソフトスイッチング」メカニズムを提供します。具体的には、ユーザーの質問やシステムメッセージに/thinkや/no_thinkタグを追加することで、ラウンドごとにモデルの思考モードを切り替えることができます。複数ラウンドのダイアログでは、モデルは最新の指示に従います。
以下は複数ラウンドの対話の例である:
from transformers import AutoModelForCausalLM, AutoTokenizer class QwenChatbot: def __init__(self, model_name="Qwen/Qwen3-30B-A3B"): self.tokenizer = AutoTokenizer.from_pretrained(model_name) # 注意:实际运行时需要确保有足够的 GPU 显存加载模型 # device_map="auto" 可能需要根据实际硬件调整 self.model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype="auto", # 自动选择合适的精度 device_map="auto" # 自动分配模型到可用设备 ) self.history = [] # 用于存储对话历史 def generate_response(self, user_input): # 将当前用户输入加入历史记录 messages = self.history + [{"role": "user", "content": user_input}] # 使用 apply_chat_template 构建输入 # 注意:这里没有显式设置 enable_thinking,会使用模型的默认行为或最近的 /think /no_think 指令 text = self.tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) inputs = self.tokenizer(text, return_tensors="pt").to(self.model.device) # 生成回复 response_ids = self.model.generate( **inputs, max_new_tokens=32768 # 设置最大生成 token 数 )[0][len(inputs.input_ids[0]):].tolist() # 提取生成内容 # 解码回复文本 response = self.tokenizer.decode(response_ids, skip_special_tokens=True).strip() # 更新对话历史 self.history.append({"role": "user", "content": user_input}) # 注意:此处仅添加解码后的纯文本回复,未处理思考内容 # 如果需要保留或展示思考过程,需要像之前的例子一样解析 output_ids self.history.append({"role": "assistant", "content": response}) # 返回解码后的回复文本 return response # 示例用法 if __name__ == "__main__": # 确保在有足够资源的机器上运行 try: chatbot = QwenChatbot() # 第一次输入 (默认启用思考模式) user_input_1 = "strawberries 这个单词里有多少个 'r'?" print(f"用户: {user_input_1}") response_1 = chatbot.generate_response(user_input_1) print(f"助手: {response_1}") print("----------------------") # 第二次输入,使用 /no_think 禁用思考模式 user_input_2 = "那么,blueberries 这个单词里有多少个 'r'? /no_think" print(f"用户: {user_input_2}") response_2 = chatbot.generate_response(user_input_2) print(f"助手: {response_2}") print("----------------------") # 第三次输入,使用 /think 再次启用思考模式 user_input_3 = "真的吗?请再想想。 /think" print(f"用户: {user_input_3}") response_3 = chatbot.generate_response(user_input_3) print(f"助手: {response_3}") except Exception as e: print(f"运行出错: {e}") print("请确保已安装所需依赖,并拥有足够的计算资源(如 GPU 显存)。")
エージェント利用:ツールコール
Qwen3はツール呼び出し機能に優れている。推奨用途 クウェン=エージェント Qwen-Agent は、ツールコールのテンプレートとパーサーを内部でカプセル化し、開発の複雑さを簡素化します。
これは次のようにして行うことができる。 エムシーピー 設定ファイル、Qwen-Agent の統合ツールの使用、または他のツールを独自に統合して、使用可能なツールのセットを定義します。
import os from qwen_agent.agents import Assistant # 定义 LLM 配置 llm_cfg = { 'model': 'Qwen3-30B-A3B', # 指定使用的 Qwen3 模型 # 如果使用阿里云 ModelScope 提供的 DashScope API: # 'model_type': 'qwen_dashscope', # 'api_key': os.getenv('DASHSCOPE_API_KEY'), # 需要设置环境变量 # 如果使用兼容 OpenAI API 的自定义端点 (例如 VLLM 或 SGLang 部署的): 'model_server': 'http://localhost:8000/v1', # 替换为你的 API 地址 'api_key': 'EMPTY', # 对于本地部署或不需要 key 的情况 # 可选:其他生成参数配置 # 'generate_cfg': { # # 如果模型的原始输出将思考过程 <think>...</think> 包含在最终内容里,设为 True # # 如果 VLLM/SGLang 等框架已分离 reasoning_content 和 content,则设为 False 或不设置 # 'thought_in_content': False, # }, } # 定义工具列表 tools = [ {'mcpServers': { # 可以指定 MCP 配置文件或直接定义服务 'time': { # 定义一个名为 'time' 的工具 'command': 'uvx', # 使用 uvx 启动 # 启动参数,运行 mcp-server-time,并设置时区 'args': ['mcp-server-time', '--local-timezone=Asia/Shanghai'] }, "fetch": { # 定义一个名为 'fetch' 的工具,用于访问网页 "command": "uvx", "args": ["mcp-server-fetch"] } } }, 'code_interpreter', # 使用 Qwen-Agent 内置的代码解释器工具 # 可以继续添加其他自定义或内置工具 ] # 初始化 Agent # 需要确保 uvx 和相应的 mcp-server-* 已安装并配置好 bot = Assistant(llm=llm_cfg, function_list=tools) # 流式生成调用示例 messages = [{'role': 'user', 'content': '访问 https://qwenlm.github.io/blog/ 页面,并介绍一下 Qwen 的最新进展。'}] responses = None # 初始化 responses 变量 # bot.run 返回一个生成器,用于流式输出 for responses in bot.run(messages=messages): # 可以在这里处理中间步骤的输出,例如工具调用和观察结果 # print(responses) # 打印每个中间步骤或最终回复 pass # 循环结束后,responses 将包含最终的完整回复 # 打印最终的回复内容 if responses: print(responses) else: print("未能获取到回复。")
(注意: Agent のサンプルを実行するには、qwen-agent ライブラリと関連する依存関係をインストールし、uvx と mcp-server-* ツールが利用可能であることを確認する必要があります)。
将来展望
Qwen3は、一般人工知能(AGI)および超人工知能(ASI)に向けての大きなマイルストーンと考えられている。事前学習と強化学習をスケールアップすることで、このモデルはより高度な知能を実現する。ハイブリッド思考パターンの融合は、ユーザーに思考予算をコントロールする柔軟性を提供し、広範な言語サポートはグローバルなアクセシビリティを向上させる。
今後、Qwenチームは、データスケーリングのためのモデルアーキテクチャとトレーニング方法の最適化、モデルサイズの拡大、コンテキストの長さの拡張、モダリティサポートの拡大、長い時間軸の推論を可能にするための環境フィードバックによる強化学習の推進など、多方面にわたるモデル能力の向上を継続する予定です。チームは、業界は「モデル」をトレーニングする時代から、「インテリジェンス(エージェント)」をトレーニングする時代へと移行しつつあると考えている。その次の反復は、仕事と生活により有意義な進歩をもたらすことを約束する。