Movidius Neural Compute Stick

Similar documents
DIY Security Camera using. Intel Movidius Neural Compute Stick

Intel QuickAssist for Windows*

Intel Unite. Intel Unite Firewall Help Guide

Intel Unite Plugin Guide for VDO360 Clearwater

Clear CMOS after Hardware Configuration Changes

Intel Security Dev API 1.0 Production Release

White Paper. May Document Number: US

Intel Unite Plugin for Logitech GROUP* and Logitech CONNECT* Devices INSTALLATION AND USER GUIDE

IPSO 6LoWPAN IoT Software for Yocto Project* for Intel Atom Processor E3800 Product Family

Intel System Studio for Microcontrollers

Bring Intelligence to the Edge with Intel Movidius Neural Compute Stick

Intel Unite Solution Intel Unite Plugin for WebEx*

Hetero Streams Library (hstreams Library) User's Guide

Modernizing Meetings: Delivering Intel Unite App Authentication with RFID

Intel & Lustre: LUG Micah Bhakti

Intel Unite Solution. Plugin Guide for Protected Guest Access

Intel QuickAssist for Windows*

Intel Unite. Enterprise Test Environment Setup Guide

Intel Unite Solution Version 4.0

Intel Integrated Native Developer Experience 2015 (OS X* host)

Intel Celeron Processor J1900, N2807 & N2930 for Internet of Things Platforms

Omni-Path Cluster Configurator

Intel Unite Solution Version 4.0

Running Docker* Containers on Intel Xeon Phi Processors

Intel Firmware Support Package (Intel FSP) for Intel Xeon Processor D Product Family (formerly Broadwell-DE), Gold 001

Intel Unite Solution Version 4.0

No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.

Intel Quark Microcontroller Software Interface Pin Multiplexing

Snapdragon NPE Overview

Intel Speed Select Technology Base Frequency - Enhancing Performance

6th Generation Intel Core Processor Series

HAProxy* with Intel QuickAssist Technology

Intel Parallel Studio XE 2011 SP1 for Linux* Installation Guide and Release Notes

Intel Unite Solution Version 4.0

Intel Unite Solution. Plugin Guide for Protected Guest Access

Intel Integrated Native Developer Experience 2015 Build Edition for OS X* Installation Guide and Release Notes

Intel Parallel Studio XE 2011 for Linux* Installation Guide and Release Notes

Intel Unite Solution Intel Unite Plugin for Ultrasonic Join

Installation Guide and Release Notes

INTEL PERCEPTUAL COMPUTING SDK. How To Use the Privacy Notification Tool

Jomar Silva Technical Evangelist

Sample for OpenCL* and DirectX* Video Acceleration Surface Sharing

Intel Quark SE Microcontroller C1000 Power Sequencing Considerations

Accelerate Deep Learning Inference with openvino toolkit

Intel IoT Gateway Platform Data Editor Tool

Installation Guide and Release Notes

Intel Unite Solution. Linux* Release Notes Software version 3.2

Intel Education Theft Deterrent Release Note WW16'14. August 2014

Intel Omni-Path Fabric Manager GUI Software

Andreas Dilger High Performance Data Division RUG 2016, Paris

Intel Omni-Path Fabric Manager GUI Software

Intel Compute Card Slot Design Overview

Localized Adaptive Contrast Enhancement (LACE)

Building an Android* command-line application using the NDK build tools

Intel Omni-Path Fabric Manager GUI Software

Intel Integrated Native Developer Experience 2015 Build Edition for OS X* Installation Guide and Release Notes

LED Manager for Intel NUC

Intel Xeon W-3175X Processor Thermal Design Power (TDP) and Power Rail DC Specifications

Wu Zhiwen.

Installation Guide and Release Notes

Intel System Debugger 2018 for System Trace Linux* host

Intel Software Guard Extensions SDK for Linux* OS. Installation Guide

Zhang, Hongchao

Intel Visual Compute Accelerator Product Family

