Kubernetes OOM杀死Tensorflow的容器

我有一个Keras模型(tensorflow后端),可以在我的笔记本电脑(16GB RAM)上很好地运行。

但是,我使用Kubeflow将其部署到GCP,并且每次pod终止时(OOMKilled)。同时为CPU和内存指定了请求和限制。

kubeflow为我生成的dockerfile:

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

但是最终,RAM会以线性曲线增长,直到〜50分钟后终止。

该模型很简单,尽管数据是一个约1GB的CSV文件,但该文件会立即加载,并且崩溃会在第三个时期发生。

我怀疑Tensorflow没有遵守最大内存限制。

我尝试了不同的请求/限制,确实,正如我所说的,该模型以前在我的笔记本电脑上训练得很好。

我可以尝试什么?问题出在哪里?

容器规范的相关部分:

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

该节点是使用GKE的自动配置自动配置的-它创建了n1-standard-8,即8个VCPU,30 GB RAM。

jxdlzz 回答:Kubernetes OOM杀死Tensorflow的容器

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3168232.html

大家都在问