我的模型功能是一个语音文件转文本的模型(输入的语音文件每次都不一样),目前迁移到npu使用的是自动迁移,目前有几个疑惑的地方
import torch_npu
from torch_npu.contrib import transfer_to_npu
1.关于torch_npu.npu.set_compile_mode(jit_compile=False)参数,这个实测效率确实提升特别大,目前我的疑问是我的模型是固定的,只是每次请求的语音文件不一样,那我这个属于动态shape
还是静态shape呢,不清楚动态静态针对的是模型处理流程还是输入数据。如果是针对模型,那这个参数提升大还能理解;如果针对数据,我每次语音文件不一样,应该是jit_compile=True提升更大 应该
2.npu内存不释放的问题 ,一下是我调用torch_npu.npu.empty_cache() 前后内存占比 ,看打印是该方法起作用了,但是还是随着调用npu它的内存(npu-smi info看到的Memory-Usage(MB)会一直增长(相同文件是不会增长的),因为使用自动迁移,也没有原始的申请内存代码,所以如何解决这个问题呢(查询的是第一次调用会把类似于中间结果缓存到内存,第二次如果是相同文件会直接服用第一次的缓存,提升效率,但是实际上都是文件不一样,所以会导致npu内存越来越大)
print(f"已分配内存: {torch_npu.npu.memory_allocated()/1024**2:.2f} MB")
print(f"缓存内存: {torch_npu.npu.memory_reserved()/1024**2:.2f} MB")
torch_npu.npu.empty_cache()
print(f"已分配内存: {torch_npu.npu.memory_allocated()/1024**2:.2f} MB")
print(f"缓存内存: {torch_npu.npu.memory_reserved()/1024**2:.2f} MB")
已分配内存: 938.31 MB
缓存内存: 1102.00 MB
调用torch_npu.npu.empty_cache()
已分配内存: 938.31 MB
缓存内存: 956.00 MB
我的模型功能是一个语音文件转文本的模型(输入的语音文件每次都不一样),目前迁移到npu使用的是自动迁移,目前有几个疑惑的地方
import torch_npu
from torch_npu.contrib import transfer_to_npu
1.关于torch_npu.npu.set_compile_mode(jit_compile=False)参数,这个实测效率确实提升特别大,目前我的疑问是我的模型是固定的,只是每次请求的语音文件不一样,那我这个属于动态shape
还是静态shape呢,不清楚动态静态针对的是模型处理流程还是输入数据。如果是针对模型,那这个参数提升大还能理解;如果针对数据,我每次语音文件不一样,应该是jit_compile=True提升更大 应该
2.npu内存不释放的问题 ,一下是我调用torch_npu.npu.empty_cache() 前后内存占比 ,看打印是该方法起作用了,但是还是随着调用npu它的内存(npu-smi info看到的Memory-Usage(MB)会一直增长(相同文件是不会增长的),因为使用自动迁移,也没有原始的申请内存代码,所以如何解决这个问题呢(查询的是第一次调用会把类似于中间结果缓存到内存,第二次如果是相同文件会直接服用第一次的缓存,提升效率,但是实际上都是文件不一样,所以会导致npu内存越来越大)
print(f"已分配内存: {torch_npu.npu.memory_allocated()/1024**2:.2f} MB")
print(f"缓存内存: {torch_npu.npu.memory_reserved()/1024**2:.2f} MB")
torch_npu.npu.empty_cache()
print(f"已分配内存: {torch_npu.npu.memory_allocated()/1024**2:.2f} MB")
print(f"缓存内存: {torch_npu.npu.memory_reserved()/1024**2:.2f} MB")
已分配内存: 938.31 MB
缓存内存: 1102.00 MB
调用torch_npu.npu.empty_cache()
已分配内存: 938.31 MB
缓存内存: 956.00 MB