Custom deployment block structure
Argument | Passed | Description |
---|---|---|
--metadata <file> | Always | Provides the file path for deployment-metadata.json as a string. The deployment-metadata.json file contains details about the impulse being deployed. See deployment-metadata.json. |
cliArguments
property in the parameters.json
file. Alternatively, these arguments can be added (or changed) by editing the block in Studio.
input
property under the folders
property in the deployment-metadata.json
file, which can be loaded using the --metadata <file>
argument that is passed to the deployment block.
The input directory structure is shown below.
deploy.zip
located in the output directory. This archive is what will be downloaded for the user after your block has finished building.
The output directory path is stored in the output
property under the folders
property in the deployment-metadata.json
file, which can be loaded using the --metadata <file>
argument that is passed to the deployment block.
deployment-metadata.json
file are located on network storage. Therefore to improve the speed of your deployment block, it is best practice to create a build directory, copy in the required items for your build, then write the output archive to the output directory.
In the example below, the app_dir
contained the build instructions and files required to compile a Linux application.
mountLearnBlock
property to true
. This will mount all files for the learning block, including the training data, under a /data
directory within your block.
The training data is already split into train and test (validation) sets. Please refer to the Data section under Inputs in the custom learning block documentation for additional details.
privileged
property to true
.
This will enable internet access and pass in the project API key in the deployment-metadata.json
file (if a project development API key is set) that can be used to authenticate with the Edge Impulse API. Note that if you also require the project ID, this can be retrieved using the list active projects API endpoint.
showOptimizations
property to true
will present the user with additional optimization options on the Deployment page in Studio.
Firstly, if the supportsEonCompiler
property is set to true
(see below), the user will be presented with a dropdown to select between building the deployment using the EON Compiler or standard TFLite file inputs.
Secondly, the user will be presented with quantization options, if applicable. If the user selects the quantized model option, the trained.tflite
file will be the int8
version of the model; otherwise it will be the float32
version.
supportsEonCompiler
property is set to true
, the inputs for the deployment block will be the EON Compiler version of the files; otherwise the inputs will be the TFLite version of the files.
However, if the showOptimizations
property is set to true
(see above), the user will have the option on the Deployment page in Studio to select between the EON Compiler or standard TFLite file inputs.
edge-impulse-blocks runner
tool. See Block runner for additional details. The runner does not expect any command line arguments for deployment blocks. However, if your deployment block requires arguments, you can pass them as a single string using the --extra-args <args>
argument.
--clean
flag.
Using the above approach will create an ei-block-data
directory within your custom block directory. It will contain several subdirectories.
Directory | Description |
---|---|
download/ | Download directory for the archive of required input files for the deployment block. |
<project-id>/input/ | The input files archive will be automatically extracted to this location. |
<project-id>/output/ | Where the output from your build script is expected to be written. |
--download-data <dir>
argument. The directory specifies the location where the downloaded data should be extracted. To make this work properly the directory needs to be named input/
. Before extraction, the data archive will first be downloaded to ei-block-data/download/
.
Custom block
as your deployment option. This will allow you to download a ZIP file of the required input files for you deployment block. Extract this archive to a directory called input/
within your custom deployment block directory.
After downloading the required input files for your block, you can then build the Docker image and run the container.
deploy
.
Below are direct links to a some examples: