google-deepmind / alphafold

Open source code for AlphaFold 2.
Apache License 2.0
12.91k stars 2.29k forks source link

Dockerfile problem: jaxlib-0.1.75+cuda11.cudnn805-cp37-none-manylinux2010_x86_64.whl is not a supported wheel on this platform #1017

Open WenWu-Bio opened 2 months ago

WenWu-Bio commented 2 months ago

Hi` everyone,

I tried to install AlphaFold and in the building docker image step, it keeps showing error. I tried to change the Dockerfile several times based on other issues reported here, like #321 , #727 . But it still showed error. The latest error showed is

Screenshot 2024-09-18 200530

70.21 WARNING: Requirement '/app/alphafold/jaxlib-0.1.75+cuda11.cudnn805-cp37-none-manylinux2010_x86_64.whl' looks like a filename, but the file does not exist
70.25 ERROR: jaxlib-0.1.75+cuda11.cudnn805-cp37-none-manylinux2010_x86_64.whl is not a supported wheel on this platform.
------
Dockerfile:79
--------------------
  78 |     # Install pip packages.
  79 | >>> RUN pip3 install --upgrade pip \
  80 | >>>     && pip3 install -r /app/alphafold/requirements.txt \
  81 | >>>     && pip3 install /app/alphafold/jaxlib-0.1.75+cuda11.cudnn805-cp37-none-manylinux2010_x86_64.whl
  82 |         # && pip3 install --upgrade jax jaxlib==0.1.69+cuda${CUDA/./} -f \
--------------------

ERROR: failed to solve: process "/bin/bash -c pip3 install --upgrade pip     && pip3 install -r /app/alphafold/requirements.txt     && pip3 install /app/alphafold/jaxlib-0.1.75+cuda11.cudnn805-cp37-none-manylinux2010_x86_64.whl" did not complete successfully: exit code: 1

Following is my Dockerfile:

# 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.0
# FROM nvidia/cuda:${CUDA}-cudnn8-runtime-ubuntu18.04
#ARG CUDA=11.4.1
ARG CUDA=12.2.2
FROM nvidia/cuda:${CUDA}-cudnn8-runtime-ubuntu20.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", "-c"]

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
      build-essential \
      cmake \
      # cuda-command-line-tools-${CUDA/./-} \
      git \
      hmmer \
      kalign \
      tzdata \
      wget \
    && rm -rf /var/lib/apt/lists/*

CMD ["wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin"]
CMD ["sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600"]
# CMD ["wget https://developer.download.nvidia.com/compute/cuda/11.4.1/local_installers/cuda-repo-ubuntu2004-11-4-local_11.4.1-470.57.02-1_amd64.deb"]
CMD ["dpkg -i /app/alphafold/cuda-repo-ubuntu2004-11-4-local_11.4.1-470.57.02-1_amd64.deb"]
CMD ["apt-key add /var/cuda-repo-ubuntu2004-11-4-local/7fa2af80.pub"]
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y cuda

    && 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 update -qy conda \
    && conda install -y -c conda-forge \
      openmm=7.5.1 \
      # cudatoolkit==${CUDA_VERSION} \
      pdbfixer \
      pip \
#      python=3.7
#      python=3.10
      python=3.9

COPY . /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 \
    && pip3 install -r /app/alphafold/requirements.txt \
    && pip3 install /app/alphafold/jaxlib-0.1.75+cuda11.cudnn805-cp37-none-manylinux2010_x86_64.whl
    # && pip3 install --upgrade jax jaxlib==0.1.69+cuda${CUDA/./} -f \
    #  https://storage.googleapis.com/jax-releases/jax_releases.html

# Apply OpenMM patch.
WORKDIR /opt/conda/lib/python3.7/site-packages
RUN patch -p0 < /app/alphafold/docker/openmm.patch

# We need to run `ldconfig` first to ensure GPUs are visible, due to some quirk
# with Debian. See https://github.com/NVIDIA/nvidia-docker/issues/1399 for
# details.
# ENTRYPOINT does not support easily running multiple commands, so instead we
# write a shell script to wrap them up.
WORKDIR /app/alphafold
RUN echo $'#!/bin/bash\n\
ldconfig\n\
python /app/alphafold/run_alphafold.py "$@"' > /app/run_alphafold.sh \
  && chmod +x /app/run_alphafold.sh
ENTRYPOINT ["/app/run_alphafold.sh"]

My system is Ubuntu 22.04. My python is 3.10.12.

Anyone could please help me to check what is the problem in the Dockerfile? I have changed it so many times and just not able to figure it out.

Thank you!