# PIDM **Repository Path**: rmch/pidm ## Basic Information - **Project Name**: PIDM - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-10-31 - **Last Updated**: 2024-11-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PIDM for npu 本仓库主要呈现基于社区公版模型 https://github.com/ankanbhunia/PIDM 做的一些修改,服务于torch.compile测试,主要涉及3个文件 - blocks.py相对社区版代码有稍微调整 - accuracy_pidm.py用于精度测试 - profile_pidm.py用于性能测试 - dist_accuracy_pidm.py用于多卡DDP精度测试 下面一一介绍 ## blocks.py修改说明 社区版models/blocks.py代码中有部分不合理之处(后文用社区版block.py指代),会导致TorchDynamo断成很多张图,不利于融合。本仓库中新的blocks.py相对社区版blocks.py代码有稍微调整,模型结构与原来完全一致,但是新的代码可以使得前向图和反向图分别能成一张图,更有利于图模式的性能发挥,该修改对于NPU和GPU都适用,且效果相同,实际使用时直接替换即可。 ## profile_pidm.py说明 基于原版代码profile_pidm.py,修改点有: - 修改mean step time统计方式,跳过前3个step,因为在torch.compile模式下,第1个epoch的第1个step编译时间过长,实际的mean step time统计不准确 - 增加torch.compile模式下npu_inductor_mlir导入 - 设置torch_npu.npu.config.allow_internal_format = False - NPU常规适配 执行命令: ``` python profile_pidm.py --bs=24 --height=256 --compiled ``` ## accuracy_pidm.py说明 基于本仓库的profile_pidm.py,修改点有: - 增加dataloader - 增加混合精度下GradScaler - 增加loss 打印 执行命令: ``` python accuracy_pidm.py --bs=24 --height=256 --compiled --data_path=/path/to/deepfashion ``` ## dist_accuracy_pidm.py说明 基于本仓库的accuracy_pidm.py,修改点有: - 新增DDP相关适配 - 设置 `torch._dynamo.config.optimize_ddp_lazy_compile = True`,当前开启DDP+compiled后,未支持`optimize_ddp_lazy_compile = False`。由于`optimize_ddp_lazy_compile = True`在`PyTorch2.4之后的版本`已经是默认开启,因此不再适配`optimize_ddp_lazy_compile = False`。 执行命令: ``` torchrun --nproc_per_node=8 --master_port 48949 dist_accuracy_pidm.py --bs=24 --height=256 --compiled --data_path=/path/to/deepfashion ```