| 1 | = Hailo AI |
| 2 | |
| 3 | Hailo is a hardware manufacturer that produces high-performance, low-power AI accelerators and vision processors uniquely designed to accelerate embedded deep learning applications on edge devices. |
| 4 | |
| 5 | They typically come in a M.2 or Mini-PCIe form factor that can be plugged into a Gateworks Single Board Computer (SBC). |
| 6 | |
| 7 | |
| 8 | = Quick Start Guide |
| 9 | |
| 10 | Required Equipment: |
| 11 | * Gateworks Venice SBC with latest software (testing was done with Ubuntu Jammy and 6.6.8 kernel) |
| 12 | * Hailo AI Hailo-8 M.2 module [https://hailo.ai/products/ai-accelerators/hailo-8-m2-ai-acceleration-module/ here] |
| 13 | * Gateworks GW16148 Mini-PCIe to M.2 M-Key adapter |
| 14 | * Hailo AI Developer Account (free) [https://hailo.ai/developer-zone/] |
| 15 | |
| 16 | 1. Download Hailo AI Software for Gateworks SBC |
| 17 | 1. Login to Hailo 'Developer Zone' and go to software downloads page: [https://hailo.ai/developer-zone/software-downloads/] |
| 18 | 1. When selecting a product for downloads, select 'Accelerators' and Sub-package the 'HailoRT' radio button should be checked, Architecture radio button is ARM64 and OS is Linux. As shown in screenshot below: |
| 19 | 1. [[Image(hailort.png)]] |
| 20 | 1. Download the two following files: |
| 21 | 1. HailoRT – Ubuntu package (deb) for arm64 |
| 22 | 1. Hailo Integration Tool – Ubuntu package (deb) for arm64 |
| 23 | 1. Choose a way to transfer these two .deb files from the PC to the Gateworks SBC (use either wget from a http server, use SCP, or use a USB flash drive, etc). |
| 24 | |
| 25 | |
| 26 | |
| 27 | |
| 28 | 1. Boot the Gateworks SBC with access to the serial console over JTAG |
| 29 | 1. Come a Ubuntu command prompt: |
| 30 | {{{ |
| 31 | root@jammy-venice:~# |
| 32 | }}} |
| 33 | 2. |
| 34 | |
| 35 | |
| 36 | == Usage |
| 37 | |
| 38 | Verify PCIe device is seen: |
| 39 | {{{ |
| 40 | root@jammy-venice:~# hailortcli scan |
| 41 | Hailo Devices: |
| 42 | [-] Device: 0000:03:00.0 |
| 43 | |
| 44 | }}} |
| 45 | |
| 46 | Run HEF File: |
| 47 | * Note HEF files can be downloaded here: https://github.com/hailo-ai/hailo_model_zoo/blob/master/docs/PUBLIC_MODELS.rst |
| 48 | {{{ |
| 49 | root@jammy-venice:~# hailortcli run my.hef |
| 50 | }}} |
| 51 | |
| 52 | Venice Performance Test: |
| 53 | {{{ |
| 54 | root@jammy-venice:~# hailo-integration-tool -g test.json #generate test.json file which tells which tests to run, edit the file to set tests to true and false, etc |
| 55 | |
| 56 | root@jammy-venice:~# hailo-integration-tool ./test.json |
| 57 | Performance test started |
| 58 | 0000:03:00.0 starting Performance Test |
| 59 | 0000:03:00.0 - Tested Network: basic_model, Inference Mode: hw_only, Duration: 60 sec, Measured FPS: 1328 |
| 60 | 0000:03:00.0 - Tested Network: heavy_load, Inference Mode: hw_only, Duration: 60 sec, Measured FPS: 6 |
| 61 | 0000:03:00.0 - Tested Network: basic_model, Inference Mode: streaming, Duration: 60 sec, Measured FPS: 1328 |
| 62 | 0000:03:00.0 - Tested Network: heavy_load, Inference Mode: streaming, Duration: 60 sec, Measured FPS: 6 |
| 63 | |
| 64 | Performance test passed |
| 65 | JSON summary is ready: integration_tool_reports/2023-Apr-04_23-26-02/summary.json |
| 66 | HTML summary is ready: integration_tool_reports/2023-Apr-04_23-26-02/summary.html |
| 67 | root@jammy-venice:~# cat integration_tool_reports/2023-Apr-04_23-26-02/summary.json |
| 68 | { |
| 69 | "Integration Tool": { |
| 70 | "Generic info": { |
| 71 | "Date of execution": "04-04-2023 23-21-58", |
| 72 | "Tested modules": [ |
| 73 | { |
| 74 | "PCIe location": "0000:03:00.0", |
| 75 | "Product name": "HAILO-8 AI ACC M.2 M KEY MODULE EXT TEMP", |
| 76 | "Serial number": "HLLWM2A220500021" |
| 77 | } |
| 78 | ], |
| 79 | "Tests summary": [ |
| 80 | { |
| 81 | "PCIe location": "0000:03:00.0", |
| 82 | "Pass / Fail": "Pass", |
| 83 | "Test duration [s]": 244.0, |
| 84 | "Test name": "Performance test" |
| 85 | } |
| 86 | ], |
| 87 | "User configuration comment": "Insert user-specific comment here", |
| 88 | "Version tool": "1.13.0", |
| 89 | "continue_to_next_test_upon_failure": false |
| 90 | }, |
| 91 | "Tests": [ |
| 92 | { |
| 93 | "Performance test": { |
| 94 | "Detected PCIe configuration": { |
| 95 | "#Lanes": 2, |
| 96 | "Generation": 1 |
| 97 | }, |
| 98 | "Device ID": "0000:03:00.0", |
| 99 | "Fail description": "", |
| 100 | "Pass / Fail": "Pass", |
| 101 | "Results": [ |
| 102 | { |
| 103 | "Infer Mode": "hw_only", |
| 104 | "Measured FPS": 1328, |
| 105 | "Reference0 FPS": -1, |
| 106 | "Status": "passed", |
| 107 | "Tested NN": "basic_model" |
| 108 | }, |
| 109 | { |
| 110 | "Infer Mode": "hw_only", |
| 111 | "Measured FPS": 6, |
| 112 | "Reference0 FPS": -1, |
| 113 | "Status": "passed", |
| 114 | "Tested NN": "heavy_load" |
| 115 | }, |
| 116 | { |
| 117 | "Infer Mode": "streaming", |
| 118 | "Measured FPS": 1328, |
| 119 | "Reference0 FPS": -1, |
| 120 | "Status": "passed", |
| 121 | "Tested NN": "basic_model" |
| 122 | }, |
| 123 | { |
| 124 | "Infer Mode": "streaming", |
| 125 | "Measured FPS": 6, |
| 126 | "Reference0 FPS": -1, |
| 127 | "Status": "passed", |
| 128 | "Tested NN": "heavy_load" |
| 129 | } |
| 130 | ] |
| 131 | } |
| 132 | } |
| 133 | ] |
| 134 | } |
| 135 | } |
| 136 | |
| 137 | }}} |
| 138 | |