云服务器内容精选
-
获取软件和镜像 表1 获取软件和镜像 分类 名称 获取路径 插件代码包 AscendCloud-6.3.909软件包中的AscendCloud-AIGC-6.3.909-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.2406-aarch64-snt9b-20240910112800-2a95df3 SWR上拉取。 表2 模型镜像版本 模型 版本 CANN cann_8.0.rc3 驱动 23.0.6 PyTorch 2.1.0
-
Step8 下载模型权重 模型权重(可选择)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
-
步骤一 检查环境 请参考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
-
步骤五 下载代码安装环境 下载华为侧插件代码包AscendCloud-AIGC-6.3.909-xxx.zip文件,获取路径参见表1。 unzip AscendCloud-AIGC-6.3.909-xxx.zip cd multimodal_algorithm/InternVL2/train/5d8f485ad09b3eb9b2a7d9a24cca727fa58bb775 bash InternVL2_install.sh cp shells/* InternVL/internvl_chat/shell/internvl2.0/2nd_finetune/ mv InternVL ${container_work_dir}
-
步骤六 增加适配代码 # internVL2-40B模型需要执行下列步骤 cd ${container_work_dir}/multimodal_algorithm/ascendcloud_multimodal_plugin pip install -e . cd ${container_work_dir} 在InternVL/internvl_chat/internvl/train/internvl_chat_finetune.py 引入优化代码包 from ascendcloud_multimodal.train.models.internvl2 import ascend_modeling_internvl
-
Step9 开始训练 单机训练 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 多机训练 cd ${container_work_dir}/InternVL/internvl_chat # 8B lora GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.0/2nd_finetune/internvl2_8b_internlm2_7b_dynamic_res_2nd_finetune_lora_multi.sh # 8B full GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.0/2nd_finetune/internvl2_8b_internlm2_7b_dynamic_res_2nd_finetune_full_multi.sh # 26B lora GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.0/2nd_finetune/internvl2_26b_internlm2_20b_dynamic_res_2nd_finetune_lora_multi.sh # 26B full GPUS=8 PER_DEVICE_BATCH_SIZE=2 NNODES=${NODE_NUM} NODE_RANK=${NODE_RANK} MASTER_ADDR="${master_node_ip}" sh shell/internvl2.0/2nd_finetune/internvl2_26b_internlm2_20b_dynamic_res_2nd_finetune_full_multi.sh 参数说明: NODE_NUM:机器数量。 NODE_RANK:机器rank num,主机为0,其余递增。 MASTER_ADDR:主机IP地址。 训练成功如下图所示。
-
步骤三 运行并验证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 推理生成的图像
-
步骤一 准备环境 请参考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 ${conta iner_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-xxx.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拉取。
-
AI开发平台MODELARTS-SD1.5&SDXL Diffusers框架基于DevServer适配PyTorch NPU推理指导(6.3.908):步骤四 Diffusers使能多实例共享权重功能步骤四 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
-
环境准备 本工具支持x86和ARM的系统环境,使用前需要安装以下软件。 表2 安装软件及步骤 软件 安装步骤 mindspore-lite 安装版本:2.2.10 下载地址:https://www.mindspore.cn/lite/docs/zh-CN/r2.2/use/downloads.html 需要下载的安装包与机器规格有关,请根据需要选择合适的安装包。 如果机器规格为Snt9B,则下载操作系统为Linux-aarch64的tag包:mindspore-lite-2.2.10-linux-aarch64.tar.gz。 如果机器规格为Snt3P,则下载操作系统为Linux-x86_64的tag包:mindspore-lite-2.2.10-linux-x64.tar.gz。 安装方式如下: MindSpore Lite云侧推理包解压缩后,设置`LITE_HOME`环境变量为解压缩的路径,例如: export LITE_HOME=$some_path/mindspore-lite-2.2.10-linux-aarch64 设置环境变量LD_LIBRARY_PATH: export LD_LIBRARY_PATH=$LITE_HOME/runtime/lib:$LITE_HOME/runtime/third_party/dnnl:$LITE_HOME/tools/converter/lib:$LD_LIBRARY_PATH 如果需要使用convert_lite或者benchmark工具,则需要设置环境变量PATH。 export PATH=$LITE_HOME/tools/converter/converter:$LITE_HOME/tools/benchmark:$PATH cann 安装版本:CANN 7.0.0 下载地址:https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373/software/258923273?idAbsPath=fixnode01%7C23710424%7C251366513%7C22892968%7C251168373 请下载toolkit和对应机器的kernels包,以Snt9B为例则下载“Ascend-cann-toolkit_7.0.0_linux-aarch64.run”和“Ascend-cann-kernels-型号_7.0.0_linux.run”。 安装命令(以Snt9B的cann安装为例): ./Ascend-cann-toolkit_7.0.0_linux-aarch64.run --full ./Ascend-cann-kernels-型号_7.0.0_linux.run --install 请安装在默认路径下:/usr/local/Ascend,暂不支持安装在自定义路径下。 tailor 安装版本:0.3.4 下载地址: https://cneast3-modelarts-sdk.obs.cn-east-3.myhuaweicloud.com/tailor-0.3.4-py3-none-any.whl SHA-256: https://cneast3-modelarts-sdk.obs.cn-east-3.myhuaweicloud.com/tailor-0.3.4-py3-none-any.whl/1713929258832/tailor-0.3.4-py3-none-any.whl.sha256 安装命令: pip install tailor-0.3.4-py3-none-any.whl
-
使用指导 tailor支持“命令行”和“Python API”两种方式使用。 命令行方式 命令行运行样例: tailor --model_path="./resnet50-v2-7.onnx"--config_path="./config.ini"--input_shape="data:1,3,224,224"--output_path="/home/"--accuracy="fp32"--aoe=True config.ini参考内容如下: [ascend_context] input_shape=data:[-1,3,224,224] dynamic_dims=[1],[2],[3] 表3 参数说明 参数名称 功能描述 参数类型 是否必填 默认值 备注 --model_path 指定onnx模型路径。 string 是 - - --config_path 指定模型配置文件路径。 string 否 - tailor支持动态分档转换功能,需要指定配置文件路径,需要注意即便有配置文件,只要是动态模型就需要指定--input_shape参数。 --input_shape 指定模型转换的shape。 string 否 - 固定shape模型转换可以不填,动态模型转换必填。 --output_path 指定结果输出路径。 string 否 默认为当前目录下。 - --aoe 是否在转换时进行AOE优化。 bool 否 False AOE优化可以提升模型性能,但不是一定有提升,需要注意开启AOE,会导致模型转换耗时极大延长。 --accuracy 指定模型精度,只支持fp16和fp32。 string 否 fp16 - Python API 导入包并创建tailor对象。 from tailor.tailor import Tailor onnx_model_path = "./resnet50-v2-7.onnx" # 相对路径或者绝对路径均可以 t = Tailor(onnx_model_path) 查询onnx模型的输入信息。 # 查询onnx模型的输入信息 t.get_model_input_info() 图1 查询onnx模型的输入输出信息 查询onnx模型的输出信息。 # 查询模型的输出信息 t.get_model_output_info() 图2 查询onnx模型的输出信息 固定shape模型,可以直接运行。 t.run() 指定档位信息运行。 input_shape="data:1,3,224,224" t.run(input_shape=input_shape) 动态档位执行config_path运行。需要注意,只要是动态模型,就必须要传入input_shape,因为转换模型后的benchmark和profiling都依赖单个shape操作。 input_shape="data:1,3,224,224" config_path = "./resnet/config.ini" t.run(input_shape=input_shape, config_path=config_path) 指定精度为fp32。 input_shape="data:1,3,224,224" t.run(input_shape=input_shape, accuracy='fp32') 开启AOE优化。 input_shape="data:1,3,224,224" t.run(input_shape=input_shape, aoe=True) 指定输出位置。 input_shape="data:1,3,224,224" # 不指定输出路径,则默认在当前执行目录存储结果 t.run(input_shape=input_shape, output_path="/home/xxx") 运行结果将存储在output文件夹中,如果用户指定了output_path,会指定位置保存,如果不指定则在当前代码执行目录生成文件夹保存输出。整体运行的结果都存放在output文件夹中,每转一次模型就会根据模型名称以及相关参数生成结果文件,如下图所示。 图3 output文件 在每次运行的结果文件中,分为三部分:convert、benchmark、profiling,相关的文件及存储内容如下。 表4 输出文件介绍(以模型名称为resnet50-v2-7.onnx为例) 类别 文件名称 是否一定生成 文件存储内容 convert resnet50-v2-7.mindir 是 转换后的mindir模型。 resnet50-v2-7.om 否 转换过程中的om文件,不是必定生成。 onnx_to_mindspore.sh 是 模型转换命令,可以本地直接运行。 resnet50-v2-7_convert.log 是 模型转换过程的日志。 config.ini 否 配置文件,在指定fp32精度或者AOE打开时会生成。 onnx_to_mindspore_aoe.sh 否 在打开AOE功能时会生成。 benchmark run_benchmark.sh 是 运行benchmark的脚本,可本地直接运行。 run_benchmark_accuracy.sh 是 benchmark运行精度的脚本,可本地直接运行。 performance.txt 是 benchmark性能测试结果。 accuracy.txt 是 精度测试结果。 *.bin 是 自动构造的输入随机bin文件,可能存在多个。 resnet50-v2-7_output.txt 是 上述bin文件作为输入时onnx模型运行的结果。 profiling run_profiling.sh 是 运行profiling的脚本,可本地直接运行。 profiling.config 是 运行profiling的配置文件。 profiling.json 是 运行profiling的配置文件。 PROF_xxx开头的文件夹 是 运行profiling的结果文件夹。 run_aggregate.sh 是 运行数据聚合的脚本,可直接本地运行。 run_profiling.log 是 存储运行profiling的日志信息。
-
Step7 创建训练作业 创建训练作业,填下如下参数。 创建方式:选择自定义算法,启动方式选择自定义,然后选择上传到SWR的 自定义镜像 。 代码目录:选择上传到OBS的代码文件夹,例如/sdxl-train/code。若用户需要修改代码文件,可修改OBS桶中代码文件,创建训练作业时,会将OBS的code目录复制到训练容器的/home/ma-user/sdxl-train/user-job-dir/目录下,覆盖容器中原有的code目录。 启动命令:直接运行启动脚本文件diffusers_finetune_train.sh。 sh /home/ma-user/sdxl-train/user-job-dir/code/diffusers_finetune_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: 8*ascend-snt9b。如果需要多机训练,增加计算节点个数即可,启动脚本文件diffusers_finetune_train.sh支持多机训练。 图5 选择资源池规格 作业日志路径:选择输出日志到OBS的指定目录。 图6 选择作业日志路径 填写参数完成后,提交创建训练任务,训练完成后,作业状态会显示为已完成。 图7 训练完成
-
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
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格