UH-OH

It looks like you don’t have access to that feature yet

Contact sales to get upgraded to the full DevStudio experience.

UH-OH

It looks like you don't have access to that feature yet.

to select
to navigate
escto close
Introduction to the Chimera SDK
Chimera SDK Quick Start Guide
Chimera SDK Command Line Interface (CLI)
Tutorial: Using SDK as a Library
Tutorials & Model Demos
Model Demos
Model Demo: Llama-2 15M (Baby Llama-2)
Model Demo: QWEN3 8B End-to-End CGC and ISS Execution
Model Demo: QWEN3 Prefill All Decoders
Model Demo: DeepSeek-R1-Distill-Qwen-1.5B End-to-End CGC and ISS Execution
Model Demo: QWEN3 Single Decoder
Model Demo: Qwen2.5-0.5B INT8 Quantization Pipeline
Model Demo: ConvNeXt Detection
Model Demo: QWEN3 Prefill Decoder Validation
Model Demo: ConvNeXt Segmentation
Model Demo: Classifiers Zoo
Model Demo: Detectors Zoo - MMDetection
Model Demo: Segmentors Zoo - MMSegmentation
Model Demo: Pose Estimators Zoo - MMPose
Model Demo: Detectors3D Zoo - MMDetection3D
MODEL Demo: Optical Character Recognition (OCR) Zoo - MMOCR
Model Demo: YOLOv3 Object Detection
Model Demo: YOLOv4 Object Detection
Model Demo: YOLOv5 Detection
Model Demo: YOLOv5 Detection and Segmentation
Model Demo: YOLOR Detection
Model Demo: YOLOX End-to-End Detection
Model Demo: YOLOv7 Detection
Model Demo: YOLOv8 Detection
Model Demo: YOLOv8 Pose Estimation
Model Demo: YOLOP Detection and Segmentation
Model Demo: QAT Vision Transformer (ViT)
Model Demo: QAT Swin Transformer
Model Demo: Mediapipe Face Pipeline
Demo: DOOM Renderer on Chimera GPNPU
Model Demo: Mediapipe Hand Pipeline
Model Demo: Whisper Tiny (Encoder + Decoder)
Model Demo: L2CS Fine-Grained Gaze Estimation
Model Demo: ASVspoof2021 LA Anti-Spoofing (LFCC-LCNN-BiLSTM)
Model Demo: UNET Tumor Segmentation
Model Demo: DETR Encoder
Model Demo: FFNet Segmentation
Model Demo: Centernet Detection
Model Demo: RetinaNet End-to-End Detection
Model Demo: Blazepose Pose Estimation
Model Demo: Pose Resnet Human Pose Estimation
Model Demo: MaskRCNN Detection and Segmentation
Model Demo: Keypoint R-CNN
Model Demo: Faster R-CNN Detection
Model Demo: FCOS Detection
Model Demo: DDRNet Classificationls
Model Demo: PI0.5 End-to-End VLA Inference
Model Demo: BEVFormer End-to-End 3D Detection
Multicore Demo
Chimera LLVM C++ Compiler
Chimera SDK Licensing Policy Documentation
Glossary
Chimera Software User GuideTutorials & Model DemosModel DemosModel Demo: YOLOR Detection

Model Demo: YOLOR Detection


NOTE: The Jupyter Notebook below is included in the Chimera SDK and can be run interactively by running the following CLI command:

$ quadric sdk notebook

From the Jupyter Notebook window in your browser, select the notebook named /quadric/sdk-cli/examples/models/yolo/yolor/yolor.ipynb.


YOLOR Object Detection on Chimera GPNPU

YOLOR (Wang, Yeh & Liao, 2021) is an anchor-based single-stage detector that adds an "implicit" knowledge branch alongside the standard explicit feature path — a shared backbone feeding multiple task heads. This notebook compiles the yolor_p6 variant end-to-end: pull the kadirnar/yolor-pip source, load the pretrained weights via huggingface_hub, export to ONNX via torch.onnx, split at the head boundary, quantize the backbone to INT8, compile the backbone with the Chimera Graph Compiler (CGC), and run ISS + ORT INT8 inferences side-by-side.

Why split the graph?

YOLOR's head fuses per-scale sigmoids and shape gymnastics that are cheaper to keep on the host CPU; the backbone is a dense stack of convolutions that compiles well to the Chimera GPNPU. Splitting the ONNX at the head boundary lets CGC focus on the convolutional backbone and lets ONNX Runtime handle the classical tail — each operator runs where it belongs.

Model: YOLOR-P6 (COCO, 640×640)

