昇腾社区首页
中文
注册

制作MindIE Server镜像

本章节指导用户如何制作MindIE Server镜像包,仅用于MindIE MS部署服务时使用。

MindIE Server镜像包仅用于MindIE MS部署服务时使用,其他安装场景请使用容器化部署MindIE章节。

环境准备

硬件环境和操作系统如下所示:

硬件

操作系统

Atlas 800I A2推理产品

Arm:

Ubuntu 22.04

软件包获取

制作MindIE Server镜像包对所依赖的软件版本有特定的要求,具体所需版本请参见表1

表1 软件介绍

软件类型

软件包名称

软件说明

获取链接

MindIE

Ascend-mindie_1.0.RC2_linux-aarch64.run

推理引擎软件包。

获取链接

CANN

Ascend-cann-toolkit_8.0.RC2_linux-aarch64.run

开发套件包。

Ascend-cann-kernels-910_8.0.RC2_linux.run

二进制算子包。

Ascend-cann-nnal_8.0.RC2_linux-aarch64.run

加速库软件包

ATB Models

Ascend-mindie-atb-models_1.0.RC2_linux-aarch64_torch2.1.0-abi0.tar.gz

模型库安装包。

Ascend Extension for PyTorch

torch_npu-2.1.0.post6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

torch_npu插件whl包。

获取链接

apex-0.1_ascend-cp310-cp310-aarch64.whl

Apex模块的whl包。

请参见Ascend Extension for PyTorch 配置与安装中的安装步骤 > (可选)安装APEX模块章节根据Python3.10版本自行编译。

torch-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

PyTorch框架2.1.0版本的whl包。

获取链接

前提条件

  • 在一个全新的容器内可能会出现apt源下载路径问题,请用户配置ubuntu22.04的专用源,提升下载速度。
  • 安装过程需要下载相关依赖,请确保安装环境能够连接网络。
  • 请在root用户下执行如下命令检查源是否可用。
    apt-get update

    如果命令执行报错或者后续安装依赖时等待时间过长甚至报错,则检查网络是否连接或者把“/etc/apt/sources.list”文件中的源更换为可用的源或使用镜像源(以配置华为镜像源为例,可参考华为开源镜像站)。