Intel True Scale Fabric Switches Series

OpenCL* and Microsoft DirectX* Video Acceleration Surface Sharing

Intel Stereo 3D SDK Developer s Guide. Alpha Release

Intel vpro Technology Virtual Seminar 2010

Intel Unite Standalone Setup Guide

Installation Guide and Release Notes

Intel Media Server Studio 2018 R1 Essentials Edition for Linux* Release Notes

Intel IoT Gateways: Pulling Data from a Temperature Sensor Using a Python Script

Intel Parallel Studio XE 2011 for Windows* Installation Guide and Release Notes

Intel Stress Bitstreams and Encoder (Intel SBE) 2017 AVS2 Release Notes (Version 2.3)

How to Create a.cibd File from Mentor Xpedition for HLDRC

CPU Pinning and Isolation in Kubernetes*

Intel System Information Retrieval Utility

Intel RealSense Depth Module D400 Series Software Calibration Tool

Intel Visual Compute Accelerator Product Family

Intel Desktop Board DZ68DB

Evolving Small Cells. Udayan Mukherjee Senior Principal Engineer and Director (Wireless Infrastructure)

TENSORRT 4.0 RELEASE CANDIDATE (RC)

Customizing an Android* OS with Intel Build Tool Suite for Android* v1.1 Process Guide

Device Firmware Update (DFU) for Windows

CUDNN. DU _v07 December Installation Guide

Intel Cache Acceleration Software for Windows* Workstation

Intel Parallel Studio XE 2019 Update 1

Data Center Efficiency Workshop Commentary-Intel

Intel Manycore Platform Software Stack (Intel MPSS)

Intel Atom x3-c3200rk Processor (Formerly SoFIA 3G R) Simple V4L2- based Capture Method for MIPI-CSI2 Smart Camera Sensors

Intel RealSense D400 Series Calibration Tools and API Release Notes

Intel Media Server Studio 2017 R3 Essentials Edition for Linux* Release Notes

Intel Setup and Configuration Service. (Lightweight)

Intel vpro Technology Virtual Seminar 2010

Intel Galileo Firmware Updater Tool

Intel Parallel Studio XE 2015 Composer Edition for Linux* Installation Guide and Release Notes

How to Create a.cibd/.cce File from Mentor Xpedition for HLDRC

Stanislav Bratanov; Roman Belenov; Ludmila Pakhomova 4/27/2015

Building Intel Atom E3800 Processor Development Kit Yocto Project* Board Support Package (BSP)

Intel Parallel Studio XE 2016

Transcription:

Movidius Neural Compute Stick

You may not use or facilitate the use of this document in connection with any infringement or other legal analysis concerning Intel products described herein. You agree to grant Intel a non-exclusive, royalty-free license to any patent claim thereafter drafted which includes subject matter disclosed herein. No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document. All information provided here is subject to change without notice. Contact your Intel representative to obtain the latest Intel product specifications and roadmaps. The products described may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request. Copies of documents which have an order number and are referenced in this document may be obtained by calling 1-800-548-4725 or by visiting: http://www.intel.com/design/literature.htm Intel, Movidius and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries. *Other names and brands may be claimed as the property of others. Copyright 2017, Intel Corporation. All rights reserved. Movidius Neural Compute Toolkit Page 2