Note — split pipeline.

  • On the Chimera GPNPU: the backbone
  • On the host CPU: the detection head ONNX, NMS, and bounding-box visualization

The full pipeline can run end-to-end on the GPNPU — see yolox_e2e_chipy.ipynb or retina_net_e2e_chipy.ipynb for examples that compose CCL custom ops with ChiPy to keep everything on-chip.


1. Setup

Imports and per-run configuration. YOLOR-pip source-tree download + patch, weights loading, ONNX export + split, calibration subset, and bounding-box visualization all live in yolor_helpers.py.

import gc
import os

## Suppress Ultralytics-style auto-pip-install if any transitive import trips it.
os.environ.setdefault("YOLO_AUTOINSTALL", "False")

import numpy as np
import onnx
from onnxruntime import InferenceSession
from PIL import Image

from sdk_cli.lib.inference import InferenceEngine, batch_inference
from sdk_cli.lib.quantize import QuantizedONNXModel, quantize_onnx_model
from tvm.contrib.epu.chimera_job.chimera_job import ChimeraJob

from yolor_helpers import (
    DEFAULT_IMAGE_PATHS,
    INPUT_SIZE,
    MODEL_NAME,
    build_calibration_subset,
    display_detections,
    export_onnx,
    load_images,
    run_postprocess,
    split_backbone_and_head,
)

%matplotlib inline

2. Model Generation and ONNX Export

export_onnx() fetches the kadirnar/yolor-pip source tree (downloading and patching it if needed), loads the pretrained YOLOR-P6 weights via huggingface_hub, and writes yolor_p6.onnx via torch.onnx.export at the SDK's default opset.

onnx_file = export_onnx(MODEL_NAME)
print(f"Exported: {onnx_file.name}")
/usr/local/lib/python3.10/dist-packages/torch/functional.py:539: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at /pytorch/aten/src/ATen/native/TensorShape.cpp:3637.)
  return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]
/quadric/sdk-cli/examples/models/yolo/yolor/yolor/models/models.py:542: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!
  if not augment:
/quadric/sdk-cli/examples/models/yolo/yolor/yolor/utils/layers.py:124: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!
  if nx == na:  # same shape
/quadric/sdk-cli/examples/models/yolo/yolor/yolor/models/models.py:396: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!
  if (self.nx, self.ny) != (nx, ny):
/quadric/sdk-cli/examples/models/yolo/yolor/yolor/models/models.py:360: TracerWarning: torch.tensor results are registered as constants in the trace. You can safely ignore this warning if you use this function to create tensors out of constant variables that would be the same every time you call this function. In any other case, this might cause the trace to be incorrect.
  self.ng = torch.tensor(ng, dtype=torch.float)
/quadric/sdk-cli/examples/models/yolo/yolor/yolor/models/models.py:360: TracerWarning: Converting a tensor to a Python float might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!
  self.ng = torch.tensor(ng, dtype=torch.float)


Exported: yolor_p6.onnx

3. Split ONNX

YOLOR splits into a backbone (convolutional, GPNPU-friendly) and a head (anchor decode + per-scale detection ops, better on the host CPU). We cut the graph at the four module_list head-boundary edges and keep the backbone for CGC compilation; the head piece is run as an ONNX-Runtime reference.

YOLOR backbone / head split

backbone_onnx_file, head_onnx_file = split_backbone_and_head(onnx_file, MODEL_NAME)
print(f"Backbone: {backbone_onnx_file.name}")
print(f"Head:     {head_onnx_file.name}")
Backbone: yolor_p6-backbone.onnx
Head:     yolor_p6-head.onnx

4. Quantization

The backbone is quantized to INT8 with asymmetric activations using the COCO-like subset of QuadricCalibration for tensor-range statistics. The QuantizedONNXModel return value carries both the quantized ONNX and its companion .tranges file.

calibration_subset = build_calibration_subset(INPUT_SIZE)

