🚀

【Windows】 LightGBM の Model format error について

2022/01/15に公開

環境

エラー内容

[LightGBM][Fatal] Model format error, expect a tree here, met --------

みたいなやつ

エラーの再現

  1. windows PC上でLightGBMのモデルを作成
  2. model.save_model("models/lgbm.txt")でモデルを保存
  3. GitHubでモデルごとpush
  4. 他のwindows PCでリポジトリのclone
  5. model.predict()でエラー発生

原因

どうやらGit for windowsでは改行コードを自動で変換してくれるだるいありがたい仕様があるそうです。
https://qiita.com/uggds/items/00a1974ec4f115616580

2.で作成した"models/lgbm.txt"はlightGBMの仕様上、widnows pcで作成しても改行コードはLFで出力されます。
しかし、4.でcloneしたときにwindows pcの場合、自動でCRLFに変換されるのでモデルの読み込みが失敗するみたいです。

そもそも学習モデルをtxtファイルで保存せず、pickleオブジェクトとかで保存すればエラーは起きないかもしれません。

解決策

下の.gitattributesを追加。

.gitattributes
* text=auto eol=lf

その後、CRLFになってしまっているファイルを一旦削除した後、
git checkout -fで復活させると改行コードがLFになります。

参考: https://qiita.com/t-kuni/items/1c5c7512ee0827f200de

Discussion