From 335af117af7f66852f228257069abc597ec0e71b Mon Sep 17 00:00:00 2001 From: jiangmengyu Date: Wed, 16 Oct 2024 15:39:48 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E8=8A=AF=E7=89=87=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../foundation/stable_diffusion_xl/README.md | 25 +++++++++++-------- .../stable_diffusion_xl/export_ts.py | 7 ++---- .../stable_diffusion_xl/export_ts_quant.py | 7 ++---- .../stable_diffusion_xl_controlnet/README.md | 12 +++++---- .../export_ts_controlnet.py | 8 +----- .../stable_diffusionxl_pipeline_controlnet.py | 6 ----- .../stable_diffusion_xl_inpainting/README.md | 9 +++---- .../export_ts_inpainting.py | 9 ++----- .../stable_diffusionxl_pipeline_inpainting.py | 6 ----- .../stable_video_diffusion/README.md | 10 ++++++-- .../stable_video_diffusion_pipeline.py | 18 +++++++------ ...table_video_diffusion_pipeline_parallel.py | 18 +++++++------ 12 files changed, 62 insertions(+), 73 deletions(-) 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 0136b1b784..ec0dbb3ca1 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 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 0 ``` 参数说明: @@ -387,10 +390,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 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 0 ``` 2. 量化编译。./quant/build.sh中的TorchPath需要指定为python安装torch的路径。 @@ -436,10 +439,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 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 0 --height 1024 --width 1024 ``` 参数说明: @@ -589,9 +592,9 @@ 执行模型转换: ```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 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 0 --lorahot_support --baselora_path ${baselora_path} ``` 参数说明: - --model 下载的模型权重路径 @@ -709,9 +712,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 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 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 59cc46fbfc..2b3eb14465 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,7 @@ 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("--lorahot_support", action="store_true", help="compiled model support hot lora weight switch") parser.add_argument( "--baselora_path", @@ -762,8 +762,5 @@ 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" + 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 c600937c7f..91c2b1b114 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,7 @@ 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( "--unet_data_dir", type=str, @@ -453,8 +453,5 @@ def main(): if __name__ == '__main__': args = parse_arguments() - if args.soc == "Duo": - soc_version = "Ascend310P3" - elif args.soc == "A2": - soc_version = "Ascend910B4" + 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 86a6f87f2c..c875ca3a62 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 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 0 ``` @@ -126,7 +129,7 @@ - --output_dir: ONNX模型输出目录 - --batch_size: 设置batch_size, 默认值为1,当前仅支持batch_size=1的场景 - --falg: 设置模型编译方式。默认值为1。值为0表示静态模型,值为1表示动态分档模型。 - - --soc: 默认值为A2,当前仅支持800IA2场景。A2特指910B4。 + - --soc: 默认值为A2,当前仅支持800IA2场景。 - --device:推理设备ID;可用逗号分割传入两个设备ID,此时会使用并行方式进行推理。 静态编译场景: @@ -155,7 +158,6 @@ --device 0 \ --save_dir ./results \ --output_dir ./models \ - --soc A2 \ --flag 1 \ --w_h 1024 ``` @@ -168,7 +170,7 @@ - --device:推理设备ID。 - --save_dir:生成图片的存放目录。 - --output_dir:存放导出模型的目录。 - - --soc: 默认值为A2,当前仅支持800IA2场景。A2特指910B4。 + - --soc: 默认值为A2,当前仅支持800IA2场景。 - --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 0fa46dccf4..e7c6afe304 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,8 +78,6 @@ def parse_arguments() -> Namespace: ) parser.add_argument( "--soc", - choices=["A2"], - default="A2", help="soc_version.", ) parser.add_argument( @@ -439,11 +437,7 @@ 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!") - return + soc_version = soc controlnet = ControlNetModel.from_pretrained(controlnet_path) vae = AutoencoderKL.from_pretrained(vae_path) 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 a823cd6d04..4602598a64 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 c1bfcc5b86..c0a0a055c5 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,20 @@ # 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 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:当前仅支持A2。 - --device:推理设备ID - --use_cache: 【可选】在推理过程中使用cache @@ -151,7 +153,6 @@ --steps 30 \ --device 0 \ --output_dir ./models \ - --soc A2 \ --flag 1 \ --w_h 1024 \ --strength 0.99 \ @@ -166,7 +167,6 @@ --steps 30 \ --device 0 \ --output_dir ./models \ - --soc A2 \ --flag 1 \ --w_h 1024 \ --strength 0.99 \ @@ -183,7 +183,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 6792e2558f..c707bf70a6 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,8 +56,7 @@ def parse_arguments() -> Namespace: ) parser.add_argument( "--soc", - choices=["A2"], - default="A2", + type=str, help="soc_version.", ) parser.add_argument( @@ -627,11 +626,7 @@ def export_image_encode(sd_pipeline: StableDiffusionXLInpaintPipeline, save_dir: 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!") - return + soc_version = soc pipeline = StableDiffusionXLInpaintPipeline.from_pretrained(model_path).to("cpu") 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 926fff53f8..a279c1ede1 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_video_diffusion/README.md b/MindIE/MindIE-Torch/built-in/foundation/stable_video_diffusion/README.md index 6c1ad64c91..faf3eabaea 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,23 @@ 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} --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} --img_file ./rocket.png \ --device 0,1 \ --save_dir ./results \ @@ -200,6 +205,7 @@ 参数说明: - --model:模型名称或本地模型目录的路径。 + - --soc: 设备型号,只支持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 6275dea7e4..270d5d7341 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,10 @@ def parse_arguments(): default=25, help="num_inference_steps." ) + parser.add_argument( + "--soc", + help="soc_version." + ) return parser.parse_args() @@ -624,7 +628,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 d6c8a702ca..a3a0ebdad8 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,10 @@ def parse_arguments(): default=25, help="num_inference_steps." ) + parser.add_argument( + "--soc", + help="soc_version." + ) return parser.parse_args() @@ -669,7 +673,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): -- Gitee From f6a10509d6f70089b2a3948ef0116ba30bc8202e Mon Sep 17 00:00:00 2001 From: jiangmengyu Date: Wed, 16 Oct 2024 16:46:46 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E8=8A=AF=E7=89=87=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stable_diffusion_xl_controlnet/README.md | 8 ++++---- .../export_ts_controlnet.py | 17 +++++++++++++---- .../stable_diffusion_xl_inpainting/README.md | 5 +++-- .../export_ts_inpainting.py | 17 ++++++++++++----- .../stable_diffusion_xl_prompt_weight/README.md | 7 +++++-- .../export_ts_prompt_weight.py | 10 ++++------ 6 files changed, 41 insertions(+), 23 deletions(-) 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 c875ca3a62..8ef5e9c804 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 @@ -114,10 +114,10 @@ 执行命令: ```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 Ascend${chip_name} --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 Ascend${chip_name} --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 ``` @@ -129,7 +129,8 @@ - --output_dir: ONNX模型输出目录 - --batch_size: 设置batch_size, 默认值为1,当前仅支持batch_size=1的场景 - --falg: 设置模型编译方式。默认值为1。值为0表示静态模型,值为1表示动态分档模型。 - - --soc: 默认值为A2,当前仅支持800IA2场景。 + - --soc: 处理器型号 + - --device_type: 设备形态,当前仅支持A2。 - --device:推理设备ID;可用逗号分割传入两个设备ID,此时会使用并行方式进行推理。 静态编译场景: @@ -170,7 +171,6 @@ - --device:推理设备ID。 - --save_dir:生成图片的存放目录。 - --output_dir:存放导出模型的目录。 - - --soc: 默认值为A2,当前仅支持800IA2场景。 - --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 e7c6afe304..59b44529c3 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 @@ -80,6 +80,13 @@ def parse_arguments() -> Namespace: "--soc", help="soc_version.", ) + parser.add_argument( + "--device_type", + choices=["A2"], + default="A2", + help="device_type.", + ) + parser.add_argument( "--device", default=0, @@ -436,9 +443,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: - soc_version = soc - + 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) @@ -457,7 +466,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_inpainting/README.md b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_inpainting/README.md index c0a0a055c5..e471e42634 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 @@ -115,14 +115,15 @@ 执行命令: ```bash - python3 export_ts_inpainting.py --model ${model_base} --output_dir ./models --batch_size 1 --flag 1 --soc Ascend${chip_name} --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。 + - --soc:处理器型号。 + - --device_type: 设备形态,当前仅支持A2。 - --device:推理设备ID - --use_cache: 【可选】在推理过程中使用cache 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 c707bf70a6..76ebe5d367 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,14 @@ def parse_arguments() -> Namespace: ) parser.add_argument( "--soc", - type=str, help="soc_version.", ) + parser.add_argument( + "--device_type", + choices=["A2"], + default="A2", + help="device_type.", + ) parser.add_argument( "--use_cache", action="store_true", @@ -625,9 +630,11 @@ 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: - soc_version = soc - +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 soc_version, please check!") + return + pipeline = StableDiffusionXLInpaintPipeline.from_pretrained(model_path).to("cpu") export_clip(pipeline, save_dir, batch_size, flag, soc_version) @@ -646,7 +653,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_prompt_weight/README.md b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_prompt_weight/README.md index 94acfe489b..5260093734 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 0 ``` 参数说明: @@ -113,7 +116,7 @@ - --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:只支持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 7c82b3090b..5679f3e87d 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,7 @@ 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" - else: + if args.device_type != "Duo" and args.device_type != "A2": print("unsupport soc_version, please check!") + soc_version = args.soc main() \ No newline at end of file -- Gitee From 0ad95a1e4ebeb6fd167307220053d848ad9e3380 Mon Sep 17 00:00:00 2001 From: jiangmengyu Date: Wed, 16 Oct 2024 16:49:53 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E8=8A=AF=E7=89=87=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../foundation/stable_diffusion_xl_prompt_weight/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 5260093734..9fe2195613 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 @@ -108,7 +108,7 @@ 执行命令: ```bash - python3 export_ts_prompt_weight.py --model ${model_base} --output_dir ./models --batch_size 1 --flag 1 --soc Ascend${chip_name} --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 ``` 参数说明: @@ -116,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。 + - --soc: 处理器型号 + - --device_type:只支持Duo和A2。默认为A2。 - --device:推理设备ID - --use_cache: 【可选】在推理过程中使用cache -- Gitee From bd5722e4c3959bb11b1ee949d75cd634b42e2aee Mon Sep 17 00:00:00 2001 From: jiangmengyu Date: Wed, 16 Oct 2024 16:55:25 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E8=8A=AF=E7=89=87=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stable_diffusion_xl_controlnet/export_ts_controlnet.py | 1 - 1 file changed, 1 deletion(-) 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 59b44529c3..5bf24a3935 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 @@ -86,7 +86,6 @@ def parse_arguments() -> Namespace: default="A2", help="device_type.", ) - parser.add_argument( "--device", default=0, -- Gitee From 646d45326e1fb27e1240bd080224260682fb7626 Mon Sep 17 00:00:00 2001 From: jiangmengyu Date: Wed, 16 Oct 2024 16:59:20 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E8=8A=AF=E7=89=87=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stable_diffusion_xl_inpainting/export_ts_inpainting.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 76ebe5d367..6d96eebace 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 @@ -630,7 +630,8 @@ 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, device_type: str, soc_version: str, use_cache: bool) -> None: +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 soc_version, please check!") return -- Gitee From 900cde9353080a32505d77510785aac2de970a2c Mon Sep 17 00:00:00 2001 From: jiangmengyu Date: Wed, 16 Oct 2024 17:56:14 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E8=8A=AF=E7=89=87=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../foundation/stable_diffusion_xl/README.md | 26 ++++++++++--------- .../stable_diffusion_xl/export_ts.py | 6 ++++- .../stable_diffusion_xl/export_ts_quant.py | 6 ++++- .../export_ts_controlnet.py | 4 +-- .../export_ts_prompt_weight.py | 3 ++- .../stable_video_diffusion/README.md | 9 ++++--- .../stable_video_diffusion_pipeline.py | 10 +++++++ ...table_video_diffusion_pipeline_parallel.py | 10 +++++++ 8 files changed, 54 insertions(+), 20 deletions(-) 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 ec0dbb3ca1..8fb6101222 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 @@ -137,10 +137,10 @@ ```bash # 使用unetCache, 非并行 - python3 export_ts.py --model ${model_base} --output_dir ./models --use_cache --batch_size 1 --flag 0 --soc Ascend${chip_name} --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 Ascend${chip_name} --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 ``` 参数说明: @@ -150,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. 开始推理验证。 @@ -390,10 +391,10 @@ ```bash # 使用unetCache, 非并行 - python3 export_ts.py --model ${model_base} --output_dir ./models --use_cache --flag 0 --soc Ascend${chip_name} --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 Ascend${chip_name} --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的路径。 @@ -439,10 +440,10 @@ ```bash # 若使用unetCache, 且非并行 - python3 export_ts_quant.py --model ${model_base} --output_dir ./models_quant --use_cache --batch_size 1 --soc Ascend${chip_name} --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 Ascend${chip_name} --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 ``` 参数说明: @@ -592,16 +593,17 @@ 执行模型转换: ```bash #基础模型lora热切特性转换: - python3 export_ts.py --model ${model_base} --output_dir ./models --batch_size 1 --flag 0 --soc Ascend${chip_name} --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 Ascend${chip_name} --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权重热切换 @@ -712,9 +714,9 @@ 此后运行如下命令生成新权重的pt模型: ```bash #不使用unetcache - python3 export_ts.py --model ${model_new} --output_dir ./models --batch_size 1 --flag 0 --soc Ascend${chip_name} --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 Ascend${chip_name} --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 2b3eb14465..8e806d6d59 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 @@ -48,6 +48,7 @@ def parse_arguments() -> Namespace: parser.add_argument("-p", "--parallel", action="store_true", help="Export the unet of bs=1 for parallel inferencing.") 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,5 +763,8 @@ if __name__ == "__main__": widths = [1024, 512, 1664, 1360, 1024] args = parse_arguments() - soc_version = args.soc + if args.device_type != "Duo" and args.device_type != "A2": + print("unsupport soc_version, 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 91c2b1b114..ae313b74d7 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 @@ -51,6 +51,7 @@ def parse_arguments() -> Namespace: parser.add_argument("-p", "--parallel", action="store_true", help="Export the unet of bs=1 for parallel inferencing.") 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,5 +454,8 @@ def main(): if __name__ == '__main__': args = parse_arguments() - soc_version = args.soc + if args.device_type != "Duo" and args.device_type != "A2": + print("unsupport soc_version, 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/export_ts_controlnet.py b/MindIE/MindIE-Torch/built-in/foundation/stable_diffusion_xl_controlnet/export_ts_controlnet.py index 5bf24a3935..60dced4dad 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,13 +78,13 @@ def parse_arguments() -> Namespace: ) parser.add_argument( "--soc", - help="soc_version.", + help="soc_version." ) parser.add_argument( "--device_type", choices=["A2"], default="A2", - help="device_type.", + help="device_type." ) parser.add_argument( "--device", 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 5679f3e87d..d7e5c300cf 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 @@ -703,5 +703,6 @@ if __name__ == "__main__": mindietorch.set_device(args.device) if args.device_type != "Duo" and args.device_type != "A2": print("unsupport soc_version, please check!") - soc_version = args.soc + else: + 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 faf3eabaea..9b4eaacbe5 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 @@ -185,7 +185,8 @@ # 2.若不使用并行推理: numactl -C 0-23 python3 stable_video_diffusion_pipeline.py \ --model ${model_base} \ - --soc Ascend${chip_name} + --soc Ascend${chip_name} \ + --device_type A2 \ --img_file ./rocket.png \ --device 0 \ --save_dir ./results \ @@ -195,7 +196,8 @@ # 3.若使用并行推理: numactl -C 0-23 python3 stable_video_diffusion_pipeline_parallel.py \ --model ${model_base} \ - --soc Ascend${chip_name} + --soc Ascend${chip_name} \ + --device_type A2 \ --img_file ./rocket.png \ --device 0,1 \ --save_dir ./results \ @@ -205,7 +207,8 @@ 参数说明: - --model:模型名称或本地模型目录的路径。 - - --soc: 设备型号,只支持A2。 + - --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 270d5d7341..fff5d6b1fe 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 @@ -575,6 +575,12 @@ def parse_arguments(): "--soc", help="soc_version." ) + parser.add_argument( + "--device_type", + choices=["A2"], + default="A2", + help="device_type." + ) return parser.parse_args() @@ -586,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 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 a3a0ebdad8..cf06ec3258 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 @@ -621,6 +621,12 @@ def parse_arguments(): "--soc", help="soc_version." ) + parser.add_argument( + "--device_type", + choices=["A2"], + default="A2", + help="device_type." + ) return parser.parse_args() @@ -632,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 -- Gitee From a6197ac88bcfb370e2262f1e9546746bfdf3d0c0 Mon Sep 17 00:00:00 2001 From: jiangmengyu Date: Wed, 16 Oct 2024 17:59:59 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E8=8A=AF=E7=89=87=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../built-in/foundation/stable_diffusion_xl/export_ts.py | 2 +- .../built-in/foundation/stable_diffusion_xl/export_ts_quant.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 8e806d6d59..c37b6f75fb 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 @@ -764,7 +764,7 @@ if __name__ == "__main__": args = parse_arguments() if args.device_type != "Duo" and args.device_type != "A2": - print("unsupport soc_version, please check!") + 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 ae313b74d7..8704c1c15a 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 @@ -455,7 +455,7 @@ def main(): if __name__ == '__main__': args = parse_arguments() if args.device_type != "Duo" and args.device_type != "A2": - print("unsupport soc_version, please check!") + print("unsupport device_type, please check!") else: soc_version = args.soc main() \ No newline at end of file -- Gitee From 3e485eb0d4ef034f0427da933b29c5bb55dbfa22 Mon Sep 17 00:00:00 2001 From: jiangmengyu Date: Wed, 16 Oct 2024 18:03:50 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E8=8A=AF=E7=89=87=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stable_diffusion_xl_inpainting/export_ts_inpainting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6d96eebace..b26b556beb 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 @@ -633,7 +633,7 @@ def export_image_encode(sd_pipeline: StableDiffusionXLInpaintPipeline, save_dir: 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 soc_version, please check!") + print("unsupport device_type, please check!") return pipeline = StableDiffusionXLInpaintPipeline.from_pretrained(model_path).to("cpu") -- Gitee From 56e2d4fa7324f7d019311a6ea02cf904efb31b89 Mon Sep 17 00:00:00 2001 From: jiangmengyu Date: Wed, 16 Oct 2024 18:04:52 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E8=8A=AF=E7=89=87=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../export_ts_prompt_weight.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 d7e5c300cf..822bb286ba 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 @@ -702,7 +702,7 @@ if __name__ == "__main__": args = parse_arguments() mindietorch.set_device(args.device) if args.device_type != "Duo" and args.device_type != "A2": - print("unsupport soc_version, please check!") + print("unsupport device_type, please check!") else: soc_version = args.soc main() \ No newline at end of file -- Gitee