quantized_onnx_model: QuantizedONNXModel = quantize_onnx_model(
    str(backbone_onnx_file),
    calibration_subset,
    asymmetric_activation=True,
)
print(f"Quantized ONNX: {quantized_onnx_model.model_path.name}")
print(f"Tensor ranges:  {quantized_onnx_model.tensor_ranges_path.name}")
gc.collect()
2026-06-19 03:55 - INFO - sdk - quantize - ONNX model shapes inferred.
2026-06-19 03:55 - DEBUG - sdk - quantize - Forcing node types: []
2026-06-19 03:55 - DEBUG - sdk - quantize - ONNX Node types excluded from quantization: ['Softmax', 'Sigmoid', 'QuadricCustomOp']
2026-06-19 03:55 - DEBUG - sdk - quantize - ONNX Node names excluded from quantization: ['', '/module_list.195/activation/Sigmoid', '/module_list.103/activation/Mul', '/module_list.82/activation/Mul', '/module_list.160/activation/Mul', '/module_list.40/activation/Mul', '/module_list.218/activation/Sigmoid', '/module_list.198/activation/Mul', '/module_list.190/activation/Mul', '/module_list.44/activation/Sigmoid', '/module_list.17/activation/Mul', '/module_list.97/activation/Mul', '/module_list.47/activation/Sigmoid', '/module_list.21/activation/Mul', '/module_list.179/activation/Mul', '/module_list.125/activation/Mul', '/module_list.166/activation/Mul', '/module_list.51/activation/Sigmoid', '/module_list.224/activation/Sigmoid', '/module_list.60/activation/Sigmoid', '/module_list.101/activation/Mul', '/module_list.126/activation/Sigmoid', '/module_list.140/activation/Sigmoid', '/module_list.79/activation/Sigmoid', '/module_list.45/activation/Sigmoid', '/module_list.159/activation/Sigmoid', '/module_list.132/activation/Sigmoid', '/module_list.169/activation/Mul', '/module_list.182/activation/Sigmoid', '/module_list.163/activation/Sigmoid', '/module_list.179/activation/Sigmoid', '/module_list.115/activation/Sigmoid', '/module_list.86/activation/Mul', '/module_list.161/activation/Sigmoid', '/module_list.186/activation/Mul', '/module_list.22/activation/Sigmoid', '/module_list.66/activation/Sigmoid', '/module_list.6/activation/Mul', '/module_list.163/activation/Mul', '/module_list.55/activation/Sigmoid', '/module_list.144/activation/Mul', '/module_list.43/activation/Sigmoid', '/module_list.39/activation/Mul', '/module_list.137/activation/Mul', '/module_list.172/activation/Sigmoid', '/module_list.9/activation/Mul', '/module_list.37/activation/Sigmoid', '/module_list.39/activation/Sigmoid', '/module_list.138/activation/Sigmoid', '/module_list.16/activation/Mul', '/module_list.145/activation/Mul', '/module_list.132/activation/Mul', '/module_list.187/activation/Mul', '/module_list.78/activation/Mul', '/module_list.44/activation/Mul', '/module_list.34/activation/Sigmoid', '/module_list.93/activation/Mul', '/module_list.230/activation/Mul', '/module_list.55/activation/Mul', '/module_list.72/activation/Mul', '/module_list.71/activation/Sigmoid', '/module_list.167/activation/Sigmoid', '/module_list.192/activation/Sigmoid', '/module_list.230/activation/Sigmoid', '/module_list.22/activation/Mul', '/module_list.67/activation/Sigmoid', '/module_list.27/activation/Sigmoid', '/module_list.13/activation/Sigmoid', '/module_list.58/activation/Sigmoid', '/module_list.89/activation/Mul', '/module_list.129/activation/Sigmoid', '/module_list.124/activation/Mul', '/module_list.115/activation/Mul', '/module_list.154/activation/Mul', '/module_list.12/activation/Sigmoid', '/module_list.49/activation/Mul', '/module_list.76/activation/Mul', '/module_list.124/activation/Sigmoid', '/module_list.187/activation/Sigmoid', '/module_list.195/activation/Mul', '/module_list.91/activation/Sigmoid', '/module_list.192/activation/Mul', '/module_list.10/activation/Sigmoid', '/module_list.141/activation/Sigmoid', '/module_list.52/activation/Mul', '/module_list.16/activation/Sigmoid', '/module_list.94/activation/Sigmoid', '/module_list.170/activation/Sigmoid', '/module_list.144/activation/Sigmoid', '/module_list.1/activation/Mul', '/module_list.24/activation/Mul', '/module_list.137/activation/Sigmoid', '/module_list.72/activation/Sigmoid', '/module_list.224/activation/Mul', '/module_list.189/activation/Mul', '/module_list.81/activation/Mul', '/module_list.21/activation/Sigmoid', '/module_list.85/activation/Sigmoid', '/module_list.135/activation/Mul', '/module_list.153/activation/Mul', '/module_list.113/activation/Sigmoid', '/module_list.183/activation/Sigmoid', '/module_list.54/activation/Mul', '/module_list.66/activation/Mul', '/module_list.200/activation/Sigmoid', '/module_list.180/activation/Sigmoid', '/module_list.196/activation/Mul', '/module_list.157/activation/Mul', '/module_list.145/activation/Sigmoid', '/module_list.197/activation/Mul', '/module_list.5/activation/Sigmoid', '/module_list.30/activation/Sigmoid', '/module_list.18/activation/Mul', '/module_list.140/activation/Mul', '/module_list.170/activation/Mul', '/module_list.135/activation/Sigmoid', '/module_list.128/activation/Sigmoid', '/module_list.51/activation/Mul', '/module_list.1/activation/Sigmoid', '/module_list.82/activation/Sigmoid', '/module_list.173/activation/Sigmoid', '/module_list.90/activation/Sigmoid', '/module_list.20/activation/Mul', '/module_list.193/activation/Mul', '/module_list.202/activation/Sigmoid', '/module_list.7/activation/Mul', '/module_list.212/activation/Sigmoid', '/module_list.57/activation/Sigmoid', '/module_list.28/activation/Mul', '/module_list.74/activation/Mul', '/module_list.199/activation/Mul', '/module_list.96/activation/Mul', '/module_list.3/activation/Mul', '/module_list.58/activation/Mul', '/module_list.176/activation/Mul', '/module_list.57/activation/Mul', '/module_list.7/activation/Sigmoid', '/module_list.93/activation/Sigmoid', '/module_list.85/activation/Mul', '/module_list.174/activation/Mul', '/module_list.193/activation/Sigmoid', '/module_list.112/activation/Sigmoid', '/module_list.174/activation/Sigmoid', '/module_list.148/activation/Sigmoid', '/module_list.154/activation/Sigmoid', '/module_list.196/activation/Sigmoid', '/module_list.200/activation/Mul', '/module_list.97/activation/Sigmoid', '/module_list.143/activation/Sigmoid', '/module_list.171/activation/Mul', '/module_list.126/activation/Mul', '/module_list.48/activation/Sigmoid', '/module_list.30/activation/Mul', '/module_list.161/activation/Mul', '/module_list.94/activation/Mul', '/module_list.103/activation/Sigmoid', '/module_list.105/activation/Sigmoid', '/module_list.34/activation/Mul', '/module_list.143/activation/Mul', '/module_list.24/activation/Sigmoid', '/module_list.156/activation/Sigmoid', '/module_list.87/activation/Sigmoid', '/module_list.127/activation/Sigmoid', '/module_list.10/activation/Mul', '/module_list.61/activation/Sigmoid', '/module_list.160/activation/Sigmoid', '/module_list.60/activation/Mul', '/module_list.151/activation/Mul', '/module_list.104/activation/Mul', '/module_list.125/activation/Sigmoid', '/module_list.70/activation/Mul', '/module_list.78/activation/Sigmoid', '/module_list.176/activation/Sigmoid', '/module_list.212/activation/Mul', '/module_list.116/activation/Sigmoid', '/module_list.37/activation/Mul', '/module_list.45/activation/Mul', '/module_list.25/activation/Mul', '/module_list.36/activation/Mul', '/module_list.171/activation/Sigmoid', '/module_list.148/activation/Mul', '/module_list.33/activation/Sigmoid', '/module_list.141/activation/Mul', '/module_list.147/activation/Sigmoid', '/module_list.70/activation/Sigmoid', '/module_list.52/activation/Sigmoid', '/module_list.122/activation/Sigmoid', '/module_list.189/activation/Sigmoid', '/module_list.182/activation/Mul', '/module_list.63/activation/Mul', '/module_list.96/activation/Sigmoid', '/module_list.173/activation/Mul', '/module_list.100/activation/Mul', '/module_list.158/activation/Sigmoid', '/module_list.183/activation/Mul', '/module_list.79/activation/Mul', '/module_list.63/activation/Sigmoid', '/module_list.112/activation/Mul', '/module_list.121/activation/Sigmoid', '/module_list.36/activation/Sigmoid', '/module_list.185/activation/Sigmoid', '/module_list.87/activation/Mul', '/module_list.90/activation/Mul', '/module_list.159/activation/Mul', '/module_list.13/activation/Mul', '/module_list.89/activation/Sigmoid', '/module_list.20/activation/Sigmoid', '/module_list.166/activation/Sigmoid', '/module_list.61/activation/Mul', '/module_list.147/activation/Mul', '/module_list.184/activation/Sigmoid', '/module_list.127/activation/Mul', '/module_list.28/activation/Sigmoid', '/module_list.12/activation/Mul', '/module_list.76/activation/Sigmoid', '/module_list.100/activation/Sigmoid', '/module_list.198/activation/Sigmoid', '/module_list.113/activation/Mul', '/module_list.48/activation/Mul', '/module_list.74/activation/Sigmoid', '/module_list.105/activation/Mul', '/module_list.164/activation/Mul', '/module_list.180/activation/Mul', '/module_list.202/activation/Mul', '/module_list.119/activation/Mul', '/module_list.0/Reorg/Concat', '/module_list.31/activation/Mul', '/module_list.129/activation/Mul', '/module_list.49/activation/Sigmoid', '/module_list.131/activation/Sigmoid', '/module_list.218/activation/Mul', '/module_list.131/activation/Mul', '/module_list.75/activation/Sigmoid', '/module_list.116/activation/Mul', '/module_list.17/activation/Sigmoid', '/module_list.81/activation/Sigmoid', '/module_list.164/activation/Sigmoid', '/module_list.186/activation/Sigmoid', '/module_list.64/activation/Sigmoid', '/module_list.6/activation/Sigmoid', '/module_list.27/activation/Mul', '/module_list.151/activation/Sigmoid', '/module_list.2/activation/Sigmoid', '/module_list.33/activation/Mul', '/module_list.121/activation/Mul', '/module_list.199/activation/Sigmoid', '/module_list.25/activation/Sigmoid', '/module_list.40/activation/Sigmoid', '/module_list.18/activation/Sigmoid', '/module_list.142/activation/Sigmoid', '/module_list.86/activation/Sigmoid', '/module_list.158/activation/Mul', '/module_list.184/activation/Mul', '/module_list.64/activation/Mul', '/module_list.119/activation/Sigmoid', '/module_list.153/activation/Sigmoid', '/module_list.190/activation/Sigmoid', '/module_list.5/activation/Mul', '/module_list.75/activation/Mul', '/module_list.91/activation/Mul', '/module_list.142/activation/Mul', '/module_list.156/activation/Mul', '/module_list.47/activation/Mul', '/module_list.128/activation/Mul', '/module_list.177/activation/Sigmoid', '/module_list.169/activation/Sigmoid', '/module_list.122/activation/Mul', '/module_list.167/activation/Mul', '/module_list.3/activation/Sigmoid', '/module_list.101/activation/Sigmoid', '/module_list.138/activation/Mul', '/module_list.177/activation/Mul', '/module_list.185/activation/Mul', '/module_list.2/activation/Mul', '/module_list.9/activation/Sigmoid', '/module_list.157/activation/Sigmoid', '/module_list.67/activation/Mul', '/module_list.104/activation/Sigmoid', '/module_list.71/activation/Mul', '/module_list.172/activation/Mul', '/module_list.43/activation/Mul', '/module_list.197/activation/Sigmoid', '/module_list.54/activation/Sigmoid', '/module_list.31/activation/Sigmoid']
2026-06-19 03:55 - INFO - sdk - quantize - Starting quantization...
WARNING:root:Please use QuantFormat.QDQ for activation type QInt8 and weight type QInt8. Or it will lead to bad performance on x64.
2026-06-19 03:55 - INFO - sdk - quantize - Quantization completed! Quantized model saved to /quadric/sdk-cli/examples/models/yolo/yolor/yolor_p6-backbone_OpSet16_optimized_asym_int8_q.onnx
2026-06-19 03:55 - INFO - sdk - quantize - ONNX full precision model size: 140.39MB
2026-06-19 03:55 - INFO - sdk - quantize - ONNX quantized model size: 35.45MB
2026-06-19 03:55 - INFO - sdk - quantize - ONNX model shapes inferred.
2026-06-19 03:55 - INFO - sdk - quantize - ONNX Model with well-defined shapes has been saved at `/quadric/sdk-cli/examples/models/yolo/yolor/yolor_p6-backbone_OpSet16_optimized_asym_int8_q_shaped.onnx`.
2026-06-19 03:55 - DEBUG - sdk - quantize - Checking for FLOAT/FLOAT16 types...
2026-06-19 03:55 - INFO - sdk - quantize - Checking for remaining FLOAT/FLOAT16 types.
2026-06-19 03:55 - INFO - sdk - quantize - Model still has FLOAT/FLOAT16 types after quantization. Creating ranges for floating point tensors using calibration data...
2026-06-19 03:55 - INFO - sdk - quantize - Saved computed tensor ranges to /quadric/sdk-cli/examples/models/yolo/yolor/yolor_p6-backbone_OpSet16_optimized_asym_int8_q_shaped.tranges.
2026-06-19 03:55 - INFO - sdk - quantize - 
╒═════════════════════════════════════════════════════════════════════════════════════════════════════════╤════════════════════════════════════════════════════════════════════════════════════════════════════════════╕
│ Quantized ONNX Model                                                                                    │ Tensor Ranges File                                                                                         │
╞═════════════════════════════════════════════════════════════════════════════════════════════════════════╪════════════════════════════════════════════════════════════════════════════════════════════════════════════╡
│ /quadric/sdk-cli/examples/models/yolo/yolor/yolor_p6-backbone_OpSet16_optimized_asym_int8_q_shaped.onnx │ /quadric/sdk-cli/examples/models/yolo/yolor/yolor_p6-backbone_OpSet16_optimized_asym_int8_q_shaped.tranges │
╘═════════════════════════════════════════════════════════════════════════════════════════════════════════╧════════════════════════════════════════════════════════════════════════════════════════════════════════════╛


