已合并
[docs] Support pinned_max_round_threshold_mb and pinned_max_cached_size_mb #41563
liujunzhu创建于 7月13日
[docs] Support pinned_max_round_threshold_mb and pinned_max_cached_size_mb #41563
已合并
liujunzhu创建于 7月13日
共 1 个文件变更+21-4
@@ -6,7 +6,7 @@
6 6 
7> [!CAUTION] 7> [!CAUTION]
8>8>
9-> 从Ascend Extension for PyTorch 26.2.0版本且PyTorch 2.10.0及以上版本开始,torch\_npu也支持通过PYTORCH\_ALLOC\_CONF环境变量配置缓存分配器参数,配置方式、支持的参数和PYTORCH\_NPU\_ALLOC\_CONF相同,二者选其一配置即可,同时配置会报错并退出程序。建议优先使用PYTORCH\_ALLOC\_CONF环境变量配置缓存分配器行为。9+> 从TorchNPU 26.2.0版本且PyTorch 2.10.0及以上版本开始,torch\_npu也支持通过PYTORCH\_ALLOC\_CONF环境变量配置缓存分配器参数,配置方式、支持的参数和PYTORCH\_NPU\_ALLOC\_CONF相同,二者选其一配置即可,同时配置会报错并退出程序。建议优先使用PYTORCH\_ALLOC\_CONF环境变量配置缓存分配器行为。
10 10 
11缓存分配器会根据申请内存的大小使用不同内存池,小于1MB使用小块内存池,反之使用大块内存池;虚拟内存特性下,大块内存池申请的物理内存粒度(segment\_size\_mb)默认为20MB,小块内存池默认为2MB(不可配置);大模型场景下小块内存池内存使用通常较少,因此部分环境配置项(page\_size、segment\_size\_mb)只作用于大块内存池。11缓存分配器会根据申请内存的大小使用不同内存池,小于1MB使用小块内存池,反之使用大块内存池;虚拟内存特性下,大块内存池申请的物理内存粒度(segment\_size\_mb)默认为20MB,小块内存池默认为2MB(不可配置);大模型场景下小块内存池内存使用通常较少,因此部分环境配置项(page\_size、segment\_size\_mb)只作用于大块内存池。
12 12 
@@ -88,6 +88,16 @@
88 88 
89 该配置项适用于多进程共享同一NPU设备的场景,通过限制进程的可用显存的比例,避免单个进程占用过多显存导致其他进程OOM。89 该配置项适用于多进程共享同一NPU设备的场景,通过限制进程的可用显存的比例,避免单个进程占用过多显存导致其他进程OOM。
90 90 
91+- pinned\_max\_round\_threshold\_mb:<value\>,pinned memory分配大小是否向上取整到2的幂次的判别阈值。
92+ 
93+ 取值为正整数,单位为MB。默认不开启,即对所有pinned memory分配都执行power-of-2向上取整。设置后,分配大小若小于等于此阈值,仍执行向上取整;若大于此阈值,则跳过取整并按精确请求大小分配,从而减少大块pinned memory因取整带来的内存浪费。例如阈值设为128MB时,129MB的分配请求将使用129MB而非向上取整到256MB。
94+ 
95+ 向上取整是为了让内存块便于后续复用,不进入缓存的块无需对齐,所以无论本选项如何设置,超过pinned\_max\_cached\_size\_mb的分配始终不会执行向上取整。
96+ 
97+- pinned\_max\_cached\_size\_mb:<value\>,pinned memory释放后是否缓存到free list复用的判别阈值。
98+ 
99+ 取值为正整数,单位为MB。默认不开启,即所有释放的pinned memory块都进入free list缓存复用。设置后,块大小若大于此阈值,则在释放时立即归还给OS,不再进入free list缓存(也不再执行向上取整),从而降低大块pinned memory使用频率较低场景下的峰值内存占用。
100+ 
91> [!NOTE] 101> [!NOTE]
92>102>
93> 用户使用TorchNPU 6.0.RC3及以上版本配套的驱动(Ascend HDK 24.1.RC3及以上),开启虚拟内存特性时,可以使用单进程多卡特性;用户使用TorchNPU 6.0.RC3以下版本配套的驱动(Ascend HDK 24.1.RC3以下版本),开启虚拟内存特性时,不能使用单进程多卡特性。103> 用户使用TorchNPU 6.0.RC3及以上版本配套的驱动(Ascend HDK 24.1.RC3及以上),开启虚拟内存特性时,可以使用单进程多卡特性;用户使用TorchNPU 6.0.RC3以下版本配套的驱动(Ascend HDK 24.1.RC3以下版本),开启虚拟内存特性时,不能使用单进程多卡特性。
@@ -174,6 +184,12 @@ export PYTORCH_NPU_ALLOC_CONF=per_process_memory_fraction:0.5
174export PYTORCH_ALLOC_CONF=max_split_size_mb:32,garbage_collection_threshold:0.6184export PYTORCH_ALLOC_CONF=max_split_size_mb:32,garbage_collection_threshold:0.6
175```185```
176 186 
187+示例十三:
188+ 
189+```bash
190+export PYTORCH_NPU_ALLOC_CONF=pinned_max_round_threshold_mb:128,pinned_max_cached_size_mb:256
191+```
192+ 
177## 使用约束193## 使用约束
178 194 
179- expandable\_segments特性需在Ascend HDK 23.0.0及以上版本上使用。195- expandable\_segments特性需在Ascend HDK 23.0.0及以上版本上使用。
@@ -196,9 +212,10 @@ export PYTORCH_ALLOC_CONF=max_split_size_mb:32,garbage_collection_threshold:0.6
196- multi_stream_lazy_reclaim使用注意事项:212- multi_stream_lazy_reclaim使用注意事项:
197 - 特性要求在TorchNPU 7.3.0以上版本上使用。213 - 特性要求在TorchNPU 7.3.0以上版本上使用。
198 - 该特性主要解决多流场景下,Host侧存在下发性能瓶颈时的系统效率问题。单流、少流场景或者非Host性能瓶颈时,该功能收益不大。214 - 该特性主要解决多流场景下,Host侧存在下发性能瓶颈时的系统效率问题。单流、少流场景或者非Host性能瓶颈时,该功能收益不大。
199-- large\_segment\_size\_mb特性需在Ascend Extension for PyTorch 26.1.0及以上版本、PyTorch 2.11.0 及以版本上使用。215+- large\_segment\_size\_mb特性需在TorchNPU 26.1.0及以上版本、PyTorch 2.11.0 及以版本上使用。
200-- per\_process\_memory\_fraction特性需在Ascend Extension for PyTorch 26.1.0及以上版本、PyTorch 2.10.0 及以上版本使用。216+- per\_process\_memory\_fraction特性需在TorchNPU 26.1.0及以上版本、PyTorch 2.10.0 及以上版本使用。
201-- 通过PYTORCH\_ALLOC\_CONF环境变量配置缓存分配器参数,需在Ascend Extension for PyTorch 26.2.0版本且PyTorch 2.10.0及以上版本使用。217+- pinned\_max\_round\_threshold\_mb和pinned\_max\_cached\_size\_mb特性需在TorchNPU 26.2.0及以上版本、PyTorch 2.13.0及以上版本使用。两者仅作用于默认(非expandable)pinned memory分配器路径。与pin\_memory\_expandable\_segments同时配置时,这两个阈值不生效,框架会输出一次告警提示,但进程仍可正常启动;如需启用这两个阈值,请将pin\_memory\_expandable\_segments设置为False。
218+- 通过PYTORCH\_ALLOC\_CONF环境变量配置缓存分配器参数,需在TorchNPU 26.2.0版本且PyTorch 2.10.0及以上版本使用。
202 219 
203## 支持的型号220## 支持的型号
204 221