2024/10/01

やはりLightGBMは32bitではNG

LightGBMのC API利用した機械学習のサンプル的なアプリを作り、どうにか動くものにしました。AutoMLを利用したり、Model Builderを利用した場合には、学習モデルのファイルをセーブして単にその学習モデルを32bitアプリでロードして利用は出来ました。しかし、LightGBMでブースター(LightGBMでの学習モデルの呼び方がそんな感じなんだと理解したが、違うかも?)学習させてセーブして、それをロードして予測させるにはやはり64bit環境が必要な感じです。まつり、さらだから利用するには機械学習させるのも予測させるのも別アプリにする必要があり、アプリ間通信的な以前ちょっとかじった方法が必要になるかも。JV-Linkさえ64bit化されればこんな苦労しなくて済みそうなんだけどorz

ここまでAutoMLのShinbaTimeCK.csvからはRMSEとして1.9544が最適最高値なんですが、今回のテスト的なLightGBMではあっさり1.7未満とか出たりしたので、このモデルの検証をしたいんですが、どこまでやれるかが...

追記 2024.10.1 16:45
AutoMLやModel Builderとの圧倒的違いは学習時間だと思う。まだ新馬戦のみだけど、比較して圧倒的に短時間で終わる。今、通常用CKの学習試してるけど、そもそも学習データファイルが1.27GBと大きい為、準備段階でも新馬戦用とは比較にならない位時間掛かって一瞬ダメか?って思う位でしたが準中に学習させてますし、なかなかいいテンポで進んでます。SouhaTimeCK.csvのRMSEの最適最高値は1.3376ですが...ここまで30分程度で400回程学習進んでまして1.431865とかまで来てます。一応1,000回まで学習する指定にしてるので最大でも後30分程度で終わる時点でどこまでいけるのか。
待っている間にCopilotに質問ぶつけてみたらLightGBMのbooster.SaveModelで保存すればMicrosoft.MLのmlContext.Model.Loadで読んで利用可能って言ってるのでちょっとそれを近日試そうかと思います。

追記 2024.10.2 8:47
夜勤明け帰宅後、早速ちゃちゃっとLightGBMのブースターをMicrosoft.MLで読めるか試しましたが予想通りNG。Copilotはなぜ簡単に嘘をつくのか不思議でならないです。それでもそれなりに助かる部分もあるので利用してるんですがね😓
次の手段としては多分プロセス間通信でやり取りして予測結果も出すようにする必要があるなぁ。これはマジでやりたくない方法なんですがどうしようか悩みます。

0 件のコメント:

コメントを投稿