MindSpore Transformers套件(以下简称MindFormers)的目标是构建一个大模型训练、微调、评估、推理、部署的全流程开发套件,提供业内主流的Transformer类预训练模型和SOTA下游任务应用,涵盖丰富的并行特性。期望帮助用户轻松地实现大模型训练和创新研发。
MindSpore Transformers文档的快速入门包括了安装与快速启动章节,可以在镜像制作时参考。
训练镜像可以基于基础训练镜像,结合MindFormers文档自行制作,基础训练镜像的制作可参考使用Dockerfile构建容器镜像(MindSpore)章节进行操作。
本章节结合基础训练镜像的制作步骤,展示基于Ubuntu20.04来构建训练镜像。
请按照表1所示,获取对应操作系统的软件包,并准备镜像所需的Dockerfile文件与脚本文件。
软件包 |
是否必选 |
说明 |
获取方法 |
---|---|---|---|
MindFormers代码仓 |
是 |
构建一个大模型训练、微调、评估、推理、部署的全流程开发套件,提供业内主流的Transformer类预训练模型和SOTA下游任务应用,涵盖丰富的并行特性 |
git clone https://gitee.com/mindspore/mindformers.git cd mindformers git checkout 2c8853d5 |
requirements.txt文件 |
否 |
由于通过pip安装MindSpore时,可能出现依赖的组件安装报错,故可以先安装依赖。 |
wget https://gitee.com/mindspore/mindspore/raw/r2.4.1/requirements.txt 说明:
MindSpore软件包与Atlas 训练系列产品需配套使用,请参见MindSpore安装指南查看对应关系。 |
mindspore-{version}-cp3x-cp3x-linux_aarch64.whl |
是 |
mindspore 2.4.10支持片上内存uce故障恢复 |
|
mindx_elastic-{version}-py3-none-linux_{arch}.whl |
是 使用优雅容错模式、Pod级别重调度或者进程级别重调度功能时,必须安装该whl包。 |
集群调度组件断点续训whl包,arch为CPU架构,可选aarch64或x86_64。 |
说明:
用户通过获取链接得到的是Ascend-mindxdl-elastic_{version}_linux-{arch}.zip压缩包,需要通过解压后,获得相应的whl软件包。 |
mindio_ttp-{version}-py3-none-linux_{arch}.whl |
是 |
MindIO TFT安装包 |
|
Kernels |
是 |
CANN二进制算子包,提供了静态库,并能够节省算子编译时间,在大模型推理、训练场景,使用静态库编译应用程序,和运行包含动态shape网络或单算子API(例如aclnn类API)相关业务时安装。arch可选aarch64或x86_64。 |
说明:
请获取和服务器型号匹配的软件包。 |
Ascend-cann-toolkit_{version}_linux-{arch}.run |
是 |
CANN开发套件包,在训练&推理&开发调试场景下安装,主要用于训练和推理业务、模型转换、算子/应用/模型的开发和编译。arch可选aarch64或x86_64。 |
说明:
请获取和服务器型号匹配的软件包。 |
taskd-{version}-py3-none-linux_{arch}.whl |
是 |
集群调度组件断点续训whl包,arch为CPU架构,可选aarch64或x86_64。 |
说明:
|
version.info |
是 安装cann需要 |
驱动版本信息文件。 |
从host拷贝“/usr/local/Ascend/driver/version.info”文件。 |
ascend_install.info |
是 安装cann需要 |
驱动安装信息文件。 |
从host拷贝“/etc/ascend_install.info”文件。 |
get-pip.py |
是 |
用于安装pip模块 |
curl -k https://bootstrap.pypa.io/get-pip.py -o get-pip.py |
Dockerfile |
是 |
制作镜像需要。 |
-- |
为了防止软件包在传递过程中或存储期间被恶意篡改,下载软件包时需下载对应的数字签名文件用于完整性验证。
在软件包下载之后,请参考《OpenPGP签名验证指南》,对从Support网站下载的软件包进行PGP数字签名校验。如果校验失败,请不要使用该软件包,先联系华为技术支持工程师解决。
使用软件包安装/升级之前,也需要按上述过程先验证软件包的数字签名,确保软件包未被篡改。
运营商客户请访问:https://support.huawei.com/carrier/digitalSignatureAction
企业客户请访问:https://support.huawei.com/enterprise/zh/tool/pgp-verify-TL1000000054
本章节以单台Atlas 800T A2 训练服务器、Ubuntu 20.04、配套Python 3.10为例来介绍制作镜像的详细过程,使用过程中需根据实际情况修改相关步骤。
FROM ubuntu:20.04 WORKDIR /root COPY . . ARG HOST_ASCEND_BASE=/usr/local/Ascend ARG TOOLKIT_PATH=/usr/local/Ascend/toolkit/latest ARG TOOLKIT=Ascend-cann-toolkit_8.1.RC1_linux-aarch64.run ARG KERNEL=Ascend-cann-kernels-910b_8.1.RC1_linux-aarch64.run ARG MINDX_ELASTIC_WHL=mindx_elastic-7.0.RC1-py3-none-linux_aarch64.whl ARG MINDIO_TTP_WHL=mindio_ttp-1.0.0-py3-none-linux_aarch64.whl ARG MINDFORMERS=mindformers ARG MINDSPORE_REQUIREMENTS=requirements.txt ARG MINDSPORE_WHL=mindspore-2.5.0-cp310-cp310-linux_aarch64.whl ARG TASKD_WHL=taskd-7.0.RC1-py3-none-linux_aarch64.whl RUN echo "nameserver 114.114.114.114" > /etc/resolv.conf RUN echo "deb http://repo.huaweicloud.com/ubuntu-ports/ focal main restricted universe multiverse\n\ deb http://repo.huaweicloud.com/ubuntu-ports/ focal-updates main restricted universe multiverse\n\ deb http://repo.huaweicloud.com/ubuntu-ports/ focal-backports main restricted universe multiverse\n\ deb http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse" > /etc/apt/sources.list ARG DEBIAN_FRONTEND=noninteractive RUN umask 0022 && apt update && \ apt-get install -y --no-install-recommends \ software-properties-common RUN umask 0022 && add-apt-repository ppa:deadsnakes/ppa && \ apt update && \ apt autoremove -y python python3 && \ apt install -y python3.10 python3.10-dev # 建立Python软链接 RUN ln -s /usr/bin/python3.10 /usr/bin/python RUN ln -s /usr/bin/python3.10 /usr/bin/python3 RUN ln -s /usr/bin/python3.10-config /usr/bin/python-config RUN ln -s /usr/bin/python3.10-config /usr/bin/python3-config # 系统包 RUN umask 0022 && apt update && \ apt-get install -y --no-install-recommends \ gcc g++ make cmake vim \ zlib1g zlib1g-dev \ openssl libsqlite3-dev libssl-dev \ libffi-dev unzip pciutils \ net-tools libblas-dev \ gfortran libblas3 libopenblas-dev \ curl unzip liblapack3 liblapack-dev \ libhdf5-dev libxml2 patch # 时区 # RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime # 配置pip源 RUN mkdir -p ~/.pip \ && echo '[global] \n\ index-url=https://mirrors.huaweicloud.com/repository/pypi/simple\n\ trusted-host=mirrors.huaweicloud.com' >> ~/.pip/pip.conf # pip3.10 RUN cd /tmp && \ apt-get download python3-distutils && \ dpkg-deb -x python3-distutils_*.deb / && \ rm python3-distutils_*.deb && \ cd - && \ python get-pip.py && \ rm get-pip.py RUN umask 0022 && \ pip install sympy==1.4 && \ pip install cffi && \ pip install pathlib2 && \ pip install grpcio && \ pip install grpcio-tools && \ pip install absl-py && \ pip install datasets && \ pip install tokenizers==0.20.1 && \ pip install pyOpenSSL # 创建HwHiAiUser用户和属主,UID和GID请与物理机保持一致避免出现无属主文件。示例中会自动创建user和对应的group,UID和GID都为1000 RUN useradd -d /home/HwHiAiUser -u 1000 -m -s /bin/bash HwHiAiUser # Ascend包 # 构建之前把host的/usr/local/Ascend/driver/version.info拷贝一份到当前目录 RUN umask 0022 && \ cp ascend_install.info /etc/ && \ mkdir -p /usr/local/Ascend/driver/ && \ cp version.info /usr/local/Ascend/driver/ && \ chmod +x $TOOLKIT && \ chmod +x $KERNEL RUN umask 0022 && ./$TOOLKIT --install-path=/usr/local/Ascend/ --install --quiet RUN echo "source /usr/local/Ascend/ascend-toolkit/set_env.sh" >> ~/.bashrc RUN umask 0022 && ./$KERNEL --install --quiet # 只为了安装toolkit包,所以需要清理,容器启动时通过ascend docker挂载进来 RUN rm -f version.info && \ rm -rf /usr/local/Ascend/driver/ # 安装mindspore RUN umask 0022 && pip uninstall te topi hccl -y && \ pip install sympy && \ pip install /usr/local/Ascend/ascend-toolkit/latest/lib64/te-*-py3-none-any.whl && \ pip install /usr/local/Ascend/ascend-toolkit/latest/lib64/hccl-*-py3-none-any.whl RUN umask 0022 && \ pip install -r $MINDSPORE_REQUIREMENTS && \ pip install $MINDSPORE_WHL # 安装mindformers RUN umask 0022 && cd $MINDFORMERS && \ pip install -r requirements.txt && bash build.sh # MindCluster无损失断点续训适配脚本 RUN umask 0022 && \ pip install $MINDX_ELASTIC_WHL && \ pip install $MINDIO_TTP_WHL && \ pip install $TASKD_WHL # 环境变量 ENV HCCL_WHITELIST_DISABLE=1 # 创建/lib64/ld-linux-aarch64.so.1 RUN umask 0022 && \ if [ ! -d "/lib64" ]; \ then \ mkdir /lib64 && ln -sf /lib/ld-linux-aarch64.so.1 /lib64/ld-linux-aarch64.so.1; \ fi # 增加安装任务调度依赖库 RUN pip install apscheduler RUN rm -rf tmp && \ rm -f $TOOLKIT && \ rm -f $KERNEL && \ rm -f $MINDX_ELASTIC_WHL && \ rm -f $MINDIO_TTP_WHL && \ rm -f $MINDSPORE_REQUIREMENTS && \ rm -f $MINDSPORE_WHL ## 最后打包成镜像mindformers-dl:v1
docker build -t mindformers-dl:v1 .