华为云用户手册

  • 镜像版本 本教程中用到基础镜像地址和配套版本关系如下表所示,请提前了解。 表2 基础容器镜像地址 配套软件版本 镜像用途 镜像地址 配套 获取方式 6.3.909版本 基础镜像 swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc3-py_3.9-hce_2.0.2406-aarch64-snt9b-20240910112800-2a95df3 cann_8.0.rc3 pytorch_2.1.0 驱动23.0.6 从SWR拉取 不同软件版本对应的基础镜像地址不同,请严格按照软件版本和镜像配套关系获取基础镜像。
  • 步骤二:启动镜像 启动容器镜像,推理只需要启动单卡,启动前可以根据实际需要增加修改参数。 export work_dir="自定义挂载的工作目录" export container_work_dir="自定义挂载到容器内的工作目录" export container_name="自定义容器名称" export image_name="镜像名称或ID" // 启动一个容器去运行镜像 docker run -itd --net=bridge \ --device=/dev/davinci0 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ --shm-size=60g \ -p 8585:8585 \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /var/log/npu/:/usr/slog \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v ${work_dir}:${container_work_dir} \ --name ${container_name} \ ${image_name} \ /bin/bash 参数说明: --name ${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。 --device=/dev/davinci0:挂载NPU设备,该推理示例中挂载了1张卡davinci0。 -p 8585:8585:映射端口号,用户可自定义未被占用的端口号。 driver及npu-smi需同时挂载至容器。 不要将多个容器绑到同一个NPU上,会导致后续的容器无法正常使用NPU功能。
  • 步骤一:检查环境 请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 购买DevServer资源时如果无可选资源规格,需要联系华为云技术支持申请开通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问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
  • 步骤五:下载ComfyUI代码并安装依赖 下载ComfyUI源码 从github下载ComfyUI代码并切换到0.2.2分支。 cd ${container_work_dir} git clone -c http.sslVerify=false https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI # 切换到comfyui 0.2.2分支 git reset --hard 0c7c98a 下载flux模型权重 下载模型权重文件,并将模型放到容器内自定义挂载的工作目录。 下载Diffusion模型权重文件flux1-dev.safetensors和flux1-schnell.safetensors,放到${container_work_dir}/ComfyUI/models/unet 目录下。其中, FLUX.1-dev下载链接:https://huggingface.co/black-forest-labs/FLUX.1-dev/tree/main FLUX.1-schnell下载链接:https://huggingface.co/black-forest-labs/FLUX.1-schnell/tree/main 如下图所示: 图1 flux1-dev.safetensors 图2 flux1-schnell.safetensors 下载vae权重,放到 ${container_work_dir}/ComfyUI/models/vae 目录下,FLUX.1-dev和FLUX.1-schnell使用相同的vae权重。 下载链接: https://huggingface.co/black-forest-labs/FLUX.1-dev/tree/main 如下图所示: 图3 vae权重 下载text_encoder权重文件夹,放到${container_work_dir}/ComfyUI/models/clip 目录下。 下载链接:https://huggingface.co/stabilityai/stable-diffusion-3-medium/tree/main 图4 text_encoder权重文件 替换Ascend_node 将${container_work_dir}/aigc_inference/torch_npu/comfyui/a82fae2/comfyui_ascend_node文件夹复制到${container_work_dir}/ComfyUI/custom_nodes/目录下。 安装ascend_diffusers插件 执行以下命令安装华为侧插件ascend_diffusers。 pip install -e ${container_work_dir}/aigc_inference/torch_npu/diffusers/0_21_2/ascend_diffusers 安装依赖 运行以下命令进入工作目录,安装所需依赖包。 cd ${container_work_dir} pip install transformers==4.44.2 accelerate==0.34.2 sentencepiece==0.2.0 einops==0.8.0 torchsde==0.2.6 aiohttp==3.10.5 omegaconf==2.3.0 fastapi==0.115.0 uvicorn==0.30.6 spandrel==0.4.0 kornia==0.7.3 修改comfyui 源码 修改 ${container_work_dir}/Comfyui/comfy/ldm/flux/math.py 文件中rope()方法,把linespace的dtype改成torch.float32: 下载workflow文件 以workflow-flux1-dev-KnSeTKHjvuTd0RiUDSmW-datou-openart.ai.json为例: 下载链接: https://openart.ai/workflows/datou/flux1-dev/KnSeTKHjvuTd0RiUDSmW 如下图所示,单击“Download”进行下载,下载的json文件放到windows机器上任意位置即可,后续在windows上启动服务后需要加载使用。 图5 下载workflow文件
  • Step1 检查环境 请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 购买DevServer资源时如果无可选资源规格,需要联系华为云技术支持申请开通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问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
  • Step5 下载代码安装环境 下载华为侧插件代码包AscendCloud-AIGC-6.3.908-xxx.zip文件,获取路径参见表1。 unzip AscendCloud-AIGC-6.3.908-xxx.zip cd multimodal_algorithm/InternVL2/train/5d8f485ad09b3eb9b2a7d9a24cca727fa58bb775 bash InternVL2_install.sh mv InternVL ${container_work_dir}
  • Step8 开始训练 LoRA微调训练或者全参微调训练命令如下。 cd ${container_work_dir}/InternVL/internvl_chat # 8B全参微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 sh shell/internvl2.0/2nd_finetune/internvl2_8b_internlm2_7b_dynamic_res_2nd_finetune_full.sh # 8Blora微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 sh shell/internvl2.0/2nd_finetune/internvl2_8b_internlm2_7b_dynamic_res_2nd_finetune_lora.sh # 26Blora微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 sh shell/internvl2.0/2nd_finetune/internvl2_26b_internlm2_20b_dynamic_res_2nd_finetune_lora.sh # 40Blora微调 GPUS=8 PER_DEVICE_BATCH_SIZE=2 sh shell/internvl2.0/2nd_finetune/internvl2_40b_hermes2_yi_34b_dynamic_res_2nd_finetune_lora.sh 训练成功如下图所示。
  • Step7 下载模型权重 模型权重(可选择)InternVL2-8B, InternVL2-26B, InternVL2-40B 手动下载放置在${container_name}/InternVL/internvl_chat/pretrained路径下, pretrained目录需手动创建。 https://huggingface.co/OpenGVLab/InternVL2-8B/tree/main https://huggingface.co/OpenGVLab/InternVL2-26B/tree/main https://huggingface.co/OpenGVLab/InternVL2-40B/tree/main
  • 获取软件和镜像 表1 获取软件和镜像 分类 名称 获取路径 插件代码包 AscendCloud-6.3.908软件包中的AscendCloud-AIGC-6.3.908-xxx.zip 文件名中的xxx表示具体的时间戳,以包名发布的实际时间为准。 获取路径:Support-E 说明: 如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。 基础镜像包 swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc3-py_3.9-hce_2.0.2312-aarch64-snt9b-20240824153350-cebb080 SWR上拉取。 表2 模型镜像版本 模型 版本 CANN cann_8.0.rc3 驱动 23.0.6 PyTorch 2.1.0
  • 步骤三 运行并验证SDXL模型 首先在容器中运行命令。 source /usr/local/Ascend/ascend-toolkit/set_env.sh 进入/home/ma-user/AscendCloud-AIGC-6.3.908-xxx/aigc_inference/torch_npu/diffusers/0_21_2/ascend_diffusers,查看README.md文件,根据README.md文件里的指引启动单卡推理脚本。 cd /home/ma-user/AscendCloud-AIGC-6.3.908-xxx/aigc_inference/torch_npu/diffusers/0_21_2/ascend_diffusers cat README.md python examples/sd_inference_example.py --sdxl --model_id stabilityai/stable-diffusion-xl-base-1.0 --prompt 'a dog' --num_inference_steps 50 --width 512 768 1024 --height 512 768 1024 --dynamo --dynamic 会首先下载模型文件到/home/ma-user/.cache目录下,然后启动推理步骤。 图1 启动脚本 运行结束后,可以看到当前目录下生成了对应尺寸的图像。 图2 推理生成的图像
  • 步骤四 Diffusers使能多实例共享权重功能 进入AIGC插件解压路径,安装昇腾云torch插件。 pip install AscendCloud-Pytorch-Plugin/ascendcloud_torch_plugin-2.1-cp39-cp39-linux_aarch64.whl # 请根据python版本安装对应的whl包 启动两个终端,并在每个终端均设置下述环境变量。 export MASTER_ADDR=127.0.0.1 export MASTER_PORT=29001 export RANK=x # x等于终端的编号,如开启2个终端,x在两个终端中依次设置为0,1 export WORLD_SIZE=2 # WORLD_SIZE大小等于开启的实例个数 export ENABLE_SHARE_MEMORY=1 # 开启共享显存功能 在两个终端分别执行以下命令,该脚本可以确保diffusers框架能够按序加载模型。 cd aigc_inference/torch_npu/diffusers/0_21_2/ascend_diffusers/examples python modify_pipeline_to.py 在两个终端分别执行diffusers推理脚本,可参考如下脚本: # sdxl参考脚本 from diffusers import DiffusionPipeline, AutoencoderKL import torch import torch_npu from torch_npu.contrib import transfer_to_npu import torch.distributed as dist import ascendcloud_torch_plugin # 昇腾云torch插件,需要放在加载torch_npu后面 vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16) # sdxl场景需要用支持fp16的vae模型,否则可能出现黑图现象 pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", vae=vae, torch_dtype=torch.float16, use_safetensors=True, variant="fp16") pipe.to("cuda") pipe.vae.config.force_upcast = False # 共享权重不支持在推理过程中改变权重dtype prompt = "An astronaut riding a green horse" image = pipe(prompt=prompt).images[0] rank = dist.get_rank() image.save(f"astronaut_rides_horse_{rank}.png") 观察两个实例的显存占用情况,若其中一个实例相比另外一个实例占用更少的显存,且少占用的显存大小等于权重的大小,表明多实例共享权重功能成功开启。 若不需要使用共享显存功能时,请通过以下命令关闭共享显存功能,避免无法正常运行非共享显存的推理场景。 unset ENABLE_SHARE_MEMORY
  • 步骤一 准备环境 请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 购买DevServer资源时如果无可选资源规格,需要联系华为云技术支持申请开通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问Openstack的管理地址(169.254.169.254),以防止容器获取宿主机的元数据。具体操作请参见禁止容器获取宿主机元数据。 检查环境。 SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。 npu-smi info 如出现错误,可能是机器上的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 获取基础镜像。建议使用官方提供的镜像部署推理服务。镜像地址{image_url}参见表1。 docker pull {image_url} 启动容器镜像。启动前请先按照参数说明修改${}中的参数。可以根据实际需要增加修改参数。 docker run -itd \ --name sdxl-diffusers \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -p 8443:8443 \ -v /etc/localtime:/etc/localtime \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ --shm-size 60g \ --device=/dev/davinci_manager \ --device=/dev/hisi_hdc \ --device=/dev/devmm_svm \ --device=/dev/davinci3 \ --network=bridge \ ${image_name} bash 参数说明: --name ${container_name} 容器名称,进入容器时会用到,此处可以自己定义一个容器名称,例如sdxl-diffusers。 --device=/dev/davinci3:挂载主机的/dev/davinci3到容器的/dev/davinci3。可以使用npu-smi info查看空闲卡号,修改davinci后数字可以更改挂载卡。 ${image_name} 代表 ${image_name}。 进入容器。需要将${container_name}替换为实际的容器名称,例如:sdxl-diffusers。 docker exec -it ${container_name} bash
  • 步骤二 安装依赖和模型包 安装Diffusers相关依赖。 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple diffusers bottle invisible_watermark transformers accelerate safetensors 获取SDXL模型包到/home/ma-user目录下。 export HF_ENDPOINT=https://hf-mirror.com huggingface-cli download --resume-download stabilityai/stable-diffusion-xl-base-1.0 --local-dir stable-diffusion-xl-base-1.0 安装插件代码包。 将获取到的插件代码包AscendCloud-AIGC-6.3.908-xxx.zip文件上传到容器的/home/ma-user目录下,并解压。 cd /home/ma-user unzip AscendCloud-AIGC-6.3.908-*.zip #解压
  • 获取软件和镜像 表1 获取软件和镜像 分类 名称 获取路径 插件代码包 AscendCloud-6.3.908软件包中的AscendCloud-AIGC-6.3.908-xxx.zip 文件名中的xxx表示具体的时间戳,以包名发布的实际时间为准。 获取路径:Support-E 说明: 如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。 基础镜像 西南-贵阳一: swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc3-py_3.9-hce_2.0.2312-aarch64-snt9b-20240824153350-cebb080 从SWR拉取。
  • Step7 创建训练作业 创建训练作业,填下如下参数。 创建方式:选择自定义算法,启动方式选择自定义,然后选择上传到SWR的 自定义镜像 。 代码目录:选择上传到OBS的代码文件夹,例如/sdxl-train/code。若用户需要修改代码文件,可修改OBS桶中代码文件,创建训练作业时,会将OBS的code目录复制到训练容器的/home/ma-user/sdxl-train/user-job-dir/目录下,覆盖容器中原有的code目录。 启动命令:将华为侧优化后代码文件复制到工作目录后,运行启动脚本文件diffusers_sdxl_lora_train.sh。 cd /home/ma-user/sdxl-train/user-job-dir/code && cp /home/ma-user/sdxl-train/train_text_to_image_lora_sdxl.py ./ && sh diffusers_sdxl_lora_train.sh 本地代码目录:保持默认即可。 工作目录:选择代码文件目录,例如/home/ma-user/sdxl-train/user-job-dir/code/。 输出:单击“增加训练输出”,将模型保存到OBS中。参数名称为output,数据存储位置选择OBS桶中制定文件夹,例如sdxl-train/checkpoint,获取方式选择环境变量,/home/ma-user/modelarts/outputs/output_0下的模型文件会保存到OBS中。 图4 选择镜像 资源池:选择专属资源池,规格选择Ascend: 1*ascend-snt9b。 图5 选择资源池规格 作业日志路径:选择输出日志到OBS的指定目录。 图6 选择作业日志路径 填写参数完成后,提交创建训练任务,训练完成后,作业状态会显示为已完成。 图7 训练启动成功
  • Step8 断点续训 查看训练日志,在训练任务启动后,当训练超过500步后开始保存checkpoint文件,保存成功后,手动终止训练任务。 图8 保存checkpoint文件 然后单击重建后提交。 图9 重建训练作业 提交新的任务时,注意将预下载到本地目录勾上。 图10 勾选预下载到本地目录 观察启动日志,启动会读取最新的checkpoint模型文件,接着上次保存的step位置开始训练。 图11 读取最新的checkpoint模型文件
  • 获取软件和镜像 表1 获取软件和镜像 分类 名称 获取路径 插件代码包 AscendCloud-6.3.908软件包中的AscendCloud-AIGC-6.3.908-xxx.zip 文件名中的xxx表示具体的时间戳,以包名发布的实际时间为准。 获取路径:Support-E 说明: 如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。 基础镜像包 swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc3-py_3.9-hce_2.0.2312-aarch64-snt9b-20240824153350-cebb080 SWR上拉取。 表2 模型镜像版本 模型 版本 CANN cann_8.0.rc3 驱动 23.0.6 PyTorch 2.1.0
  • Step4 下载模型依赖包 请在如下链接中下载好模型依赖包。 下载stable-diffusion-xl-base-1.0,官网下载地址:https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main 下载vae-fp16-fix,官网下载地址:https://huggingface.co/madebyollin/sdxl-vae-fp16-fix/tree/main
  • Step2 创建OBS桶 ModelArts使用 对象存储服务 (Object Storage Service,简称OBS)进行数据存储以及模型的备份和快照,实现安全、高可靠和低成本的存储需求。因此,在使用ModelArts之前通常先创建一个OBS桶,然后在OBS桶中创建文件夹用于存放数据。 本文档需要将运行代码以及输入输出数据存放OBS,请提前创建OBS(参考创建OBS桶),例如桶名:sdxl-train。并在该桶下创建文件夹目录用于后续存储代码使用,例如:code。
  • Step7 下载数据集 先创建文件夹用来存放数据集。 mkdir datasets cd datasets 训练使用的开源数据集链接:https://huggingface.co/datasets/LanguageBind/Open-Sora-Plan-v1.0.0/tree/main。 由于数据集比较大,可以自行选择部分数据集手动下载解压,并放入 ./datasets文件夹下。 例如:这里下载了上述链接中mixkit.tar.gz和sharegpt4v_path_cap_64x512x512.json。 (备注:如果只下载了部分数据集,需要对应修改sharegpt4v_path_cap_64x512x512.json文件) 解压数据集: tar -xzvf mixkit.tar.gz 解压后的数据集结果如图所示。 图5 解压后的数据集文件
  • Step8 下载权重文件 建议手动下载所需的权重文件,在/home/ma-user/Open-Sora-Plan1.0/目录下进行操作。 创建文件夹存放不同的权重文件。 mkdir weights mkdir weights_t5 mkdir cache_dir 下载基础模型权重t2v.pt放到cache_dir文件夹下。 mkdir Latte cd Latte git clone -c http.sslVerify=false https://huggingface.co/maxin-cn/Latte cd Latte git reset --hard 83bdc71f7211963153464859d03d46d707e77865 然后将该目录下的t2v.pt文件复制到/home/ma-user/Open-Sora-Plan1.0/cache_dir目录下。 下载VAE权重vae-ft-mse-840000-ema-pruned.ckpt和配置文件config.json,放在weights文件夹下。 下载链接:https://huggingface.co/stabilityai/sd-vae-ft-ema/tree/main 下载text_encoder权重,放在weights_t5文件夹下。 下载链接:https://huggingface.co/DeepFloyd/t5-v1_1-xxl/tree/main,手动下载如图6所示文件,并放到weights_t5文件夹下 图6 Huggingface中t5-v1_1-xxl模型目录内容
  • Step9 启动训练服务 在/home/ma-user/Open-Sora-Plan1.0/目录下进行操作 训练至少需要单机8卡。 命令启动训练脚本。 例如:训练65帧的视频,拼接4张图片,则执行如下命令: bash train_videoae_65x512x512.sh 正常训练过程如下图所示。训练完成后,关注loss值,loss曲线收敛,记录总耗时和单步耗时。训练过程中,训练日志会在最后的Rank节点打印。可以使用可视化工具TrainingLogParser查看loss收敛情况。 图7 正常训练过程 训练完成后权重保存在自动生成的目录,例如:t2v-f17-256-img4-videovae488-bf16-ckpt-xformers-bs4-lr2e-5-t5/epoch1-global_step2000/checkpoint-2000/model。
  • Step10 推理部署 使用官方权重文件推理 官方权重下载链接:https://huggingface.co/LanguageBind/Open-Sora-Plan-v1.0.0/tree/main 创建文件夹存放官方权重文件, mkdir weights_inference cd weights_inference mkdir vae mkdir 65x512x512 以65x512x512为例: 1,进入链接https://huggingface.co/LanguageBind/Open-Sora-Plan-v1.0.0/tree/main 2,手动下载65x512x512目录下的权重文件diffusion_pytorch_model.safetensors和配置文件config.json,并放到weights_inference/65x512x512目录下 3,手动下载vae目录下的权重文件diffusion_pytorch_model.safetensors和配置文件config.json,并放到weights_inference/vae目录下。 4,执行如下命令使用官方权重推理。 bash sample_video_65.sh 使用训练生成的权重文件推理 在Step7 启动训练服务完成后,会在工作目录/home/ma-user/Open-Sora-Plan1.0/下自动生成一个t2v-f17-256-img4-videovae488-bf16-ckpt-xformers-bs4-lr2e-5-t5文件夹,训练后生成的权重文件存放在t2v-f17-256-img4-videovae488-bf16-ckpt-xformers-bs4-lr2e-5-t5文件夹中,例如t2v-f17-256-img4-videovae488-bf16-ckpt-xformers-bs4-lr2e-5-t5/010-F16S3-STDiT-XL-2/checkpoint-2000/model。 修改推理配置文件中的权重文件sample_video_65.sh中的路径参数:--model_path,并执行如下推理命令。 bash sample_video_65.sh
  • Step1 检查环境 请参考DevServer资源开通,购买DevServer资源,并确保机器已开通,密码已获取,能通过SSH登录,不同机器之间网络互通。 购买DevServer资源时如果无可选资源规格,需要联系华为云技术支持申请开通。 当容器需要提供服务给多个用户,或者多个用户共享使用该容器时,应限制容器访问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
  • Step3 构建镜像 基于官方提供的基础镜像构建自定义镜像Open-Sora-Plan1.0:1.0。参考如下命令编写Dockerfile文件。镜像地址{image_url}请参见表2。 FROM {image_url} COPY --chown=ma-user:ma-group OpenSoraPlan1.0/* /home/ma-user/Open-Sora-Plan1.0 RUN cd /home/ma-user/Open-Sora-Plan1.0 && bash prepare.sh WORKDIR /home/ma-user/Open-Sora-Plan1.0
  • 镜像版本 本教程中用到基础镜像地址和配套版本关系如下表所示,请提前了解。 表2 基础容器镜像地址 配套软件版本 镜像用途 镜像地址 配套 获取方式 6.3.907版本 基础镜像 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-20240727152329-0f2c29a cann_8.0.rc2 pytorch_2.1.0 驱动23.0.6 从SWR拉取 不同软件版本对应的基础镜像地址不同,请严格按照软件版本和镜像配套关系获取基础镜像。
  • Step4 启动镜像 启动容器镜像,推理只需要启动单卡,启动前可以根据实际需要增加修改参数。 docker run -itd --name ${container_name} -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /etc/localtime:/etc/localtime -v /usr/local/Ascend/driver:/usr/local/Ascend/driver -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi --shm-size 60g --device=/dev/davinci_manager --device=/dev/hisi_hdc --device=/dev/devmm_svm --device=/dev/davinci0 --security-opt seccomp=unconfined --network=bridge Open-Sora-Plan1.0:1.0 bash 参数说明: --name ${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。 --device=/dev/davinci0:挂载NPU设备,该推理示例中挂载了1张卡davinci0。 driver及npu-smi需同时挂载至容器。 不要将多个容器绑到同一个NPU上,会导致后续的容器无法正常使用NPU功能。
  • 镜像版本 本教程中用到基础镜像地址和配套版本关系如下表所示,请提前了解。 表2 基础容器镜像地址 配套软件版本 镜像用途 镜像地址 配套 获取方式 6.3.907版本 基础镜像 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-20240727152329-0f2c29a cann_8.0.rc2 pytorch_2.1.0 驱动23.0.6 从SWR拉取 不同软件版本对应的基础镜像地址不同,请严格按照软件版本和镜像配套关系获取基础镜像。
  • Step5启动推理 本章节介绍SD3模型的推理过程。使用官方提供的已经训练好的模型进行推理,输入prompt生成指定像素的图片。 使用如下命令登录huggingface,并输入个人账号的token: huggingface-cli login 执行如下命令运行推理脚本启动SD3服务: #配置环境变量 export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True python run_inference.py 参数说明: height、width: 指定生成图片的长和宽,例如:512、960、1024 prompt_list: prompt列表,可以自行修改。 推理执行成功如下图所示。 图1 推理执行成功
  • Step3 构建镜像 基于官方提供的基础镜像构建自定义镜像diffusers-sd3-inference:0.0.1。参考如下命令编写Dockerfile文件。镜像地址{image_url}请参见表2。 FROM {image_url} RUN mkdir /home/ma-user/diffusers COPY --chown=ma-user:ma-group diffusers/0.29.2 /home/ma-user/diffusers WORKDIR /home/ma-user/diffusers RUN dos2unix diffusers_sd3.patch RUN cd /home/ma-user/diffusers && sh prepare.sh RUN cp attention_processor.py /home/ma-user/anaconda3/envs/PyTorch-2.1.0/lib/python3.9/site-packages/diffusers/models/attention_processor.py RUN pip install transformers RUN pip install accelerate RUN pip install sentencepiece
共100000条