mirror of https://github.com/InternLM/InternLM
143 lines
5.1 KiB
Plaintext
143 lines
5.1 KiB
Plaintext
ARG BASE_IMAGE
|
|
ARG https_proxy
|
|
ARG http_proxy
|
|
|
|
##############################################################################
|
|
# Install the basic environment on ubuntu
|
|
##############################################################################
|
|
FROM ${BASE_IMAGE} as base
|
|
ARG https_proxy
|
|
ARG http_proxy
|
|
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
ca-certificates \
|
|
cmake \
|
|
curl \
|
|
git \
|
|
wget \
|
|
tar \
|
|
m4 \
|
|
ninja-build
|
|
|
|
|
|
##############################################################################
|
|
# Install the conda environment
|
|
##############################################################################
|
|
FROM base as conda
|
|
ARG PYTHON_VERSION=3.10
|
|
ARG TARGETPLATFORM
|
|
ARG https_proxy
|
|
ARG http_proxy
|
|
RUN case ${TARGETPLATFORM} in \
|
|
"linux/arm64") MINICONDA_ARCH=aarch64 ;; \
|
|
*) MINICONDA_ARCH=x86_64 ;; \
|
|
esac && \
|
|
curl -fsSL -v -o ~/miniconda.sh -O "https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-${MINICONDA_ARCH}.sh"
|
|
|
|
RUN chmod +x ~/miniconda.sh && \
|
|
bash ~/miniconda.sh -b -p /opt/conda && \
|
|
rm ~/miniconda.sh && \
|
|
/opt/conda/bin/conda install -y python=${PYTHON_VERSION} cmake conda-build pyyaml numpy ipython && \
|
|
/opt/conda/bin/conda clean -ya
|
|
|
|
|
|
##############################################################################
|
|
# Install environment dependencies
|
|
##############################################################################
|
|
FROM conda as dep
|
|
WORKDIR /dep
|
|
ARG https_proxy
|
|
ARG http_proxy
|
|
ARG GCC_VERSION
|
|
ARG GMP_VERSION
|
|
ARG MPFR_VERSION
|
|
ARG MPC_VERSION
|
|
RUN wget https://ftp.gnu.org/gnu/gmp/gmp-${GMP_VERSION}.tar.bz2 \
|
|
&& tar -vxf gmp-${GMP_VERSION}.tar.bz2 \
|
|
&& cd gmp-${GMP_VERSION}/ \
|
|
&& ./configure --prefix=/usr/local/gmp-${GMP_VERSION} \
|
|
&& make -j64 && make install \
|
|
&& cd .. \
|
|
&& wget https://ftp.gnu.org/gnu/mpfr/mpfr-${MPFR_VERSION}.tar.gz \
|
|
&& tar -vxf mpfr-${MPFR_VERSION}.tar.gz \
|
|
&& cd mpfr-${MPFR_VERSION}/ \
|
|
&& ./configure --prefix=/usr/local/mpfr-${MPFR_VERSION} --with-gmp=/usr/local/gmp-${GMP_VERSION} \
|
|
&& make -j64 && make install \
|
|
&& cd .. \
|
|
&& wget http://www.multiprecision.org/downloads/mpc-${MPC_VERSION}.tar.gz \
|
|
&& tar -vxf mpc-${MPC_VERSION}.tar.gz \
|
|
&& cd mpc-${MPC_VERSION}/ \
|
|
&& ./configure --prefix=/usr/local/mpc-${MPC_VERSION} --with-gmp=/usr/local/gmp-${GMP_VERSION} --with-mpfr=/usr/local/mpfr-${MPFR_VERSION} \
|
|
&& make -j64 && make install \
|
|
&& cd .. \
|
|
&& wget https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.xz \
|
|
&& tar -vxJf gcc-${GCC_VERSION}.tar.xz \
|
|
&& mkdir build \
|
|
&& cd build/ \
|
|
&& ../gcc-${GCC_VERSION}/configure --prefix=/usr/local/gcc-${GCC_VERSION}/ --enable-checking=release --enable-languages=c,c++ --disable-multilib \
|
|
--with-gmp=/usr/local/gmp-${GMP_VERSION} --with-mpfr=/usr/local/mpfr-${MPFR_VERSION} --with-mpc=/usr/local/mpc-${MPC_VERSION} \
|
|
&& make -j64 && make install
|
|
|
|
ENV GCC_HOME=/usr/local/gcc-${GCC_VERSION}
|
|
ENV MPFR_HOME=/usr/local/mpfr-${MPFR_VERSION}
|
|
ENV LD_LIBRARY_PATH=${GCC_HOME}/lib64:${MPFR_HOME}/lib:${CUDA_PATH}/lib64:$LD_LIBRARY_PATH
|
|
ENV PATH=${GCC_HOME}/bin:${CUDA_PATH}/bin:$PATH
|
|
ENV CC=${GCC_HOME}/bin/gcc
|
|
ENV CXX=${GCC_HOME}/bin/c++
|
|
|
|
|
|
##############################################################################
|
|
# Install InternLM development environment, including flash-attention and apex
|
|
##############################################################################
|
|
FROM dep as intrenlm-dev
|
|
COPY . /InternLM
|
|
WORKDIR /InternLM
|
|
ARG https_proxy
|
|
ARG http_proxy
|
|
ARG PYTORCH_VERSION
|
|
ARG TORCHVISION_VERSION
|
|
ARG TORCHAUDIO_VERSION
|
|
|
|
RUN /opt/conda/bin/pip --no-cache-dir install \
|
|
transformers==4.29.2 \
|
|
sentencepiece \
|
|
numpy \
|
|
tqdm \
|
|
psutil \
|
|
packaging \
|
|
pre-commit \
|
|
ninja \
|
|
gputil \
|
|
pytest \
|
|
packaging \
|
|
boto3 \
|
|
botocore \
|
|
torch-scatter \
|
|
pyecharts \
|
|
-f https://data.pyg.org/whl/torch-${PYTORCH_VERSION}+cu117.html \
|
|
&& /opt/conda/bin/pip --no-cache-dir install \
|
|
--extra-index-url https://download.pytorch.org/whl/cu117 \
|
|
torch==${PYTORCH_VERSION}+cu117 \
|
|
torchvision==${TORCHVISION_VERSION}+cu117 \
|
|
torchaudio==${TORCHAUDIO_VERSION}
|
|
|
|
ARG https_proxy
|
|
ARG http_proxy
|
|
ARG TORCH_CUDA_ARCH_LIST="8.0;8.6+PTX"
|
|
ARG FLASH_ATTEN_TAG
|
|
|
|
RUN git submodule update --init --recursive \
|
|
&& cd /InternLM/third_party/flash-attention \
|
|
&& git checkout ${FLASH_ATTEN_TAG} \
|
|
&& /opt/conda/bin/python setup.py install \
|
|
&& cd ./csrc \
|
|
&& cd fused_dense_lib && /opt/conda/bin/pip install -v . \
|
|
&& cd ../xentropy && /opt/conda/bin/pip install -v . \
|
|
&& cd ../rotary && /opt/conda/bin/pip install -v . \
|
|
&& cd ../layer_norm && /opt/conda/bin/pip install -v . \
|
|
&& cd ../../../../ \
|
|
&& cd ./third_party/apex \
|
|
&& /opt/conda/bin/pip --no-cache-dir install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./ \
|
|
&& /opt/conda/bin/pip cache purge \
|
|
&& rm -rf ~/.cache/pip
|