【问题标题】:Python 3.6 in tensorflow gpu docker imagestensorflow gpu docker 图像中的 Python 3.6
【发布时间】:2018-07-03 06:45:57
【问题描述】:

我怎样才能在tensorflow docker images中拥有python3.6。

我尝试的所有图像(最新的,夜间)都使用 python3.5,我不想修改我的所有脚本。

【问题讨论】:

标签: python-3.x docker tensorflow


【解决方案1】:

Tensorflow 镜像基于 Ubuntu 16.04,您可以从 Dockerfile 中看到。此版本标配 Python 3.5。

因此,您必须重新构建映像,并且需要编辑 Dockerfile,即使您需要使用 parameterized_docker_build.sh 脚本进行实际构建。

This answer on ask Ubuntu 介绍如何在 Ubuntu 16.04 上获取 Python 3.6

最简单的方法可能是将 Dockerfile 中的 From 行更改为 FROM ubuntu:16.10,并将初始 apt-get install 行中的 python 更改为 python3.6

当然,这可能会破坏其他一些特定于 Ubuntu 版本的东西,因此另一种方法是保留 Ubuntu 16.04 并安装链接答案中也列出的替代 ppa 之一:

RUN add-apt-repository ppa:deadsnakes/ppa &&
    apt-get update &&
    apt-get install -y python3.6
  • 请注意,您需要在初始 apt-get install 之后使用它,因为这会安装 software-properties-common,您需要添加 ppa。
  • 另请注意,与链接答案的 cmets 一样,您需要符号链接到 Python 3.6。
  • 最后,请注意我还没有尝试过这些。可能存在问题,您可能需要进行另一项更改,以确保正在运行的容器使用正确版本的 Python。

不过,David Zarebski 在他的回答中提出了一个很好的观点。你确定你需要 Python 3.6 吗?

【讨论】:

  • 将 --assume-yes 添加到apt-install 效果很好。在我的 dockerfile 中,我还添加了 pip3RUN apt-get install -y python3-pip 现在我应该如何处理它?
  • 关于yes 对不起。我已经编辑了答案。不知道你现在要做什么是什么意思?您是否按照自述文件中的说明构建了新映像?
【解决方案2】:

您可以使用由第三方提供的稳定图像,例如ufoym/deepo。 适合 TensorFlow、python3.6 和 cuda10 的可以在here 找到,也可以直接使用命令docker pull ufoym/deepo:py36-cu100拉取

我一直使用他们的图片,从来没有遇到过问题

【讨论】:

  • +1 这是一个很好的资源,但是有没有办法将 Python3.6 与 tensorflow-gpu 1.xx 结合使用? ufoym/deepo 似乎在尝试使用他们的构建工具构建 Docker 映像时使用 CPU 版本,例如从python generate.py Dockerfile tensorflow==1.13.1 python==3.6 构建的图像未检测到任何 GPU。
  • 它们有单独的 CPU 和 GPU 图像,指定 CUDA 版本的是 GPU,跳过generate.py,查看实际图像 - 选择一个适合您的基础图像,如果您需要调整特定版本根据自己的喜好编辑 Dockerfile,例如更改 TF 版本或 Python 版本
【解决方案3】:

有了这个答案,我只是想说明我是如何解决这个问题的(SiHa 之前的回答对我帮助很大,但我必须添加一些步骤才能完全工作)。

上下文:

我正在使用需要tensorflow==1.4.0keras==2.2.2 的包(unet++ 的分段模型)。 我尝试使用tensorflow 1.4.0的docker镜像,但是这个镜像的默认python版本是3.5,这与我的包不兼容。

感谢以下文件,我设法在 docker 映像上安装了 python3.6

我的 Dockerfile 包含以下几行:

Dockerfile:

FROM tensorflow/tensorflow:1.4.0-gpu-py3

RUN mkdir /AI_PLATFORM
WORKDIR /AI_PLATFORM

COPY ./install.sh ./install.sh
COPY ./requirements.txt ./requirements.txt
COPY ./computer_vision ./computer_vision
COPY ./config.ini ./config.ini

RUN bash install.sh

Install.sh:

#!/urs/bin/env bash

pip install --upgrade pip
apt-get update
apt-get install -y python3-pip
add-apt-repository ppa:deadsnakes/ppa &&
apt-get update &&
apt-get install python3.6 --assume-yes
apt-get install libpython3.6
python3.6 -m pip install --upgrade pip
python3.6 -m pip install -r requirements.txt

三件事很重要:

  • 使用python3.6 -m pip 而不是pip,否则软件包安装在python 3.5 默认版本的Ubuntu 16.04
  • 使用docker run python3.6 <command> 使用python==3.6 运行您的容器
  • 在 requirements.txt 文件中,我必须指定以下内容:
h5py==2.10.0
tensorflow-gpu==1.4.1
keras==2.2.2
keras-applications==1.0.4
keras-preprocessing==1.0.2

希望这个回答有用

【讨论】:

    【解决方案4】:

    也许我创建的图像会对您有所帮助。它基于 cuda-10.0-devel 映像并安装了 tensorflow 2.0a-gpu。

    您可以将其用作您自己的实现的基础映像。图像本身不做任何事情。我把图片放到dockerhub上https://cloud.docker.com/repository/docker/patientzero/tensorflow2.0a-gpu-py3.6

    github repo 位于:https://github.com/patientzero/tensorflow2.0-python3.6-Docker

    拉它不会做太多,但为了完整性:

    $ docker pull patientzero/tensorflow2.0-gpu-py3.6

    编辑:更改为通用 tensorflow 2.0x 图像。 同样如here 所述,beta 2.0 版本的官方镜像现在支持 python 3.6

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 2021-01-04
      相关资源
      最近更新 更多