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

MindIE Server镜像包仅用于MindIE MS部署服务时使用,其他安装场景请使用容器化部署MindIE章节。
环境准备
硬件环境和操作系统如下所示:
硬件 |
操作系统 |
---|---|
Atlas 800I A2推理产品 |
Arm: Ubuntu 22.04 |
软件包获取
制作MindIE Server镜像包对所依赖的软件版本有特定的要求,具体所需版本请参见表1。
前提条件
操作步骤
- 将软件包获取下载或制作的软件放到同一目录下,例如:/$home/package1。
- 使用以下命令拉取ubuntu22.04镜像。
docker pull ubuntu:22.04
- 在/$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。
- 在当前路径下执行以下命令开始镜像制作,回显如图2所示,则表示镜像制作成功。
docker build --no-cache -t {镜像名称}:{镜像版本} ./
{镜像名称}和{镜像版本}需要用户自定义。
- 部署任务节点的物理机需要安装一致的MindIE Server镜像,可通过docker save -o {镜像名称}.tar {镜像名称}:{镜像版本}命令保存离线镜像,然后传到其他部署任务节点,再使用docker load -i {镜像名称}.tar命令部署镜像。
- 用户需确保镜像拉取的操作系统符合软件环境中的要求,且保证MindIE Server镜像可执行。后续可以直接通过MindIE MS命令行工具进行镜像拉起和服务部署,详情请参见《MindIE Service开发指南》中的 章节。
- 用户从Docker镜像源中拉取MindIE Server镜像,方便用户使用私人镜像仓(包含MindIE Server镜像),所以需要用户确保拉取的镜像源是安全且可用的。
父主题: 容器化部署和镜像制作