Contents Terminology... 4 Reference Documents... 4 1.0 Introduction... 5 1.1 Toolkit features... 5 1.2 The Movidius Neural Compute Stick and your network... 5 1.3 Movidius Neural Compute Workflow... 5 1.3.1 Neural Network development stage (off NCS device)... 6 1.3.2 Network compilation & profiling with the Movidius NCS Toolkit... 6 1.3.3 Product prototyping with NCS to perform CNN acceleration... 7 2.0 Setup and Installation... 8 2.1 Requirements... 8 2.1.1 Host computer... 8 2.1.2 Hardware... 8 2.2 Checking your host computer setup... 8 2.2.1 Ubuntu distribution and version... 8 2.3 Toolkit installation steps... 9 2.3.1 Toolkit dependencies... 9 2.3.2 Step 1 Download the Movidius Neural Compute SDK... 9 2.3.3 Step 2 Run the automated setup script... 10 2.3.4 Step 3 Verify the installation... 10 2.3.5 Step 4 Download existing models... 10 2.3.6 Step 5 - Test your installation of the Toolkit... 11 2.4 Troubleshooting the installation... 11 2.4.1 PYTHONPATH... 11 2.4.2 Support forum... 11 3.0 Using the Toolkit... 12 3.1 Toolkit utilities... 12 3.2 Toolkit directory structure overview... 12 3.3 Compiler... 13 3.3.2 Checker... 14 3.3.3 Profiler... 15 3.4 Examples... 17 3.4.1 Make Examples... 17 3.4.2 Test Script... 17 Page 3 Movidius Neural Compute Toolkit

Revision History Date Revision Description 1 Initial release Note: Review the readme files provided with any software packages for the latest information. Terminology Term Description Caffe CNN DNN Inference NCS NCS SDK VPU A deep learning framework used to develop networks that can be compiled to run on the NCS Convolutional neural network; a type of DNN network Deep neural network The act of comparing input to a network knowledge base, a subject s attributes can be inferred Neural compute stick A set of software tools and a host API for the NCS Visual processing unit Reference Documents Visit developer.movidius.com for additional documentation and information. Movidius Neural Compute Toolkit Page 4

Introduction 1.0 Introduction The Movidius Neural Compute Toolkit and Movidius Neural Compute Stick (NCS) enable rapid prototyping, validation and deployment of Deep Neural Networks (DNN). The Toolkit is a parsing program that intelligently converts existing networks, creating an optimal conversion specifically for the Movidius architecture. 1.1 Toolkit features Compilation: Translation of network weights and structures from Caffe deep learning frameworks into a Movidius Neural Compute Stick compatible format. Profiling: The generation of detailed, per-layer performance statistics of how your network is running on the Movidius Neural Compute Stick. Checking: Verification of classification accuracy by running inferences with the Movidius Neural Compute Stick. 1.2 The Movidius Neural Compute Stick and your network The Movidius Neural Compute Stick (NCS) has twelve vector VLIW ( SHAVE ) processors which compute most of the neural network load. The number of active SHAVEs is configurable in the toolkit to 1,2,4,8 or 12. The NCS runs neural network stages with half-precision 16-bit floating point. 1.3 Movidius Neural Compute Workflow The following diagram shows a typical conceptual workflow for development and prototyping with the NCS. This workflow uses both components of the Movidius Neural Compute SDK the Toolkit and the API. Page 5 Movidius Neural Compute Toolkit

Introduction 1.3.1 Neural Network development stage (off NCS device) During this phase, neural networks are designed and trained using appropriate DNN frameworks, typically performed on server or cloud equipment. This process is out of scope for the Movidius SDK and NCS Network Design & Training (caffe or similar) Trained Caffe model 1.3.2 Network compilation & profiling with the Movidius NCS Toolkit Neural compute toolkit enables users to compile and profile a network, then check a graph against caffe using a single Neural Compute Stick. Network compilation & profiling on a Movidius Platform with the Movidius Neural Compute Toolkit (e.g. PC Linux + NCS) mvccompile.py (generator tool) graphfile Profiling report Binary.mvcmd loaded from PC over USB. mvncprofile.py (profiler tool) movinccheck.py (checker tool) Accepted CNN design Movidius Neural Compute Toolkit Page 6

Introduction 1.3.3 Product prototyping with NCS to perform CNN acceleration Neural compute platform API allows user applications running on host systems to run the network on one, or more, Neural Compute Sticks. Example of an embedded prototype Host platform graphfile Binary.mvcmd loaded on NCS by host. USB Link User App Neural Compute Platform API Page 7 Movidius Neural Compute Toolkit

