Przejdź do głównej zawartości

Model CV na Tritonie

1. Wytrenuj i Zapisz Swój Model PyTorch

Najpierw musisz mieć wytrenowany model PyTorch. Po wytrenowaniu modelu zapisz go za pomocą funkcji torch.save() z PyTorcha.

import torch

# Załóżmy, że `model` to Twój wytrenowany model PyTorch
model_path = "path/to/your/model.pth"
torch.save(model, model_path)

2. Konwertuj Model do Formatu ONNX

Serwer inferencji Triton obsługuje wiele formatów modeli, w tym ONNX, TensorFlow i TensorRT. ONNX (Open Neural Network Exchange) jest popularnym wyborem ze względu na swoją kompatybilność z wieloma platformami i frameworkami.

Aby przekonwertować model PyTorch na ONNX:

import torch.onnx

# Załaduj wytrenowany model
model = torch.load('path/to/your/model.pt')
model.eval()

# Stwórz przykładowe dane wejściowe w kształcie oczekiwanym przez model
dummy_input = torch.randn(1, 3, 224, 224) # przykładowy kształt wejścia dla modelu obrazowego

# Eksportuj model
onnx_model_path = "path/to/exported/model.onnx"
torch.onnx.export(model, dummy_input, onnx_model_path)

3. Konwertuj Model do Formatu TensorRT Engine

TensorRT to silnik inferencji głębokiego uczenia, który optymalizuje modele do efektywnego wdrażania na sprzęcie NVIDIA. Aby skorzystać z możliwości optymalizacji TensorRT, możesz przekonwertować swój model ONNX na plik silnika TensorRT (.engine).

uwaga

Silniki TensorRT są specyficzne dla sprzętu i zoptymalizowane dla GPU, na którym zostały wygenerowane. Oznacza to, że jeśli wdrażasz model na różnych architekturach GPU (np. na innym modelu lub maszynie z GPU NVIDIA), musisz ponownie wygenerować silnik TensorRT dla każdego innego GPU.

  • Na przykład silnik wygenerowany na NVIDIA H100 może nie działać optymalnie lub wcale na NVIDIA A100. Aby zapewnić kompatybilność i wydajność, zawsze generuj nowy plik .engine na docelowej maszynie GPU.

Aby przekonwertować model ONNX na silnik TensorRT, musisz skorzystać z narzędzia wiersza poleceń trtexec.

Narzędzie trtexec to wygodny interfejs wiersza poleceń do konwertowania i optymalizacji modeli ONNX. Możesz przekonwertować swój model ONNX na silnik TensorRT, uruchamiając następujące polecenie:

trtexec --onnx=ścieżka/do/twojego/modelu.onnx --saveEngine=ścieżka/do/wyjściowego/silnika.engine --explicitBatch
  • --onnx: Ścieżka do modelu ONNX, który chcesz przekonwertować.
  • --saveEngine: Ścieżka, gdzie zapisany zostanie plik silnika TensorRT (.engine).
  • --explicitBatch: Użyj trybu explicit batch, który jest wymagany przez wiele modeli ONNX.

Możesz także określić dodatkowe argumenty, takie jak tryby precyzji (fp16, int8 itp.) oraz inne opcje (użyj polecenia trtexec --help, aby zobaczyć wszystkie dostępne opcje):

trtexec --onnx=ścieżka/do/twojego/modelu.onnx --saveEngine=ścieżka/do/wyjściowego/silnika.engine --explicitBatch --fp16 

4. Stwórz Plik Konfiguracyjny dla Tritona

Triton wymaga pliku config.pbtxt, aby zrozumieć, jak obsłużyć Twój model. Ten plik zawiera informacje o nazwie modelu, platformie (ONNX, TensorRT, itp.), wymiary wejściowych i wyjściowych oraz innych ustawieniach.

Oto przykładowy config.pbtxt dla modelu TensorRT Engine:

name: "model_name"
platform: "tensorrt_plan"
max_batch_size: 1
input [
{
name: "images0" # Nazwa warstwy wejściowej w Twoim modelu
data_type: TYPE_FP32
dims: [3, 224, 224] # Zastąp wymiarami wejściowymi Twojego modelu
}
]
output [
{
name: "output0" # Nazwa warstwy wyjściowej w Twoim modelu
data_type: TYPE_FP32
dims: [6, 17661] # Zastąp wymiarami wyjściowymi Twojego modelu
}
]

Możesz użyć netron.app, aby zobaczyć szczegóły Twojego modelu (wymiary wejścia, wymiary wyjścia itp.).

Aby uzyskać więcej informacji na temat konfiguracji modelu, odwiedź stronę z oficjalną dokumentacją

5. Wdróż Model na Tritonie

Umieść plik ONNX modelu oraz plik config.pbtxt w katalogu wewnątrz katalogu modeli Tritona. Struktura katalogów powinna wyglądać tak:

└──/models-repository
└──/model_name
├──config.pbtxt
└──/1
└──model.plan
informacja

Aby użyć wygenerowanego modelu .engine, musisz zmienić nazwę pliku na model.plan.

6. Uruchom Tritona

Aby uruchomić swój serwer inferencji Triton, proszę odnieść się do Uruchamianie