forked from tensorflow/tensorflow
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding the generated horovod Dockerfiles
- Loading branch information
1 parent
3023584
commit 953a5de
Showing
4 changed files
with
564 additions
and
0 deletions.
There are no files selected for viewing
177 changes: 177 additions & 0 deletions
177
tensorflow/tools/dockerfiles/dockerfiles/mkl/devel-horovod-jupyter.Dockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,177 @@ | ||
# Copyright 2019 The TensorFlow Authors. All Rights Reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# ============================================================================ | ||
# | ||
# THIS IS A GENERATED DOCKERFILE. | ||
# | ||
# This file was assembled from multiple pieces, whose use is documented | ||
# throughout. Please refer to the TensorFlow dockerfiles documentation | ||
# for more information. | ||
|
||
ARG UBUNTU_VERSION=18.04 | ||
|
||
FROM ubuntu:${UBUNTU_VERSION} AS base | ||
|
||
RUN apt-get update && apt-get install -y --no-install-recommends \ | ||
build-essential \ | ||
curl \ | ||
git \ | ||
libcurl3-dev \ | ||
libfreetype6-dev \ | ||
libhdf5-serial-dev \ | ||
libzmq3-dev \ | ||
pkg-config \ | ||
rsync \ | ||
software-properties-common \ | ||
sudo \ | ||
unzip \ | ||
zip \ | ||
zlib1g-dev \ | ||
openjdk-8-jdk \ | ||
openjdk-8-jre-headless \ | ||
&& \ | ||
apt-get clean && \ | ||
rm -rf /var/lib/apt/lists/* | ||
|
||
ENV CI_BUILD_PYTHON python | ||
|
||
# CACHE_STOP is used to rerun future commands, otherwise cloning tensorflow will be cached and will not pull the most recent version | ||
ARG CACHE_STOP=1 | ||
# Check out TensorFlow source code if --build-arg CHECKOUT_TF_SRC=1 | ||
ARG CHECKOUT_TF_SRC=0 | ||
RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src || true | ||
|
||
ARG USE_PYTHON_3_NOT_2 | ||
ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} | ||
ARG PYTHON=python${_PY_SUFFIX} | ||
ARG PIP=pip${_PY_SUFFIX} | ||
|
||
# See http://bugs.python.org/issue19846 | ||
ENV LANG C.UTF-8 | ||
|
||
RUN apt-get update && apt-get install -y \ | ||
${PYTHON} \ | ||
${PYTHON}-pip | ||
|
||
RUN ${PIP} --no-cache-dir install --upgrade \ | ||
pip \ | ||
setuptools | ||
|
||
# Some TF tools expect a "python" binary | ||
RUN ln -s $(which ${PYTHON}) /usr/local/bin/python | ||
|
||
RUN apt-get update && apt-get install -y \ | ||
build-essential \ | ||
curl \ | ||
git \ | ||
wget \ | ||
openjdk-8-jdk \ | ||
${PYTHON}-dev \ | ||
virtualenv \ | ||
swig | ||
|
||
RUN ${PIP} --no-cache-dir install \ | ||
Pillow \ | ||
h5py \ | ||
keras_applications \ | ||
keras_preprocessing \ | ||
matplotlib \ | ||
mock \ | ||
numpy \ | ||
scipy \ | ||
sklearn \ | ||
pandas \ | ||
portpicker \ | ||
&& test "${USE_PYTHON_3_NOT_2}" -eq 1 && true || ${PIP} --no-cache-dir install \ | ||
enum34 | ||
|
||
# Install bazel | ||
ARG BAZEL_VERSION=0.24.1 | ||
RUN mkdir /bazel && \ | ||
wget -O /bazel/installer.sh "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${BAZEL_VERSION}-installer-linux-x86_64.sh" && \ | ||
wget -O /bazel/LICENSE.txt "https://raw.githubusercontent.com/bazelbuild/bazel/master/LICENSE" && \ | ||
chmod +x /bazel/installer.sh && \ | ||
/bazel/installer.sh && \ | ||
rm -f /bazel/installer.sh | ||
|
||
# install libnuma, openssh, wget | ||
RUN apt-get update && apt-get install -y --no-install-recommends --fix-missing \ | ||
libnuma-dev \ | ||
openssh-server \ | ||
openssh-client \ | ||
wget && \ | ||
apt-get clean && \ | ||
rm -rf /var/lib/apt/lists/* || \ | ||
yum -y update && yum -y install \ | ||
numactl-devel \ | ||
openssh-server \ | ||
openssh-clients \ | ||
wget && \ | ||
yum clean all || \ | ||
echo "Unsupported Linux distribution. Aborting!" && exit 1 | ||
|
||
# Install Open MPI | ||
RUN mkdir /tmp/openmpi && \ | ||
cd /tmp/openmpi && \ | ||
wget https://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.0.tar.gz && \ | ||
tar zxf openmpi-4.0.0.tar.gz && \ | ||
cd openmpi-4.0.0 && \ | ||
./configure --enable-orterun-prefix-by-default && \ | ||
make -j $(nproc) all && \ | ||
make install && \ | ||
ldconfig && \ | ||
rm -rf /tmp/openmpi | ||
|
||
# Create a wrapper for OpenMPI to allow running as root by default | ||
RUN mv /usr/local/bin/mpirun /usr/local/bin/mpirun.real && \ | ||
echo '#!/bin/bash' > /usr/local/bin/mpirun && \ | ||
echo 'mpirun.real --allow-run-as-root "$@"' >> /usr/local/bin/mpirun && \ | ||
chmod a+x /usr/local/bin/mpirun | ||
|
||
# Configure OpenMPI to run good defaults: | ||
RUN echo "btl_tcp_if_exclude = lo,docker0" >> /usr/local/etc/openmpi-mca-params.conf | ||
|
||
# Install OpenSSH for MPI to communicate between containers | ||
RUN mkdir -p /var/run/sshd | ||
|
||
# Allow OpenSSH to talk to containers without asking for confirmation | ||
RUN cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new && \ | ||
echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new && \ | ||
mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config | ||
|
||
# Check out horovod source code if --build-arg CHECKOUT_HOROVOD_SRC=1 | ||
ARG CHECKOUT_HOROVOD_SRC=0 | ||
RUN test "${CHECKOUT_HOROVOD_SRC}" -eq 1 && git clone --recursive https://github.com/uber/horovod.git /horovod_src || true | ||
|
||
COPY bashrc /etc/bash.bashrc | ||
RUN chmod a+rwx /etc/bash.bashrc | ||
|
||
RUN ${PIP} install jupyter matplotlib | ||
RUN ${PIP} install jupyter_http_over_ws | ||
RUN jupyter serverextension enable --py jupyter_http_over_ws | ||
|
||
RUN mkdir -p /tf/tensorflow-tutorials && chmod -R a+rwx /tf/ | ||
RUN mkdir /.local && chmod a+rwx /.local | ||
RUN apt-get install -y --no-install-recommends wget | ||
WORKDIR /tf/tensorflow-tutorials | ||
RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/basic_classification.ipynb | ||
RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/basic_text_classification.ipynb | ||
COPY readme-for-jupyter.md README.md | ||
RUN apt-get autoremove -y && apt-get remove -y wget | ||
WORKDIR /tf | ||
EXPOSE 8888 | ||
|
||
RUN ${PYTHON} -m ipykernel.kernelspec | ||
|
||
CMD ["bash", "-c", "source /etc/bash.bashrc && jupyter notebook --notebook-dir=/tf --ip 0.0.0.0 --no-browser --allow-root"] |
158 changes: 158 additions & 0 deletions
158
tensorflow/tools/dockerfiles/dockerfiles/mkl/devel-horovod.Dockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,158 @@ | ||
# Copyright 2019 The TensorFlow Authors. All Rights Reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# ============================================================================ | ||
# | ||
# THIS IS A GENERATED DOCKERFILE. | ||
# | ||
# This file was assembled from multiple pieces, whose use is documented | ||
# throughout. Please refer to the TensorFlow dockerfiles documentation | ||
# for more information. | ||
|
||
ARG UBUNTU_VERSION=18.04 | ||
|
||
FROM ubuntu:${UBUNTU_VERSION} AS base | ||
|
||
RUN apt-get update && apt-get install -y --no-install-recommends \ | ||
build-essential \ | ||
curl \ | ||
git \ | ||
libcurl3-dev \ | ||
libfreetype6-dev \ | ||
libhdf5-serial-dev \ | ||
libzmq3-dev \ | ||
pkg-config \ | ||
rsync \ | ||
software-properties-common \ | ||
sudo \ | ||
unzip \ | ||
zip \ | ||
zlib1g-dev \ | ||
openjdk-8-jdk \ | ||
openjdk-8-jre-headless \ | ||
&& \ | ||
apt-get clean && \ | ||
rm -rf /var/lib/apt/lists/* | ||
|
||
ENV CI_BUILD_PYTHON python | ||
|
||
# CACHE_STOP is used to rerun future commands, otherwise cloning tensorflow will be cached and will not pull the most recent version | ||
ARG CACHE_STOP=1 | ||
# Check out TensorFlow source code if --build-arg CHECKOUT_TF_SRC=1 | ||
ARG CHECKOUT_TF_SRC=0 | ||
RUN test "${CHECKOUT_TF_SRC}" -eq 1 && git clone https://github.com/tensorflow/tensorflow.git /tensorflow_src || true | ||
|
||
ARG USE_PYTHON_3_NOT_2 | ||
ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} | ||
ARG PYTHON=python${_PY_SUFFIX} | ||
ARG PIP=pip${_PY_SUFFIX} | ||
|
||
# See http://bugs.python.org/issue19846 | ||
ENV LANG C.UTF-8 | ||
|
||
RUN apt-get update && apt-get install -y \ | ||
${PYTHON} \ | ||
${PYTHON}-pip | ||
|
||
RUN ${PIP} --no-cache-dir install --upgrade \ | ||
pip \ | ||
setuptools | ||
|
||
# Some TF tools expect a "python" binary | ||
RUN ln -s $(which ${PYTHON}) /usr/local/bin/python | ||
|
||
RUN apt-get update && apt-get install -y \ | ||
build-essential \ | ||
curl \ | ||
git \ | ||
wget \ | ||
openjdk-8-jdk \ | ||
${PYTHON}-dev \ | ||
virtualenv \ | ||
swig | ||
|
||
RUN ${PIP} --no-cache-dir install \ | ||
Pillow \ | ||
h5py \ | ||
keras_applications \ | ||
keras_preprocessing \ | ||
matplotlib \ | ||
mock \ | ||
numpy \ | ||
scipy \ | ||
sklearn \ | ||
pandas \ | ||
portpicker \ | ||
&& test "${USE_PYTHON_3_NOT_2}" -eq 1 && true || ${PIP} --no-cache-dir install \ | ||
enum34 | ||
|
||
# Install bazel | ||
ARG BAZEL_VERSION=0.24.1 | ||
RUN mkdir /bazel && \ | ||
wget -O /bazel/installer.sh "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${BAZEL_VERSION}-installer-linux-x86_64.sh" && \ | ||
wget -O /bazel/LICENSE.txt "https://raw.githubusercontent.com/bazelbuild/bazel/master/LICENSE" && \ | ||
chmod +x /bazel/installer.sh && \ | ||
/bazel/installer.sh && \ | ||
rm -f /bazel/installer.sh | ||
|
||
# install libnuma, openssh, wget | ||
RUN apt-get update && apt-get install -y --no-install-recommends --fix-missing \ | ||
libnuma-dev \ | ||
openssh-server \ | ||
openssh-client \ | ||
wget && \ | ||
apt-get clean && \ | ||
rm -rf /var/lib/apt/lists/* || \ | ||
yum -y update && yum -y install \ | ||
numactl-devel \ | ||
openssh-server \ | ||
openssh-clients \ | ||
wget && \ | ||
yum clean all || \ | ||
echo "Unsupported Linux distribution. Aborting!" && exit 1 | ||
|
||
# Install Open MPI | ||
RUN mkdir /tmp/openmpi && \ | ||
cd /tmp/openmpi && \ | ||
wget https://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.0.tar.gz && \ | ||
tar zxf openmpi-4.0.0.tar.gz && \ | ||
cd openmpi-4.0.0 && \ | ||
./configure --enable-orterun-prefix-by-default && \ | ||
make -j $(nproc) all && \ | ||
make install && \ | ||
ldconfig && \ | ||
rm -rf /tmp/openmpi | ||
|
||
# Create a wrapper for OpenMPI to allow running as root by default | ||
RUN mv /usr/local/bin/mpirun /usr/local/bin/mpirun.real && \ | ||
echo '#!/bin/bash' > /usr/local/bin/mpirun && \ | ||
echo 'mpirun.real --allow-run-as-root "$@"' >> /usr/local/bin/mpirun && \ | ||
chmod a+x /usr/local/bin/mpirun | ||
|
||
# Configure OpenMPI to run good defaults: | ||
RUN echo "btl_tcp_if_exclude = lo,docker0" >> /usr/local/etc/openmpi-mca-params.conf | ||
|
||
# Install OpenSSH for MPI to communicate between containers | ||
RUN mkdir -p /var/run/sshd | ||
|
||
# Allow OpenSSH to talk to containers without asking for confirmation | ||
RUN cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new && \ | ||
echo " StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new && \ | ||
mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config | ||
|
||
# Check out horovod source code if --build-arg CHECKOUT_HOROVOD_SRC=1 | ||
ARG CHECKOUT_HOROVOD_SRC=0 | ||
RUN test "${CHECKOUT_HOROVOD_SRC}" -eq 1 && git clone --recursive https://github.com/uber/horovod.git /horovod_src || true | ||
|
||
COPY bashrc /etc/bash.bashrc | ||
RUN chmod a+rwx /etc/bash.bashrc |
Oops, something went wrong.