0

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

但是,我使用 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 文件,但它会立即加载,并且崩溃发生在第 3 个时期左右。

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

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

我可以尝试什么?错在哪里?

容器规范的相关部分:

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

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

4

0 回答 0