Kubernetes OOMКубленные контейнеры для Tensorflow - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть модель Keras (бэкэнд тензорного потока), которая отлично работает на моем ноутбуке (16 ГБ ОЗУ).

Однако я использую Kubeflow для развертывания его в GCP, и каждый раз, когда модуль завершается (OOMKilled). Для ЦП и памяти заданы как запросы, так и ограничения.

Dockerfile, который создает для меня kubeflow:

FROM gcr.io/deeplearning-platform-release/tf-cpu.1-14
WORKDIR /python_env
COPY requirements.txt .
RUN python3 -m pip install -r requirements.txt
COPY . .

Из некоторого файла журнала выводится что-то похожее на Tensorflow:

First RAM-looking message:
time="2019-11-03T22:17:14Z" level=info msg="Alloc=3248 TotalAlloc=11862 Sys=70846 NumGC=12 Goroutines=11

Final RAM-looking message:
time="2019-11-03T22:52:14Z" level=info msg="Alloc=3254 TotalAlloc=11952 Sys=70846 NumGC=29 Goroutines=11

Но, в конечном счете, объем ОЗУ растет с линейной кривой до тех пор, пока она не завершится через ~ 50 минут.

Модель проста, и хотя данные представляют собой CSV-файл размером ~ 1 ГБ, он загружается немедленно, и происходит сбой. случается примерно в 3-ю эпоху.

Я подозреваю, что Tensorflow не соблюдает максимальные ограничения памяти.

Я пробовал разные запросы / ограничения, и, действительно, как я уже говорил, модель хорошо тренировалась наМой ноутбук ранее.

Что я могу попробовать? Где лежит ошибка?

Соответствующая часть спецификации контейнера:

      resources:
        limits:
          cpu: '7'
          memory: 26Gi
        requests:
          cpu: '7'
          memory: 26Gi

Узел был подготовлен автоматически с помощью автоматической инициализации GKE - он создал n1-standard-8, то есть 8 VCPU, 30ГБ ОЗУ.

...