安装MindIE Turbo(容器化)
本章节以Atlas 800I A2 推理服务器A800I A2、Ubuntu24.04为基础镜像为例,指导用户如何构建MindIE Turbo的Arm和x86两种架构的镜像文件,以及启动容器化部署MindIE Turbo,请确保服务器能够连接稳定的网络。

OpenEuler和Ubuntu镜像的构建方式差异点,主要在于依赖包的安装方式不同。
前提条件
- 宿主机已经安装过NPU驱动和固件。如未安装,请参见《CANN 软件安装指南》中的“选择安装场景”章节(商用版)或“选择安装场景”章节(社区版),按如下方式选择安装场景,按“安装NPU驱动和固件”章节进行安装。
- 用户在宿主机自行安装Docker(版本要求大于或等于24.x.x),安装方式可参考Docker官方安装文档。可通过如下方式查看当前Docker版本:
docker --version
- 确保服务器能够连接稳定的网络。因为构建过程中需在线下载多个资源,包括Python源码、编译工具以及各种依赖等,无法离线构建。
- 构建镜像的环境必须满足以下条件:
表1 Docker版本 Docker
Docker Compose
>=24.x.x
>=2
操作步骤
- 构建MindIE Turbo Arm架构镜像文件
- 使用wget下载Python 3.11.10源码包,放置于某一目录下,如“/home/package”。
wget https://www.python.org/ftp/python/3.11.10/Python-3.11.10.tgz
- 参见表2,将获取的Arm架构MindIE Turbo软件包、CANN软件包、PyTorch软件包(包括torch_npu、torch)放于如上“/home/package”目录。
- 在“/home/package”路径下编写Dockerfile和docker-compose.yml,其文件目录结构如下:
. ├── Ascend-cann-kernels-910b_8.2.RC2_linux-aarch64.run ├── Ascend-cann-nnal_8.2.RC2_linux-aarch64.run ├── Ascend-cann-toolkit_8.2.RC2_linux-aarch64.run ├── Ascend-mindie-turbo_2.1.RC2_py311_linux_aarch64.tar.gz ├── Dockerfile ├── docker-compose.yml ├── Python-3.11.10.tgz ├── torch-2.5.1-cp311-cp311-linux_aarch64.whl ├── pytorch-v7.0.0-pytorch2.5.1.tar.gz
- 编写Dockerfile文件。
该Dockerfile默认使用Ubuntu24.04、Arm架构以及Python 3.11,仅作为参考,请根据实际情况自行修改。
FROM ubuntu:24.04 AS python-installer ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Asia/Shanghai ENV TERM=xterm-256color # # Configure the Ubuntu mirror. An example is provided below: RUN echo "deb http://mirrors.tools.huawei.com/ubuntu-ports/ noble main restricted universe multiverse" > /etc/apt/sources.list && \ echo "deb-src http://mirrors.tools.huawei.com/ubuntu-ports/ noble main restricted universe multiverse" >> /etc/apt/sources.list && \ echo "deb http://mirrors.tools.huawei.com/ubuntu-ports/ noble-updates main restricted universe multiverse" >> /etc/apt/sources.list && \ echo "deb-src http://repo.huaweicloud.com/ubuntu-ports/ noble-updates main restricted universe multiverse" >> /etc/apt/sources.list && \ echo "deb http://repo.huaweicloud.com/ubuntu-ports/ noble-backports main restricted universe multiverse" >> /etc/apt/sources.list && \ echo "deb-src http://repo.huaweicloud.com/ubuntu-ports/ noble-backports main restricted universe multiverse" >> /etc/apt/sources.list && \ echo "deb http://ports.ubuntu.com/ubuntu-ports/ noble-security main restricted universe multiverse" >> /etc/apt/sources.list && \ echo "deb-src http://ports.ubuntu.com/ubuntu-ports/ noble-security main restricted universe multiverse" >> /etc/apt/sources.list RUN apt-get update && \ apt-get upgrade -y # Runtime Dependencies RUN set -eux; \ apt-mark hold python*; \ apt-get install -y --no-install-recommends \ apt-transport-https \ ca-certificates \ bash \ curl \ locales \ netbase \ tzdata \ wget \ vim \ git \ libreadline-dev \ gcc \ g++ \ make \ cmake \ libc6 \ build-essential \ libssl-dev \ zlib1g \ zlib1g-dev \ libncurses5-dev \ libbz2-dev \ libreadline-dev \ libsqlite3-dev \ libffi-dev \ libnss3-dev \ libgdbm-dev \ liblzma-dev \ libev-dev \ ; \ apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ rm -rf /rmp/* && \ rm -rf /var/lib/apt/lists/* COPY ./packages/Python-3.11.10.tgz /tmp/ ENV PATH=/usr/local/python3.11.10/bin:$PATH ENV LANG C.UTF-8 RUN tar -xf /tmp/Python-3.11.10.tgz -C /tmp && \ cd /tmp/Python-3.11.10 && \ mkdir -p /usr/local/python3.11.10/lib && \ ./configure --enable-shared LDFLAGS="-Wl,-rpath /usr/local/python3.11.10/lib" --prefix=/usr/local/python3.11.10 && \ make -j $(nproc) && \ make altinstall && \ ln -sf /usr/local/python3.11.10/bin/python3.11 /usr/local/python3.11.10/bin/python3 && \ ln -sf /usr/local/python3.11.10/bin/pip3.11 /usr/local/python3.11.10/bin/pip3 && \ ln -sf /usr/local/python3.11.10/bin/python3 /usr/local/python3.11.10/bin/python && \ ln -sf /usr/local/python3.11.10/bin/pip3 /usr/local/python3.11.10/bin/pip && \ rm -rf /tmp/* #添加pip镜像源防止pip install超时 RUN mkdir ~/.pip && \ echo "[global]" > ~/.pip/pip.conf && \ echo "index-url = http://mirrors.aliyun.com/pypi/simple/" >> ~/.pip/pip.conf && \ echo "trusted-host = mirrors.aliyun.com" >> ~/.pip/pip.conf && \ pip3 install \ --disable-pip-version-check \ --no-cache-dir \ --no-compile \ 'setuptools==65.5.1' \ wheel ################################################## CANN builder ################################################## FROM python-installer AS cann_installer ARG DEVICE ARG CANN_VERSION ARG ARCH RUN pip install --no-cache-dir --upgrade pip RUN pip install --no-cache-dir \ attrs cython numpy==1.24.0 decorator sympy cffi pyyaml pathlib2 \ psutil protobuf==3.20 scipy requests absl-py COPY ./packages_blue/Ascend-cann-kernels-910b_8.2.RC2_linux-aarch64.run ./packages_blue/Ascend-cann-nnal_8.2.RC2_linux-aarch64.run ./packages_blue/Ascend-cann-toolkit_8.2.RC2_linux-aarch64.run /tmp/ RUN chmod +x /tmp/*.run && \ ./tmp/Ascend-cann-toolkit_*linux-*.run --quiet --install --install-for-all && \ ./tmp/Ascend-cann-kernels-*_linux-*.run --quiet --install --install-for-all && \ . /usr/local/Ascend/ascend-toolkit/set_env.sh && \ ./tmp/Ascend-cann-nnal_*_linux-*.run --quiet --install --install-for-all && \ rm -rf /tmp/* ################################################## Install CANN ################################################## FROM python-installer AS cann # Note: Toolkit Environment variables, obtained from /usr/local/Ascend/ascend-toolkit/set_env.sh ENV ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest ENV LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/common/:/usr/local/Ascend/driver/lib64/driver/:$LD_LIBRARY_PATH ENV LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/lib64:${ASCEND_TOOLKIT_HOME}/lib64/plugin/opskernel:${ASCEND_TOOLKIT_HOME}/lib64/plugin/nnengine:${ASCEND_TOOLKIT_HOME}/opp/built-in/op_impl/ai_core/tbe/op_tiling:$LD_LIBRARY_PATH ENV LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/tools/aml/lib64:${ASCEND_TOOLKIT_HOME}/tools/aml/lib64/plugin:$LD_LIBRARY_PATH ENV PYTHONPATH=${ASCEND_TOOLKIT_HOME}/python/site-packages:${ASCEND_TOOLKIT_HOME}/opp/built-in/op_impl/ai_core/tbe:$PYTHONPATH ENV PATH=${ASCEND_TOOLKIT_HOME}/bin:${ASCEND_TOOLKIT_HOME}/compiler/ccec_compiler/bin:${ASCEND_TOOLKIT_HOME}/tools/ccec_compiler/bin:$PATH ENV ASCEND_AICPU_PATH=${ASCEND_TOOLKIT_HOME} ENV ASCEND_OPP_PATH=${ASCEND_TOOLKIT_HOME}/opp ENV TOOLCHAIN_HOME=${ASCEND_TOOLKIT_HOME}/toolkit ENV ASCEND_HOME_PATH=${ASCEND_TOOLKIT_HOME} # Note: NNAL Environment variables, obtained from /usr/local/Ascend/nnal/set_env.sh ENV ATB_HOME_PATH=/usr/local/Ascend/nnal/atb/latest/atb/cxx_abi_0 ENV LD_LIBRARY_PATH=${ATB_HOME_PATH}/lib:${ATB_HOME_PATH}/examples:${ATB_HOME_PATH}/tests/atbopstest:${LD_LIBRARY_PATH} ENV PATH=${ATB_HOME_PATH}/bin:$PATH ENV ATB_STREAM_SYNC_EVERY_KERNEL_ENABLE=0 ENV ATB_STREAM_SYNC_EVERY_RUNNER_ENABLE=0 ENV ATB_STREAM_SYNC_EVERY_OPERATION_ENABLE=0 ENV ATB_OPSRUNNER_SETUP_CACHE_ENABLE=1 ENV ATB_OPSRUNNER_KERNEL_CACHE_TYPE=3 ENV ATB_OPSRUNNER_KERNEL_CACHE_LOCAL_COUNT=1 ENV ATB_OPSRUNNER_KERNEL_CACHE_GLOABL_COUNT=5 ENV ATB_OPSRUNNER_KERNEL_CACHE_TILING_SIZE=10240 ENV ATB_WORKSPACE_MEM_ALLOC_ALG_TYPE=1 ENV ATB_WORKSPACE_MEM_ALLOC_GLOBAL=0 ENV ATB_COMPARE_TILING_EVERY_KERNEL=0 ENV ATB_HOST_TILING_BUFFER_BLOCK_NUM=128 ENV ATB_DEVICE_TILING_BUFFER_BLOCK_NUM=32 ENV ATB_SHARE_MEMORY_NAME_SUFFIX="" ENV ATB_LAUNCH_KERNEL_WITH_TILING=1 ENV ATB_MATMUL_SHUFFLE_K_ENABLE=1 ENV ATB_RUNNER_POOL_SIZE=64 ENV ASDOPS_HOME_PATH=${ATB_HOME_PATH} ENV ASDOPS_MATMUL_PP_FLAG=1 ENV ASDOPS_LOG_LEVEL=ERROR ENV ASDOPS_LOG_TO_STDOUT=0 ENV ASDOPS_LOG_TO_FILE=1 ENV ASDOPS_LOG_TO_FILE_FLUSH=0 ENV ASDOPS_LOG_TO_BOOST_TYPE=atb ENV ASDOPS_LOG_PATH=/root ENV ASDOPS_TILING_PARSE_CACHE_DISABLE=0 ENV LCCL_DETERMINISTIC=0 ENV LCCL_PARALLEL=0 COPY --from=cann_installer /usr/local/Ascend /usr/local/Ascend COPY --from=cann_installer /etc/Ascend /etc/Ascend # # ################# Install vLLM && vLLM Ascend ################################################## FROM cann AS vllm ARG VLLM_VERSION ARG VLLM_ASCEND_VERSION ARG COMPILE_CUSTOM_KERNELS=1 ENV DEBIAN_FRONTEND=noninteractive ENV COMPILE_CUSTOM_KERNELS=${COMPILE_CUSTOM_KERNELS} RUN git clone https://gitee.com/aisbench/benchmark.git && \ mv benchmark /tmp/ && \ cd /tmp/benchmark && \ pip install ./ && \ pip install -r requirements/extra.txt && \ rm -rf /tmp/* RUN git config --global http.sslVerify false && \ git clone -b ${VLLM_VERSION} https://github.com/vllm-project/vllm.git && \ mv vllm /tmp/ && \ cd /tmp/vllm && \ pip install -r ./requirements/build.txt && \ pip install -r ./requirements/common.txt && \ VLLM_TARGET_DEVICE=empty pip install -v . && \ rm -rf /tmp/* RUN apt-get update -y && \ apt-get install -y net-tools && \ rm -rf /var/cache/apt/* && \ rm -rf /var/lib/apt/lists/* SHELL [ "/bin/bash", "-c" ] RUN source /usr/local/Ascend/ascend-toolkit/set_env.sh && \ source /usr/local/Ascend/nnal/atb/set_env.sh && \ export LD_LIBRARY_PATH=/usr/local/Ascend/ascend-toolkit/latest/`uname -i`-linux/devlib:$LD_LIBRARY_PATH && \ export ATB_HOME_PATH=/usr/local/Ascend/nnal/atb/latest/atb/cxx_abi_0 && \ export ASDOPS_HOME_PATH=${ATB_HOME_PATH} && \ export LD_LIBRARY_PATH=${ATB_HOME_PATH}/lib:${ATB_HOME_PATH}/examples:${ATB_HOME_PATH}/tests/atbopstest:${LD_LIBRARY_PATH} && \ export PATH=${ATB_HOME_PATH}/bin:$PATH && \ export ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest && \ export LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/lib64:${ASCEND_TOOLKIT_HOME}/lib64/plugin/opskernel:${ASCEND_TOOLKIT_HOME}/lib64/plugin/nnengine:${ASCEND_TOOLKIT_HOME}/opp/built-in/op_impl/ai_core/tbe/op_tiling:$LD_LIBRARY_PATH && \ git config --global http.sslVerify false && \ git clone https://github.com/vllm-project/vllm-ascend.git && \ # git clone -b ${VLLM_ASCEND_VERSION} https://github.com/vllm-project/vllm-ascend.git && \ mv vllm-ascend /tmp/ && \ cd /tmp/vllm-ascend/ && \ pip install -v . && \ rm -rf /tmp/* # ################################################## Install Torch & Torch_npu & MindieTurbo ################################################## FROM vllm AS turbo COPY ./packages_blue/Ascend-mindie-turbo_2.1.RC2_py311_linux_aarch64.tar.gz /tmp RUN cd /tmp && \ tar -xzvf /tmp/Ascend-mindie-turbo_2.1.RC2_py311_linux_aarch64.tar.gz && \ cd /tmp/Ascend-mindie-turbo_2.1.RC2_py311_linux_aarch64 && \ pip install *.whl && \ pip cache purge && \ rm -rf /tmp/* COPY ./packages_blue/pytorch-v7.0.0-pytorch2.5.1.tar.gz ./packages_blue/torch-2.5.1-cp311-cp311-linux_aarch64.whl /tmp/ RUN cd /tmp && tar -xzvf pytorch-v7.0.0-pytorch2.5.1.tar.gz && \ cd - && \ pip install /tmp/torch_npu-*`uname -i`.whl.whl --force-reinstall --no-deps && \ pip install /tmp/torch-2.5.1-cp311-cp311-linux_aarch64.whl --force-reinstall --no-deps && \ pip install pandas gevent sacrebleu rouge_score pybind11 pytest && \ pip cache purge && \ rm -rf /tmp/* # ################################################## Install Tools ################################################## FROM turbo AS dev RUN apt update && apt install -y \ curl \ unzip \ zip \ && apt clean # Note: Set environment variables RUN \ CANN_TOOLKIT_ENV_FILE="/usr/local/Ascend/ascend-toolkit/set_env.sh" && \ CANN_NNAL_ENV_FILE="/usr/local/Ascend/nnal/atb/set_env.sh" && \ echo "source ${CANN_TOOLKIT_ENV_FILE}" >> /etc/profile && \ echo "source ${CANN_TOOLKIT_ENV_FILE}" >> ~/.bashrc && \ echo "source ${CANN_NNAL_ENV_FILE}" >> /etc/profile && \ echo "source ${CANN_NNAL_ENV_FILE}" >> ~/.bashrc
- 编写docker-compose.yml文件。
services: mindie-turbo: build: context: . network: host dockerfile: Dockerfile target: turbo args: DEVICE: 910b ARCH: aarch64 CANN_VERSION: 8.2.RC2 image: mindie-turbo:800I-A2-py311-Ubuntu24.04-aarch64 container_name: mindie-turbo volumes: - /usr/local/Ascend/driver:/usr/local/Ascend/driver - /usr/local/bin/npu-smi:/usr/local/bin/npu-smi - /usr/local/dcmi:/usr/local/dcmi - /usr/local/sbin:/usr/local/sbin - /data:/data working_dir: /workspace entrypoint: /bin/bash tty: true privileged: true
“/home/data”路径只是一个示例,请根据自身需要挂载对应目录。
- 编写Dockerfile文件。
- 在“/home/package”目录下,执行如下命令构建镜像(不启动容器):
docker compose build
- 执行如下命令后台启动容器。
docker compose up -d
- 执行如下命令进入容器。
docker exec -it <container-name> /bin/bash
- 使用wget下载Python 3.11.10源码包,放置于某一目录下,如“/home/package”。
- 构建MindIE Turbo x86架构的镜像文件
- 使用wget下载Python 3.11.10源码包,放置于某一目录下,如“/home/package”。
wget https://www.python.org/ftp/python/3.11.10/Python-3.11.10.tgz
- 参见表2,将获取的X86架构MindIE Turbo软件包、CANN软件包、PyTorch软件包(包括torch_npu、torch)放于如上“/home/package”目录。
- 在“/home/package”路径下编写Dockerfile和docker-compose.yml,其文件目录结构如下:
. ├── Ascend-cann-kernels-910b_8.2.RC2_linux-x86_64.run ├── Ascend-cann-nnal_8.2.RC2_linux-x86_64.run ├── Ascend-cann-toolkit_8.2.RC2_linux-x86_64.run ├── Ascend-mindie-turbo_2.1.RC2_py311_linux_x86_64.tar.gz ├── Dockerfile ├── docker-compose.yml ├── Python-3.11.10.tgz ├── torch-2.5.1-cp311-cp311-linux_aarch64.whl ├── pytorch-v7.0.0-pytorch2.5.1.tar.gz
- 编写Dockerfile文件
FROM ubuntu:24.04 AS base ENV LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/driver:/usr/local/Ascend/driver/lib64/common:/usr/local/lib:$LD_LIBRARY_PATH ENV LD_LIBRARY_PATH=/usr/local/Ascend/nnal/atb/latest/atb/cxx_abi_0/lib:/usr/local/Ascend/nnal/atb/latest/atb/cxx_abi_0/examples:/usr/local/Ascend/nnal/atb/latest/atb/cxx_abi_0/tests/atbopstest:/usr/local/Ascend/ascend-toolkit/latest/tools/aml/lib64:/usr/local/Ascend/ascend-toolkit/latest/tools/aml/lib64/plugin:/usr/local/Ascend/ascend-toolkit/latest/lib64/plugin/nnengine:/usr/local/Ascend/ascend-toolkit/latest/opp/built-in/op_impl/ai_core/tbe/op_tiling/lib/linux/:/usr/local/Ascend/ascend-toolkit/latest/lib64:/usr/local/Ascend/ascend-toolkit/latest/lib64/plugin/opskernel:/usr/local/Ascend/driver/lib64/driver:/usr/local/Ascend/driver/lib64/common:/usr/local/lib::$LD_LIBRARY_PATH ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Asia/Shanghai ENV TERM=xterm-256color # Configure the Ubuntu mirror. RUN sed -i "s@http://.*archive.ubuntu.com@http://mirrors.ustc.edu.cn@g" /etc/apt/sources.list.d/ubuntu.sources && \ sed -i "s@http://.*security.ubuntu.com@http://mirrors.ustc.edu.cn@g" /etc/apt/sources.list.d/ubuntu.sources RUN apt-get update && \ apt-get upgrade -y && \ apt-mark hold python3 # Runtime Dependencies RUN set -eux; \ apt-get install -y --no-install-recommends \ apt-transport-https \ ca-certificates \ bash \ curl \ locales \ netbase \ tzdata \ wget \ vim \ git \ libreadline-dev \ gcc \ g++ \ make \ cmake \ libc6 \ build-essential \ libssl-dev \ zlib1g \ zlib1g-dev \ libncurses5-dev \ libbz2-dev \ libreadline-dev \ libsqlite3-dev \ libffi-dev \ libnss3-dev \ libgdbm-dev \ liblzma-dev \ libev-dev \ net-tools \ ; \ apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ rm -rf /rmp/* && \ rm -rf /var/lib/apt/lists/* #Installed python ENV PATH=/usr/local/python3.11.10/bin:$PATH ENV LANG C.UTF-8 COPY ./turbo-image/Python-3.11.10.tgz /tmp/ RUN tar -xf /tmp/Python-3.11.10.tgz -C /tmp && \ cd /tmp/Python-3.11.10 && \ mkdir -p /usr/local/python3.11.10/lib && \ ./configure --enable-shared --with-zlib=/usr/include LDFLAGS="-Wl,-rpath /usr/local/python3.11.10/lib" --prefix=/usr/local/python3.11.10 && \ make -j $(nproc) && \ make altinstall && \ ln -sf /usr/local/python3.11.10/bin/python3.11 /usr/local/python3.11.10/bin/python3 && \ ln -sf /usr/local/python3.11.10/bin/pip3.11 /usr/local/python3.11.10/bin/pip3 && \ ln -sf /usr/local/python3.11.10/bin/python3 /usr/local/python3.11.10/bin/python && \ ln -sf /usr/local/python3.11.10/bin/pip3 /usr/local/python3.11.10/bin/pip && \ rm -rf /tmp/* #添加pip 镜像源防止 pip install 超时 RUN mkdir ~/.pip && \ echo "[global]" > ~/.pip/pip.conf && \ echo "index-url = http://mirrors.aliyun.com/pypi/simple/" >> ~/.pip/pip.conf && \ echo "trusted-host = mirrors.aliyun.com" >> ~/.pip/pip.conf && \ pip3 install \ --disable-pip-version-check \ --no-cache-dir \ --no-compile \ 'setuptools==65.5.1' \ wheel ################################################## CANN INSTALLER ################################################## FROM base AS cann_installer ARG DEVICE ARG CANN_VERSION ARG ARCH RUN pip install --no-cache-dir --upgrade pip RUN pip install --no-cache-dir \ attrs cython numpy==1.24.0 decorator sympy cffi pyyaml pathlib2 \ psutil protobuf==3.20 scipy requests absl-py COPY ./turbo-image/Ascend-cann-toolkit_${CANN_VERSION}_linux-${ARCH}.run ./turbo-image/Ascend-cann-nnal_${CANN_VERSION}_linux-${ARCH}.run ./turbo-image/Ascend-cann-kernels-${DEVICE}_${CANN_VERSION}_linux-${ARCH}.run /tmp/ RUN chmod +x /tmp/*.run && \ ./tmp/Ascend-cann-toolkit_*linux-*.run --quiet --install --install-for-all && \ ./tmp/*-cann-kernels*_linux-*.run --quiet --install --install-for-all && \ . /usr/local/Ascend/ascend-toolkit/set_env.sh && \ ./tmp/Ascend-cann-nnal_*_linux-*.run --quiet --install --install-for-all && \ rm -rf /tmp/* ################################################## Install CANN ################################################## FROM base AS cann # Note: Toolkit Environment variables, obtained from /usr/local/Ascend/ascend-toolkit/set_env.sh ENV ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest ENV LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/common/:/usr/local/Ascend/driver/lib64/driver/:$LD_LIBRARY_PATH ENV LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/lib64:${ASCEND_TOOLKIT_HOME}/lib64/plugin/opskernel:${ASCEND_TOOLKIT_HOME}/lib64/plugin/nnengine:${ASCEND_TOOLKIT_HOME}/opp/built-in/op_impl/ai_core/tbe/op_tiling:$LD_LIBRARY_PATH ENV LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/tools/aml/lib64:${ASCEND_TOOLKIT_HOME}/tools/aml/lib64/plugin:$LD_LIBRARY_PATH ENV PYTHONPATH=${ASCEND_TOOLKIT_HOME}/python/site-packages:${ASCEND_TOOLKIT_HOME}/opp/built-in/op_impl/ai_core/tbe:$PYTHONPATH ENV PATH=${ASCEND_TOOLKIT_HOME}/bin:${ASCEND_TOOLKIT_HOME}/compiler/ccec_compiler/bin:${ASCEND_TOOLKIT_HOME}/tools/ccec_compiler/bin:$PATH ENV ASCEND_AICPU_PATH=${ASCEND_TOOLKIT_HOME} \ ASCEND_OPP_PATH=${ASCEND_TOOLKIT_HOME}/opp \ TOOLCHAIN_HOME=${ASCEND_TOOLKIT_HOME}/toolkit \ ASCEND_HOME_PATH=${ASCEND_TOOLKIT_HOME} # Note: NNAL Environment variables, obtained from /usr/local/Ascend/nnal/set_env.sh ENV ATB_HOME_PATH=/usr/local/Ascend/nnal/atb/latest/atb/cxx_abi_0 ENV LD_LIBRARY_PATH=${ATB_HOME_PATH}/lib:${ATB_HOME_PATH}/examples:${ATB_HOME_PATH}/tests/atbopstest:${LD_LIBRARY_PATH} ENV PATH=${ATB_HOME_PATH}/bin:$PATH ENV ATB_STREAM_SYNC_EVERY_KERNEL_ENABLE=0 ENV ATB_STREAM_SYNC_EVERY_RUNNER_ENABLE=0 ENV ATB_STREAM_SYNC_EVERY_OPERATION_ENABLE=0 ENV ATB_OPSRUNNER_SETUP_CACHE_ENABLE=1 ENV ATB_OPSRUNNER_KERNEL_CACHE_TYPE=3 ENV ATB_OPSRUNNER_KERNEL_CACHE_LOCAL_COUNT=1 ENV ATB_OPSRUNNER_KERNEL_CACHE_GLOABL_COUNT=5 ENV ATB_OPSRUNNER_KERNEL_CACHE_TILING_SIZE=10240 ENV ATB_WORKSPACE_MEM_ALLOC_ALG_TYPE=1 ENV ATB_WORKSPACE_MEM_ALLOC_GLOBAL=0 ENV ATB_COMPARE_TILING_EVERY_KERNEL=0 ENV ATB_HOST_TILING_BUFFER_BLOCK_NUM=128 ENV ATB_DEVICE_TILING_BUFFER_BLOCK_NUM=32 ENV ATB_SHARE_MEMORY_NAME_SUFFIX="" ENV ATB_LAUNCH_KERNEL_WITH_TILING=1 ENV ATB_MATMUL_SHUFFLE_K_ENABLE=1 ENV ATB_RUNNER_POOL_SIZE=64 ENV ASDOPS_HOME_PATH=${ATB_HOME_PATH} ENV ASDOPS_MATMUL_PP_FLAG=1 ENV ASDOPS_LOG_LEVEL=ERROR ENV ASDOPS_LOG_TO_STDOUT=0 ENV ASDOPS_LOG_TO_FILE=1 ENV ASDOPS_LOG_TO_FILE_FLUSH=0 ENV ASDOPS_LOG_TO_BOOST_TYPE=atb ENV ASDOPS_LOG_PATH=/root ENV ASDOPS_TILING_PARSE_CACHE_DISABLE=0 ENV LCCL_DETERMINISTIC=0 ENV LCCL_PARALLEL=0 COPY --from=cann_installer /usr/local/Ascend /usr/local/Ascend COPY --from=cann_installer /etc/Ascend /etc/Ascend ################################################## install torch_npu ######################################################## FROM cann AS torch ARG DEVICE ARG TORCH_VERSION ARG ARCH COPY ./turbo-image/torch-${TORCH_VERSION}+cpu-cp311-cp311-linux_${ARCH}.whl ./turbo-image/pytorch_v${TORCH_VERSION}_py311.tar.gz /tmp/ RUN cd /tmp && tar -xzvf pytorch-v7.0.0-pytorch2.5.1.tar.gz && \ cd - && \ pip install /tmp/torch-2.5.1+cpu-cp311-cp311-linux_${ARCH}.whl --no-deps && \ pip install /tmp/torch_npu-*_${ARCH}.whl --no-deps && \ pip install pandas gevent sacrebleu rouge_score pybind11 pytest&& \ pip cache purge && \ rm -rf /tmp/* ################################################## Install vLLM&VLLM_Ascend ################################################## FROM torch AS vllm ARG VLLM_VERSION ARG VLLM_ASCEND_VERSION ARG COMPILE_CUSTOM_KERNELS=1 ENV COMPILE_CUSTOM_KERNELS=${COMPILE_CUSTOM_KERNELS} COPY ./turbo-image/benchmark.tar.gz /tmp/ RUN tar -zxf /tmp/benchmark.tar.gz -C /tmp && \ cd /tmp/benchmark && \ pip3 install ./ && \ pip3 install -r requirements/extra.txt && \ rm -rf /tmp/* COPY ./turbo-image/vllm.tar.gz /tmp/ RUN tar -zxf /tmp/vllm.tar.gz -C /tmp && \ cd /tmp/vllm && \ sed -i '7s/^/#/' ./requirements/build.txt && \ pip install -r ./requirements/common.txt && \ pip install -r ./requirements/build.txt && \ VLLM_TARGET_DEVICE=empty pip install -v . --extra-index https://download.pytorch.org/whl/cpu/ && \ pip uninstall -y triton && \ rm -rf /tmp/* SHELL [ "/bin/bash", "-c" ] COPY ./turbo-image/vllm-ascend.tar.gz /tmp/ RUN source /usr/local/Ascend/ascend-toolkit/set_env.sh && \ source /usr/local/Ascend/nnal/atb/set_env.sh && \ export LD_LIBRARY_PATH=/usr/local/Ascend/ascend-toolkit/latest/x86_64-linux/devlib:$LD_LIBRARY_PATH && \ export ATB_HOME_PATH=/usr/local/Ascend/nnal/atb/latest/atb/cxx_abi_0 && \ export ASDOPS_HOME_PATH=${ATB_HOME_PATH} && \ export LD_LIBRARY_PATH=${ATB_HOME_PATH}/lib:${ATB_HOME_PATH}/examples:${ATB_HOME_PATH}/tests/atbopstest:${LD_LIBRARY_PATH} && \ export PATH=${ATB_HOME_PATH}/bin:$PATH && \ export ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest && \ export LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/lib64:${ASCEND_TOOLKIT_HOME}/lib64/plugin/opskernel:${ASCEND_TOOLKIT_HOME}/lib64/plugin/nnengine:${ASCEND_TOOLKIT_HOME}/opp/built-in/op_impl/ai_core/tbe/op_tiling:$LD_LIBRARY_PATH && \ cd /tmp/ && tar -zxf vllm-ascend.tar.gz && cd vllm-ascend && \ python setup.py install && \ rm -rf /tmp/* ################################################## Install Torch_opt & Torch_npu_opt & MindieTurbo ################################################## FROM vllm AS turbo ARG MINDIE_TURBO_VERSION ARG TORCH_VERSION ARG ARCH COPY ./turbo-image/torch-${TORCH_VERSION}+cpu-cp311-cp311-linux_${ARCH}.whl ./turbo-image/pytorch_v${TORCH_VERSION}_py311.tar.gz /tmp/ RUN cd /tmp && tar -xzvf pytorch-v7.0.0-pytorch2.5.1.tar.gz && \ cd - && \ pip install /tmp/torch-2.5.1+cpu-cp311-cp311-linux_${ARCH}.whl --no-deps && \ pip install /tmp/torch_npu-*_${ARCH}.whl --no-deps && \ pip install pandas gevent sacrebleu rouge_score pybind11 pytest&& \ pip cache purge && \ rm -rf /tmp/* RUN wget -q http://172.17.0.1:3000/Ascend-mindie-turbo_${MINDIE_TURBO_VERSION}_py311_linux_${ARCH}.tar.gz -P /tmp && \ cd /tmp && \ tar -xzvf /tmp/Ascend-mindie-turbo_*_py311_linux_${ARCH}.tar.gz && \ cd /tmp/Ascend-mindie-turbo_*_py311_linux_${ARCH} && \ pip install *.whl && \ pip cache purge && \ rm -rf /tmp/* # ################################################## Install Tools ################################################## FROM turbo AS dev RUN if ["$DEV" = "dev"]; then \ apt update && apt install -y \ unzip \ zip \ && apt clean; \ fi # Note: Set environment variables RUN CANN_TOOLKIT_ENV_FILE="/usr/local/Ascend/ascend-toolkit/set_env.sh" && \ CANN_NNAL_ENV_FILE="/usr/local/Ascend/nnal/atb/set_env.sh" && \ echo "source ${CANN_TOOLKIT_ENV_FILE}" >> /etc/profile && \ echo "source ${CANN_TOOLKIT_ENV_FILE}" >> ~/.bashrc && \ echo "source ${CANN_NNAL_ENV_FILE}" >> /etc/profile && \ echo "source ${CANN_NNAL_ENV_FILE}" >> ~/.bashrc && \ echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Ascend/ascend-toolkit/latest/x86_64-linux/devlib" >> /etc/profile && \ echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/Ascend/ascend-toolkit/latest/x86_64-linux/devlib" >> ~/.bashrc
- 编写docker-compose.yml文件。
services: mindie-turbo: build: context: . network: host dockerfile: Dockerfile target: turbo args: DEVICE: 910b ARCH: x86_64 CANN_VERSION: 8.2.RC2 image: mindie-turbo:800I-A2-py311-Ubuntu24.04-x86_64 container_name: mindie-turbo volumes: - /usr/local/Ascend/driver:/usr/local/Ascend/driver - /usr/local/bin/npu-smi:/usr/local/bin/npu-smi - /usr/local/dcmi:/usr/local/dcmi - /usr/local/sbin:/usr/local/sbin - /data:/data working_dir: /workspace entrypoint: /bin/bash tty: true privileged: true
“/home/data”路径只是一个示例,请根据自身需要挂载对应目录。
- 编写Dockerfile文件
- 在“/home/package”目录下,执行如下命令构建镜像(不启动容器):
docker compose build
- 执行如下命令后台启动容器。
docker compose up -d
- 执行如下命令进入容器。
docker exec -it <container-name> /bin/bash
- 使用wget下载Python 3.11.10源码包,放置于某一目录下,如“/home/package”。
父主题: 软件安装