Я использую TensorRT режим точности FP16 для оптимизации моей модели глубокого обучения. И я использую эту оптимизированную модель на Jetson TX2. Во время тестирования модели я заметил, что механизм вывода TensorRT недетерминирован. Другими словами, моя оптимизированная модель дает разные значения FPS от 40 до 120 FPS для одних и тех же входных изображений.
Я начал думать, что источником недетерминизма являются операции с плавающей запятой, когда я увидел этот комментарий о CUDA:
«Если в вашем коде используется атомарный алгоритм с плавающей запятой, результаты могут отличаться от запуска к запуску, поскольку операции с плавающей запятой обычно не ассоциативны, а порядок, в котором данные поступают в вычисление (например, сумма), недетерминирован при использовании атомики. "
Влияет ли тип точности, такой как FP16, FP32 и INT8, на детерминизм TensorRT? Или что-нибудь?
Есть ли у вас какие-нибудь мысли?
С наилучшими пожеланиями.