Quantized ONNX: yolor_p6-backbone_OpSet16_optimized_asym_int8_q_shaped.onnx
Tensor ranges:  yolor_p6-backbone_OpSet16_optimized_asym_int8_q_shaped.tranges





19197

5. Compilation

ChimeraJob wraps the full compile pipeline: graph analyze, kernel selection, memory planning, and code generation. Printing the job after ISS has run renders a summary table that includes the target configuration and cycle counts.

cgc_job = ChimeraJob(model_p=str(quantized_onnx_model.model_path))
cgc_job.compile(quiet=True)

6. Inference

batch_inference runs the compiled backbone against multiple images in parallel through two engines: CHIMERA_ORT_INT8 (ONNX Runtime reference) and CHIMERA_ISS_INT8 (the Chimera GPNPU cycle-accurate simulator). Both drive the same head ONNX on the host for the classical tail.

all_image_paths, all_images = load_images(INPUT_SIZE, DEFAULT_IMAGE_PATHS)
num_images = len(all_images)

engines = {
    InferenceEngine.CHIMERA_ORT_INT8: cgc_job,
    InferenceEngine.CHIMERA_ISS_INT8: cgc_job,
}

head_session = InferenceSession(onnx.load(str(head_onnx_file)).SerializeToString())

outputs_per_engine = {}
threads = min(num_images, 6)
for engine, job in engines.items():
    outputs_per_engine[engine] = batch_inference(
        engine, job, all_images, head_session=head_session, threads=threads
    )
