Reproducing AMD MLPerf Inference v6.1 Submission Results AMD published a step-by-step recipe for reproducing its MLPerf Inference v6.1 submission results on AMD Instinct MI355X, MI350X, and MI350P GPUs, marking the company's fifth consecutive round of MLPerf Inference participation. The guide covers six workloads — llama2-70b, deepseek-r1, gpt-oss-120b, dlrm-v3, wan2.2-t2v, and llama3.1-8b — using self-contained Docker images and publicly available quantized model weights, with the multi-node GPT-OSS 120B submission requiring 72 GPUs across 9 nodes. AMD notes that dlrm-v3 alone requires roughly 1.2 TB of disk space and about 3 TB of host system memory. Reproducing AMD MLPerf Inference v6.1 Submission Results reproducing-amd-mlperf-inference-v6-1-submission-results This blog shows you how to reproduce AMD submission results for MLPerf Inference v6.1 https://mlcommons.org/benchmarks/inference-datacenter/ on AMD Instinct MI355X, MI350X, and MI350P GPUs using self-contained Docker images, publicly available quantized model weights, and a step-by-step benchmark recipe. MLPerf Inference is the industry-standard benchmark suite governed by MLCommons https://mlcommons.org/ , an open engineering consortium. It covers a representative set of AI workloads recommendation, language modeling, computer vision and measures system-level throughput and latency under production-realistic query patterns. The closed division — the division in which AMD participates — enforces strict accuracy constraints 99% or 99.9% of the FP32 baseline, depending on the model and permits quantization, compiler optimization, and hardware-specific tuning, provided accuracy constraints are met. Workloads are tested across multiple scenarios : Offline maximize throughput with unconstrained batch size , Server/Interactive maintain tail latency SLO under a Poisson query arrival process and SingleStream minimize latency for processing 1 sample . AMD MLPerf Inference v6.1 submission is our fifth consecutive round of MLPerf Inference participation. For technical details on the submission see our companion blog https://rocm.blogs.amd.com/artificial-intelligence/mlperf-inf-v6.1/README.html . Workloads Summary workloads-summary The workloads that have been part of the submission are listed in the table below | Model | Task | Datatype | Scenarios | Platform | |---|---|---|---|---| | llama2-70b | LLM Summarization | MXFP4 | Offline, Server, Interactive | MI355X, MI350P | | deepseek-r1 | LLM Reasoning | MXFP4 | Offline, Server | MI355X | | gpt-oss-120b | MoE LLM | MXFP4 | Offline, Server | MI355X, MI350P | | dlrm-v3 | Recommendation | FP8 E4M3 | Offline, Server | MI355X, MI350X, MI350P | | wan2.2-t2v | Text-to-Video | MXFP4 | Offline, Single Stream | MI355X, MI350X, MI350P | | llama3.1-8b | LLM Summarization | MXFP4 | Offline, Server, Interactive | MI355X | Prerequisites prerequisites Before running any workload, confirm your system meets the following requirements. Hardware: - One or more AMD Instinct MI355X, MI350X, or MI350P GPUs. Eight GPUs are required for all single-node submissions. The multi-node GPT-OSS 120B submission requires 72 GPUs across 9 nodes. - ECC must be enabled on all GPU devices. Verify with: rocm-smi --showmeminfo ecc Contact your system administrator if ECC is not enabled; MLCommons rules require it for datacenter submissions. Software: - OS: Ubuntu 22.04 LTS or later recommended . - ROCm: PLACEHOLDER: ROCm version, e.g., ROCm 6.4 — install via the ROCm Quick Start Guide https://rocm.docs.amd.com/en/latest/deploy/linux/quick start.html . - Docker: Docker Engine with AMD GPU passthrough configured. Verify your installation: docker run --rm --device=/dev/kfd --device=/dev/dri rocm/rocm-terminal rocminfo | grep "gfx" - Hugging Face account: A free account at huggingface.co https://huggingface.co and a user access token are required to download the gated model weights for llama2-70b and gpt-oss-120b. Generate a token at https://huggingface.co/settings/tokens . Storage: Total disk space required across all workloads is approximately 5GB. See each model section for per-workload estimates including Docker image, quantized weights, and dataset. Note that dlrm-v3 dominates the total at roughly 1.2 TB on its own, and also requires about 3 TB of host system memory. Llama 2 70B llama-2-70b Llama 2 70B is Meta’s 70-billion-parameter open-weight language model fine-tuned for dialogue and summarization tasks. It serves as one of the core LLM benchmarks in MLPerf Inference, evaluated on the CNN/DailyMail summarization dataset. AMD submission uses MXFP4 weight-matrix MX floating-point 4-bit quantization, which aggressively reduces memory bandwidth pressure on the MI355X’s high-bandwidth memory while maintaining accuracy above the 99% of FP32 baseline target. The standard scenario tests end-to-end summarization throughput and latency; the interactive variant adds per-token latency constraints representative of a live chat application. Step 1: Prepare the Docker Container - Llama 2 70B step-1-prepare-the-docker-container-llama-2-70b Pull the Docker image containing the required code and scripts: docker pull rocm/amd-mlperf:mi355x llama2 70b inference 6.1 Start the Docker container: docker run -it --name llama2 test \ --ipc=host --network=host --privileged --cap-add=CAP SYS ADMIN \ --device=/dev/kfd --device=/dev/dri --device=/dev/mem \ --cap-add=SYS PTRACE --security-opt seccomp=unconfined \ --entrypoint bash \ rocm/amd-mlperf:mi355x llama2 70b inference 6.1 Step 2: Download the Reference Model and Dataset - Llama 2 70B step-2-download-the-reference-model-and-dataset-llama-2-70b From within the Docker container, download the quantized model using this command: git clone https://huggingface.co/amd/Llama-2-70b-chat-hf-WMXFP4-AMXFP4-KVFP8-Scale-UINT8-6.0MLPerf-GPTQ /model/llama2-70b-chat-hf/fp4 quantized gptq Download the OpenOrca dataset following the instructions in the MLCommons inference repository https://github.com/mlcommons/inference/tree/master/language/llama2-70b . Note The llama2-70b model on Hugging Face is gated. You must accept the model license at https://huggingface.co/meta-llama/Llama-2-70b-hf before the download will succeed with your token. Step 3: Run the Benchmark Harness - Llama 2 70B step-3-run-the-benchmark-harness-llama-2-70b Note: The commands below are for MI355X. To execute on a different GPU, change the config file as appropriate. Offline Scenario Performance Benchmark - Llama 2 70B offline-scenario-performance-benchmark-llama-2-70b Run the offline scenario performance test to obtain performance of your system: python /lab-mlperf-inference/code/main.py \ --config-path /lab-mlperf-inference/code/llama2-70b-99/ \ --config-name offline mi355x test mode=performance \ harness config.user conf path=/lab-mlperf-inference/code/llama2-70b-99/user mi355x.conf \ harness config.output log dir=/lab-mlperf-inference/results/llama2-70b/Offline/performance/run 1 Run the offline scenario accuracy test to generate the mlperf log accuracy.json file: python /lab-mlperf-inference/code/main.py \ config path=/lab-mlperf-inference/code/llama2-70b-99 \ config name=offline mi355x \ test mode=accuracy \ harness config.user conf path=/lab-mlperf-inference/code/llama2-70b-99/user mi355x.conf \ harness config.output log dir=/lab-mlperf-inference/results/llama2-70b/Offline/accuracy The mlperf log accuracy.json file is processed to verify the accuracy of the offline scenario: bash /lab-mlperf-inference/code/scripts/setup llama2 accuracy env.sh bash /lab-mlperf-inference/code/scripts/check llama2 accuracy scores.sh \ /lab-mlperf-inference/results/llama2-70b/Offline/accuracy/mlperf log accuracy.json Server Scenario Performance Benchmark - Llama 2 70B server-scenario-performance-benchmark-llama-2-70b Run the server scenario performance benchmark: python /lab-mlperf-inference/code/main.py \ --config-path /lab-mlperf-inference/code/llama2-70b-99/ \ --config-name server mi355x test mode=performance \ harness config.user conf path=/lab-mlperf-inference/code/llama2-70b-99/user mi355x.conf \ harness config.output log dir=/lab-mlperf-inference/results/llama2-70b/Server/performance/run 1 Run the server scenario accuracy test to generate the mlperf log accuracy.json file: python /lab-mlperf-inference/code/main.py \ config path=/lab-mlperf-inference/code/llama2-70b-99 \ config name=server mi355x \ test mode=accuracy \ harness config.user conf path=/lab-mlperf-inference/code/llama2-70b-99/user mi355x.conf \ harness config.output log dir=/lab-mlperf-inference/results/llama2-70b/Server/accuracy The mlperf log accuracy.json is processed to verify the accuracy of the server scenario: bash /lab-mlperf-inference/code/scripts/setup llama2 accuracy env.sh bash /lab-mlperf-inference/code/scripts/check llama2 accuracy scores.sh \ /lab-mlperf-inference/results/llama2-70b/Server/accuracy/mlperf log accuracy.json Interactive Scenario Performance Benchmark - Llama 2 70B interactive-scenario-performance-benchmark-llama-2-70b Run the interactive scenario performance benchmark: python /lab-mlperf-inference/code/main.py \ --config-path /lab-mlperf-inference/code/llama2-70b-99/ \ --config-name interactive mi355x test mode=performance \ harness config.user conf path=/lab-mlperf-inference/code/llama2-70b-99/user mi355x.conf \ harness config.output log dir=/lab-mlperf-inference/results/llama2-70b/Interactive/performance/run 1 Run the interactive scenario accuracy test to generate the mlperf log accuracy.json file: python /lab-mlperf-inference/code/main.py \ config path=/lab-mlperf-inference/code/llama2-70b-99 \ config name=interactive mi355x \ test mode=accuracy \ harness config.user conf path=/lab-mlperf-inference/code/llama2-70b-99/user mi355x.conf \ harness config.output log dir=/lab-mlperf-inference/results/llama2-70b/Interactive/accuracy The mlperf log accuracy.json is processed to verify the accuracy of the interactive scenario: bash /lab-mlperf-inference/code/scripts/setup llama2 accuracy env.sh bash /lab-mlperf-inference/code/scripts/check llama2 accuracy scores.sh \ /lab-mlperf-inference/results/llama2-70b/Interactive/accuracy/mlperf log accuracy.json The accuracy run must produce a ROUGE score at or above the threshold value specified in the MLCommons inference repository https://github.com/mlcommons/inference/tree/master/language/llama2-70b accuracy-target . GPT-OSS 120B gpt-oss-120b GPT-OSS 120B is an open-weight 120-billion-parameter Mixture-of-Experts MoE language model. MoE architectures activate only a subset of parameters per token, making them throughput-efficient for large-scale inference while maintaining high model capacity. Step 1: Prepare the Docker Container - GPT-OSS 120B step-1-prepare-the-docker-container-gpt-oss-120b Pull the Docker image containing the required code and scripts: docker pull rocm/amd-mlperf:mi355x gptoss 120b inference 6.1 Start the Docker container: docker run -it --name gptoss test \ --ipc=host --network=host --privileged --cap-add=CAP SYS ADMIN \ --device=/dev/kfd --device=/dev/dri --device=/dev/mem \ --cap-add=SYS PTRACE --security-opt seccomp=unconfined \ --entrypoint bash \ rocm/amd-mlperf:mi355x gptoss 120b inference 6.1 Step 2: Download the Reference Model and Dataset - GPT-OSS 120B step-2-download-the-reference-model-and-dataset-gpt-oss-120b From within the Docker container, download the quantized model using this command: git clone https://huggingface.co/amd/gpt-oss-120b-w-mxfp4-a-fp8-Mlperf /model/gpt-oss-120b/fp4 quantized From within the Docker container, download and process the dataset: cd /lab-mlperf-inference bash setup/gpt-oss-120b/dataset and model/prepare dataset.sh Step 3: Run the Benchmark Harness - GPT-OSS 120B step-3-run-the-benchmark-harness-gpt-oss-120b Note: The commands below are for MI355X. To execute on a different GPU, change the config file as appropriate. Offline Scenario Performance Benchmark - GPT-OSS-120B offline-scenario-performance-benchmark-gpt-oss-120b Run the offline scenario performance benchmark: python /lab-mlperf-inference/code/main.py \ --config-path /lab-mlperf-inference/code/gpt-oss-120b/ \ --config-name offline mi355x test mode=performance \ harness config.user conf path=/lab-mlperf-inference/code/gpt-oss-120b/user mi355x.conf \ harness config.output log dir=/lab-mlperf-inference/results/gpt-oss-120b/Offline/performance/run 1 Run the offline scenario accuracy test to generate the mlperf log accuracy.json file: python /lab-mlperf-inference/code/main.py \ config path=/lab-mlperf-inference/code/gpt-oss-120b \ config name=offline mi355x \ test mode=accuracy \ harness config.dataset path=/data/gpt-oss-120b/perf eval ref.parquet \ harness config.accuracy dataset path=/data/gpt-oss-120b/acc eval ref.parquet \ harness config.user conf path=/lab-mlperf-inference/code/gpt-oss-120b/user mi355x.conf \ harness config.output log dir=/lab-mlperf-inference/results/gpt-oss-120b/Offline/accuracy The mlperf log accuracy.json file is processed to verify the accuracy of the offline scenario: bash /lab-mlperf-inference/code/scripts/check gptoss accuracy scores.sh \ /lab-mlperf-inference/results/gpt-oss-120b/Offline/accuracy/mlperf log accuracy.json Server Scenario Performance Benchmark - GPT-OSS-120B server-scenario-performance-benchmark-gpt-oss-120b Run the server scenario performance benchmark: python /lab-mlperf-inference/code/main.py \ --config-path /lab-mlperf-inference/code/gpt-oss-120b/ \ --config-name server mi355x test mode=performance \ harness config.user conf path=/lab-mlperf-inference/code/gpt-oss-120b/user mi355x.conf \ harness config.output log dir=/lab-mlperf-inference/results/gpt-oss-120b/Server/performance/run 1 Run the server scenario accuracy test to generate the mlperf log accuracy.json file: python /lab-mlperf-inference/code/main.py \ config path=/lab-mlperf-inference/code/gpt-oss-120b \ config name=server mi355x \ test mode=accuracy \ harness config.dataset path=/data/gpt-oss-120b/perf eval ref.parquet \ harness config.accuracy dataset path=/data/gpt-oss-120b/acc eval ref.parquet \ harness config.user conf path=/lab-mlperf-inference/code/gpt-oss-120b/user mi355x.conf \ harness config.output log dir=/lab-mlperf-inference/results/gpt-oss-120b/Server/accuracy The mlperf log accuracy.json file is processed to verify the accuracy of the server scenario: bash /lab-mlperf-inference/code/scripts/check gptoss accuracy scores.sh \ /lab-mlperf-inference/results/gpt-oss-120b/Server/accuracy/mlperf log accuracy.json The accuracy run must meet the 99% threshold relative to the reference score. The exact reference score is documented in the MLCommons inference repository https://github.com/mlcommons/inference/tree/master/language/gpt-oss-120b accuracy-target under the gpt-oss model directory. Multi-Node Submission multi-node-submission AMD submitted multi-node results for GPT-OSS 120B at cluster scale using AMD Instinct MI355X GPUs. The topology used was as follows: - Cluster: 9 nodes × 8 AMD Instinct MI355X GPUs = 72 total GPUs - Interconnect: PLACEHOLDER: InfiniBand / Ethernet spec - MPI / launcher: PLACEHOLDER: mpirun / torchrun / custom launcher Step 1: Prepare the Docker Container - GPT-OSS-120B Multi-Node step-1-prepare-the-docker-container-gpt-oss-120b-multi-node Pull the Docker image containing the required code and scripts. For example, for GPT-OSS 120B: docker pull rocm/amd-mlperf:mi355x gptoss 120b inference 6.1 Start the Docker container: docker run -it --name gptoss test \ --ipc=host --network=host --privileged --cap-add=CAP SYS ADMIN \ --device=/dev/kfd --device=/dev/dri --device=/dev/mem \ --cap-add=SYS PTRACE --security-opt seccomp=unconfined \ rocm/amd-mlperf:mi355x gptoss 120b inference 6.1 Step 2: Download the Reference Model and Dataset - GPT-OSS-120B Multi-Node step-2-download-the-reference-model-and-dataset-gpt-oss-120b-multi-node From within the Docker container, download the quantized model using this command: git clone https://huggingface.co/amd/gpt-oss-120b-w-mxfp4-a-fp8-Mlperf /model/gpt-oss-120b/fp4 quantized From within the Docker container, download and process the dataset: bash /lab-mlperf-inference/setup/download gptoss 120b.sh To enable a distributed SUT with ZMQ, choose one node in the cluster as the Head node where the SUT client will run. Get the IP address of the head node using: hostname -I Step 3: Run the Benchmark Harness - GPT-OSS-120B Multi-Node step-3-run-the-benchmark-harness-gpt-oss-120b-multi-node Running the Benchmark Under the Server Scenario running-the-benchmark-under-the-server-scenario To run the benchmark under the server scenario, use the run harness.sh script to start the SUT client. Make sure device count is set to the number of all the healthy GPUs across all the nodes in the cluster. bash run harness.sh --config-path gpt-oss-120b/ --config-name server mi355x --backend zmq test mode=performance harness config.output log dir=results/gpt-oss-120b server performance zmq port=12345 harness config.device count=