华为云用户手册

  • 镜像版本 本教程中用到基础镜像地址和配套版本关系如下表所示,请提前了解。 表1 基础容器镜像地址 镜像用途 镜像地址 配套版本 基础镜像 swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc2-py_3.9-hce_2.0.2312-aarch64-snt9b-20240606190017-b881580 cann_8.0.rc2
  • 软件配套版本 本方案支持的软件配套版本和依赖包获取地址如表2所示。 表2 软件配套版本和获取地址 软件名称 说明 下载地址 AscendCloud-6.3.906-xxx.zip 说明: 软件包名称中的xxx表示时间戳。 包含了本教程中使用到的推理部署代码和推理评测代码、推理依赖的算子包。代码包具体说明请参见模型软件包结构说明。 获取路径:Support-E 说明: 如果没有下载权限,请联系您所在企业的华为方技术支持下载获取。
  • 资源规格要求 本文档中的模型运行环境是ModelArts Lite的DevServer。推荐使用“西南-贵阳一”Region上的资源和Ascend Snt9B。 如果使用DevServer资源,请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。
  • Step1 创建OBS桶和文件夹 在OBS服务中创建桶和文件夹,用于存放样例数据集以及训练代码。需要创建的文件夹列表如表1所示,示例中的桶名称“test-modelarts” 和文件夹名称均为举例,请替换为用户自定义的名称。 创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。 请确保您使用的OBS与ModelArts在同一区域。 表1 OBS桶文件夹列表 文件夹名称 用途 “obs://test-modelarts/mpi/demo-code/” 用于存储MPI启动脚本与训练脚本文件。 “obs://test-modelarts/mpi/log/” 用于存储训练日志文件。
  • 模型软件包结构说明 本教程需要使用到的推理模型软件包和推理评测代码存放在如下目录中,关键文件介绍如下: xxx-Ascend #xxx表示版本号 ├──llm_evaluation #推理评测代码包 ├──benchmark_eval # 精度评测 ├── config ├── config.json # 请求的参数,根据实际启动的服务来调整 ├── mmlu_subject_mapping.json # 数据集配置 ├── evaluators ├── evaluator.py # 数据集数据预处理方法集 ├── model.py # 发送请求的模块,在这里修改请求响应。目前支持vllm.openai,atb的tgi模板 ├── eval_test.py # 启动脚本,建立线程池发送请求,并汇总结果 ├── service_predict.py # 发送请求的服务。支持vllm的openai,atb的tgi模板 ├── ... ├──benchmark_tools #性能评测 ├── benchmark.py # 可以基于默认的参数跑完静态benchmark和动态benchmark ├── benchmark_parallel.py # 评测静态性能脚本 ├── benchmark_serving.py # 评测动态性能脚本 ├── benchmark_utils.py # 抽离的工具集 ├── generate_datasets.py # 生成自定义数据集的脚本 ├── requirements.txt # 第三方依赖 ├── ... ├──llm_inference #推理代码 ├── ascend_vllm_adapter #昇腾vLLM使用的算子模块 ├── ascend.txt #基于开源vLLM适配过NPU的patch脚本 ├── build.sh #推理构建脚本 ├── requirements.txt # 第三方依赖
  • 支持的模型软件包和权重文件 本方案支持的模型列表、对应的开源权重获取地址如表3所示,模型对应的软件和依赖包获取地址如表1所示。 表3 支持的模型列表和权重获取地址 序号 模型名称 开源权重获取地址 1 llama-7b https://huggingface.co/huggyllama/llama-7b 2 llama-13b https://huggingface.co/huggyllama/llama-13b 3 llama-65b https://huggingface.co/huggyllama/llama-65b 4 llama2-7b https://huggingface.co/meta-llama/Llama-2-7b-chat-hf 5 llama2-13b https://huggingface.co/meta-llama/Llama-2-13b-chat-hf 6 llama2-70b https://huggingface.co/meta-llama/Llama-2-70b-hf https://huggingface.co/meta-llama/Llama-2-70b-chat-hf (推荐) 7 llama3-8b https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct 8 llama3-70b https://huggingface.co/meta-llama/Meta-Llama-3-70B-Instruct 9 yi-6b https://huggingface.co/01-ai/Yi-6B-Chat 10 yi-9b https://huggingface.co/01-ai/Yi-9B 11 yi-34b https://huggingface.co/01-ai/Yi-34B-Chat 12 deepseek-llm-7b https://huggingface.co/deepseek-ai/deepseek-llm-7b-chat 13 deepseek-coder-instruct-33b https://huggingface.co/deepseek-ai/deepseek-coder-33b-instruct 14 deepseek-llm-67b https://huggingface.co/deepseek-ai/deepseek-llm-67b-chat 15 qwen-7b https://huggingface.co/Qwen/Qwen-7B-Chat 16 qwen-14b https://huggingface.co/Qwen/Qwen-14B-Chat 17 qwen-72b https://huggingface.co/Qwen/Qwen-72B-Chat 18 qwen1.5-0.5b https://huggingface.co/Qwen/Qwen1.5-0.5B-Chat 19 qwen1.5-7b https://huggingface.co/Qwen/Qwen1.5-7B-Chat 20 qwen1.5-1.8b https://huggingface.co/Qwen/Qwen1.5-1.8B-Chat 21 qwen1.5-14b https://huggingface.co/Qwen/Qwen1.5-14B-Chat 22 qwen1.5-32b https://huggingface.co/Qwen/Qwen1.5-32B-Chat 23 qwen1.5-72b https://huggingface.co/Qwen/Qwen1.5-72B-Chat 24 qwen1.5-110b https://huggingface.co/Qwen/Qwen1.5-110B-Chat 25 baichuan2-7b https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat 26 baichuan2-13b https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat 27 chatglm2-6b https://huggingface.co/THUDM/chatglm2-6b 28 chatglm3-6b https://huggingface.co/THUDM/chatglm3-6b 29 gemma-2b https://huggingface.co/google/gemma-2b 30 gemma-7b https://huggingface.co/google/gemma-7b 31 mistral-7b https://huggingface.co/mistralai/Mistral-7B-v0.1
  • 镜像版本 本教程中用到基础镜像地址和配套版本关系如下表所示,请提前了解。 表2 基础容器镜像地址 配套软件版本 镜像用途 镜像地址 Cann版本 6.3.904版本 基础镜像 swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc1-py_3.9-hce_2.0.2312-aarch64-snt9b-20240516142953-ca51f42 cann_8.0.rc1 不同软件版本对应的基础镜像地址不同,请严格按照软件版本和镜像配套关系获取基础镜像。
  • 约束限制 本方案目前仅适用于企业客户。 本文档适配昇腾云ModelArts 6.3.904版本,请参考软件配套版本获取配套版本的软件包,请严格遵照版本配套关系使用本文档。 资源规格推荐使用“西南-贵阳一”Region上的DevServer和昇腾Snt9B资源。 推理部署使用的服务框架是vLLM(官网地址:https://github.com/vllm-project/vllm/tree/v0.3.2,版本:v0.3.2)。本教程是基于vLLM的昇腾适配的推理方案部署指导,支持FP16和BF16数据类型推理。 推理镜像环境配套的CANN版本是cann_8.0.rc1,PyTorch版本是2.1.0。
  • 资源规格要求 本文档中的模型运行环境是ModelArts Lite的DevServer。推荐使用“西南-贵阳一”Region上的资源和Ascend Snt9B。 如果使用DevServer资源,请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。
  • 软件配套版本 本方案支持的软件配套版本和依赖包获取地址如表1所示。 表1 模型对应的软件包和依赖包获取地址 软件名称 说明 下载地址 AscendCloud-3rdLLM-6.3.904-xxx.zip 说明: 软件包名称中的xxx表示时间戳。 包含了本教程中使用到的模型推理部署代码和推理评测代码。代码包具体说明请参见模型软件包结构说明。 获取路径:Support-E网站。 说明: 如果没有下载权限,请联系您所在企业的华为方技术支持下载获取。 AscendCloud-OPP-6.3.904-xxx.zip 推理依赖的算子包
  • HuggingFace权重转换操作 下载GLM3-6B的预训练权重和词表文件,并上传到/home/ma-user/ws/tokenizers/GLM3-6B目录下。具体下载地址请参见表1。如果已下载,忽略此步骤。 创建权重转换后的输出目录/home/ma-user/ws/processed_for_ma_input/GLM3-6B/converted_weights/。 cd /home/ma-user/ws/ #进入/home/ma-user/ws/目录 mkdir -p processed_for_ma_input/GLM3-6B/converted_weights 进入代码目录/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink,在此代码目录下执行2_convert_mg_hf.sh脚本。xxx-Ascend请根据实际目录替换。 #进入ModelLink目录下 cd /home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink # 执行权重格式转换脚本 TP=2 PP=4 LOAD_DIR=/home/ma-user/ws/tokenizers/GLM3-6B SAVE_DIR=/home/ma-user/ws/processed_for_ma_input/GLM3-6B/converted_weights TOKENIZER_PATH=/home/ma-user/ws/tokenizers/GLM3-6B CONVERT_HFtoMG=True sh ../scripts/glm3/2_convert_mg_hf.sh 其脚本2_convert_mg_hf.sh参数说明: --model-type:模型类型。 --loader:权重转换要加载检查点的模型名称。 --tensor-model-parallel-size:${TP} 张量并行数,需要与训练脚本中的配置一样。 --pipeline-model-parallel-size:${PP} 流水线并行数,需要与训练脚本中的配置一样。 --saver:检查模型保存名称。 --load-dir:${LOAD_DIR} 加载转换模型权重路径。 --save-dir : ${SAVE_DIR} 权重转换完成之后保存路径。 --tokenizer-model : ${TOKENIZER_PATH} tokenizer路径。 --add-qkv-bias : 为qkv这样的键和值添加偏差。 CONVERT_HFtoMG:权重转换类型是否为HuggingFace权重转换为Megatron格式,True表示HuggingFace权重转换为Megatron,反之False为Megatron格式转换HuggingFace格式。 权重转换完成后,在/home/ma-user/ws/processed_for_ma_input/GLM3-6B/converted_weights目录下查看转换后的权重文件。 图1 转换后的权重文件
  • 迁移环境准备 本文以弹性裸金属作为开发环境,弹性裸金属支持深度自定义环境安装,可以方便的替换驱动、固件和上层开发包,具有root权限,结合配置指导、初始化工具及容器镜像可以快速搭建昇腾开发环境。 开通裸金属服务器资源请见DevServer资源开通,在裸金属服务器上搭建迁移环境请见裸金属服务器环境配置指导,使用ModelArts提供的基础容器镜像请见容器环境搭建。 父主题: GPU训练业务迁移至昇腾的通用指导
  • ModelArts Standard推理部署 表4 推理部署列表 样例 镜像 对应功能 场景 说明 基于ModelArts Standard一键完成商超商品识别模型部署 - 在线服务 物体检测 此案例以“商超商品识别”模型为例,完成从AI Gallery订阅模型,到ModelArts一键部署为在线服务的 免费体验 过程。 第三方推理框架迁移到ModelArts Standard推理自定义引擎 - 第三方框架 推理部署 - ModelArts支持第三方的推理框架在ModelArts上部署,本文以TFServing框架、Triton框架为例,介绍如何迁移到推理自定义引擎。
  • 第三方案例列表 第三方案例来源为华为云开发者社区“云驻计划”。由于ModelArts产品的持续更新和迭代,第三方案例中的界面和步骤可能因时效性而与最新产品有所差异,仅供学习和参考。 表5 第三方案例列表 分类 文章名称 作者 Standard自动学习 2步打通ModelArts和Astro实现AI应用落地 胡琦 Standard开发环境 想不想让一张静态的照片动起来 林欣 基于TensorFlow训练轻量化ssdlite_mbv2人脸手机检测模型 AI练习生 基于ModelArts的手写数字识别 AXYZdong AI 文字编辑图片 instruct-pix2pix 案例 AXYZdong Standard推理部署 上线二维码检测识别服务 林欣 使用ModelArts对8类常见生活垃圾进行分类 福州司马懿 使用ModelArts搭建"花卉种类识别"服务 福州司马懿
  • AIGC模型训练推理场景 样例 场景 说明 SDXL基于Standard适配PyTorch NPU的Finetune训练指导(6.3.905) SDXL、SD1.5模型训练 介绍AIGC模型SDXL、SD1.5基于ModelArts DevServer的训练过程,训练使用PyTorch框架和昇腾NPU计算资源。训练后的模型可用于推理部署,应用于文生图场景。 SDXL&SD1.5 ComfyUI插件基于DevServer适配PyTorch NPU推理指导(6.3.906) SDXL、SD1.5模型推理 介绍AIGC模型SDXL、SD1.5基于ModelArts DevServer的训练过程,训练使用PyTorch框架和昇腾NPU计算资源。 启动推理服务后,可应用于文生图场景。 Open-Sora 1.0基于DevServer适配PyTorch NPU训练指导(6.3.905) Open-Sora 1.0模型训练 介绍Open-Sora 1.0模型基于ModelArts DevServer的训练过程,训练使用PyTorch框架和昇腾NPU计算资源。 训练后的模型可用于推理部署,应用于文生视频场景。 Qwen-VL基于DevServer适配Pytorch NPU的Finetune训练指导(6.3.906) Qwen-VL基于DevServer适配Pytorch NPU的推理指导(6.3.906) Qwen-VL模型训练推理 介绍Qwen-VL模型基于ModelArts DevServer的训练过程,训练使用PyTorch框架和昇腾NPU计算资源。 训练后的模型可用于推理部署,应用于大模型对话场景。 LLaVA模型基于DevServer适配PyTorch NPU预训练指导(6.3.906) LLaVA模型基于DevServer适配PyTorch NPU推理指导(6.3.906) LLaVA模型训练推理 介绍LLaVA模型基于ModelArts DevServer的训练过程,训练使用PyTorch框架和昇腾NPU计算资源。 训练后的模型可用于推理部署,应用于大模型对话场景。 Open-Clip基于DevServer适配PyTorch NPU训练指导 Open-Clip模型训练 介绍Open-Clip模型基于ModelArts DevServer的训练过程,训练使用PyTorch框架和昇腾NPU计算资源。 应用于AIGC和多模态视频编码器。
  • ModelArts Standard模型训练案例 表3 自定义算法样例列表 样例 镜像 对应功能 场景 说明 使用ModelArts Standard自定义算法实现手写数字识别 PyTorch 自定义算法 手写数字识别 使用用户自己的算法,训练得到手写数字识别模型,并部署后进行预测。 从0制作 自定义镜像 并用于训练(PyTorch+CPU/GPU) PyTorch 镜像制作 自定义镜像训练 - 此案例介绍如何从0到1制作镜像,并使用该镜像在ModelArts平台上进行训练。镜像中使用的AI引擎是PyTorch,训练使用的资源是CPU或GPU。 从0制作自定义镜像并用于训练(MPI+CPU/GPU) MPI 镜像制作 自定义镜像训练 - 此案例介绍如何从0到1制作镜像,并使用该镜像在ModelArts平台上进行训练。镜像中使用的AI引擎是MPI,训练使用的资源是CPU或GPU。 从0制作自定义镜像并用于训练(Tensorflow+GPU) Tensorflow 镜像制作 自定义镜像训练 - 此案例介绍如何从0到1制作镜像,并使用该镜像在ModelArts平台上进行训练。镜像中使用的AI引擎是Tensorflow,训练使用的资源是GPU。 从0制作自定义镜像并用于训练(MindSpore+Ascend) MindSpore 镜像制作 自定义镜像训练 - 此案例介绍如何从0到1制作镜像,并使用该镜像在ModelArts平台上进行训练。镜像中使用的AI引擎是MindSpore,训练使用的资源是NPU。
  • 数字人场景 样例 场景 说明 Wav2Lip基于DevServer适配PyTorch NPU训练指导(6.3.902) Wav2Lip基于DevServer适配PyTorch NPU推理指导(6.3.906) Wav2Lip,人脸说话视频模型,训练、推理 Wav2Lip是一种基于对抗生成网络的由语音驱动的人脸说话视频生成模型。主要应用于数字人场景。不仅可以基于静态图像来输出与目标语音匹配的唇形同步视频,还可以直接将动态的视频进行唇形转换,输出与输入语音匹配的视频,俗称“对口型”。该技术的主要作用就是在将音频与图片、音频与视频进行合成时,口型能够自然。 案例主要介绍如何基于ModelArts DevServer上的昇腾NPU资源进行模型训练推理。
  • ModelArts Standard开发工具案例 表2 Notebook样例列表 样例 镜像 对应功能 场景 说明 使用ModelArts PyCharm插件调试训练ResNet50图像分类模型 MindSpore PyCharm ToolKit工具 目标检测 本案例介绍如何在本地进行MindSpore模型开发,并将模型迁移至ModelArts训练。 使用ModelArts VsCode插件调试训练ResNet50图像分类模型 MindSpore VS Code Toolkit工具 目标检测 本案例以Ascend Model Zoo为例,介绍如何通过VS Code插件及ModelArts Notebook进行云端数据调试及模型开发。
  • ModelArts Standard自动学习案例 表1 自动学习样例列表 样例 对应功能 场景 说明 口罩检测 自动学习 物体检测 基于AI Gallery口罩数据集,使用ModelArts自动学习的物体检测算法,识别图片中的人物是否佩戴口罩。 垃圾分类 自动学习 图像分类 该案例基于华为云AI开发者社区AI Gallery中的数据集资产,让零AI基础的开发者完成“图像分类”的AI模型的训练和部署。
  • LLM大语言模型训练推理场景 样例 场景 说明 主流开源大模型基于DevServer适配PyTorch NPU训练指导(6.3.906) 预训练、SFT全参微调训练、LoRA微调训练 介绍主流的开源大模型Llama系列、Qwen系列、Yi系列、Baichuan系列、ChatGLM系列等基于ModelArts DevServer的训练过程,训练使用PyTorch框架和昇腾NPU计算资源。训练后的模型可用于推理部署,搭建大模型问答助手。 主流开源大模型基于Standard适配PyTorch NPU训练指导(6.3.906) 预训练、SFT全参微调训练、LoRA微调训练 介绍主流的开源大模型Llama系列、Qwen系列、Yi系列、Baichuan系列、ChatGLM系列等基于ModelArts Standard的训练过程,训练使用PyTorch框架和昇腾NPU计算资源。 训练后的模型可用于推理部署,搭建大模型问答助手。 主流开源大模型基于DevServer适配PyTorch NPU推理指导(6.3.906) 推理部署、推理性能测试、推理精度测试、推理模型量化 介绍主流的开源大模型Llama系列、Qwen系列、Yi系列、Baichuan系列、ChatGLM系列等基于ModelArts DevServer的推理部署过程,推理使用PyTorch框架和昇腾NPU计算资源。 启动推理服务后,可用于搭建大模型问答助手。 主流开源大模型基于Standard适配PyTorch NPU推理指导(6.3.906) 推理部署、推理性能测试、推理精度测试、推理模型量化 介绍主流的开源大模型Llama系列、Qwen系列、Yi系列、Baichuan系列、ChatGLM系列等基于ModelArts Standard的推理部署过程,推理使用PyTorch框架和昇腾NPU计算资源。 启动推理服务后,可用于搭建大模型问答助手。
  • Step4 下载原始模型包 从HuggingFace官网下载moondream2模型包到本地,下载地址:https://huggingface.co/vikhyatk/moondream2/tree/2024-03-06。 在宿主机上创建一个空目录/home/temp,将下载的模型包存放在宿主机/home/temp/moondream2目录下,修改目录权限后,复制到容器中。 mkdir /home/temp #创建一个空目录,将下载的模型包存放在宿主机/home/temp/moondream2目录下 chmod -R 777 moondream2 #修改moondream2目录权限 docker cp moondream2 moondream2:/home/ma-user/ #复制moondream2目录到容器中
  • Step3 启动容器镜像 启动容器镜像。启动前请先按照参数说明修改${}中的参数。 docker run -itd \ --device=/dev/davinci1 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /etc/ascend_install.info:/etc/ascend_install.info \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ --shm-size 32g \ --net=bridge \ -v ${work_dir}:${container_work_dir} \ --name ${container_name} \ ${image_name} bash 参数说明: -v ${work_dir}:${container_work_dir}:代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的文件系统。work_dir为宿主机中工作目录,目录下存放着训练所需代码、数据等文件。container_work_dir为要挂载到的容器中的目录。为方便两个地址可以相同。 容器不能挂载到/home/ma-user目录,此目录为ma-user用户家目录。如果容器挂载到/home/ma-user下,拉起容器时会与基础镜像冲突,导致基础镜像不可用。 driver及npu-smi需同时挂载至容器。 --name ${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。 ${image_name}:容器镜像的名称。 通过容器名称进入容器中。 docker exec -it ${container_name} bash
  • Step1 准备环境 请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。 检查环境。 SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态 npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装固件和驱动,或释放被挂载的NPU。 检查docker是否安装。 docker -v #检查docker是否安装 如尚未安装,运行以下命令安装docker。 yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。 sysctl -p | grep net.ipv4.ip_forward 如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。 sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward
  • Step1 准备环境 请参考Cluster资源开通,购买Cluster资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。 配置Cluster资源,确保可以通过公网访问Cluster机器,具体配置请参见配置Lite Cluster网络。 SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态 npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装固件和驱动,或释放被挂载的NPU。 检查docker是否安装。 docker -v #检查docker是否安装 如尚未安装,运行以下命令安装docker。 yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64
  • Step3 下载并安装软件 在宿主机上创建目录/root/comfyui,将下面步骤中所有的文件放到/root/comfyui目录下。 下载模型,模型下载地址:SD1.5模型地址 ,SDXL下载地址。根据自己的需要下载对应的模型。 将获取到的ComfyUI插件AscendCloud-AIGC-6.3.906-xxx.zip文件上传到/root/comfyui,并解压。获取路径参见表2。 unzip AscendCloud-AIGC-*.zip -d ./AscendCloud mv AscendCloud/aigc_inference/torch_npu/comfyui/831511a1eecbe271/comfyui_ascend_node ./ rm -rf AscendCloud* 编写dockerfile FROM swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc2-py_3.9-hce_2.0.2312-aarch64-snt9b-20240606190017-b881580 RUN cd /home/ma-user && git clone https://github.com/comfyanonymous/ComfyUI.git -c http.sslVerify=false && cd ComfyUI/ && git reset --hard 831511a1eecbe271e302f2f2053f285f00614180 && pip install -r requirements.txt COPY --chown=ma-user:ma-group v1-5-pruned-emaonly.safetensors /home/ma-user/ComfyUI/models/checkpoints COPY --chown=ma-user:ma-group sd_xl_base_1.0.safetensors /home/ma-user/ComfyUI/models/checkpoints COPY --chown=ma-user:ma-group comfyui_ascend_node /home/ma-user/ComfyUI/custom_nodes/comfyui_ascend_node ENTRYPOINT cd /home/ma-user/ComfyUI && source /usr/local/Ascend/ascend-toolkit/set_env.sh && python main.py --port 30027 --listen 0.0.0.0 --force-fp16 基于dockerfile进行build docker build -t comfyui:v1 .
  • 获取软件和镜像 表2 获取软件和镜像 分类 名称 获取路径 插件代码包 AscendCloud-6.3.906-xxx.zip软件包中的AscendCloud-AIGC-6.3.906-xxx.zip 说明: 包名中的xxx表示具体的时间戳,以包名的实际时间为准。 获取路径:Support-E。 说明: 如果没有下载权限,请联系您所在企业的华为方技术支持下载获取。 基础镜像 西南-贵阳一:swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc2-py_3.9-hce_2.0.2312-aarch64-snt9b-20240606190017-b881580 从SWR拉取。
  • 镜像地址 本教程中用到的训练的基础镜像地址和配套版本关系如下表所示,请提前了解。 表1 基础容器镜像地址 镜像用途 镜像地址 配套版本 训练基础镜像 swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc2-py_3.9-hce_2.0.2312-aarch64-snt9b-20240606190017-b881580 CANN:cann_8.0.rc2 PyTorch:2.1.0
  • Step2 安装Docker 检查docker是否安装。 docker -v #检查docker是否安装 如尚未安装,运行以下命令安装docker。 yum install -y docker 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。 sysctl -p | grep net.ipv4.ip_forward 如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。 sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward
  • 查看日志 训练过程中,训练日志会在最后的Rank节点打印。 图1 打印训练日志 训练完成后,如果需要单独获取训练日志文件,可以在${SAVE_PATH}/logs路径下获取。日志存放路径为{work_dir}/saved_dir_for_ma_output/BaiChuan2-13B/logs,本实例日志路径为/home/ma-user/ws/saved_dir_for_ma_output/BaiChuan2-13B/logs。
  • 查看性能 训练性能主要通过训练日志中的2个指标查看,吞吐量和loss收敛情况。 吞吐量(tokens/s/p):global batch size*seq_length/(总卡数*elapsed time per iteration)*1000,其参数在日志里可找到,默认seq_len值为4096,默认global batch size为64;其global batch size(GBS)、seq_len(SEQ_LEN)为训练时设置的参数。 loss收敛情况:日志里存在lm loss参数 ,lm loss参数随着训练迭代周期持续性减小,并逐渐趋于稳定平缓。也可以使用可视化工具TrainingLogParser查看loss收敛情况,如图2所示。 单节点训练:训练过程中的loss直接打印在窗口上。 多节点训练:训练过程中的loss打印在最后一个节点上。 图2 Loss收敛情况
共100000条