mirror of https://github.com/InternLM/InternLM
				
				
				
			
		
			
				
	
	
		
			142 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			142 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 |