Description
I am developing a gRPC client in C# using .NET Core to communicate with the NVIDIA Triton Inference Server for model inference. I am attempting to send FP16 image data to the densenet_onnx model hosted on Triton Server.
I encountered the following error during compilation:
error CS1061: 'InferTensorContents' does not contain a definition for 'RawContents' and no accessible extension method 'RawContents' accepting a first argument of type 'InferTensorContents' could be found (are you missing a using directive or an assembly reference?)
Environment
Triton Server:
- Triton Server Version: 2.35.0
- Docker Image Used:
nvcr.io/nvidia/tritonserver:23.06-py3 - Backend: ONNX Runtime
- Model Name: densenet_onnx
- Input Datatype: FP16
- gRPC API Version: 2.35.0
- Ports Open:
- 8000 (HTTP)
- 8001 (gRPC)
- 8002 (Metrics)
GPU:
- GPU Type: NVIDIA GeForce RTX 3060 Laptop GPU
- Driver Version: 566.36
- CUDA Version: 12.7
- CUDNN Version: 9.7.0
- Memory Usage: 1254 MiB / 6144 MiB
- GPU Utilization: 4%
Operating System:
- OS: Ubuntu 20.04 (Running WSL 2 on Windows 11)
.NET Environment:
- .NET Core Version: 8.0.405
- gRPC Client Library Version: 2.67.0
Steps To Reproduce
Docker Command Used to Run Triton Server: docker run --gpus=1 --rm -p8000:8000 -p8001:8001 -p8002:8002
-v /home/ubuntu/triton-inference-server/model_repository:/models
nvcr.io/nvidia/tritonserver:23.06-py3 tritonserver --model-repository=/models --grpc-infer-allocation-pool-size=0
Model Details:
- Model Name: densenet_onnx
- Input Tensor Name: data_0
- Input Datatype: FP16
- Input Shape: [3, 224, 224]
gRPC Client Code:
- C# .NET Core gRPC Client
- Attempting to send FP16 data using : RawContents
input.Contents = new InferTensorContents();
input.Contents.RawContents = Google.Protobuf.ByteString.CopyFrom(inputDataFp16.SelectMany(BitConverter.GetBytes).ToArray());
Relevant Files:
- Proto Files:
grpc_service.protomodel_config.protohealth.proto
- C# Client Code:
- Source Code of gRPC Client in
.NET Core
- Source Code of gRPC Client in
- Model Configuration:
- Model Repository Path:
/home/ubuntu/... - Model Name:
densenet_onnx
- Model Repository Path:
Error Encountered: âInferTensorContentsâ does not contain a definition for âRawContentsâ and no accessible extension method âRawContentsâ accepting a first argument of type âInferTensorContentsâ could be found (are you missing a using directive or an assembly reference?)
I expected the gRPC client to send the FP16 tensor data using RawContents and receive inference output from the model. but The RawContents property is not available in InferTensorContents. This prevents the client from sending the input tensor data as required by the model. Is RawContents supported in Triton Server Version 2.35.0 for gRPC FP16 input?
- what is the recommended way to send FP16 input tensors in
ushort[]format? - Should I be using
.UintContentsinstead for FP16 data? If so, what is the correct format?
I have checked the documentation and tried using .UintContents, but I am unsure if itâs the correct approach for FP16 tensors. Any guidance or suggestions would be greatly appreciated!