Container Deployment

We offer Docker containers via the NGC registry for deployment purposes. This guide will demonstrate how to deploy an operational Audio2Face cluster by configuring and running the Docker images for both the Audio2Face Microservice and the A2F Controller Microservice.

It is also possible to deploy the Audio2Face Microservice independently; however, this approach necessitates additional gRPC server configuration. For protocol details, see gRPC directly with Audio2Face.

Before proceeding, it’s essential to familiarize yourself with the concepts, services, and requirements necessary to run an Audio2Face cluster by reading the Architecture Overview page.

Prerequisites

In order to run the microservices you will need access to the NGC docker registry.

Make sure you have an NVAIE Access, your Personal Key and that you are logged in to the nvcr.io registry.

You will also need the NVIDIA Container Toolkit configured with Docker.

Quick Deployment of Audio2Face and A2F Controller Microservices

Instead of deploying the Audio2Face and A2F controller services individually, you can quickly deploy them together using the docker-compose file following the quick-start instructions provided in the NVIDIA ACE repo. The following sections go into more detail on deploying the services individually and their respective configurations.

Running Audio2Face Microservice

Microservice configs

Parameters related to the A2F microservice configuration, gRPC communication, and inference can be configured prior to launching the services. For more details, see Audio2Face Microservice Configuration.

Note

To ensure proper connection between A2F and the A2F controller, verify that the grpc_input/port and grpc_output/port match the IO ports defined in audio2face in Audio2Face Controller Microservice Configuration.

Starting the container

To start the container:

$ docker run -it --rm --network=host --gpus all nvcr.io/eevaigoeixww/animation/audio2face:1.0.11

This will create a container running the audio2face environment. Notice the --gpus all is specified to bridge a GPU to the Docker container. You can customize this option with your preferences.

We also use --network=host to bind all ports on local network. If you want thin control over port binding, use the -p directive instead with the appropriate ports.

This should prompt you into this shell:

=============================
== Triton Inference Server ==
=============================

NVIDIA Release 23.03 (build 56086596)
Triton Server Version 2.32.0

Copyright (c) 2018-2023, NVIDIA CORPORATION & AFFILIATES.  All rights reserved.

Various files include modifications (c) NVIDIA CORPORATION & AFFILIATES.  All rights reserved.

This container image and its contents are governed by the NVIDIA Deep Learning Container License.
By pulling and using the container, you accept the terms and conditions of this license:
https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license

root@my-pc:/opt/nvidia/a2f_pipeline#

Generating the models

Now we need to generate the models weights for the current GPU used by the machine.

Note

You can back up the generated model to skip model generation on container started but be aware that every model is specific for each GPU. The generated model is located in the /tmp/a2f_pipeline directory inside the container.

Generate the A2F model using claire_v1.3 settings:

$ ./service/generate_trt_model.py built-in claire_v1.3

Generate the A2E model:

$ ./service/generate_a2e_trt_model.py

Starting the service

Finally, we can start the service using the configuration file.

$ ./service/launch_service.py service/a2f_config.yaml

You should see a log like this one signalling proper start of the A2F service.

[2024-04-23 12:44:33.066] [  global  ] [info] Running...

Running A2F Controller Microservice

Microservice configs

Parameters related to the A2F Controller microservice configuration and gRPC communication can be configured prior to launching the services. For more details, see Audio2Face Controller Microservice Configuration.

Starting the container

To start the container:

$ docker run -it --rm --network=host nvcr.io/eevaigoeixww/animation/a2f_controller:1.0.6

This will create a container running the audio2face environment. Notice the --gpus all is this time missing because the A2F Controller does not need any GPU to run.

We also use --network=host to bind all ports on local network. If you want thin control over port binding, use the -p directive instead with the appropriate ports.

Starting the service

$ ./service/launch_service.py service/ac_a2f_config.yaml

Should start the service properly.

You can then try to interact with the A2F Cluster using one of our clients, for instance the sample app provided.