2026-06-19 04:04 - WARNING - epu - chimera_job - ORT is not threadsafe -- forcing single threaded batch execution
100%|████████████████████████████████████████████| 3/3 [00:02<00:00,  1.20it/s]
Processing: 100%|████████████████████████████████| 3/3 [02:43<00:00, 54.47s/it]

7. Run Statistics

plot_run_statistics() renders the per-kernel cycle breakdown for the compiled backbone.

## Re-enable inline display in case the yolor-pip import switched the
## matplotlib backend to Agg.
%matplotlib inline

print(cgc_job)
cgc_job.plot_run_statistics()
╒═════════════════════╤═════════════════════════════════════════════════════════════════════════════════════════════════════════╕
│ Module Name         │ yolor_p6_backbone_OpSet16_optimized_asym_int8_q_shaped_QC_U_1d7_16MB_4kB_128GBps_128GBps_16_OFF_x1_x1   │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ONNX File           │ /quadric/sdk-cli/examples/models/yolo/yolor/yolor_p6-backbone_OpSet16_optimized_asym_int8_q_shaped.onnx │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Product Target      │ QC-U                                                                                                    │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Number of Cores     │ 1                                                                                                       │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ISS Clock Frequency │ 1.700                                                                                                   │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ L2M Size            │ 16MB                                                                                                    │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ LRM Size            │ 4kB                                                                                                     │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ External Read BW    │ 128GBps                                                                                                 │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ External Write BW   │ 128GBps                                                                                                 │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ MACS per PE         │ 16                                                                                                      │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Max L2M             │ 15.801MB                                                                                                │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Max LRM             │ 2.875kB                                                                                                 │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Max Temp Ext Bytes  │ 0.000MB                                                                                                 │
├─────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Network GMACs       │ 39.997                                                                                                  │
╘═════════════════════╧═════════════════════════════════════════════════════════════════════════════════════════════════════════╛