Setup and Installation 2.0 Setup and Installation This section covers the download of files and documentation to facilitate the installation of the Toolkit and the operation of the NCS device. 2.1 Requirements The following are the software and hardware requirements to run the Toolkit with the neural network of your choice. 2.1.1 Host computer Ubuntu Linux* 16.04 LTS x86-64-bit with a USB 2.0 port and an active internet connection. Note: All steps listed in this document are based on a fresh install of the operating system. 2.1.2 Hardware Movidius Neural Compute Stick 2.2 Checking your host computer setup 2.2.1 Ubuntu distribution and version Issue the following command to verify that your distribution is 64-bit (x86_64): $ uname m Check that your version of Ubuntu is 16.04 LTS with the following command: $ lsb_release - a Movidius Neural Compute Toolkit Page 8

Setup and Installation 2.3 Toolkit installation steps 2.3.1 Toolkit dependencies The installation script has been tested on clean installs of Ubuntu Linux* 16.04 LTS where Caffe was not already installed. 2.3.2 Step 1 Download the Movidius Neural Compute SDK Download Movidius Neural Compute SDK archive from the developer.movidius.com download area. Create a directory for the SDK. $ mkdir <path-to-sdk> Move the downloaded SDK archive to the <path-to-sdk> directory. $ mv <MvNC_SDK>.tgz <path-to-sdk> Change directory to the <path-to-sdk> directory. $ cd <path-to-sdk> Unpack the SDK archive. $ tar -xvf <MvNC_SDK>.tgz Unpack the Toolkit archive. $ tar -xvf <MvNC_Toolkit>.tgz After decompression a new directory named bin is created. Change directory to the bin directory. $ cd bin Page 9 Movidius Neural Compute Toolkit

Setup and Installation 2.3.3 Step 2 Run the automated setup script The automated install script will attempt to install the packages that it finds missing from your system. It is the user's responsibility to decide whether this may cause any issues with existing applications. Move to the root of the toolkit release folder, and run the auto-install script: $./setup.sh The script asks for the sudo password and suggests a default location for the dependencies and third-party software like Caffe. It is highly recommended that the default locations be used so that other scripts can find needed files. Note: The installation takes some time to complete as many packages are downloaded and installed; do not cancel the installation before it is complete. Note: Before continuing, verify that $PYTHONPATH points to the location that you selected for Caffe during Toolkit installation. If $PYTHONPATH is not defined, execute the following and recheck: $ source ~/.bashrc To confirm the PYTHONPATH is set correctly use the following command and look for similar output: $ echo $PYTHONPATH :/opt/movidius/caffe/python: 2.3.4 Step 3 Verify the installation Issue the following command to verify your installation: $ make check Note: You can also review the installation log file to make sure that all the requirements are met and that there are no remaining conflicts. The log file contains the full terminal output from the setup.sh script. The log file is of the format setup_yy_mm_dd_hh_mm.log 2.3.5 Step 4 Download existing models Run the dlnets.sh script from the data directory to download a selection of existing network models. Movidius Neural Compute Toolkit Page 10

Setup and Installation $ cd data $./dlnets.sh 2.3.6 Step 5 - Test your installation of the Toolkit See the Demo projects section for ways to test your Toolkit installation. 2.4 Troubleshooting the installation 2.4.1 PYTHONPATH The PYTHONPATH points to the version of Caffe software that was installed by the setup script. You can use the export PYTHONPATH command to change this. Before continuing, verify that $PYTHONPATH points to the location that you selected for Caffe during Toolkit installation. If $PYTHONPATH is not defined, execute the following and recheck: $ source ~/.bashrc 2.4.2 Support forum Additional support and information can be found on the ncsforum.movidius.com site. Page 11 Movidius Neural Compute Toolkit

