Overview
Note: The Workload Services Framework is a benchmarking framework and is not intended to be used for the deployment of workloads in production environments. It is recommended that users consider any adjustments which may be necessary for the deployment of these workloads in a production environment including those necessary for implementing software best practices for workload scalability and security.
Introduction¶
This is a General Video Analytics workload that focuses on the analytics capability of an EPU (irrespective of HW acceleration available) and will stress the system in compute/memory BW/media/cache/Power/Icc etc. to understand the true limitations of a system under a specific configuration. It mainly includes decode, object detection, object tracking, and object classification stages. The workload takes advantage of DLStreamer.
The pipeline for all GPU testcases.
flowchart LR;
videostream["Video Stream<br/> (Local file, 1080p,<br/>30fps, H265)"];
decrypt["Decrypt<br/>(AES 256, CPU)"]
decode["Decode<br/>(GPU)"];
detect["Detect<br/>(yolov5s/yolv5m/yolov10m,<br/>10ips, GPU)"];
classify1["Classify1<br/>(resnet50, 10ips, GPU)"];
classify2["Classify2<br/>(mobilenetv2, 10ips, GPU)"];
classDef media fill:#76ceff,stroke:#000000
classDef ai fill:#ffe17a,stroke:#000000
videostream:::media --> decrypt;
decrypt:::media --> decode;
decode:::media --> detect;
detect:::ai ------> classify1:::ai;
classify1 --> classify2:::ai;
The pipeline for GPU+NPU testcases.
flowchart LR;
videostream["Video Stream<br/> (Local file, 1080p,<br/>30fps, H265)"];
decrypt["Decrypt<br/>(AES 256, CPU)"]
decode["Decode<br/>(GPU)"];
detect["Detect<br/>(yolov5s/yolv5m/yolov10m,<br/>10ips, GPU)"];
crop["Crop<br/>(224x224,<br/>GPU)"]
classify1["Classify1<br/>(resnet50, 10ips, NPU)"];
classify2["Classify2<br/>(mobilenetv2, 10ips, NPU)"];
classDef media fill:#76ceff,stroke:#000000
classDef ai fill:#ffe17a,stroke:#000000
videostream:::media --> decrypt;
decrypt:::media --> decode;
decode:::media --> detect;
detect:::ai --> crop;
crop:::media --> classify1;
classify1:::ai --> classify2:::ai;
Test Case¶
This workload provides several tests cases with the following configuration parameters.
- TestName: It is a test case and contains a specific video analytics pipeline.
- G_NumofVaStream: Specify the number of VA streams, default is 1.
- SCALING_GOVERNOR:Specify the"scaling_governor" value which enables setting a static frequency to the CPU. Default value is powersave to measure workload with platform default setting after booting.
- G_CPU_Bind: Specify CPU cores for launching the VA process. This accepts cpu numbers as shown in the processor fields of /proc/cpuinfo, or relative cpus as in relative to the current cpuset. Refer to the --physcpubind parameter of numactl for more details. Default is 6-13, which are the E cores on ARL.
The following are all the testcases supported by platform ARL.
| No. | Testcases | Platform | OD Model | OC Model | OD inference_device | OC inference device | OD inference batch size | OC inference batch size |
|---|---|---|---|---|---|---|---|---|
| 1 | test_general-video-analytics-cnn-generic_arl-light-igpu-bs1 | ARL | yolov5s | Resnet50 and Mobilenet-v2 | iGPU | iGPU | 1 | 1 |
| 2 | test_general-video-analytics-cnn-generic_arl-light-igpu-bs8 | ARL | yolov5s | Resnet50 and Mobilenet-v2 | iGPU | iGPU | 8 | 8 |
| 3 | test_general-video-analytics-cnn-generic_arl-medium-igpu-bs1 | ARL | yolov5m | Resnet50 and Mobilenet-v2 | iGPU | iGPU | 1 | 1 |
| 4 | test_general-video-analytics-cnn-generic_arl-medium-igpu-bs8 | ARL | yolov5m | Resnet50 and Mobilenet-v2 | iGPU | iGPU | 8 | 8 |
| 5 | test_general-video-analytics-cnn-generic_arl-heavy-igpu-bs1 | ARL | yolov10m | Resnet50 and Mobilenet-v2 | iGPU | iGPU | 1 | 1 |
| 6 | test_general-video-analytics-cnn-generic_arl-heavy-igpu-bs8 | ARL | yolov10m | Resnet50 and Mobilenet-v2 | iGPU | iGPU | 8 | 8 |
| 7 | test_general-video-analytics-cnn-generic_arl-light-igpu-bs1-ivpu-bs1 | ARL | yolov5s | Resnet50 and Mobilenet-v2 | iGPU | NPU | 1 | 1 |
| 8 | test_general-video-analytics-cnn-generic_arl-light-igpu-bs8-ivpu-bs1 | ARL | yolov5s | Resnet50 and Mobilenet-v2 | iGPU | NPU | 8 | 1 |
| 9 | test_general-video-analytics-cnn-generic_arl-medium-igpu-bs1-ivpu-bs1 | ARL | yolov5m | Resnet50 and Mobilenet-v2 | iGPU | NPU | 1 | 1 |
| 10 | test_general-video-analytics-cnn-generic_arl-medium-igpu-bs8-ivpu-bs1 | ARL | yolov5m | Resnet50 and Mobilenet-v2 | iGPU | NPU | 8 | 1 |
| 11 | test_general-video-analytics-cnn-generic_arl-heavy-igpu-bs1-ivpu-bs1 | ARL | yolov10m | Resnet50 and Mobilenet-v2 | iGPU | NPU | 1 | 1 |
| 12 | test_general-video-analytics-cnn-generic_arl-heavy-igpu-bs8-ivpu-bs1 | ARL | yolov10m | Resnet50 and Mobilenet-v2 | iGPU | NPU | 8 | 1 |
| 13 | test_general-video-analytics-cnn-generic_arl-light-igpu-bs8_pkm | ARL | yolov5s | Resnet50 and Mobilenet-v2 | iGPU | iGPU | 8 | 8 |
| 14 | test_general-video-analytics-cnn-generic_arl-light-igpu-bs1_gated | ARL | yolov5s | Resnet50 and Mobilenet-v2 | iGPU | iGPU | 1 | 1 |
Environment Setup for Host¶
Hardware:¶
- Arrow Lake - U/H CRB
Software:¶
- Download and install BIOS.
- Install Ubuntu 24.04 OS
-
Install kernel in OS.
-
Get the latest apt from Ubuntu* archive before setting up PPA from 01.org
sudo apt updatesudo apt upgrade* Create a file at /etc/apt/sources.list.d/intel-arl.list with the content to set PPA from 01.orgsudo vi /etc/apt/sources.list.d/intel-arl.list -
Add the following content, and then save and exit.
-
Download the GPG key to /etc/apt/trusted.gpg.d and rename it to arl.gpg
sudo wget https://download.01.org/intel-linux-overlay/ubuntu/E6FA98203588250569758E97D176E3162086EE4C.gpg -O /etc/apt/trusted.gpg.d/arl.gpg -
Set the preferred list.
sudo vi /etc/apt/preferences.d/intel-arl -
Add the following content, and then save and exit.
- Install kernel, download the package information from all configured sources
- Install NPU firmware
-
-
Reboot the machine
sudo reboot
Required dataset:¶
- COCO val2017 datasets
- Make sure to download val2017.zip and place it in the
datasetsdirectory before building the image using themakecommand
- Make sure to download val2017.zip and place it in the
Customize Test Configuration¶
There are two ways for you to customize your test parameters.
Specify a global test configuration file to overwrite any configuration parameter of a test case and use the ctest.sh to set the parameters.
Refer to ctest.md to customize test parameters.
Run customized test cases for ARL platform:
cd build
cmake -DPLATFORM=ARL -DRELEASE=:$RELEASETAG -DBENCHMARK=general-video-analytics-cnn-generic -DBACKEND=docker ..
make
cd workload/General-Video-Analytics-CNN/
./ctest.sh -N # Can list the testcases that support
./ctest.sh -R test_general-video-analytics-cnn-generic_arl-light-igpu-bs1 -VV --config=../../../workload/General-Video-Analytics-CNN/test-config/test_config_arl_pta.yaml
Docker Image¶
There will be a final docker image: gva-cnn-instance-dlstreamer-$PLATFORM.
Below is an example of running the test_general-video-analytics-cnn-generic_arl-light-igpu-bs1 test case on ARL.
mkdir -p logs
id=$(docker run --detach --rm --privileged -e TestName=arl-light-igpu-bs1 -e TestTimeout=100 gva-cnn-instance-dlstreamer-arl:$RELEASETAG)
docker exec $id cat /export-logs | tar xf - -C logs
docker rm -f $id
KPI¶
Run the kpi.sh script to generate the KPIs.
here is kpi example:
Index Info¶
- Name:
General Video Analytics CNN - Category:
Edge - Platform:
ARL