╒════╤════════╤══════════════════════════════════════════╤══════════════════╤══════════════════════════╤═══════╕
│    │ Type   │ Name                                     │ shape            │ type                     │ mse   │
╞════╪════════╪══════════════════════════════════════════╪══════════════════╪══════════════════════════╪═══════╡
│  0 │ Input  │ inputs0                                  │ [1, 3, 640, 640] │ tensor[FixedPoint32<27>] │ n/a   │
├────┼────────┼──────────────────────────────────────────┼──────────────────┼──────────────────────────┼───────┤
│  1 │ Output │ /module_list.212/activation/Mul_output_0 │ [1, 256, 80, 80] │ tensor[FixedPoint32<25>] │ 0.020 │
├────┼────────┼──────────────────────────────────────────┼──────────────────┼──────────────────────────┼───────┤
│  2 │ Output │ /module_list.218/activation/Mul_output_0 │ [1, 384, 40, 40] │ tensor[FixedPoint32<26>] │ 0.011 │
├────┼────────┼──────────────────────────────────────────┼──────────────────┼──────────────────────────┼───────┤
│  3 │ Output │ /module_list.224/activation/Mul_output_0 │ [1, 512, 20, 20] │ tensor[FixedPoint32<26>] │ 0.004 │
├────┼────────┼──────────────────────────────────────────┼──────────────────┼──────────────────────────┼───────┤
│  4 │ Output │ /module_list.230/activation/Mul_output_0 │ [1, 640, 10, 10] │ tensor[FixedPoint32<27>] │ 0.001 │
╘════╧════════╧══════════════════════════════════════════╧══════════════════╧══════════════════════════╧═══════╛