Using the Toolkit 3.0 Using the Toolkit The Toolkit provides tools to enable rapid profiling, validation and tuning of CNNs. The Toolkit also includes a tool to compile CNNs to binary graph files that the NCS can load and execute from within a user s software application. 3.1 Toolkit utilities The toolkit is composed of three utilities: mvnccompile.pyc (the compiler) mvncprofile.pyc (the profiler) mvnccheck.pyc (the checker) 3.2 Toolkit directory structure overview Directory <path-to-sdk>\bin <path-to-sdk>\controllers <path-to-sdk>\models <path-to-sdk>\mvnc <path-to-sdk>\views <path-to-sdk>\data <path-to-sdk>\examples <path-to-sdk>\ncapi Purpose The bin directory is the root directory to for the Toolkit. Most utilities should be executed from within this directory. The bin directory contains: The Toolkit utilities Example Makefile Various other toolkit files and libraries Contains internal Python code for Toolkit Utilities Contains internal Python code for Toolkit Utilities Contains internal Python code for Toolkit Utilities Contains internal Python code for Toolkit Utilities Contains example Caffe models and.prototxt files. By default only the.prototxt files are in this directory, but the dlnets.sh script file is provided to download the Caffe models and generate NumPy mean files for the example models. Contains the top5_over_a_dataset.py example Python program and a dataset. API directory Movidius Neural Compute Toolkit Page 12

Using the Toolkit 3.3 Compiler 3.3.1.1 Usage The compiler is used to create a graph container. This is an optimized binary file that can be processed by the NCS. The command to use the compiler has the following format: $ python3./mvnccompile.pyc <network.prototxt> [...] Argument Required? Description <network.prototxt> Required Name of the prototxt (Caffe) file of the network. If a corresponding Caffe model file is found, it will be used for the weights, unless -w is provided too. -w <weights file> Optional Weights file. -s <MAX number of shaves> Optional Default: 1 Selects the maximum number of SHAVEs (1,2,4,8 or 12.) to use for network layers. Note: The NCS runtime code may use less than the MAX SHAVE value for some layers where measurements have typically shown no inference performance degradation (and consequently a power benefit) of using fewer SHAVEs. -in <input node name> Optional By default the network is processed from the input tensor. This option allows a user to select an alternative start point in the network. This enables partial network processing. When used together with the -on option a user can isolate one or more layers in a network for analysis. -on <output node name> Optional By default the network is processed through to the output tensor. This option allows a user to select an alternative end point in the network. This enables partial network processing. When used together with the -in option a user can isolate one or more layers in a network for analysis. -is <in. width> <in. height> Optional For networks that do not have dimension constraints on the input tensor, this option can be used to set the desired input dimensions. Page 13 Movidius Neural Compute Toolkit

Using the Toolkit Only two dimensions are defined because the batch size is always 1 and the number of color planes is assumed to be 3. -o <path> Optional Output graph container filename. If not provided, graph will be used. 3.3.1.2 Example The following is an example of a Python command that is issued from the bin directory, where caffemodels/<mymodel>.prototxt is an example of network file location to be replaced with the path to the network file of interest for your application: $ python3./mvnccompile.pyc caffemodels/<mymodel>.prototxt -w caffemodels/<mymodel>.caffemodel -o caffemodels/<mymodel> 3.3.2 Checker 3.3.2.1 Usage The checker runs a single inference on the NCS, allowing for the calculation of classification correctness. It prints the top-5 classification indexes and their probabilities for both the NCS outputs (Result) and Caffe outputs (Expected). It also prints the numerical deviation between the two outputs using several metrics. The command to use the checker has the following format: $ python3./mvnccheck.pyc <network.prototxt> [...] Argument Required? Description <network.prototxt> Required Name of the prototxt (Caffe) file of the network. If a corresponding Caffe model file is found, it will be used for the weights, unless -w is provided too. -w <weights file> Optional Weights file. -s <number of shaves> Optional Default: 1 Description: Selects the maximum number of SHAVEs to use for network layers. Note: The NCS runtime code may use less than the MAX SHAVE value for some layers where measurements have typically shown no inference performance degradation (and consequently a power benefit) of using fewer SHAVEs Movidius Neural Compute Toolkit Page 14

