FROM quay.io/pypa/manylinux_2_28_x86_64 AS base
ENV LC_ALL=en_US.UTF-8 \
LANG=en_US.UTF-8 \
LANGUAGE=en_US.UTF-8
ENV PATH=/usr/local/bin:$PATH
RUN echo "alias ll='ls -l --color=auto'" >> /root/.bashrc
ARG PY_VERSION=3.10
RUN cd /usr/local/bin \
&& PY_TAG="cp$(echo ${PY_VERSION} | tr -d .)" \
&& if [ ! -d "/opt/python/${PY_TAG}-${PY_TAG}" ]; then echo "Unsupported Python version: ${PY_VERSION}" && exit 1; fi \
&& ln -sf /opt/python/${PY_TAG}-${PY_TAG}/bin/pip${PY_VERSION} pip${PY_VERSION} \
&& ln -sf /opt/python/${PY_TAG}-${PY_TAG}/bin/pip${PY_VERSION} pip3 \
&& ln -sf /opt/python/${PY_TAG}-${PY_TAG}/bin/pip${PY_VERSION} pip \
&& ln -sf /opt/python/${PY_TAG}-${PY_TAG}/bin/python${PY_VERSION} python${PY_VERSION} \
&& ln -sf /opt/python/${PY_TAG}-${PY_TAG}/bin/python${PY_VERSION} python3 \
&& ln -sf /opt/python/${PY_TAG}-${PY_TAG}/bin/python${PY_VERSION} python
RUN mkdir /root/.pip \
&& echo "[global]" > /root/.pip/pip.conf \
&& echo "index-url=https://mirrors.huaweicloud.com/repository/pypi/simple" >> /root/.pip/pip.conf \
&& echo "trusted-host=repo.huaweicloud.com" >> /root/.pip/pip.conf \
&& echo "timeout=120" >> /root/.pip/pip.conf
RUN yum install -y \
bzip2 \
curl \
file \
git \
sudo \
unzip \
util-linux \
wget \
which && \
yum clean all && \
rm -rf /var/cache/yum && \
rm -rf /tmp/*
RUN git config --global --add safe.directory "*"
FROM base AS builder
ARG PY_VERSION
ARG DEVTOOLSET_VERSION=13
ARG TORCH_VERSION=2.13.0.dev20260521
RUN yum install -y \
autoconf \
automake \
bison \
diffutils \
make \
mold \
ninja-build \
patch \
perl \
yum-utils \
zlib-devel \
gcc-toolset-${DEVTOOLSET_VERSION}-gcc \
gcc-toolset-${DEVTOOLSET_VERSION}-gcc-c++ \
gcc-toolset-${DEVTOOLSET_VERSION}-gcc-gfortran \
gcc-toolset-${DEVTOOLSET_VERSION}-gdb && \
yum clean all && \
rm -rf /var/cache/yum && \
rm -rf /tmp/*
ENV PATH=/opt/rh/gcc-toolset-${DEVTOOLSET_VERSION}/root/usr/bin:$PATH \
LD_LIBRARY_PATH=/opt/rh/gcc-toolset-${DEVTOOLSET_VERSION}/root/usr/lib64:/opt/rh/gcc-toolset-${DEVTOOLSET_VERSION}/root/usr/lib:$LD_LIBRARY_PATH
RUN python3 -mpip install cmake==3.18.4.post1 && \
ln -sf /usr/local/bin/cmake /usr/bin/cmake3
RUN case "${PY_VERSION}" in \
3.10) NUMPY_VER=1.23.2 ;; \
3.11|3.12) NUMPY_VER=1.26.2 ;; \
3.13) NUMPY_VER=2.1.2 ;; \
3.14) NUMPY_VER=2.3.4 ;; \
*) echo "Unsupported Python version: ${PY_VERSION}" && exit 1 ;; \
esac && \
pip${PY_VERSION} install pyyaml && \
pip${PY_VERSION} install setuptools wheel && \
case "${TORCH_VERSION}" in \
*.dev*) pip${PY_VERSION} install torch==${TORCH_VERSION} --index-url https://download.pytorch.org/whl/nightly/cpu ;; \
*) pip${PY_VERSION} install torch==${TORCH_VERSION} --index-url https://download.pytorch.org/whl/cpu ;; \
esac && \
pip${PY_VERSION} install numpy==${NUMPY_VER}
FROM builder AS dev
ARG CANN_VERSION=9.1.0_beta.1
ARG CANN_PRODUCT=910b
ARG INSTALL_NNAL=0
ARG CANN_RELEASE_TRAIN=CANN%209.1.T1
RUN CANN_FILE_VER=$(echo ${CANN_VERSION} | sed 's/_beta/-beta/') && \
ARCH_NAME=$(uname -m) && \
CANN_URL=https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/${CANN_RELEASE_TRAIN} && \
ln -sf /dev/stdout /dev/tty && \
wget ${CANN_URL}/Ascend-cann-toolkit_${CANN_FILE_VER}_linux-${ARCH_NAME}.run && \
bash Ascend-cann-toolkit_${CANN_FILE_VER}_linux-${ARCH_NAME}.run --install --install-path=/usr/local/Ascend --quiet && \
rm -f Ascend-cann-toolkit_${CANN_FILE_VER}_linux-${ARCH_NAME}.run && \
wget ${CANN_URL}/Ascend-cann-${CANN_PRODUCT}-ops_${CANN_FILE_VER}_linux-${ARCH_NAME}.run && \
bash Ascend-cann-${CANN_PRODUCT}-ops_${CANN_FILE_VER}_linux-${ARCH_NAME}.run --install --type=toolkit --install-path=/usr/local/Ascend --quiet && \
rm -f Ascend-cann-${CANN_PRODUCT}-ops_${CANN_FILE_VER}_linux-${ARCH_NAME}.run && \
if [ "$INSTALL_NNAL" = "1" ]; then \
CANN_NNAL_VER=$(echo ${CANN_VERSION} | sed 's/_beta\.[0-9][0-9]*//') && \
wget ${CANN_URL}/Ascend-cann-nnal_${CANN_NNAL_VER}_linux-${ARCH_NAME}.run && \
bash Ascend-cann-nnal_${CANN_NNAL_VER}_linux-${ARCH_NAME}.run --install --install-path=/usr/local/Ascend --quiet && \
rm -f Ascend-cann-nnal_${CANN_NNAL_VER}_linux-${ARCH_NAME}.run; \
fi && \
rm -f /dev/tty && \
echo "source /usr/local/Ascend/cann/set_env.sh" > /etc/profile.d/cann.sh && \
if [ "$INSTALL_NNAL" = "1" ]; then \
echo "source /usr/local/Ascend/nnal/atb/set_env.sh" >> /etc/profile.d/cann.sh; \
fi && \
chmod +x /etc/profile.d/cann.sh && \
echo "source /usr/local/Ascend/cann/set_env.sh" >> /root/.bashrc && \
echo "export ASCEND_GLOBAL_LOG_LEVEL=3" >> /root/.bashrc && \
echo "export ASCEND_SLOG_PRINT_TO_STDOUT=0" >> /root/.bashrc && \
echo "export LD_LIBRARY_PATH=/usr/local/Ascend/cann/lib64:/usr/local/Ascend/cann/opp/op_proto/built-in:\$LD_LIBRARY_PATH" >> /root/.bashrc
WORKDIR /home