ParamDev's picture
Upload folder using huggingface_hub
a01ef8c verified
#
# Copyright (c) 2023 Intel Corporation
#
# 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.
#
# SPDX-License-Identifier: Apache-2.0
ARG IMAGE_NAME=ubuntu
ARG IMAGE_TAG=22.04
FROM ${IMAGE_NAME}:${IMAGE_TAG} as base
# TLT base target
FROM base as tlt-base
ARG PYTHON=python3
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends --fix-missing \
libgl1 \
libglib2.0-0 \
${PYTHON} \
python3-pip && \
apt-get clean autoclean && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/*
RUN ln -sf "$(which ${PYTHON})" /usr/bin/python
# TLT target for GitHub actions
FROM tlt-base as tlt-ci
ENV DEBIAN_FRONTEND=noninteractive
ENV LANG C.UTF-8
ARG PYTHON=python3
RUN apt-get update && apt-get install -y --no-install-recommends --fix-missing \
${PYTHON}-dev \
${PYTHON}-distutils \
build-essential \
ca-certificates \
make \
pandoc && \
apt-get clean autoclean && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/*
RUN ${PYTHON} -m pip install virtualenv
# TLT target for development
FROM tlt-ci as tlt-devel
COPY . /tmp/intel-transfer-learning
WORKDIR /tmp/intel-transfer-learning
RUN ${PYTHON} setup.py bdist_wheel && \
pip install --no-cache-dir -f https://download.pytorch.org/whl/cpu/torch_stable.html dist/*.whl
# TLT target for deployment
FROM tlt-base as tlt-prod
COPY --from=tlt-devel /usr/local/lib/python3.10/dist-packages /usr/local/lib/python3.10/dist-packages
COPY --from=tlt-devel /usr/local/bin /usr/local/bin
ENV DATASET_DIR=/tmp/data
ENV OUTPUT_DIR=/tmp/output
# TLT target for running with MPI
FROM tlt-prod as tlt-mpi
RUN apt-get update && apt-get install -y --no-install-recommends --fix-missing \
libopenmpi-dev \
openmpi-bin \
openmpi-common \
openssh-client \
openssh-server && \
apt-get clean autoclean && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/*
# Create a wrapper for OpenMPI to allow running as root by default
RUN mv /usr/bin/mpirun /usr/bin/mpirun.real && \
echo '#!/bin/bash' > /usr/bin/mpirun && \
echo 'mpirun.real --allow-run-as-root "$@"' >> /usr/bin/mpirun && \
chmod a+x /usr/bin/mpirun
# Configure OpenMPI to run good defaults:
RUN echo "btl_tcp_if_exclude = lo,docker0" >> /etc/openmpi/openmpi-mca-params.conf
# Install OpenSSH for MPI to communicate between containers and allow OpenSSH to
# talk to containers without asking for confirmation
RUN mkdir -p /var/run/sshd && \
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
# TLT target for with MPI, Horovod and all development tools
FROM tlt-mpi as tlt-dist-devel
ARG HOROVOD_WITH_PYTORCH=1
ARG HOROVOD_WITHOUT_MXNET=1
ARG HOROVOD_WITH_TENSORFLOW=1
ARG HOROVOD_VERSION
ARG PYTHON=python3
RUN apt-get update && apt-get install -y --no-install-recommends --fix-missing \
build-essential \
cmake \
g++ \
gcc \
git \
${PYTHON}-dev && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN python -m pip install --no-cache-dir horovod==${HOROVOD_VERSION}
ARG ONECCL_VERSION
ARG ONECCL_URL=https://developer.intel.com/ipex-whl-stable-cpu
RUN python -m pip install --no-cache-dir oneccl_bind_pt==${ONECCL_VERSION} -f ${ONECCL_URL}
COPY . /tmp/intel-transfer-learning
WORKDIR /tmp/intel-transfer-learning
FROM tlt-mpi as tlt-dist-prod
COPY --from=tlt-dist-devel /usr/local/lib/${PYTHON}/dist-packages /usr/local/lib/python3.10/dist-packages
COPY --from=tlt-dist-devel /usr/local/bin /usr/local/bin