操作步骤

  1. 软件包获取下载或制作的软件放到同一目录下,例如:/$home/package1。
  2. 使用以下命令拉取ubuntu22.04镜像。
    docker pull ubuntu:22.04
    执行以下命令检查Ubuntu镜像,查询结果图1所示。
    docker images | grep ubuntu
    图1 镜像查询结果

  3. 在/$home/package1路径下自行编写Dockerfile文件,用于拉起非root用户镜像,Dockerfile文件样例如下所示。

    非root用户需要自定义一个普通用户ID{UID}、用户组ID{GID}和用户名称{用户名称}

    # 推荐华为云的下载源URL:https://repo.huaweicloud.com
    FROM ubuntu:22.04
    WORKDIR /tmp
    COPY . ./
    # 系统包
    RUN apt update && \
        apt install --no-install-recommends -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev && \
        apt install --no-install-recommends -y libbz2-dev libxslt1-dev unzip pciutils net-tools libblas-dev gfortran libblas3 ca-certificates && \
        apt install --no-install-recommends -y bc wget curl pkg-config liblapack3 vim liblapack-dev libhdf5-dev xz-utils cython3 python3-h5py && \
        apt install --no-install-recommends -y libopenblas-dev libgmpxx4ldbl liblzma-dev libxml2 libgl1-mesa-glx git numactl linux-tools-common ipmitool -y && \
        apt clean && rm -rf /var/lib/apt/lists/*
    ARG PYTHON_VERSION=3.10.2
    RUN umask 0022 && \
        groupadd {用户名称} -g {GID} && \
        useradd -d /home/{用户名称} -u {UID} -g {GID} -m -s /bin/bash {用户名称} && \
        chown -R {用户名称}:{用户名称} ./ && \
        mkdir -p /usr/local/python${PYTHON_VERSION}/ && \
        chown -R {用户名称}:{用户名称} /usr/local/python${PYTHON_VERSION}/
    USER {用户名称}
    ARG ARCH=aarch64
    ARG TOOLKIT_PATH=/home/{用户名称}/Ascend/ascend-toolkit/latest
    ARG MODEL_PATH=/home/{用户名称}/Ascend/llm_model/
    ENV LD_LIBRARY_PATH=/usr/local/python${PYTHON_VERSION}/lib:/usr/lib/${ARCH}-linux-gnu/hdf5/serial:/usr/local/Ascend/driver/lib64/common:/usr/local/Ascend/driver/lib64/driver: \
        PATH=/usr/local/python${PYTHON_VERSION}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
        ASCEND_HOME_PATH=${TOOLKIT_PATH} \
        PYTHONPATH=${TOOLKIT_PATH}/python/site-packages:${TOOLKIT_PATH}/opp/built-in/op_impl/ai_core/tbe:${PYTHONPATH}
    # wget指令
    RUN {wget指令} && \
        tar -xf Python-${PYTHON_VERSION}.tar.xz && cd Python-${PYTHON_VERSION} && ./configure --prefix=/usr/local/python${PYTHON_VERSION} --enable-shared && \
        make -j$(nproc) && make install && \
        cd - && \
        rm -rf Python* && \
        pip3 config set global.index-url {pip3的index-url} && \
        pip3 config set global.trusted-host {pip3的trusted-host} && \
        pip3 install attrs==23.2.0 numpy==1.26.4 decorator==5.1.1 sympy==1.12.1 cffi pyyaml pathlib2 psutil==6.0.0 scipy==1.13.1 requests==2.31.0 absl-py protobuf==4.23.3 transformers==4.34.0 icetk \
             cpm_kernels mdtex2html Accelerate wheel==0.43.0 loguru==0.7.2 tabulate==0.9.0 accelerate==0.31.0 thefuzz openpyxl tiktoken && \
        rm -rf ~/.cache/pip
    RUN chmod +x *.run && \
        bash /tmp/Ascend-cann-toolkit_*.run --quiet --install && \
        bash /tmp/Ascend-cann-kernels*.run --quiet --install --install-for-all && \
        bash /tmp/Ascend-cann-nnal_*.run --quiet --install && \
        bash /tmp/Ascend-mindie*${ARCH}.run --quiet --install && \
        pip3 install torch-*.whl && \
        pip3 install torch_npu-*${ARCH}.whl && \
        pip3 install apex-*${ARCH}.whl && \
        mkdir -p ${MODEL_PATH} && \
        tar -zxvf Ascend-mindie-atb-models*.tar.gz -C ${MODEL_PATH} && \
        pip3 install -r ${MODEL_PATH}/requirements/requirements.txt && \
    # transformers的版本如使用LLaMa-65B推荐使用4.34.0
        pip3 install transformers==4.34.0 &&\
    
        rm -rf /tmp/*
    • 镜像制作过程中,用户需自行关注所依赖的第三方软件的安全性,如有问题请及时更新并修复安全漏洞。
    • Dockerfile文件关键信息说明:
      • {wget指令}:通过ssl证书HTTPS链接下载Python华为源,如果本地已经持有并且信任华为云网站的CA证书,则不需要配置--ca-cerificate参数; 如果本地不具有该CA证书,需要从其他途径获取,比如使用浏览器登录华为云网页,并导出该信任该网站的CA证书如果用户使用证书通信需提前根据指导在获取华为云ssl证书获取证书,{wget指令}指令如下所示:
        wget https://repo.huaweicloud.com/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz --ca-certificate=提前获取的华为云的ssl文件路径
      • {pip3的index-url}:推荐使用https://repo.huaweicloud.com/repository/pypi/simple/。
      • {pip3的trusted-host}:推荐使用repo.huaweicloud.com。
  4. 在当前路径下执行以下命令开始镜像制作,回显如图2所示,则表示镜像制作成功。
    docker build --no-cache -t {镜像名称}:{镜像版本} ./

    {镜像名称}{镜像版本}需要用户自定义

    图2 镜像制作成功
    • 部署任务节点的物理机需要安装一致的MindIE Server镜像,可通过docker save -o {镜像名称}.tar {镜像名称}:{镜像版本}命令保存离线镜像,然后传到其他部署任务节点再使用docker load -i {镜像名称}.tar命令部署镜像。
    • 用户需确保镜像拉取的操作系统符合软件环境中的要求,且保证MindIE Server镜像可执行。后续可以直接通过MindIE MS命令行工具进行镜像拉起和服务部署,详情请参见MindIE Service开发指南中的MindIE MS > MindIE MS客户端API接口和命令 > MindIE客户端命令行工具章节。
    • 用户从Docker镜像源中拉取MindIE Server镜像,方便用户使用私人镜像仓(包含MindIE Server镜像),所以需要用户确保拉取的镜像源是安全且可用的。