| | 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 | |