Kubernetes OOMЗабиленные контейнеры для Tensorflow

У меня есть модель Keras (backend тензорного потока), которая отлично работает на моем ноутбуке (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 ГБ RAM.

0 ответов

Другие вопросы по тегам