Repository navigation
[Config] [Tuning] Add tuned grouped MoE config for Qwen3.5 FP4 on gfx1250 - #6090
Conversation
🏷️ CI GuideRuns automatically on every PR:
Extended tests (opt-in via labels):
One backend per PR: PR title tags & labels: |
Merging read each table with type inference, so a column with a blank cell turned float and every integer in it was written back as N.0: 6 of the 15 merged tables carry such cells, among them tuned_fmoe and tuned_grouped_fmoe. The gfx1250 grouped MoE runtime parses integers from that text, so since #6090 added a second grouped table it raises ValueError on every row of the merged one. Read the tables as text so the merge reproduces each cell. Shapes are still compared on numeric values, so 256 and 256.0 stay one shape, and the fastest duplicate is still picked on a numeric us. Signed-off-by: zhimding <zhimding@amd.com>
…floats Since #6090 added a grouped MoE config under model_configs/, the default AITER_CONFIG_GROUPED_FMOE resolves to a file that update_config_files merges with pandas. pandas writes the integers of a column that has a blank cell as floats ("16.0"). Every row of the merged file has such a cell in a column that grouped_moe_gfx1250 reads with _as_int, which calls int(), so fused_moe on gfx1250 raises ValueError when it finds a row. The same merge writes ep_fused = 1 as "1.0", so EP lookups never match their rows. Read integral float cells as integers in _as_int (runtime and AOT) and in the lookup's key comparison. Non-integral values still raise. Signed-off-by: Jin Pan <jin.pan@amd.com>
Motivation
Qwen3.5-397B-A17B-MXFP4 on gfx1250 had no grouped MoE tuned config, so every
MoE call fell back to default tiles. MoE is ~30% (cc4) to ~60% (cc64) of decode
time at TP1.
Changes
Add aiter/configs/model_configs/qwen3_5_397b_tuned_grouped_fmoe.csv, auto-merged
with tuned_grouped_fmoe.csv. 36 rows for the FlyDSL grouped a8w4 TDM kernel
(model_dim 4096, 512 experts, topk 10, fp8 act, MXFP4 weight, 192 CU):
No code changes.
Test Plan
then stage2 tiles. Each config checked against default output
(rel_l2 < 0.005) and torch reference. K tiles larger than inter_dim are
excluded (they read out of bounds).
default tiles vs tuned on the same build.
Results
Geomean over cc 4-64:
Tuned total throughput (tok/s) / median TPOT (ms), change vs default tiles:
GSM8K differences are within +/- 0.010. No GPU faults in any run.
Submission Checklist