Installation

  • GPU Version requires NVidia CUDA backend, you need to install nvidia-docker first.
  • Run docker image

1. Set Environment Variable

Run these commands in your Terminal.
export VISIONAIRE_CLOUD_ACCESS_KEY=<your visionaire cloud access key>
export VISIONAIRE_CLOUD_SECRET_KEY=<your visionaire cloud secret key>
export DEPLOYMENT_KEY_SNAPSHOT=<your snapshot deployment key>
export HOST_ADDR=$(ip route get 8.8.8.8 | sed -n '/src/{s/.*src *\([^ ]*\).*/\1/p;q}')
  1. 1.
    YOUR_CLOUD_ACCESS_KEYis your access key from Visionaire Cloud.
  2. 2.
    YOUR_CLOUD_SECRET_KEYis your secret key from Visionaire Cloud.
  3. 3.
    NFFS-FR should be contained in your deployment key details.

2. Create User-Defined Docker Network & Volumes

Create a user-defined bridge network:
docker network create nf-visionaire
Create docker volumes for postgresdb:
docker volume create postgres-data

3. Run Postgres Container

Create Postgre Container
docker run -it -d -p 5432:5432 \
--name=postgresdb \
--network="nf-visionaire" \
--restart unless-stopped \
-e POSTGRES_PASSWORD=nfvisionaire123 \
-e POSTGRES_DB=nfvisionaire \
-e POSTGRES_USER=postgres \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v postgres-data:/var/lib/postgresql/data \
postgres:12-alpine
Init new additional DB
docker run -it --rm \
--network="nf-visionaire" \
-e PGPASSWORD=nfvisionaire123 \
postgres:12-alpine \
sh -c 'psql -h postgresdb -U postgres -c "CREATE DATABASE nfv4;" || true'

4. Run Visionaire Docker Snapshot (fremis-n:v2.8.5)

  • Visionaire Docker Snapshot started from versionv1.0.0no longer requires cloud username and password.
  • Start from installation will be done using the Postgre database to ensure data persistence. Database migration is required once.
  • If you have enrollments using fremis-n version below 1.4.0 and upgrading to version 1.4.0, you need to re-enroll the enrollments.
Select one of installer below:

Run FremisN Services (GPU Version) - Faster latency & higher QPS / throughput

Get a lower latency & higher QPS / throughput by using GPU version. However, GPU version requires you to set designated enrollment counts for every keyspace at a config file.
Please create a folder --which later we call it as <HOST FREMIS-N CONFIG FOLDER>--, then create a file named as config.yml inside <HOST FREMIS-N CONFIG FOLDER> with content as follows:
keyspace-enrollments_num:
<YOUR DEFINED 1st KEYSPACE>: <DESIGNATED ENROLLMENTS COUNT>
<YOUR DEFINED 2nd KEYSPACE>: <DESIGNATED ENROLLMENTS COUNT>
# ...
the command to run FRemis-N GPU
docker run --gpus device=0 -it -d -p 4005:4005 \
--name fremisn \
--network="nf-visionaire" \
-v <HOST FREMIS-N CONFIG FOLDER>:/config \
--restart unless-stopped \
nodefluxio/fremis-n:v2.8.5-gpu \
httpserver \
--access-key ${VISIONAIRE_CLOUD_ACCESS_KEY} \
--secret-key ${VISIONAIRE_CLOUD_SECRET_KEY} \
--dk ${DEPLOYMENT_KEY_SNAPSHOT} \
--db-address localhost \
--db-port 5432 \
--db-name nfvisionaire \
--db-username postgres \
--db-password nfvisionaire123 \
--listen-port 4005 \
--storage postgres \
--config-path /config/config.yml \
--verbose
Notes:
  • If you want to change the enrollments count whereas FRemis-N GPU is already running, please shut FRemis-N down > change the enrollments count value in config.yml > start again
  • Single FRemis-N container/instance doesn't support multiple GPU yet. Hence, when you run with --gpus all while the computer utilizes more than 1 GPU, likely it will fail

Run FremisN Services (CPU Version)

docker run -it -d -p 4005:4005 \
--name fremisn \
--network="nf-visionaire" \
--restart unless-stopped \
nodefluxio/fremis-n:v2.8.5-cpu \
httpserver \
--access-key ${VISIONAIRE_CLOUD_ACCESS_KEY} \
--secret-key ${VISIONAIRE_CLOUD_SECRET_KEY} \
--dk ${DEPLOYMENT_KEY_SNAPSHOT} \
--db-address postgresdb \
--db-port 5432 \
--db-name nfvisionaire \
--db-username postgres \
--db-password nfvisionaire123 \
--listen-port 4005 \
--storage postgres \
--verbose
Options
Description
-h,--help
Print this help message and exit
--access-key
Nodeflux access key
--secret-key
Nodeflux secret key
--dk
Deployment Key
--listen-addr
Address to serve REST API
-p,--listen-port
Address to serve REST API
--listen-port-monitoring
Address port of monitoring
--server-threads
Maximum number of server's threads
--similarity-threshold
Default similarity threshold
--max-workers
Maximum number of extraction workers
--storage
Storage System. The choice are: rocksdb and postgres
--data-path
Database Path of RocksDB, if rocksdb selected
--db-address
Database Address of Postgres server, if postgres selected
--db-port
Database port of Postgres server, if postgres selected
--db-name
Database name of Postgres server, if postgres selected
--db-username
Database username of Postgres server, if postgres selected
--db-password
Database password of Postgres server, if postgres selected
--partition-start
The starting number of partition set
--partition-end
The ending number of partition set
-v,--verbose
Turn on verbose logging
For getting commands help:
docker run -it --gpus device=0 nodefluxio/fremis-n:v2.8.5-gpu httpserver --help
or
docker run -it nodefluxio/fremis-n:v2.8.5-cpu httpserver --help