Post-ISS Report 1.7 GHz ***
Fully placed-and-routed gate simulation: 
╒══════════════════════════════════╤═════════╕
│ Latency (ms)                     │ 4.97    │
├──────────────────────────────────┼─────────┤
│ FPS                              │ 201.34  │
├──────────────────────────────────┼─────────┤
│ Average Power @ 3nm SSGNP (mW)   │ 2134.54 │
├──────────────────────────────────┼─────────┤
│ FPS per Watt @ 3nm SSGNP (FPS/W) │ 94.32   │
├──────────────────────────────────┼─────────┤
│ Ext Rd Bytes (MB)                │ 40.22   │
├──────────────────────────────────┼─────────┤
│ Ext Wr Bytes (MB)                │ 9.62    │
├──────────────────────────────────┼─────────┤
│ Avg Ext Rd BW (GBps)             │ 7.91    │
├──────────────────────────────────┼─────────┤
│ Avg Ext Wr BW (GBps)             │ 1.89    │
├──────────────────────────────────┼─────────┤
│ MAC Utilization                  │ 28.91%  │
╘══════════════════════════════════╧═════════╛
*** Data generated using 7nm SSGNP gatesim and scaled to 3nm

[SDK-CLI] : TotalCycles: 8,443,465
[SDK-CLI] : Executions/second: 201.34

compute      : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 1.565M
data_array   : ▇▇▇▇▇▇▇▇▇▇ 1.056M
mac          : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 4.881M
data_external: ▇ 115.762K
data_ocm     : ▇▇▇▇▇▇▇▇ 822.59K

for more information check run directory: /quadric/sdk-cli/examples/models/yolo/yolor/ccl_build/yolor_p6_backbone_OpSet16_optimized_asym_int8_q_shaped_QC_U_1d7_16MB_4kB_128GBps_128GBps_16_OFF_x1_x1/run/20260619_040448_2a1a3d


2026-06-19 04:07 - INFO - epu - chimera_job - Combined plots generated and saved to: 
/quadric/sdk-cli/examples/models/yolo/yolor/ccl_build/yolor_p6_backbone_OpSet16_optimized_asym_int8_q_shaped_QC_U_1d7_16MB_4kB_128GBps_128GBps_16_OFF_x1_x1/run/20260619_040448_2a1a3d/data/yolor_p6_backbone_OpSet16_optimized_asym_int8_q_shaped_QC_U_1d7_16MB_4kB_128GBps_128GBps_16_OFF_x1_x1.combined.png





'/quadric/sdk-cli/examples/models/yolo/yolor/ccl_build/yolor_p6_backbone_OpSet16_optimized_asym_int8_q_shaped_QC_U_1d7_16MB_4kB_128GBps_128GBps_16_OFF_x1_x1/run/20260619_040448_2a1a3d/data'

Decode the network outputs and overlay the detections on the input image.

detections_per_engine = run_postprocess(outputs_per_engine, all_image_paths, INPUT_SIZE)
display_detections(all_image_paths, detections_per_engine)


Summary

ModelYOLOR-P6 (COCO, 640×640)
PipelineSource download → weights via huggingface_hub → ONNX export → split → quantize (INT8 asymmetric) → CGC compile → ISS + ORT inference → YOLOR NMS → bbox overlay
Compiled on GPNPUConvolutional backbone
On host CPUYOLOR head ONNX, classical NMS, bounding-box visualization
CalibrationQuadricCalibration COCO-like subset

