【发布时间】:2021-05-24 14:06:46
【问题描述】:
我有一个 RF 模型,我试图在部署期间加快加载速度。第一次创建并保存为压缩的 joblib 文件。但是加载时间太长了,无法满足我的需要。这是我尝试对我拥有的东西进行基准测试的 sn-p:
# load the base file:
print("Loading compressed joblib...")
MODEL = f"{base_path}/data/model_files/{dataset}_RF_{C}.compressed"
tic = time.perf_counter()
with open(MODEL, "rb") as f:
model = joblib.load(f)
mem = sys.getsizeof(model) / 1024 / 1024
toc = time.perf_counter()
load_time = toc - tic
size = os.path.getsize(MODEL) / 1024 / 1024
print(f"file on disk: {size:0.2f} MB\nfile on RAM: {mem:0.2f} MB\nload time: {load_time:0.3f} seconds\n")
输出:
Loading compressed joblib...
file on disk: 52.22 MB
file on RAM: 0.00 MB
load time: 9.510 seconds
我不确定为什么没有显示加载到 RAM 中的文件大小。如果你知道,也请帮忙。
未压缩的作业库:
# create uncompressed joblib, save it, load it, benchmark
print("Saving uncompressed joblib...")
MODEL = f"{base_path}/data/model_files/{dataset}_RF_{C}.uncompressed.joblib"
tic = time.perf_counter()
with open(MODEL, "wb") as f:
joblib.dump(model, f, compress=False)
toc = time.perf_counter()
save_time = toc - tic
size = os.path.getsize(MODEL) / 1024 / 1024
print(f"file on disk: {size:0.2f} MB\nsave time: {save_time:0.3f} seconds\n")
del model
print("Loading uncompressed joblib...")
tic = time.perf_counter()
with open(MODEL, "rb") as f:
model = joblib.load(f)
mem = sys.getsizeof(model) / 1024 / 1024
toc = time.perf_counter()
load_time = toc - tic
size = os.path.getsize(MODEL) / 1024 / 1024
print(f"file on disk: {size:0.2f} MB\nfile on RAM: {mem:0.2f} MB\nload time: {load_time:0.3f} seconds")
输出:
Saving uncompressed joblib...
file on disk: 4376.51 MB
save time: 8.718 seconds
Loading uncompressed joblib...
file on disk: 4376.51 MB
file on RAM: 0.00 MB
load time: 7.645 seconds
可以看出,通过将 50MB 压缩换成 4.3GB 文件大小,我并没有在加载时间上获得太多收益。
【问题讨论】:
标签: scikit-learn pickle random-forest joblib