
# 为什么在ModelArts的Notebook中训练出现昇腾910的NPU-2 AIcore使用率低，但HBM使用率高的情况？
#### 问题原因
在ModelArts的Notebook中训练出现NPU的昇腾910的NPU-2 AIcore使用率低，但高带宽内存HBM（High Bandwidth Memory）使用率高的情况，可能有以下原因：
- **代码适配问题**
  - 未充分利用NPU特性：PyTorch在GPU和NPU上运行时，底层的计算模型和优化策略有所不同。虽然代码在GPU上可以正常运行，但在NPU上可能没有充分利用其并行计算能力和硬件特性，导致AIcore使用率低。
  
  - 数据传输瓶颈：如果代码中存在大量的数据在CPU和NPU之间频繁传输，或者数据加载方式不适合NPU的高效处理模式，可能会导致NPU等待数据输入，进而使AIcore使用率降低，而HBM主要用于存储数据，即使AIcore不进行计算，只要数据一直占用HBM，其使用率就会保持较高。
   
- **软件环境及配置问题**
  - CANN版本适配：使用的镜像可能存在CANN版本与PyTorch版本之间的适配问题，导致NPU的性能没有得到充分发挥。
  
  - 并行策略设置：在使用NPU时，并行策略的设置对性能影响很大。如果没有正确设置模型并行、数据并行等策略，可能会导致NPU的计算资源没有被充分利用。
   
- **硬件资源分配问题**
  - NPU资源分配不足：在ModelArts的Notebook开发环境中，可能存在NPU资源分配不足的情况，导致NPU的计算能力没有被充分利用。
  
  - HBM容量不足：HBM容量有限，如果模型和数据的规模超过了HBM的容量，会导致频繁的内存交换，降低NPU的计算效率。
   
 
#### 解决方案
- 优化代码：检查代码中是否存在数据传输瓶颈，尽量减少CPU和NPU之间的数据传输。同时，可以参考昇腾910的开发文档，对代码进行优化，以充分利用NPU的并行计算能力和硬件特性。更多信息，请参见[ModelArts最佳实践案例列表](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_10_0014.html)。
- 更新软件环境：检查CANN版本和PyTorch版本之间的适配关系，如果有更新的版本，可以尝试更新到最新版本。
- 调整并行策略：根据模型的规模和数据量，合理设置模型并行和数据并行策略，以充分利用NPU的计算资源。
- 检查资源分配：在ModelArts的Notebook开发环境中，检查NPU资源的分配情况，确保有足够的资源分配给目标任务。
 
