Running Inference#
Verify Server Health#
Perform a health check on the gRPC endpoint.
Install
grpcurl
from the fullstorydev/grpcurl repo.Example commands to run on Ubuntu:
wget https://github.com/fullstorydev/grpcurl/releases/download/v1.9.1/grpcurl_1.9.1_linux_amd64.deb sudo dpkg -i grpcurl_1.9.1_linux_amd64.deb
Download the health checking proto:
wget https://raw.githubusercontent.com/grpc/grpc/master/src/proto/grpc/health/v1/health.proto
Run the health check on
<server_ip>
or localhost:grpcurl --plaintext --proto health.proto <server_ip>:8001 grpc.health.v1.Health/Check
If the service is ready, you get a response similar to the following:
{ "status": "SERVING" }
Note
To use grpcurl with an SSL enabled server, avoid using the --plaintext
argument. Instead, use --cacert
with a CA certificate, --key
with a private key, or --cert
with a certificate file. For more details, refer to grpcurl --help
.
Running Inference via Script#
1. Clone the Repository#
Download the BNR Python client code by cloning the NVIDIA Maxine NIM Clients repository:
git clone https://github.com/NVIDIA-Maxine/nim-clients.git
# Go to the 'bnr' folder
cd nim-clients/bnr/
2. Install Dependencies#
sudo apt-get install python3-pip
pip install -r requirements.txt
3. Run the Python Client#
You can use the sample client script in the BNR GitHub repo to send a gRPC request to the hosted NIM server:
Go to the scripts directory.
cd scripts
Ensure that the server is launched in the correct mode.
To use the client in Streaming mode, launch the NIM in Streaming mode.
To use the client in Transactional mode, launch the NIM in Transactional mode.
Run the command to send the gRPC request.
python bnr.py --target <server_ip:port> --input <input_audio_file_path> --output <output_audio_file_path>
Transactional mode: The following example command processes the packaged sample audio file and generates a bnr_48k_output.wav
file in the current folder.
python bnr.py --target 127.0.0.1:8001 --input ../assets/bnr_48k_input.wav --output bnr_48k_output.wav
Streaming mode: The following example command streams the raw audio data from the sample audio file in 10 ms chunks and saves streamed output from the NIM to bnr_48k_output.wav
file in the current folder.
python bnr.py --target 127.0.0.1:8001 --input ../assets/bnr_48k_input.wav --output bnr_48k_output.wav --streaming --sample-rate 48000
Only WAV files are supported as inputs.
For more details on modes, refer to Overview.
Note
When using --streaming
mode, ensure that the selected --sample-rate
(48000, 16000) aligns with the NIM_MODEL_PROFILE
model type configuration to maintain compatibility.
eg: if --sample-rate
is 48000, then NIM_MODEL_PROFILE
with model type v1-48k or v1-16k needs to be selected.
Note
Be aware that the first inference isn’t indicative of the model’s performance.
Usage for Preview API Request#
The Preview API provides a hosted version of BNR, which can be used for testing.
To use the hosted version of the API, use the following command:
python bnr.py --preview-mode \
--ssl-mode TLS \
--target grpc.nvcf.nvidia.com:443 \
--function-id <function_id> \
--api-key $API_KEY_REQUIRED_IF_EXECUTING_OUTSIDE_NGC \
--input <input_file_path> \
--output <output_file_path>
For further details, refer to the Try API documentation.
Command-Line Arguments#
To view the details of command-line arguments, run this command:
python bnr.py -h
--target <ip:port>
- URI of NIM’s gRPC service. Usegrpc.nvcf.nvidia.com:443
when hosted on NVCF. Default value is127.0.0.1:8001
.--preview-mode
- Flag to send request to preview NVCF server on Try API.--ssl-mode
- Set the SSL mode toTLS
orMTLS
. Defaults to no SSL. When running preview, TLS mode must be used with the default root certificate.--ssl-key
- The path to client’s PEM encoded private key. Only required for MTLS mode.--ssl-cert
- The path to client’s PEM encoded public certificate. Only required for MTLS mode.--ssl-root-cert
- The path to PEM encoded root certificate. Used only for TLS or MTLS modes.--api-key <NGC_API_KEY>
- NGC API key required for authentication. Utilized when using TRY API, ignored otherwise.--function-id
- NVCF function ID for the service. Utilized when using TRY API, ignored otherwise.--input
- The path to the input audio file. Default value is../assets/bnr_48k_input.wav
.--output
- The path for the output audio file. Default is./bnr_48k_output.wav
.--streaming
- Flag to enable grpc streaming mode.--sample-rate
- Sample rate of input audio file in Hz. It can be set to48000
or16000
. Default value is48000
.--intensity-ratio
- Intensity ratio value between 0 and 1 to control denoising intensity. Default is 1.0 (maximum denoising).