Key takeaways

  1. Splitting the ONNX at the module_list head boundary keeps CGC focused on GPNPU-friendly convolutional ops while the anchor-decode + NMS tail runs on the host.
  2. The SDK exposes the same ChimeraJob handle to both CHIMERA_ORT_INT8 (ONNX Runtime reference) and CHIMERA_ISS_INT8 (ISS), making side-by-side validation a one-dict change.
  3. The YOLOR "implicit" branch folds cleanly into the backbone graph after onnxsim, so quantization and compilation treat it as ordinary convolutional structure.

Citation

@article{wang2021yolor,
  title   = {You Only Learn One Representation: Unified Network for Multiple Tasks},
  author  = {Wang, Chien-Yao and Yeh, I-Hau and Liao, Hong-Yuan Mark},
  journal = {arXiv preprint arXiv:2105.04206},
  year    = {2021}
}
Table of Contents
Introduction to the Chimera SDK
Chimera SDK Quick Start Guide
Chimera SDK Command Line Interface (CLI)
Tutorial: Using SDK as a Library
Tutorials & Model Demos
Model Demos
Model Demo: Llama-2 15M (Baby Llama-2)
Model Demo: QWEN3 8B End-to-End CGC and ISS Execution
Model Demo: QWEN3 Prefill All Decoders
Model Demo: DeepSeek-R1-Distill-Qwen-1.5B End-to-End CGC and ISS Execution
Model Demo: QWEN3 Single Decoder
Model Demo: Qwen2.5-0.5B INT8 Quantization Pipeline
Model Demo: ConvNeXt Detection
Model Demo: QWEN3 Prefill Decoder Validation
Model Demo: ConvNeXt Segmentation
Model Demo: Classifiers Zoo
Model Demo: Detectors Zoo - MMDetection
Model Demo: Segmentors Zoo - MMSegmentation
Model Demo: Pose Estimators Zoo - MMPose
Model Demo: Detectors3D Zoo - MMDetection3D
MODEL Demo: Optical Character Recognition (OCR) Zoo - MMOCR
Model Demo: YOLOv3 Object Detection
Model Demo: YOLOv4 Object Detection
Model Demo: YOLOv5 Detection
Model Demo: YOLOv5 Detection and Segmentation
Model Demo: YOLOR Detection
Model Demo: YOLOX End-to-End Detection
Model Demo: YOLOv7 Detection
Model Demo: YOLOv8 Detection
Model Demo: YOLOv8 Pose Estimation
Model Demo: YOLOP Detection and Segmentation
Model Demo: QAT Vision Transformer (ViT)
Model Demo: QAT Swin Transformer
Model Demo: Mediapipe Face Pipeline
Demo: DOOM Renderer on Chimera GPNPU
Model Demo: Mediapipe Hand Pipeline
Model Demo: Whisper Tiny (Encoder + Decoder)
Model Demo: L2CS Fine-Grained Gaze Estimation
Model Demo: ASVspoof2021 LA Anti-Spoofing (LFCC-LCNN-BiLSTM)
Model Demo: UNET Tumor Segmentation
Model Demo: DETR Encoder
Model Demo: FFNet Segmentation
Model Demo: Centernet Detection
Model Demo: RetinaNet End-to-End Detection
Model Demo: Blazepose Pose Estimation
Model Demo: Pose Resnet Human Pose Estimation
Model Demo: MaskRCNN Detection and Segmentation
Model Demo: Keypoint R-CNN
Model Demo: Faster R-CNN Detection
Model Demo: FCOS Detection
Model Demo: DDRNet Classificationls
Model Demo: PI0.5 End-to-End VLA Inference
Model Demo: BEVFormer End-to-End 3D Detection
Multicore Demo
Chimera LLVM C++ Compiler
Chimera SDK Licensing Policy Documentation
Glossary


© Copyright 2026 Quadric All Rights Reserved • Privacy Policy
This documentation is preliminary and confidential. It is subject to change. Quadric does not give any warranty express or implied that the contents will be complete or accurate or up to date. The company shall not be liable for any loss, actions, claims, proceedings, demands or costs or damages whatsoever or howsoever caused arising directly or indirectly in connection with or arising out of the use of this material.

Sign in to your account

Don't have an account? Create an Account
By signing in, you are agreeing to our Terms of Use and Privacy Policy.

Develop.

Simulate.

Profile.

Collaborate.

We use cookies to enhance your browsing experience, and analyze our traffic.
By clicking "Accept All", you consent to our use of cookies.