为什么用 joblib 一次又一次地加载 tf.keras.Sequential 成本增加时间
why load tf.keras.Sequential again and again with joblib cost increasing time
遇到这样一种情况,我需要一个一个地加载相同尺寸的模型(几乎相同的比例),joblib.load
保持成本增加时间。
例如,加载第一个模型令牌 3 秒,第二个模型令牌 5 秒。后一个总是比前一个花费更多的时间,而后一个模型并不复杂。即使我一直加载一个相同的模型,一次又一次,它也会花费越来越多的时间(耗时如下)。
0 4.4071619510650635 seconds
1 4.408193111419678 seconds
2 5.5284717082977295 seconds
3 7.223154306411743 seconds
4 8.955665111541748 seconds
5 10.984207153320312 seconds
6 12.934542179107666 seconds
7 14.573008298873901 seconds
8 17.183340311050415 seconds
9 19.3760027885437 seconds
我不知道为什么会这样,我怎样才能找到解决这个问题的方法。
因为keras.backend
将所有的context加载到一个全局变量中,并一直保持运行,不能删除模型本身来清理环境。
采取下面的一段代码,释放上下文,让接下来的过程更容易。
import keras
keras.backend.clear_session()
顺便说一句,如果你正在考虑控制 joblib 进程的会话,请看一下
tf.InteractiveSession
或 tf.Session under with
遇到这样一种情况,我需要一个一个地加载相同尺寸的模型(几乎相同的比例),joblib.load
保持成本增加时间。
例如,加载第一个模型令牌 3 秒,第二个模型令牌 5 秒。后一个总是比前一个花费更多的时间,而后一个模型并不复杂。即使我一直加载一个相同的模型,一次又一次,它也会花费越来越多的时间(耗时如下)。
0 4.4071619510650635 seconds
1 4.408193111419678 seconds
2 5.5284717082977295 seconds
3 7.223154306411743 seconds
4 8.955665111541748 seconds
5 10.984207153320312 seconds
6 12.934542179107666 seconds
7 14.573008298873901 seconds
8 17.183340311050415 seconds
9 19.3760027885437 seconds
我不知道为什么会这样,我怎样才能找到解决这个问题的方法。
因为keras.backend
将所有的context加载到一个全局变量中,并一直保持运行,不能删除模型本身来清理环境。
采取下面的一段代码,释放上下文,让接下来的过程更容易。
import keras
keras.backend.clear_session()
顺便说一句,如果你正在考虑控制 joblib 进程的会话,请看一下
tf.InteractiveSession
或 tf.Session under with