diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/README.md b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/README.md index 0136b1b784a7f586980a21761af2680a6e6c8088..8fb6101222ff76d18406c8bbe440026bb765be97 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/README.md +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/README.md @@ -127,17 +127,20 @@ # xl (执行时下载权重) model_base="stabilityai/stable-diffusion-xl-base-1.0" - xl (使用上一步下载的权重) + # xl (使用上一步下载的权重) model_base="./stable-diffusion-xl-base-1.0" + + # 配置设备芯片信息 + npu-smi info # 查看芯片型号,记为chip_name, 例如 chip_name=310P3(自行替换) ``` 执行命令: ```bash # 使用unetCache, 非并行 - python3 export_ts.py --model ${model_base} --output_dir ./models --use_cache --batch_size 1 --flag 0 --soc A2 --device 0 + python3 export_ts.py --model ${model_base} --output_dir ./models --use_cache --batch_size 1 --flag 0 --soc Ascend${chip_name} --device_type A2 --device 0 # 使用unetCache, 并行 - python3 export_ts.py --model ${model_base} --output_dir ./models --use_cache --parallel --batch_size 1 --flag 0 --soc Duo --device 0 + python3 export_ts.py --model ${model_base} --output_dir ./models --use_cache --parallel --batch_size 1 --flag 0 --soc Ascend${chip_name} --device_type Duo --device 0 ``` 参数说明: @@ -147,7 +150,8 @@ - --parallel: 【可选】导出适用于并行方案的模型, 当前仅带unetCache优化时,支持并行 - --batch_size: 设置batch_size, 默认值为1, 当前最大支持batch_size=2 - --flag:默认为0。0代表静态,只支持分辨率为1024x1024;1代表动态分档,支持的分辨率为1024x1024和512x512;2代表动态shape,height的范围为[512, 1024],width的范围是[512, 1664]。 - - --soc:只支持Duo和A2。 + - --soc:处理器型号 + - --device_type: 设备形态。支持A2和Duo。 - --device:推理设备ID 2. 开始推理验证。 @@ -387,10 +391,10 @@ ```bash # 使用unetCache, 非并行 - python3 export_ts.py --model ${model_base} --output_dir ./models --use_cache --flag 0 --soc A2 --device 0 + python3 export_ts.py --model ${model_base} --output_dir ./models --use_cache --flag 0 --soc Ascend${chip_name} --device_type A2 --device 0 # 不使用unetCache, 非并行 - python3 export_ts.py --model ${model_base} --output_dir ./models --flag 0 --soc A2 --device 0 + python3 export_ts.py --model ${model_base} --output_dir ./models --flag 0 --soc Ascend${chip_name} --device_type A2 --device 0 ``` 2. 量化编译。./quant/build.sh中的TorchPath需要指定为python安装torch的路径。 @@ -436,10 +440,10 @@ ```bash # 若使用unetCache, 且非并行 - python3 export_ts_quant.py --model ${model_base} --output_dir ./models_quant --use_cache --batch_size 1 --soc A2 --device 0 --height 1024 --width 1024 + python3 export_ts_quant.py --model ${model_base} --output_dir ./models_quant --use_cache --batch_size 1 --soc Ascend${chip_name} --device_type A2 --device 0 --height 1024 --width 1024 # 若不使用unetCache, 且非并行 - python3 export_ts_quant.py --model ${model_base} --output_dir ./models_quant --batch_size 1 --soc A2 --device 0 --height 1024 --width 1024 + python3 export_ts_quant.py --model ${model_base} --output_dir ./models_quant --batch_size 1 --soc Ascend${chip_name} --device_type A2 --device 0 --height 1024 --width 1024 ``` 参数说明: @@ -589,16 +593,17 @@ 执行模型转换: ```bash #基础模型lora热切特性转换: - python3 export_ts.py --model ${model_base} --output_dir ./models --batch_size 1 --flag 0 --soc A2 --device 0 --lorahot_support --baselora_path ${baselora_path} + python3 export_ts.py --model ${model_base} --output_dir ./models --batch_size 1 --flag 0 --soc Ascend${chip_name} --device_type A2 --device 0 --lorahot_support --baselora_path ${baselora_path} #unetcahche版模型转换: - python3 export_ts.py --model ${model_base} --output_dir ./models --use_cache --batch_size 1 --flag 0 --soc A2 --device 0 --lorahot_support --baselora_path ${baselora_path} + python3 export_ts.py --model ${model_base} --output_dir ./models --use_cache --batch_size 1 --flag 0 --soc Ascend${chip_name} --device_type A2 --device 0 --lorahot_support --baselora_path ${baselora_path} ``` 参数说明: - --model 下载的模型权重路径 - --output_dir 转换后的模型输出路径 - --batch_size 设置batch_size, 默认值为1, 当前最大支持batch_size=2 - --flag:默认为0。0代表静态,只支持分辨率为1024x1024;1代表动态分档,支持的分辨率为1024x1024和512x512;2代表动态shape,height的范围为[512, 1024],width的范围是[512, 1664]。 - - --soc:只支持Duo和A2。 + - --soc:处理器型号。 + - --device_type: 设备形态。仅支持A2和Duo。 - --device:推理设备ID - --lorahot_support:生成模型支持Lora热切换功能 - --baselora_path:仅指定lorahot_support时生效,代表Unet基础权重的保存路径,用于后续Lora权重热切换 @@ -709,9 +714,9 @@ 此后运行如下命令生成新权重的pt模型: ```bash #不使用unetcache - python3 export_ts.py --model ${model_new} --output_dir ./models --batch_size 1 --flag 0 --soc A2 --device 0 + python3 export_ts.py --model ${model_new} --output_dir ./models --batch_size 1 --flag 0 --soc Ascend${chip_name} --device_type A2 --device 0 #使用unetcache - python3 export_ts.py --model ${model_new} --output_dir ./models --batch_size 1 --flag 0 --soc A2 --device 0 --use_cache + python3 export_ts.py --model ${model_new} --output_dir ./models --batch_size 1 --flag 0 --soc Ascend${chip_name} --device_type A2 --device 0 --use_cache ``` 2. 热切模型准备 diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/export_ts.py b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/export_ts.py index 59cc46fbfcdb0bb03704d0fbe326e577c4d066e4..c37b6f75fb1fcfa814630aa980caf35678ccd71a 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/export_ts.py +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/export_ts.py @@ -47,7 +47,8 @@ def parse_arguments() -> Namespace: parser.add_argument("--use_cache", action="store_true", help="Use cache during inference.") parser.add_argument("-p", "--parallel", action="store_true", help="Export the unet of bs=1 for parallel inferencing.") - parser.add_argument("--soc", choices=["Duo", "A2"], default="A2", help="soc_version.") + parser.add_argument("--soc", help="soc_version.") + parser.add_argument("--device_type", choices=["A2", "Duo"], default="A2", help="device_type.") parser.add_argument("--lorahot_support", action="store_true", help="compiled model support hot lora weight switch") parser.add_argument( "--baselora_path", @@ -762,8 +763,8 @@ if __name__ == "__main__": widths = [1024, 512, 1664, 1360, 1024] args = parse_arguments() - if args.soc == "Duo": - soc_version = "Ascend310P3" - elif args.soc == "A2": - soc_version = "Ascend910B4" + if args.device_type != "Duo" and args.device_type != "A2": + print("unsupport device_type, please check!") + else: + soc_version = args.soc main() \ No newline at end of file diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/export_ts_quant.py b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/export_ts_quant.py index c600937c7fd08f63bdea47bef1f854eb039af841..8704c1c15a095652a3ce1a87ea9a9dca6b790e8b 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/export_ts_quant.py +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl/export_ts_quant.py @@ -50,7 +50,8 @@ def parse_arguments() -> Namespace: parser.add_argument("--use_cache", action="store_true", help="Use cache during inference.") parser.add_argument("-p", "--parallel", action="store_true", help="Export the unet of bs=1 for parallel inferencing.") - parser.add_argument("--soc", choices=["Duo", "A2"], default="A2", help="soc_version.") + parser.add_argument("--soc", help="soc_version.") + parser.add_argument("--device_type", choices=["A2", "Duo"], default="A2", help="device_type.") parser.add_argument( "--unet_data_dir", type=str, @@ -453,8 +454,8 @@ def main(): if __name__ == '__main__': args = parse_arguments() - if args.soc == "Duo": - soc_version = "Ascend310P3" - elif args.soc == "A2": - soc_version = "Ascend910B4" + if args.device_type != "Duo" and args.device_type != "A2": + print("unsupport device_type, please check!") + else: + soc_version = args.soc main() \ No newline at end of file diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/README.md b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/README.md index 86a6f87f2c5a8875d774d04ee57aeb42deec1cfd..8ef5e9c804200700c98503001a568aa63806912b 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/README.md +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/README.md @@ -106,15 +106,18 @@ model_controlnet="./controlnet-canny-sdxl-1.0" # sdxl-vae-fp16-fix (使用上一步下载的权重) model_vae="./sdxl-vae-fp16-fix" + + # 配置设备芯片信息 + npu-smi info # 查看芯片型号,记为chip_name, 例如 chip_name=设备型号 ``` 执行命令: ```bash # 静态模型 - python3 export_ts_controlnet.py --model ${model_base} --controlnet_model ${model_controlnet} --vae_model ${model_vae} --output_dir ./models --batch_size 1 --flag 0 --soc A2 --device 0 + python3 export_ts_controlnet.py --model ${model_base} --controlnet_model ${model_controlnet} --vae_model ${model_vae} --output_dir ./models --batch_size 1 --flag 0 --soc Ascend${chip_name} --device_type A2 --device 0 # 动态分档模型,仅支持1024*1024、512*512两种 - python3 export_ts_controlnet.py --model ${model_base} --controlnet_model ${model_controlnet} --vae_model ${model_vae} --output_dir ./models --batch_size 1 --flag 1 --soc A2 --device 0 + python3 export_ts_controlnet.py --model ${model_base} --controlnet_model ${model_controlnet} --vae_model ${model_vae} --output_dir ./models --batch_size 1 --flag 1 --soc Ascend${chip_name} --device_type A2 --device 0 ``` @@ -126,7 +129,8 @@ - --output_dir: ONNX模型输出目录 - --batch_size: 设置batch_size, 默认值为1,当前仅支持batch_size=1的场景 - --falg: 设置模型编译方式。默认值为1。值为0表示静态模型,值为1表示动态分档模型。 - - --soc: 默认值为A2,当前仅支持800IA2场景。A2特指910B4。 + - --soc: 处理器型号 + - --device_type: 设备形态,当前仅支持A2。 - --device:推理设备ID;可用逗号分割传入两个设备ID,此时会使用并行方式进行推理。 静态编译场景: @@ -155,7 +159,6 @@ --device 0 \ --save_dir ./results \ --output_dir ./models \ - --soc A2 \ --flag 1 \ --w_h 1024 ``` @@ -168,7 +171,6 @@ - --device:推理设备ID。 - --save_dir:生成图片的存放目录。 - --output_dir:存放导出模型的目录。 - - --soc: 默认值为A2,当前仅支持800IA2场景。A2特指910B4。 - --falg: 设置模型编译方式。默认值为1。值为0表示静态模型,值为1表示动态分档模型。 - --w_h: image的宽高,设置为1024表示宽高均为1024,设置为512表示宽高均为512。仅支持这两种分辨率。 diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/export_ts_controlnet.py b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/export_ts_controlnet.py index 0fa46dccf43f1db1e5a28bad2cb22c63720e42dc..60dced4dad33c25a70417ff971f683f5b6001d87 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/export_ts_controlnet.py +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/export_ts_controlnet.py @@ -78,9 +78,13 @@ def parse_arguments() -> Namespace: ) parser.add_argument( "--soc", + help="soc_version." + ) + parser.add_argument( + "--device_type", choices=["A2"], default="A2", - help="soc_version.", + help="device_type." ) parser.add_argument( "--device", @@ -438,13 +442,11 @@ def export_control(model, save_path, controlnet_path, conditioning_scale, flag, def export(model_path: str, controlnet_path: str, vae_path: str, save_dir: str, batch_size: int, - conditioning_scale: float, flag: int, soc: str) -> None: - if soc == "A2": - soc_version = "Ascend910B4" - else: - print("unsupport soc_version, please check!") + conditioning_scale: float, flag: int, device_type: str, soc_version: str) -> None: + if device_type != "A2": + print("unsupport device_type, please check!") return - + controlnet = ControlNetModel.from_pretrained(controlnet_path) vae = AutoencoderKL.from_pretrained(vae_path) @@ -463,7 +465,7 @@ def main(): mindietorch.set_device(args.device) export(args.model, args.controlnet_model, args.vae_model, args.output_dir, args.batch_size, args.conditioning_scale, - args.flag, args.soc) + args.flag, args.device_type, args.soc) print("Done.") diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/stable_diffusionxl_pipeline_controlnet.py b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/stable_diffusionxl_pipeline_controlnet.py index a823cd6d0479b10976a20313d11fc1f40fd9c961..4602598a64a21259a6e8b4e775603ed77e21e311 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/stable_diffusionxl_pipeline_controlnet.py +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/stable_diffusionxl_pipeline_controlnet.py @@ -1375,12 +1375,6 @@ def parse_arguments(): default="./models", help="Path of directory to save compiled models.", ) - parser.add_argument( - "--soc", - choices=["A2"], - default="A2", - help="soc_version.", - ) parser.add_argument( "-cond_scale", "--conditioning_scale", diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/README.md b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/README.md index c1bfcc5b8660f6b42b3a12dcd7114277dd911cc8..e471e426343b0bc45a88b0ebac1b467c61e9707f 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/README.md +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/README.md @@ -109,18 +109,21 @@ # xl (使用上一步下载的权重) model_base="./stable-diffusion-xl-base-1.0" ``` + # 配置设备芯片信息 + npu-smi info # 查看芯片型号,记为chip_name, 例如 chip_name=设备型号 执行命令: ```bash - python3 export_ts_inpainting.py --model ${model_base} --output_dir ./models --batch_size 1 --flag 1 --soc A2 --device 0 + python3 export_ts_inpainting.py --model ${model_base} --output_dir ./models --batch_size 1 --flag 1 --soc Ascend${chip_name} --device_type A2 --device 0 ``` 参数说明: - --model:模型权重路径 - --output_dir: ONNX模型输出目录 - --batch_size: 设置batch_size, 默认值为1,当前仅支持batch_size=1的场景 - --flag:默认为1。0代表静态,只支持分辨率为1024x1024;1代表动态分档,支持的分辨率为1024x1024和512x512。 - - --soc:当前仅支持A2。A2特指910B4。 + - --soc:处理器型号。 + - --device_type: 设备形态,当前仅支持A2。 - --device:推理设备ID - --use_cache: 【可选】在推理过程中使用cache @@ -151,7 +154,6 @@ --steps 30 \ --device 0 \ --output_dir ./models \ - --soc A2 \ --flag 1 \ --w_h 1024 \ --strength 0.99 \ @@ -166,7 +168,6 @@ --steps 30 \ --device 0 \ --output_dir ./models \ - --soc A2 \ --flag 1 \ --w_h 1024 \ --strength 0.99 \ @@ -183,7 +184,6 @@ - --steps:生成图片迭代次数。 - --device:推理设备ID;可用逗号分割传入两个设备ID,此时会使用并行方式进行推理。 - --output_dir:存放导出模型的目录。 - - --soc:当前仅支持A2。A2特指910B4。 - --flag:默认为1。0代表静态,只支持分辨率为1024x1024;1代表动态分档,支持的分辨率为1024x1024和512x512。**注意**:请与导出模型时设置的flag保持一致 - --w_h: image的宽高,设置为1024表示宽高均为1024,设置为512表示宽高均为512。仅支持这两种分辨率。 - --strength:当w_h=1024时,设置该值为0.99。当w_h=512时,设置该值为0.6。 diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/export_ts_inpainting.py b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/export_ts_inpainting.py index 6792e2558fafe363fd49f4919ac3911c7d334718..b26b556bebaffe8423303ea40b6fded4423705e2 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/export_ts_inpainting.py +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/export_ts_inpainting.py @@ -56,9 +56,13 @@ def parse_arguments() -> Namespace: ) parser.add_argument( "--soc", + help="soc_version.", + ) + parser.add_argument( + "--device_type", choices=["A2"], default="A2", - help="soc_version.", + help="device_type.", ) parser.add_argument( "--use_cache", @@ -626,13 +630,12 @@ def export_image_encode(sd_pipeline: StableDiffusionXLInpaintPipeline, save_dir: print("This operation is not supported!") -def export(model_path: str, save_dir: str, batch_size: int, flag: int, soc: str, use_cache: bool) -> None: - if soc == "A2": - soc_version = "Ascend910B4" - else: - print("unsupport soc_version, please check!") +def export(model_path: str, save_dir: str, batch_size: int, flag: int, + device_type: str, soc_version: str, use_cache: bool) -> None: + if device_type != "A2": + print("unsupport device_type, please check!") return - + pipeline = StableDiffusionXLInpaintPipeline.from_pretrained(model_path).to("cpu") export_clip(pipeline, save_dir, batch_size, flag, soc_version) @@ -651,7 +654,7 @@ def export(model_path: str, save_dir: str, batch_size: int, flag: int, soc: str, def main(): args = parse_arguments() mindietorch.set_device(args.device) - export(args.model, args.output_dir, args.batch_size, args.flag, args.soc, args.use_cache) + export(args.model, args.output_dir, args.batch_size, args.flag, args.device_type, args.soc, args.use_cache) print("Done.") diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/stable_diffusionxl_pipeline_inpainting.py b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/stable_diffusionxl_pipeline_inpainting.py index 926fff53f855114253bfefe165f0321ca2c6d6e1..a279c1ede1a5e32b72c69130f76384553af2b39e 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/stable_diffusionxl_pipeline_inpainting.py +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/stable_diffusionxl_pipeline_inpainting.py @@ -1369,12 +1369,6 @@ def parse_arguments(): default="./models", help="Path of directory to save compiled models.", ) - parser.add_argument( - "--soc", - choices=["A2"], - default="A2", - help="soc_version.", - ) parser.add_argument( "--use_cache", action="store_true", diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/README.md b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/README.md index 94acfe489b3b2e16f209805546d9e4ca74181bc8..9fe21956136ad12f73670003bfe89dd25ae3b5fe 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/README.md +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/README.md @@ -100,12 +100,15 @@ # xl (使用上一步下载的权重) model_base="./stable-diffusion-xl-base-1.0" + + # 配置设备芯片信息 + npu-smi info # 查看芯片型号,记为chip_name, 例如 chip_name=设备型号 ``` 执行命令: ```bash - python3 export_ts_prompt_weight.py --model ${model_base} --output_dir ./models --batch_size 1 --flag 1 --soc A2 --device 0 + python3 export_ts_prompt_weight.py --model ${model_base} --output_dir ./models --batch_size 1 --flag 1 --soc Ascend${chip_name} --device_type A2 --device 0 ``` 参数说明: @@ -113,7 +116,8 @@ - --output_dir: ONNX模型输出目录 - --batch_size: 设置batch_size, 默认值为1,当前仅支持batch_size=1的场景 - --flag:默认为1。0代表静态,只支持分辨率为1024x1024;1代表动态分档,支持的分辨率为1024x1024和512x512。 - - --soc:只支持Duo和A2。默认为A2,A2特指910B4。 + - --soc: 处理器型号 + - --device_type:只支持Duo和A2。默认为A2。 - --device:推理设备ID - --use_cache: 【可选】在推理过程中使用cache diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/export_ts_prompt_weight.py b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/export_ts_prompt_weight.py index 7c82b3090b18d97c5250689a1fcc6b6b98a29070..822bb286ba549cb70784ce2263014c0997d678fe 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/export_ts_prompt_weight.py +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/export_ts_prompt_weight.py @@ -47,7 +47,8 @@ def parse_arguments() -> Namespace: parser.add_argument("-steps", "--steps", type=int, default=50, help="steps.") parser.add_argument("-guid", "--guidance_scale", type=float, default=5.0, help="guidance_scale") parser.add_argument("--use_cache", action="store_true", help="Use cache during inference.") - parser.add_argument("--soc", choices=["A2"], default="A2", help="soc_version.", ) + parser.add_argument("--soc", help="soc_version.") + parser.add_argument("--device_type", choices=["A2", "Duo"], default="A2", help="device_type.") parser.add_argument( "--flag", type=int, @@ -700,10 +701,8 @@ if __name__ == "__main__": min_width, max_width = 512 // 8, 1664 // 8 args = parse_arguments() mindietorch.set_device(args.device) - if args.soc == "Duo": - soc_version = "Ascend310P3" - elif args.soc == "A2": - soc_version = "Ascend910B4" + if args.device_type != "Duo" and args.device_type != "A2": + print("unsupport device_type, please check!") else: - print("unsupport soc_version, please check!") + soc_version = args.soc main() \ No newline at end of file diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/README.md b/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/README.md index 6c1ad64c91a22ea5a4914ee8d9d527fc7a4f897f..9b4eaacbe5348a771fd57b9c667a69e64d2e37b9 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/README.md +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/README.md @@ -179,18 +179,25 @@ find / -name *libGL* # 查找libGLdispatch.so.0文件的路径,记为lib_dir,例如 lib_dir="/lib/aarch64-linux-gnu" export LD_PRELOAD=${lib_dir}/libGLdispatch.so.0:$LD_PRELOAD - # 1.若不使用并行推理: + # 配置设备芯片信息 + npu-smi info # 查看芯片型号,记为chip_name, 例如 chip_name=设备型号 + + # 2.若不使用并行推理: numactl -C 0-23 python3 stable_video_diffusion_pipeline.py \ --model ${model_base} \ + --soc Ascend${chip_name} \ + --device_type A2 \ --img_file ./rocket.png \ --device 0 \ --save_dir ./results \ --num_inference_steps 25 \ --output_dir ./models - # 2.若使用并行推理: + # 3.若使用并行推理: numactl -C 0-23 python3 stable_video_diffusion_pipeline_parallel.py \ --model ${model_base} \ + --soc Ascend${chip_name} \ + --device_type A2 \ --img_file ./rocket.png \ --device 0,1 \ --save_dir ./results \ @@ -200,6 +207,8 @@ 参数说明: - --model:模型名称或本地模型目录的路径。 + - --soc: 处理器型号。 + - --device_type: 设备形态。仅支持A2。 - --img_file:输入图像文件。 - --device:推理设备ID;可用逗号分割传入两个设备ID,此时会使用并行方式进行推理。 - --save_dir:生成视频的存放目录。 diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/stable_video_diffusion_pipeline.py b/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/stable_video_diffusion_pipeline.py index 6275dea7e48061f94c816a778d4ea0438a9e7dee..fff5d6b1fe1d70357f31f4d0cce2718f511221cf 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/stable_video_diffusion_pipeline.py +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/stable_video_diffusion_pipeline.py @@ -82,7 +82,7 @@ class AIEStableVideoDiffusionPipeline(StableVideoDiffusionPipeline): require_full_compilation=True, truncate_long_and_double=True, min_block_size=1, - soc_version="Ascend910B4", + soc_version=self.args.soc, precision_policy=_enums.PrecisionPolicy.FP16, optimization_level=0 ) @@ -106,7 +106,7 @@ class AIEStableVideoDiffusionPipeline(StableVideoDiffusionPipeline): require_full_compilation=True, truncate_long_and_double=True, min_block_size=1, - soc_version="Ascend910B4", + soc_version=self.args.soc, precision_policy=_enums.PrecisionPolicy.FP16, optimization_level=0 ) @@ -136,7 +136,7 @@ class AIEStableVideoDiffusionPipeline(StableVideoDiffusionPipeline): require_full_compilation=True, truncate_long_and_double=True, min_block_size=1, - soc_version="Ascend910B4", + soc_version=self.args.soc, precision_policy=_enums.PrecisionPolicy.FP16, optimization_level=0 ) @@ -161,7 +161,7 @@ class AIEStableVideoDiffusionPipeline(StableVideoDiffusionPipeline): require_full_compilation=True, truncate_long_and_double=True, min_block_size=1, - soc_version="Ascend910B4", + soc_version=self.args.soc, precision_policy=_enums.PrecisionPolicy.FP16, optimization_level=0 ) @@ -178,7 +178,7 @@ class AIEStableVideoDiffusionPipeline(StableVideoDiffusionPipeline): require_full_compilation=True, truncate_long_and_double=True, min_block_size=1, - soc_version="Ascend910B4", + soc_version=self.args.soc, precision_policy=_enums.PrecisionPolicy.FP16, optimization_level=0 ) @@ -206,7 +206,7 @@ class AIEStableVideoDiffusionPipeline(StableVideoDiffusionPipeline): require_full_compilation=True, truncate_long_and_double=True, min_block_size=1, - soc_version="Ascend910B4", + soc_version=self.args.soc, precision_policy=_enums.PrecisionPolicy.FP16, optimization_level=0 ) @@ -571,6 +571,16 @@ def parse_arguments(): default=25, help="num_inference_steps." ) + parser.add_argument( + "--soc", + help="soc_version." + ) + parser.add_argument( + "--device_type", + choices=["A2"], + default="A2", + help="device_type." + ) return parser.parse_args() @@ -582,6 +592,10 @@ def main(): if not os.path.exists(save_dir): os.makedirs(save_dir) + if args.device_type != "A2": + print("unsupport device_type, please check!") + return + decode_chunk_size=args.decode_chunk_size num_inference_steps=args.num_inference_steps @@ -624,7 +638,7 @@ def main(): print("Stable video diffusion use time:{}. Save dir is {}".format(use_time/1,save_dir)) import datetime now=datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S") - export_to_video(frames, r"{}/rocket_910B4_{}.mp4".format(save_dir,now), fps=args.fps) + export_to_video(frames, r"{}/rocket_{}.mp4".format(save_dir,now), fps=args.fps) mindietorch.finalize() diff --git a/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/stable_video_diffusion_pipeline_parallel.py b/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/stable_video_diffusion_pipeline_parallel.py index d6c8a702caba0ecc0e31fd6cebcd2e31dbfa424a..cf06ec32588cece551599896c0ba348a5d862fe4 100644 --- a/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/stable_video_diffusion_pipeline_parallel.py +++ b/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/stable_video_diffusion_pipeline_parallel.py @@ -91,7 +91,7 @@ class AIEStableVideoDiffusionPipeline(StableVideoDiffusionPipeline): require_full_compilation=True, truncate_long_and_double=True, min_block_size=1, - soc_version="Ascend910B4", + soc_version=self.args.soc, precision_policy=_enums.PrecisionPolicy.FP16, optimization_level=0 ) @@ -115,7 +115,7 @@ class AIEStableVideoDiffusionPipeline(StableVideoDiffusionPipeline): require_full_compilation=True, truncate_long_and_double=True, min_block_size=1, - soc_version="Ascend910B4", + soc_version=self.args.soc, precision_policy=_enums.PrecisionPolicy.FP16, optimization_level=0 ) @@ -145,7 +145,7 @@ class AIEStableVideoDiffusionPipeline(StableVideoDiffusionPipeline): require_full_compilation=True, truncate_long_and_double=True, min_block_size=1, - soc_version="Ascend910B4", + soc_version=self.args.soc, precision_policy=_enums.PrecisionPolicy.FP16, optimization_level=0 ) @@ -170,7 +170,7 @@ class AIEStableVideoDiffusionPipeline(StableVideoDiffusionPipeline): require_full_compilation=True, truncate_long_and_double=True, min_block_size=1, - soc_version="Ascend910B4", + soc_version=self.args.soc, precision_policy=_enums.PrecisionPolicy.FP16, optimization_level=0 ) @@ -187,7 +187,7 @@ class AIEStableVideoDiffusionPipeline(StableVideoDiffusionPipeline): require_full_compilation=True, truncate_long_and_double=True, min_block_size=1, - soc_version="Ascend910B4", + soc_version=self.args.soc, precision_policy=_enums.PrecisionPolicy.FP16, optimization_level=0 ) @@ -215,7 +215,7 @@ class AIEStableVideoDiffusionPipeline(StableVideoDiffusionPipeline): require_full_compilation=True, truncate_long_and_double=True, min_block_size=1, - soc_version="Ascend910B4", + soc_version=self.args.soc, precision_policy=_enums.PrecisionPolicy.FP16, optimization_level=0 ) @@ -617,6 +617,16 @@ def parse_arguments(): default=25, help="num_inference_steps." ) + parser.add_argument( + "--soc", + help="soc_version." + ) + parser.add_argument( + "--device_type", + choices=["A2"], + default="A2", + help="device_type." + ) return parser.parse_args() @@ -628,6 +638,10 @@ def main(): if not os.path.exists(save_dir): os.makedirs(save_dir) + if args.device_type != "A2": + print("unsupport device_type, please check!") + return + decode_chunk_size=args.decode_chunk_size num_inference_steps=args.num_inference_steps @@ -669,7 +683,7 @@ def main(): print("Stable video diffusion use time:{}. Save dir is {}".format(use_time/1,save_dir)) import datetime now=datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S") - export_to_video(frames, r"{}/rocket_910B4_{}.mp4".format(save_dir,now), fps=args.fps) + export_to_video(frames, r"{}/rocket_{}.mp4".format(save_dir,now), fps=args.fps) if hasattr(pipe, 'device_1'): if (pipe.unet_bg):