Мы пытаемся развернуть нашу модель в Kubernetes, используя Tensorflow Serving.Ранее мы развернули нашу модель ( SSD + Inception ) на K8S с нашим собственным базовым образом для докера, который мы создали с помощью Bazel.Конфигурация K8S была такой: Размер кластера - 2 узла на узел. Конфигурация - 20 ГБ памяти, 2 графических процессора, 8vCPU
. Теперь мы изменили нашу модель и используем Retinanet с Resnet50 .На этот раз мы используем базовый образ для докера из докерского хаба Tensorflow ( тензор потока / обслуживание: latest-devel-gpu ) с той же конфигурацией K8S.
Теперь проблема возникла раньше, когда мы былимы смогли получить прогноз для 500 изображений в пакете, и мы смогли отправить эти 500 изображений в пакете, используя несколько рабочих (неограниченно), но теперь в новом развертывании мы не можем отправить более 100 изображений в пакете.Мы получаем ошибку OOM следующим образом:
{'error': 'OOM when allocating tensor with shape[150,256,160,160] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc\n\t [[Node: FeatureExtractor/resnet_v1_50/resnet_v1_50/block1/unit_1/bottleneck_v1/conv3/Conv2D = Conv2D[T=DT_FLOAT, data_format="NCHW", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](FeatureExtractor/resnet_v1_50/resnet_v1_50/block1/unit_1/bottleneck_v1/conv2/Relu6, FeatureExtractor/resnet_v1_50/block1/unit_1/bottleneck_v1/conv3/weights)]]\nHint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info
Мы также проверили использование памяти K8S, и она не была полностью использована (максимум 30%).Может кто-нибудь сказать нам, почему мы получаем эту ошибку «Недостаточно памяти» и какую память ссылается на Tensorflow?
TIA