在M1 mac上加载lightGBM模型时出现分段错误

Tak*_*shi 1 pickle segmentation-fault python-3.x lightgbm apple-m1

当我尝试加载 LightGBM 模型时出现分段错误。我尝试过pickle(包括协议更改)、cloudpickle、joblib 和 lightGBM save_model,但是,我无法加载模型。

保存模型:

    model = lgb.LGBMRegressor(**kargs)
    model.fit(self.X_train, self.y_train)
    with open(self.output_dir + 'models.pkl', "wb") as f:
        pickle.dump(model, f, protocol=4)
    with open(self.output_dir + 'modelcl.pkl', "wb") as f:
        f.write(cloudpickle.dumps(model))
    pickle.dump(model, open(self.output_dir +
                'model.pkl', 'wb'), protocol=4)
    joblib.dump(model, f'{self.output_dir}model.joblib')
    joblib.dump(model, f'{self.output_dir}model.xz', compress=True)
    model.booster_.save_model(f'{self.output_dir}model.txt')
Run Code Online (Sandbox Code Playgroud)

负载型号:

joblib.load('path/model.xz')
joblib.load('path/model.joblib')
pickle.load(open('path/models.pkl', 'rb'))
pickle.load(open('path/modelcl.pkl', 'rb'))
pickle.load(open('path/model.pkl', 'rb'))
model = lgb.Booster(model_file='path/model.txt')
Run Code Online (Sandbox Code Playgroud)

环境:M1 Mac Monterely(12.0.1) Python 3.8.12 (conda),joblib==1.1.0,lightgbm==3.3.2。

你知道这里发生了什么吗?我想我应该尝试保存权重而不是保存整个模型,但不知道在 LightGBM 上如何。

Tak*_*shi 5

通过从 conda 安装 lightgbmconda install -c conda-forge lightgbm而不是使用pip install lightgbm. 可能不建议从 pip 安装 lightgbm。

安装的包是 conda-forge/osx-arm64::lightgbm-3.3.2-py38hb2dfaa5_0

资源: https://lightgbm.readthedocs.io/en/latest/FAQ.html#i-encounter-segmentation-faults-segfaults-randomly-after-installing-lightgbm-from-pypi-using-pip-install-lightgbm