--- language: - en library_name: transformers license: apache-2.0 license_link: LICENSE pipeline_tag: image-text-to-text base_model: Qwen/Qwen3.6-35B-A3B tags: - qwen3.6 - multimodal - mixture-of-experts - physics - scientific-reasoning - finance - tool-use --- # Fx-Phys Fx-Phys is a 35B-class multimodal language model for research-level physics reasoning. It is designed to analyze challenging physics problems, connect physical principles with mathematical formulations, carry out multi-step derivations, and produce clear, rigorous solutions. Fx-Phys is built on Qwen3.6-35B-A3B, with 35B total parameters and approximately 3B activated parameters per token, and post-trained to strengthen its capabilities on challenging physics tasks. Alongside the physics evaluations, we report results on two finance-oriented benchmarks to give a broader view of its capabilities. ## Main Results Fx-Phys achieves the strongest results among the evaluated 35B-class models on all six reported benchmarks. It also surpasses DeepSeek-V4-Pro-Preview on all six benchmarks in this comparison.

Fx-Phys results on PRL-Bench , PRL-Bench Verified, Frontier Science Research and Olympiad (Physics), Finance Agent v2, and Frontier Finance

Compared with Qwen3.6-35B-A3B, Fx-Phys improves the original PRL-Bench score from **26.61 to 37.93** and the PRL-Bench Verified score from **35.45 to 58.00**. On Frontier Science, it raises the Research (Physics) score from **8.5 to 53.5** and the Olympiad (Physics) score from **64.8 to 74.0**. ## Benchmark Results Scores are reproduced from the accompanying results figure; higher is better within each benchmark. The physics scores retain the figure's 0–100 scale, while the finance scores retain its 0–1 scale. `--` indicates that no result is shown for that model and benchmark in the figure. Bold marks the best value among the evaluated 35B-class models, not the best value across all model sizes. **PRL-Bench** denotes the original benchmark. **PRL-Bench Verified** is the version revised and corrected by **ByteDance**. Results for these two benchmark variants are reported separately. ### Physics | Model | PRL-Bench (Original) | PRL-Bench Verified | Frontier Science — Research (Physics) | Frontier Science — Olympiad (Physics) | | :---- | -----------: | -----------: | -----------------------------------: | -----------------------------------: | | **Larger than 35B or closed-source models** | | | | | | DeepSeek-V4-Pro-Preview | 30.90 | 48.31 | 34.5 | 72.8 | | DeepSeek-V4.1-Flash | 35.53 | 67.55 | 61.5 | 80.0 | | GLM-5.3 | 44.56 | 68.99 | 54.0 | 79.6 | | GPT-5.5 | 45.74 | 67.65 | 56.8 | 72.0 | | GLM-5.2 | 46.43 | -- | 47.5 | 77.6 | | Qwen3.8-Flash | 52.60 | 64.74 | 61.0 | 75.6 | | GPT-6-Astra | -- | 70.05 | -- | -- | | **35B-class models** | | | | | | Apodex-mini-1.0 | 13.44 | 19.96 | 19.0 | 70.0 | | Nex-N2-mini | 24.78 | 33.84 | 30.0 | 64.0 | | Qwen3.6-35B-A3B | 26.61 | 35.45 | 8.5 | 64.8 | | **Fx-Phys** | **37.93** | **58.00** | **53.5** | **74.0** | ### Finance | Model | Finance Agent v2 | Frontier Finance | | :---- | ---------------: | ---------------: | | **Larger than 35B or closed-source models** | | | | DeepSeek-V4-Pro-Preview | 0.842 | 0.510 | | DeepSeek-V4.1-Flash | 0.924 | 0.610 | | GLM-5.2 | 0.928 | 0.498 | | Qwen3.8-Flash | 0.933 | 0.603 | | **35B-class models** | | | | Apodex-mini-1.0 | 0.827 | 0.430 | | Nex-N2-mini | 0.758 | 0.474 | | Qwen3.6-35B-A3B | 0.794 | 0.376 | | **Fx-Phys** | **0.868** | **0.518** | These are the reported comparison results, not a claim of a controlled re-evaluation under identical settings. Exact reproduction requires the corresponding benchmark versions, prompts, decoding settings, and, where applicable, tool environments; the quickstart below is an inference example rather than an evaluation recipe. ## Model Details | Property | Value | | :------- | :---- | | Base model | Qwen/Qwen3.6-35B-A3B | | Architecture | `Qwen3_5MoeForConditionalGeneration` | | Total parameters | 35B | | Activated parameters | Approximately 3B per token | | Transformer layers | 40 | | Routed experts | 256, with 8 selected per token | | Shared experts | 1 per MoE layer | | Native context length | 262,144 tokens | | Weight precision | BF16 | | Model format | Hugging Face Transformers / Safetensors | ## Quickstart The examples below assume you have downloaded this repository and are running commands from its root directory. Use a Transformers, SGLang, or vLLM build with support for `Qwen3_5MoeForConditionalGeneration`. For the serving examples, set the model path to the current directory. After publication, you can use the model's Hugging Face repository ID instead. ```bash export MODEL_PATH="$PWD" ``` > [!Important] > The model configuration supports a native context length of 262,144 tokens. The serving examples use tensor parallelism across 8 GPUs; adjust the parallelism and context length for your hardware and workload. If GPU memory is limited, reduce the context length. ### SGLang ```bash python -m sglang.launch_server \ --model-path "$MODEL_PATH" \ --port 8000 \ --tp-size 8 \ --mem-fraction-static 0.8 \ --context-length 262144 \ --reasoning-parser qwen3 ``` ### vLLM ```bash vllm serve "$MODEL_PATH" \ --port 8000 \ --tensor-parallel-size 8 \ --max-model-len 262144 \ --reasoning-parser qwen3 ``` Both commands expose a compatible API endpoint at `http://localhost:8000/v1`. To enable automatic tool-call parsing in vLLM, also pass `--enable-auto-tool-choice --tool-call-parser qwen3_coder`. Actual tool execution requires an external agent harness; the model server does not execute tools by itself. ### Transformers ```python import torch from transformers import AutoProcessor, Qwen3_5MoeForConditionalGeneration model_id = "." processor = AutoProcessor.from_pretrained(model_id) model = Qwen3_5MoeForConditionalGeneration.from_pretrained( model_id, torch_dtype="auto", device_map="auto", ) messages = [ { "role": "user", "content": ( "Derive the equations of motion for two identical masses connected " "by three identical springs between fixed walls. Identify and " "interpret the normal modes." ), } ] inputs = processor.apply_chat_template( messages, tokenize=True, add_generation_prompt=True, return_tensors="pt", return_dict=True, ).to(model.device) with torch.inference_mode(): output_ids = model.generate( **inputs, max_new_tokens=2048, do_sample=True, temperature=1.0, top_p=0.95, top_k=20, ) new_tokens = output_ids[:, inputs["input_ids"].shape[1]:] print(processor.batch_decode(new_tokens, skip_special_tokens=True)[0]) ``` The sampling parameters above match the released `generation_config.json`; they are not a specification of the benchmark evaluation settings. The model retains the base architecture's vision encoder and multimodal processor, but the results reported here do not constitute a separate image or video capability evaluation. ## Limitations Benchmark performance does not guarantee correct solutions on unseen problems. Physics derivations, numerical calculations, and finance-related outputs can contain errors and should be independently verified. Tool-assisted workflows additionally depend on the surrounding tools, data, and execution environment. ## License Fx-Phys is released under the Apache 2.0 license. See [LICENSE](./LICENSE) for the included license and the [Qwen3.6-35B-A3B license](https://huggingface.co/Qwen/Qwen3.6-35B-A3B/blob/main/LICENSE) for the upstream terms.