# Copyright 2021 DeepMind Technologies Limited # # 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. ARG CUDA=11.1.1 FROM nvidia/cuda:${CUDA}-cudnn8-runtime-ubuntu18.04 # FROM directive resets ARGS, so we specify again (the value is retained if # previously set). ARG CUDA # Use bash to support string substitution. SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ build-essential \ cmake \ cuda-command-line-tools-$(cut -f1,2 -d- <<< ${CUDA//./-}) \ git \ hmmer \ kalign \ tzdata \ wget \ && rm -rf /var/lib/apt/lists/* \ && apt-get autoremove -y \ && apt-get clean # Compile HHsuite from source. RUN git clone --branch v3.3.0 https://github.com/soedinglab/hh-suite.git /tmp/hh-suite \ && mkdir /tmp/hh-suite/build \ && pushd /tmp/hh-suite/build \ && cmake -DHAVE_AVX2=1 -DCMAKE_INSTALL_PREFIX=/opt/hhsuite .. \ && make -j 4 && make install \ && ln -s /opt/hhsuite/bin/* /usr/bin \ && popd \ && rm -rf /tmp/hh-suite # Install Miniconda package manager. RUN wget -q -P /tmp \ https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \ && bash /tmp/Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda \ && rm /tmp/Miniconda3-latest-Linux-x86_64.sh # Install conda packages. ENV PATH="/opt/conda/bin:$PATH" RUN conda install -qy conda==4.13.0 \ && conda install -y -c conda-forge \ openmm=7.5.1 \ cudatoolkit==${CUDA_VERSION} \ pdbfixer \ pip \ python=3.8 \ && conda clean --all --force-pkgs-dirs --yes RUN git clone -b v2.3.0 --single-branch https://github.com/deepmind/alphafold.git /app/alphafold RUN wget -q -P /app/alphafold/alphafold/common/ \ https://git.scicore.unibas.ch/schwede/openstructure/-/raw/7102c63615b64735c4941278d92b554ec94415f8/modules/mol/alg/src/stereo_chemical_props.txt # Install pip packages. RUN pip3 install --upgrade pip --no-cache-dir \ && pip3 install -r /app/alphafold/requirements.txt --no-cache-dir \ && pip3 install --upgrade --no-cache-dir \ jax==0.3.25 \ jaxlib==0.3.25+cuda11.cudnn805 \ -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html # Apply OpenMM patch. WORKDIR /opt/conda/lib/python3.8/site-packages RUN patch -p0 < /app/alphafold/docker/openmm.patch # Add SETUID bit to the ldconfig binary so that non-root users can run it. RUN chmod u+s /sbin/ldconfig.real ## SageMaker specific RUN pip3 install sagemaker-training --upgrade --no-cache-dir ENV PATH="/opt/ml/code:${PATH}" # this environment variable is used by the SageMaker PyTorch container to determine our user code directory. ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code ## AWSCLI RUN apt-get update && apt-get install --no-install-recommends -y unzip RUN wget -q -P /opt/ https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip \ && unzip /opt/awscli-exe-linux-x86_64.zip -d /opt/ \ && /opt/aws/install