Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
d347586
enable configurable weight bpreshuffle for fp8 blockscale gemm (#694)
ganyi1996ppo May 8, 2026
68d0fbe
Support torch compile in deepseek v4 (#705)
ZhangLirong-amd May 8, 2026
5d34e9e
Glm mtp test (#709)
jiayyu May 8, 2026
247e9b1
Add the benchmark flow for ATOM vLLM plugin (#514)
wuhuikx May 8, 2026
e87b2f3
perf(deepseek_v4): fused_compress kernel optimization + DualRMSNorm f…
valarLip May 8, 2026
9997e89
CI: gate ATOM tests on Pre Checkin workflow status (#724)
gyohuangxin May 9, 2026
abdb093
[fix](gpt-oss): change the accuracy test for gpt-oss (#720)
PerryZhang01 May 9, 2026
77b3d1e
Add triton fallback for deepseek & gptoss (#721)
HaonanWang98 May 9, 2026
e74abf5
[fix][acc] fix accuracy of fp8 attn weights model using ptpc quant re…
gbyu-amd May 9, 2026
3f4c425
Dsv4 moe flydsl (#718)
amd-ruitang3 May 9, 2026
fc64fb6
Optimize Deepseek V4 prepare decode (#728)
ZhangLirong-amd May 9, 2026
20528ee
perf(deepseek_v4): use aiter silu_and_mul with in-kernel clamp (#731)
valarLip May 9, 2026
28f59f2
fix quant mapping for kimi k25 (#732)
gbyu-amd May 9, 2026
3e06687
[dockerfile] temp reinstall triton==3.6.0 for accuracy (#726)
gbyu-amd May 10, 2026
303a2e4
[Triton] add fused_routing_from_topk switch (#725)
k50112113 May 10, 2026
28f9702
Remove chunk split in Qwen3.5 and Qwen3Next (#682)
ganyi1996ppo May 10, 2026
6a4db8e
perf(deepseek_v4): unified aiter rmsnorm_quant + q_norm/wkv_gate fuse…
valarLip May 10, 2026
0b0e009
refactor(deepseek_v4): ParallelHead inherits ParallelLMHead; raise de…
valarLip May 10, 2026
679422d
[Kimi] support Eagle3 speculative decoding for Kimi K2.5 (#631)
yhl-amd May 10, 2026
a82e5cd
support three stream in Deepseek V4 (#736)
ZhangLirong-amd May 11, 2026
50461c8
Update the vLLM-ATOM benchmark scope (#739)
wuhuikx May 11, 2026
7934d5e
[fix][acc][sgl-atom] fix accuracy of fp8 attn weights model using ptp…
zhuyuhua-v May 11, 2026
c225b06
[atom-vllm benchmark] Refine atom-vllm benchmark (#729)
zejunchen-zejun May 12, 2026
247bb23
Add upload step for runner fleet report (#754)
amdfaa May 12, 2026
23f2272
Remove lru_cache in get_per_token_exponential func (#742)
junhaha666 May 12, 2026
fb7cef6
[MoE] Align generic MXFP4 shuffle layout (#744)
XiaobingSuper May 12, 2026
c88261e
fix kimi k25 config error with trust-remote-code (#751)
gbyu-amd May 12, 2026
2b43d39
support dp attention in deepseek v4 (#745)
ZhangLirong-amd May 12, 2026
7452ea9
[recipe][vLLM-ATOM] update kimi k2/k2.5 recipe (#730)
gbyu-amd May 12, 2026
48068eb
[fix](gpt-oss): fix gpt-oss model accuracy bug (#748)
PerryZhang01 May 12, 2026
2b6d7eb
fix(deepseek_v4): switch MoE routing to topk_gating (#746)
yzhou103 May 12, 2026
8307a37
[feat](gpt-oss): enable gpt-oss moe a4w4 (#764)
PerryZhang01 May 12, 2026
30b9137
Add chat encode for deepseek v4 without chat template jinja (#760)
HaonanWang98 May 12, 2026
c615b35
(ci)(recipe): Add DeepSeek-R1 FP4 TP4 validation and DS recipe for SG…
zhuyuhua-v May 12, 2026
86a074f
fix(benchmark): use fixed ISL/OSL for AW model benchmarks with vLLM b…
zejunchen-zejun May 12, 2026
88dd3d0
[atom-vllm] fix atom-vllm benchmark issue (#768)
wuhuikx May 13, 2026
7f0fbf4
fix hf model path (#770)
HaonanWang98 May 13, 2026
9315884
[Triton] DSV4 fusions phase 1 (#704)
k50112113 May 13, 2026
954a66f
[bugfix] Fix/mtp entry proj quant bf16 mismatch (#755)
yhl-amd May 13, 2026
73d039d
Fpz/fix glm prefix (#762)
jiayyu May 13, 2026
3a84df7
Support DeepSeek v4 TBO (#766)
ZhangLirong-amd May 13, 2026
5fa47b3
[fix](gpt-oss): add int allreduce for gpt-oss (#776)
PerryZhang01 May 13, 2026
4d36613
feat(minimax): upgrade M2.5 to M2.7 + fix reasoning parser (#775)
carlushuang May 13, 2026
4d0aa8f
ci(dashboard): map `mi35x` runner hint to MI355X and add Radeon backf…
ChuanLi1101 May 13, 2026
72ebb0e
[Feat][Plugin] Enable MTP for vLLM Plugin (#557)
whx-sjtu May 14, 2026
d372640
Support (P/D) disaggregation on mooncake (#690)
ZhangLirong-amd May 14, 2026
51e9a65
[Feat] enable dp attention in sgl+ATOM (#743)
ZLkanyo009 May 14, 2026
90b292a
Support fused qknorm+allreduce for minimax m2 (#774)
xytpai May 14, 2026
e77a5ce
fix prefix default on (#784)
jiayyu May 14, 2026
c0c6bee
[Perf][vLLM-ATOM] Optimize Sparse MLA in vLLM-ATOM (#765)
kliuae May 15, 2026
f993245
(ci)[SGLang-ATOM]: Add Qwen3.5 cases for ci, nightly and benchmark (#…
zhuyuhua-v May 15, 2026
df1a638
fix: qwen_3.5 bf16 accurancy (#782)
JiaoliangYu May 15, 2026
cc3539e
Qwen3Next MTP for vLLM plugin mode (#772)
ganyi1996ppo May 15, 2026
8aa730e
ci: branch-aware docker release + fix benchmark model selection (#785)
ZhangLirong-amd May 15, 2026
8927f69
[Feat] Support GLM-4.7 MTP in vLLM-ATOM plugin (#722)
kliuae May 15, 2026
7516968
Add inferencex-pr skill for ATOM benchmark comparison and PR creation…
seungrokj May 15, 2026
26204cc
fix: handle auto kv cache dtype in vLLM plugin (#804)
wuhuikx May 15, 2026
9d279f0
[fix](mha): handle scalar kv scales in prefix gather (#793)
XiaobingSuper May 15, 2026
ebc5154
fix: handle auto kv cache dtype in vLLM plugin for sparse mla (#806)
XiaobingSuper May 15, 2026
d2c7763
Add DeepSeek-V3.2 fused indexer path (#788)
XiaobingSuper May 15, 2026
044d089
[ci] Add MTP cases and run the case according to P0/P1/P2 (#803)
junyyang-amd May 15, 2026
88a3ff1
Add benchmark commit override input (#801)
yhl-amd May 15, 2026
45c31f2
Add inferencex-sync skill for ATOM benchmark comparison and Inference…
seungrokj May 16, 2026
0643080
Fix DeepSeek-V3.2 indexer RoPE cache layout (#809)
wuhuikx May 17, 2026
beae6cd
Update minimax_m2.py (#820)
xytpai May 18, 2026
aa6d2c8
CI: extend aiter wheel artifact retention (#823)
gyohuangxin May 18, 2026
aa7c25a
[fix](gpt-oss): fix quark quantized model in moe bias (#787)
PerryZhang01 May 18, 2026
a076ab3
rm mtp no prefix cache assert (#824)
jiayyu May 18, 2026
6619cc7
[ATOM SGL] Qwen3.5 mha support (#819)
ZhiweiYan-96 May 18, 2026
0bb7514
feat(deepseek_v4): MTP-K skeleton + SWA race/aliasing fixes + per-PR …
valarLip May 19, 2026
28b455a
[ATOM-SGLang][Feat] Enable Deepseek v3 MTP (#643)
ZhiweiYan-96 May 19, 2026
29408d1
add work log
ZhiweiYan-96 May 11, 2026
e1d06c7
[ATOM-SGL][Attn refrac] Separate model-specific MLA from SGL full att…
ZhiweiYan-96 May 12, 2026
3598254
remove work log
ZhiweiYan-96 May 12, 2026
a1f88ae
[ATOM-SGL][Attn refrac] Route DeepSeek MLA through an SGLang wrapper
ZhiweiYan-96 May 13, 2026
4aec32a
[ATOM SGL] runtime extraction
ZhiweiYan-96 May 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
283 changes: 283 additions & 0 deletions .claude/commands/atom-vllm-benchmark-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,283 @@
# ATOM vLLM Benchmark Guide

Use this guide when the user asks to benchmark ATOM vLLM Plugin performance, compare with the upstream vLLM (optional), or validate a performance claim.

## What this guide should do

1. Confirm benchmark goal and variables (throughput, TTFT, TPOT, E2EL, etc.).
2. Use plugin-on as default setup; optionally benchmark upstream vLLM for performance comparison.
3. Run repeatable measurements and summarize median results.
4. Report reproducible commands, key metrics, and known risks.
5. Prefer model-specific launch settings from `recipes/atom_vllm/` when available; otherwise use the standard workflow in this guide.

## Inputs To Collect First

Before running any benchmark, confirm:

- Model path (HF id or local path)
- Serving backend (`vllm`)
- Hardware shape (GPU type/count)
- `tensor_parallel_size`, KV cache dtype, and scheduler flags
- Request mix (ISL/OSL/concurrency/request rate)
- Comparison target:
- default candidate (plugin on)
- optional baseline/control (plugin off)
- optional runtime baseline (upstream vLLM nightly)

If any of these are missing, ask before execution.

## Environment Checklist

For each benchmark round:

- Kill old server processes and verify VRAM is released.
- Clear cache when startup behavior is inconsistent:
- `rm -rf /root/.cache/atom/*`
- `rm -rf /root/.cache/vllm/*`
- Set stable logging:
- `export AITER_LOG_LEVEL=WARNING`
- Confirm server is actually ready:
- `curl -sf http://localhost:8000/v1/models`
- `rocm-smi --showmemuse` and verify allocated memory is greater than 0.

## Benchmark Workflow (Plugin On by Default)

Run plugin-on by default.

### Recipe-first execution policy

When running ATOM vLLM benchmark:

1. First check whether the target model has a matching recipe under `recipes/atom_vllm/`.
2. If a matching recipe exists, use its model-specific environment variables and `vllm serve` launch args as the default benchmark setup.
3. If no matching recipe exists, follow the standard launch template and workflow in this guide.

Keep benchmark methodology unchanged (smoke check, concurrency isolation, and fixed comparison variables) regardless of whether the launch config comes from a recipe or from the default template.

- **Default (candidate):** plugin enabled
- **Optional control (baseline):** plugin disabled (only when A/B comparison is requested)
- **Default ATOM vLLM Plugin image:** `rocm/atom-dev:vllm-latest`

If both conditions are run, only one variable is allowed to change between them.

### 1) Launch server

Use the same launch command template. Keep plugin-on as default, and only change plugin toggle env vars when running the optional plugin-off control.

```bash
vllm serve <model_path> \
--host localhost \
--port 8000 \
--tensor-parallel-size <tp> \
--attention-backend ROCM_AITER_FA \
--trust-remote-code \
--kv-cache-dtype fp8 \
--gpu_memory_utilization 0.9 \
--async-scheduling \
--compilation-config '{"cudagraph_mode": "FULL_AND_PIECEWISE"}' \
--no-enable-prefix-caching
```

Common plugin toggles:

- Default plugin-on: do not set `ATOM_DISABLE_VLLM_PLUGIN` or `ATOM_DISABLE_VLLM_PLUGIN_ATTENTION` (or set them to `0`)
- Optional plugin-off control: set `ATOM_DISABLE_VLLM_PLUGIN=1`
- Optional attention-off control: set `ATOM_DISABLE_VLLM_PLUGIN_ATTENTION=1`
- Always set `VLLM_ROCM_USE_AITER=1` in both ATOM plugin and upstream vLLM runs.

### 2) Run smoke validation

```bash
curl -sf http://localhost:8000/v1/models
vllm bench serve \
--backend vllm \
--base-url http://localhost:8000 \
--endpoint /v1/completions \
--model <model> \
--dataset-name random \
--random-input-len 32 \
--random-output-len 32 \
--temperature 0.0 \
--max-concurrency <smoke_conc> \
--num-prompts <smoke_conc_x10> \
--num-warmups <smoke_conc_x2> \
--request-rate 1 \
--disable-tqdm
```

Use `smoke_conc_x10 = smoke_conc * 10` and `smoke_conc_x2 = smoke_conc * 2`.

If smoke test fails, do not continue with performance comparison.

### 3) Run benchmark workload

```bash
vllm bench serve \
--backend vllm \
--base-url http://localhost:8000 \
--endpoint /v1/completions \
--model=<model> \
--dataset-name=random \
--random-input-len=<isl> \
--random-output-len=<osl> \
--random-range-ratio=0.8 \
--temperature=0.0 \
--num-prompts=<conc_x10> \
--num-warmups=<conc_x2> \
--max-concurrency=<conc> \
--trust-remote-code \
--request-rate=inf \
--ignore-eos \
--disable-tqdm \
--save-result \
--percentile-metrics="ttft,tpot,itl,e2el"
```

### 4) Concurrency sweep isolation (required)

When sweeping multiple concurrency points, each point must run in a fresh container lifecycle:

1. Start a fresh container.
2. Start vLLM server in that container.
3. Run smoke + benchmark for one `--max-concurrency=<conc>`.
4. Stop vLLM server.
5. Exit and stop/remove the container.
6. Start a new container for the next concurrency point.

Do not reuse the same running server/container across different concurrency points.

Example pattern:

```bash
for conc in 4 8 16 32 64 128; do
docker run -dt --name "atom_bench_c${conc}" <image>
docker exec "atom_bench_c${conc}" bash -lc 'vllm serve <model_path> ...'
docker exec "atom_bench_c${conc}" bash -lc "vllm bench serve ... --max-concurrency=${conc} ..."
docker exec "atom_bench_c${conc}" bash -lc 'pkill -f "vllm serve" || true'
docker stop "atom_bench_c${conc}" && docker rm "atom_bench_c${conc}"
done
```

### 5) Minimum benchmark matrix

| Scenario | ISL | OSL | Concurrency |
|---|---:|---:|---:|
| Short in / short out | 1024 | 1024 | 4, 8, 16, 32, 64, 128 |
| Short in / long out | 1024 | 8192 | 4, 8, 16, 32, 64, 128 |
| Long in / short out | 8192 | 1024 | 4, 8, 16, 32, 64, 128 |

### 6) Repetition and statistics

- Run each scenario at least 1 times.
- Use median values for comparison.
- If variance is large, increase repeat count.

## Optional Upstream vLLM Benchmark

Use this optional path when you need ATOM vs upstream runtime comparison.

Reference images:

- ATOM vLLM plugin default image: `rocm/atom-dev:vllm-lastest`
- Upstream vLLM comparison image: `vllm/vllm-openai-rocm:nightly`

### 1) Pull latest upstream ROCm image

```bash
docker pull vllm/vllm-openai-rocm:nightly
```

### 2) Run the same workflow and config

For upstream runs, keep everything identical to ATOM runs:

- Same model path
- Same GPU set and `tensor_parallel_size`
- Same KV cache dtype and scheduler flags
- Same request mix (ISL/OSL/concurrency/request rate)
- Same concurrency sweep isolation policy (restart container per concurrency point)

Only runtime image is allowed to change.

### 3) Upstream execution note

- Use the same smoke and benchmark commands from this guide.
- Do not set ATOM plugin toggle env vars for upstream runs.
- Always set `VLLM_ROCM_USE_AITER=1` for upstream runs.
- Keep result naming explicit (for example, include `upstream-nightly` in filenames).

## Regression Profiling Workflow

When regression is observed:

```bash
# 1) Start (or restart) server with profiler enabled
vllm serve <model_path> \
--host localhost \
--port 8000 \
--tensor-parallel-size <tp> \
--attention-backend ROCM_AITER_FA \
--trust-remote-code \
--kv-cache-dtype fp8 \
--profiler-config '<profiler_config_json>'

# 2) Run profiled benchmark workload
vllm bench serve \
--backend vllm \
--base-url http://localhost:8000 \
--endpoint /v1/completions \
--model <model> \
--dataset-name random \
--random-input-len <isl> \
--random-output-len 20 \
--temperature 0.0 \
--max-concurrency <conc> \
--num-prompts <conc_x2> \
--num-warmups <conc_x2> \
--request-rate inf \
--profile \
--save-result
```

- `--profile` requires server-side `--profiler-config`.
- Keep profiler config identical between plugin-off and plugin-on runs.
- For reproducibility, keep benchmark client semantics fixed to completion mode:
`--backend vllm --endpoint /v1/completions` (this path uses `max_tokens`).

## Reporting Template

Use this format in final response:

```markdown
### ATOM vLLM Benchmark Result
- Goal: <what was measured and why>
- Setup:
- Model: <model>
- Hardware: <gpu and count>
- Fixed args: <tp, kv dtype, scheduler flags>
- Isolation: <restart container per concurrency point: yes/no>
- Validation: <smoke test pass/fail>
- Benchmark:
- Default (plugin on): <throughput/latency median>
- Optional control (plugin off): <throughput/latency median, if run>
- Optional runtime baseline (upstream nightly): <throughput/latency median, if run>
- Delta: <percent change, if both runs exist>
- Confidence:
- Runs: <repeat count>
- Variance: <low/medium/high>
- Risk:
- <known risks or unknowns>
- Repro:
- <exact default launch command (plugin on)>
- <exact optional control launch command (plugin off), if run>
- <exact benchmark command>
```

## Guardrails

- Never compare runs with different model, TP, KV dtype, or request mix.
- For concurrency sweep, stop server and restart container between concurrency points.
- For ATOM vs upstream comparison, only runtime image may differ.
- Keep `VLLM_ROCM_USE_AITER=1` fixed for both ATOM and upstream runs.
- If GPU memory is not allocated, treat benchmark results as invalid.
- If plugin-on and plugin-off outputs differ semantically, run accuracy checks before claiming performance gains.
4 changes: 2 additions & 2 deletions .claude/commands/ci-pr-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ PR/Push → pre-checks (black + ruff)
| DeepSeek-R1-0528 MTP | `--kv_cache_dtype fp8 -tp 8 --method mtp` | 0.94 | Yes | 8gpu |
| DeepSeek-R1-0528 MXFP4 | `--kv_cache_dtype fp8 -tp 8` | 0.93 | Yes | 8gpu |
| DeepSeek-R1-0528 MXFP4 MTP | `--kv_cache_dtype fp8 -tp 8 --method mtp` | 0.93 | Yes | 8gpu |
| gpt-oss-120b | `--kv_cache_dtype fp8 --gpu-memory-utilization 0.3` | 0.38 | Yes | mi355-1 |
| gpt-oss-120b (2 GPU) | `-tp 2 --enable-dp-attention --enable-expert-parallel` | 0.38 | No | mi355-4 |
| gpt-oss-120b | `--kv_cache_dtype fp8 --gpu-memory-utilization 0.5` | 0.88 | Yes | mi355-1 |
| gpt-oss-120b (2 GPU) | `-tp 2 --enable-dp-attention --enable-expert-parallel` | 0.88 | No | mi355-4 |
| Qwen3-235B FP8 | `-tp 8 --enable-expert-parallel` + `ATOM_ENABLE_QK_NORM_ROPE_CACHE_QUANT_FUSION=1` | 0.87 | Yes | 8gpu |
| Qwen3-235B MXFP4 | `-tp 8 --enable-expert-parallel` + `ATOM_ENABLE_QK_NORM_ROPE_CACHE_QUANT_FUSION=1` | 0.87 | No | 8gpu |
| Qwen3-Next-80B-A3B | `-tp 8` | 0.65 | Yes | 8gpu |
Expand Down
84 changes: 84 additions & 0 deletions .claude/commands/inferencex-sync.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
name: inferencex-sync
description: Compare the performance of the latest successful run from ATOM upstream benchmark(https://github.com/ROCm/ATOM/actions/workflows/atom-benchmark.yaml) and that of InferenceX(https://inferencex.semianalysis.com/api/v1/benchmarks?model=$MODEL) and report tput_per_gpu (Total token throughput / number of GPUs), report performance regression of each model on atom framework, create a PR if the performance of ATOM upstream benchamrk is better than that of InferenceX by updating docker image and atom serve arguments (python3 -m atom.entrypoints.openai_server)
memory: project
model: opus
---

# Compare ATOM upstream benchmark and InferneceX, and create a PR to InferenceX Instructions

Use this skill to compare the througput of ATOM upstream benchamrk and InferenceX and create a PR to InferenceX with the udpated docker image and atom serve arguments.

## Workflow

```text
- [ ] 1) Create a throughput table from InferenceX benchmark
- [ ] 2) Create a throughput table from ATOM upstream benchmark
- [ ] 3) Chek performance regression of ATOM upstream benchmark from InferenceX benchmark
- [ ] 4) Ask users what model needs a new PR
```

## 1) Create a throughput table from InferenceX benchmark

Check the InferenceX benchmark that is from these URLs and create a throughput performance table from ATOM upstream benchmark.
- https://inferencex.semianalysis.com/api/v1/benchmarks?model=Kimi-K2.5
- https://inferencex.semianalysis.com/api/v1/benchmarks?model=DeepSeek-V4-Pro
- https://inferencex.semianalysis.com/api/v1/benchmarks?model=DeepSeek-R1-0528
- https://inferencex.semianalysis.com/api/v1/benchmarks?model=Qwen-3.5-397B-A17B
- https://inferencex.semianalysis.com/api/v1/benchmarks?model=GLM-5
- https://inferencex.semianalysis.com/api/v1/benchmarks?model=MiniMax-M2.5
- https://inferencex.semianalysis.com/api/v1/benchmarks?model=gpt-oss-120b

Rules:
- 1. Use curl to fetch data from URLs
- 2. Use only "hardware":"mi355x","framework":"atom","disagg":false,"is_multinode":false,"spec_method":"none"
- 3. If muliple data of "hardware":"mi355x","framework":"atom","precision":"fp4","disagg":false,"is_multinode":false exist for a same "model", use only the latest "date"
- 4. Create a throughput performance table of each "tput_per_gpu" of each "model","isl", "osl","conc","num_decode_gpus"(number of GPUs),"image","precision"

## 2) Create a throughput table from ATOM upstream benchmark

Check the ATOM upstream benchmark that is from the latest successful gh action runs at https://github.com/ROCm/ATOM/actions/workflows/atom-benchmark.yaml, which as all jobs passed. Append the throughput to the InferenceX performance table in Step 1)

Rules:
- 1. Use main branch. Find the latest job of https://github.com/ROCm/ATOM/actions/workflows/atom-benchmark.yaml where all jobs passed
- 2. "tput_per_gpu" (tput/GPU (tok/s)) is "Total token throughput" divided by TP(number of GPUs). TP(number of GPUs) is the value followed by -tp in https://github.com/ROCm/ATOM/blob/main/.github/benchmark/models.json
- 3. "conc" is "Max Concurrency". Compare same "conc" or "Max Concurrency" between InferenceX benchmark and Atom benchmark
- 4. Model name follows this mapping

```python
# inferenceX_model -> (atom_model, precision)
MODEL_MAP = {
"dsv4": [("DeepSeek-V4-Pro", "fp4")],
"dsr1": [("DeepSeek-R1-0528", "fp8"),
("DeepSeek-R1-0528-MXFP4", "fp4")],
"kimik2.5": [("Kimi-K2.5-MXFP4", "fp4")],
"qwen3.5": [("Qwen3.5-397B-A17B-FP8", "fp8"),
("Qwen3.5-397B-A17B-MXFP4", "fp4")],
"glm5": [("GLM-5-FP8", "fp8"),
("GLM-5.1-MXFP4", "fp4")],
"minimaxm2.5": [("MiniMax-M2.7", "fp8"),
("MiniMax-M2.7-MXFP4", "fp4")],
"gptoss120b": [("gpt-oss-120b", "fp4")],
}
```

If the data is not available, stop and ask for any workaround

## 3) Chek performance regression of ATOM upstream benchmark from InferenceX benchmark

Update the performance table to show regression in % of ATOM upstream benchmark from InferenceX benchmark

## 4) Chek performance regression of ATOM upstream benchmark from InferenceX benchmark

Based on Step 3) results, ask user what models need a PR to https://github.com/SemiAnalysisAI/InferenceX/pulls and create a PR to each model.

Rules:
- 1. Find the docker image from the step 2) ATOM upstream benchmark gh action runs. for eample, "Docker:
rocm/atom-dev:nightly_202605141645" from https://github.com/ROCm/ATOM/actions/runs/25875375446/job/76041129934#step:6:26
- 2. Create a PR and check https://github.com/ROCm/ATOM/blob/main/.github/benchmark/models.json options

PR example:
- 1. https://github.com/SemiAnalysisAI/InferenceX/pull/1311/changes
- 2. https://github.com/SemiAnalysisAI/InferenceX/blob/main/benchmarks/single_node/dsv4_fp4_mi355x_atom.sh
- 3. https://github.com/SemiAnalysisAI/InferenceX/blob/main/.github/configs/amd-master.yaml#L1646
- 4. https://github.com/SemiAnalysisAI/InferenceX/blob/main/perf-changelog.yaml#L1824-L1833
File renamed without changes.
Loading
Loading