
我在执行模型推理的时候,启动时间很长,在经过很长时间的启动之后,模型在执行第一次推理的时候运行时间也很长,可以看到有142秒。通过查阅资料我得知第一次推理之前会对模型进行编译,所以执行时间很长,之后就会快起来。但是在执行后面的推理时,虽然打印出来的执行时间是一次0.09s左右,但是真实的物理时间绝不止这么少,forward_time在终端的打印频率可能就是一秒一次多一点。而且在推理的时候还有一定的概率会卡很长时间才出结果。
所以我猜测,在进行后面的推理过程时,每一次推理的时间确实只有0.09s,但是在每一次推理之前还是会对模型进行很长时间(约1s)的编译,注意是每一个token的推理之前都会执行很长时间的编译。但是我不明白为什么在第一次推理时已经进行了这么长时间的编译,为什么在后面的每一次推理时还要花费这么长的时间进行编译,甚至远超编译后的推理时间。
我想知道如何避免每一次推理之前的这一段很长时间的编译过程,来让模型真实的推理速度达到0.09s左右。
我在执行模型推理的时候,启动时间很长,在经过很长时间的启动之后,模型在执行第一次推理的时候运行时间也很长,可以看到有142秒。通过查阅资料我得知第一次推理之前会对模型进行编译,所以执行时间很长,之后就会快起来。但是在执行后面的推理时,虽然打印出来的执行时间是一次0.09s左右,但是真实的物理时间绝不止这么少,forward_time在终端的打印频率可能就是一秒一次多一点。而且在推理的时候还有一定的概率会卡很长时间才出结果。
所以我猜测,在进行后面的推理过程时,每一次推理的时间确实只有0.09s,但是在每一次推理之前还是会对模型进行很长时间(约1s)的编译,注意是每一个token的推理之前都会执行很长时间的编译。但是我不明白为什么在第一次推理时已经进行了这么长时间的编译,为什么在后面的每一次推理时还要花费这么长的时间进行编译,甚至远超编译后的推理时间。
我想知道如何避免每一次推理之前的这一段很长时间的编译过程,来让模型真实的推理速度达到0.09s左右。