Using the Toolkit -in <input node name> Optional By default the network is processed from the input tensor. This option allows a user to select an alternative start point in the network. This enables partial network processing. When used together with the -on option a user can isolate one or more layers in a network for analysis. -on <output node name> Optional By default the network is processed through to the output tensor. This option allows a user to select an alternative end point in the network. This enables partial network processing. When used together with the -in option a user can isolate one or more layers in a network for analysis. -is <in. width> <in. height> Optional For networks that do not have dimension constraints on the input tensor, this option can be used to set the desired input dimensions. Only two dimensions are defined because the batch size is always 1 and the number of color planes is assumed to be 3. -i <image> Optional Image to use as input to validation run. If not set, a randomly generated image will be used. -id <number> Optional Expected id for Top-1 validation. -S <number> Optional Scale each value of the input by this amount. E.g. if the network expects input values in the range 0-255, put 255 here (1 is default, as the range 0-1 is the default). -M <number or numpy file> Optional Subtract this from the input (applied after scale). E.g. If the network expects a mean file to be subtracted from the input image, put it here. 3.3.2.2 Example The following is an example of a command that uses the checker: $ python3./mvnccheck.pyc caffemodels/../<mymodel>.prototxt -w caffemodels/<mymodel>.caffemodel -i image.jpg -S 255 -s 12 -M./data/mean.npy 3.3.3 Profiler Use the profiler to prototype your network to best fit Movidius proprietary architecture. A single on-chip inference generates enough information to provide a detailed stage-by-stage breakdown of where the bottlenecks are in your system. The profiler returns a console output as well as an HTML report. Page 15 Movidius Neural Compute Toolkit

Using the Toolkit 3.3.3.1 Usage The command to use the profiler has the following format: $ python3./mvncprofile.pyc <network.prototxt> [...] Argument Required? Description <network.prototxt> Required Name of the prototxt (Caffe) file of the network. If a corresponding Caffe model file is found, it will be used for the weights, unless -w is provided too. -w <weights file> Optional Weights file. -s <MAX number of shaves> Optional Default: 1 Description: Selects the maximum number of SHAVEs to use for network layers. Note: The NCS runtime code may use less than the MAX SHAVE value for some layers where measurements have typically shown no inference performance degradation (and consequently a power benefit) of using fewer SHAVEs -in <input node name> Optional By default the network is processed from the input tensor. This option allows a user to select an alternative start point in the network. This enables partial network processing. When used together with the -on option a user can isolate one or more layers in a network for analysis. -on <output node name> Optional By default the network is processed through to the output tensor. This option allows a user to select an alternative end point in the network. This enables partial network processing. When used together with the -in option a user can isolate one or more layers in a network for analysis. -is <in. width> <in. height> Optional For networks that do not have dimension constraints on the input tensor, this option can be used to set the desired input dimensions. Only two dimensions are defined because the batch size is always 1 and the number of color planes is assumed to be 3. The Makefile included in the <path-to-toolkit>/bin folder is provided to showcase some scenarios. Movidius Neural Compute Toolkit Page 16

Using the Toolkit Issue the following command to view the list of available targets: $ make help 3.4 Examples The networks downloaded during the installation step downloading models can be processed with the Toolkit for use on the NCS. While the networks downloaded by the script may change without notice, the base set should include the following: AlexNet GoogLeNet SqueezeNet Age Gender LeNet8 3.4.1 Make Examples Run the make help command to view the list of included examples. Make example00 to get started with the compiler. Issue the following command to build and execute the example: $ make example00 3.4.2 Test Script The following is a command example for a test script. This command must be issued from the bin directory: $ python3./examples/top5_over_a_dataset.py examples/data/test/ data/lenet8.prototxt data/lenet8.caffemodel You can use the source code as starting point for your development. Page 17 Movidius Neural Compute Toolkit