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).
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
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