2023/12/31

OMP_NUM_THREADSの件

LightGBM Ver4.2.0のビルド時にリンクされる際にOMP_NUM_THREADSが解決されない問題は環境変数ではなかったです。イシューが上がっておりバージョンアップで必要なファイルが欠け落ちていた模様(プロジェクトファイルの記述的に)で差し替えファイルを適用すればビルドは完了出来ます。

しかし、そのビルドで出来たLightGBM.exeと関連を今までだとAutoMLのビルドで生成されるLightGBM.exeを入れ替えて動いてたものが、多分ML.NET Ver3.0での現象だと思われますが、学習アプリが飛びます😱 まあ、まだリリースされて間もないのでしばらく様子見が正解と判断してAutoMLの吐き出したもので継続してみます。

ただ、学習時間短縮が見込まれるCUDA適用はなるべく早くに実装したいとは思います。

2023/12/29

LightGBM Version 4.2.0のビルド

環境変数 OMP_NUM_THREADS にCPUのコア数を設定する。Intel Core i7-8700使ってますので6に設定する。これがそもそものエラーな気がするんですが、こんなの前バージョンのビルドで指定した記憶が...ちょいちょい記憶が飛ぶ事が有るので断言は出来ない。これしたけどビルド出来ないのでちょっとお手上げ状態。

前回ビルドした記憶が既に飛んでいて、なんで最新ビルドが出来ないのか苦しんでます。取敢えず初心に帰って本家の説明を参考に環境を整える。GPUの助けを受けて少しでも高速に学習出来れば助かるのでGPUバージョンのビルドに挑戦。NVIDIA GeForce GTX 1050 Tiと若干しょぼいGPUですが多少は足しになるかなぁっとね。

  • Git for Windows(64bit) Ver2.43.0
  • CMake Ver3.28.1
  • CUDA Toolkit 12.3
  • Boost C++ Libraries Ver1.84.0

1つ目は問題なくダウンロード出来たんですが、3つ目と4つ目は普段使っているEdgeで何度やってもダウンロード出来なくて...はい、またMicrosoftを疑ってChromeで試すとあっさりとダウンロード開始してくれました。ただ、ここで問題はCUDAの方です。これ3.1GBと巨大なものです。あっ、インストールタイプにローカルを選択したからなんですが、貧相なmineoの深夜フリーの時間まで待って行ってますが終了まで4時間だと😖 今朝まで夜勤で勤務して本年の仕事納めで寝ずな状態で待つのは無理。

どうせ寝て待つならと本家の説明にある最初のコマンドも実行して寝ようかと思う。

git clone --recursive https:://github.com/microsoft/LightGBM

ソースのGitHubからのダウンロードだと思いスタートさせたが意外と早く終わった。

cd LightGBM
mkdir build
cd build

ビルドするフォルダー作成して、明日起床後に

cmake -A x64 -DUSE_GPU=1 -DBOOST_ROOT=C:/local/boost_1_84_0 -DBOOST_LIBRARYDIR=C:/local/boost_1_84_0/lib64-msvc-14.3 -DOpenCL_LIBRARY="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.3/lib/x64/OpenCL.lib" -DOpenCL_INCLUDE_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.3/include" ..

としてから

cmake --build . --target ALL_BUILD --config Release

でビルド完了する筈。

追記 2023.12.30 10:18
なんとかビルド完了して、いざ学習!って普通にLightGBMのトライアルで学習アプリが吹っ飛んで消えます😖何の表示もないので手掛かり無しで諦めるしかないかも。ビルドで何らかの問題があったのかもですが、特に目立ったエラーとかは無いものの、警告的なものは何となく出てた気はするので、その辺りを対処する必要があるのかも。

追記 2023.12.30 11:22
ビルドの手順をやり直しながら眺めてました。1回目のcmakeの終わりの方でBoostの処理が行われますが、ここで

-- Found Boost: C:/local/boost_1_84_0 (found suitable version "1.84.0", minimum required is "1.56.0") found components: filesystem system
-- Performing Test MM_PREFETCH
-- Performing Test MM_PREFETCH - Failed
-- Performing Test MM_MALLOC
-- Performing Test MM_MALLOC - Failed
-- Looking for inet_pton
-- Looking for inet_pton - found
-- Configuring done (8.0s)
-- Generating done (0.0s)
-- Build files have been written to: E:/My Project/LightGBM-4.2.0/build

って事でMM_PREFETCHとMM_MALLOCがFailedになってるのは問題ですね😱

で、ログを遡ってみると、

CMake Warning at C:/Program Files/CMake/share/cmake-3.28/Modules/FindBoost.cmake:1398 (message):
  New Boost version may have incorrect or missing dependencies and imported

となっている箇所が2つある。ならば試しにVer1.81.0をダウンロードして試すとこれは解決したけど、MM_PREFETCHとMM_MALLOCの問題は解決せず。

アイの歌声を聴かせて

貧相な仮住まいのネットワーク環境下でちょっと久しぶりに良い映画だった。もう何年も世話になってるAmazon Prime Videoですが、学生時代から映画とか好きで沢山見てきました。今月なのか、ちと分かりませんが何見ようか眺めていてふと目についた。基本ジャンルとか特にこだわりは余り無いけど、洋画を見る事が多いかなぁ。邦画はアニメが多い感じです。

前評判とか全く情報が無い状態でいきなり見ました。いや、年齢的にもなんですが、まあ、元々涙もろいんです。それが加齢と共に更になんです。これ、1時間48分なんですが、涙腺崩壊しました😭 好きだなぁ、こういうアニメ。もしかすると1時間以上涙ボロボロだったのですが、ちょっと幸せな気分にしてくれました😂

2023/12/28

Visual Studio Installerは酷い

気が付けば、LightGBM Ver4.2.0がリリースされていたのでダウンロードした。以前にもビルドした事があったんですが、多分23H2のクリーンインストールでVisual Studioのインストール内容が変わってて、まあ、そもそもC++で書かれているらしく、C++とか使わないから入れてなくてVisual Studio Installerを使って追加。しかし、これが非常に出来が悪い😖

まあ、最初デフォルト内容のみC++部分を追加するとWindows SDKやらなにやらが足らんとかバージョンが違うとか。で、現在の仮住まいのネット環境の関係でちまちまやってるんですが、これとこれで行けるかって感じでしてもあれが足りないとか。そこで再度Visual Studio Installerで追加で入れるものを選択するのに、起動してC++部分をクリックしてやらないとインストールする項目の選択が出来ないのでクリック。1回クリックすると選択外れ、再度クリックでC++が選択状態になりそこで追加項目をって既にインストール済みなのに消えてる始末。選択が消えているだけならまだいいのですが、インストール済みのを選択して、更に追加でってしても、結局全てダウンロードしなおしてインストールになる😠 もう残り1カ月切りましたのでひたすら我慢なんですが、光回線環境に早く戻りたい。

はっきり言って、来月でmineoは解約です。まあmineoユーザーはよく安いからって使っているなぁと感心します。電波が入るなら確実に楽天モバイルの方が早いし安い。ああっ、しかし、今後は楽天モバイルの契約も継続するか考えなきゃです。多分ドコモのプランをギガライトからEximoに変更する事になると思うので、楽天市場の5倍が気になるけど...悩む所です。

2023/12/25

長い学習時間に苦戦中

通常用の学習CSVファイルは結局773MBになりましたので基本3,600秒なんですが、先日試しに4,000秒もしてみましたが最適RMSEは0.8290で、3,600秒の最適RMSEの0.8240を超えなかったので、しばらくは3,600秒で行っていこうと思い実行中です。

以前のデータからは最適RMSEが0.7947とかもありましたのでそれを超えられるものが得られればと思ってます。しかし、以前は2,400秒とかで行けてたので回数こなすのも2/3で済みましたが1時間は長いです😔

今年も残す所12/28の開催がJRA最後になるので、それが終わったらそこまでの学習CSVファイルの作り直しをして再度学習となり、金杯に間に合わせる作業になると思いますが、良い新年が迎えられる様に年末年始はひたすら学習作業になるかと。

ちょっと試しているのは現在LightGBMのみの学習にしてます。結局良い感じのモデルってほぼLightGBMなのでFastForestもFastTreeも時間の無駄かもと判断してみました。しかし、そのせいかは不明ですが、結構頻繁にoverflowで終わるトライアルが目に入る。エラーにならずに良い結果になるトライアルが出るのを回数こなしていくしかない感じ。

2023/12/17

第75回朝日杯フューチュリティステークス

通常用の学習が終わらず昨日は全く参戦出来ませんでした。もう少しで3,600秒20回が終わりますが、以前の最適RMSEは0.7947とかだったのですが、現時点て0.8176です。0.7代やそれ以下が出て欲しいですが、今後の課題としておきます。

現時点では阪神の芝は稍重なのでこれがレースまでに良に回復する可能性は十分にあるので馬場状態が変わると予測も変わってくる可能性はあるのですが10番人気サトミノキラリからになってます。もう随分長く参加だけはしてるPOGなんですが、珍しくナムラフッカーが出走してます。こちらは更に人気が無く11番人気😜 松山君の腕に期待したいです。

2023/12/16

学習サンプル500MB超えの学習時間

新馬戦用はシンプルな為、特にミス無くコーディング出来てたのですが、通常用は結局過去5走まで含めたのでコーディングミスがあり、CSVファイルの出力しなおしなんかもあり今日のレースには間に合わず😖 更に基本CSVファイル出力はCsvHelperを利用してるので全データを一旦貯めこんでファイル出力する関係からか648MBになるものでは途中でメモリ不足になる事も。多分OS上で他のアプリとの関係なのかエラーにならず一気に出力出来た事もあるんですが、半分程度ずつ出力してテキストエディターで結合してます。

新馬戦用のCSVファイルは25MB程度なので学習時間も900秒20回として、これまでの最適RMSEが0.9471だったのがあっさりと0.8693が出たので良かったのですが、通常用は500MB以上は60分とかが推薦っぽいので3,600秒20回をしてます。通常用のこれまでの最適RMSEは0.7947とかだったんですが、バグ発見以前に学習させた時に0.8程度の時はありましたが今は1.0を下回らないです。まあ、まだ2回しか終わってないので気長に待って明日にはどうにか良い結果が出る事を期待したいです。

2023/12/14

限界を感じたので大幅変更

現時点で現状の限界点かなぁとひしひしと感じてましたので腹くくって大改造に挑みました。で、既に学習用CSVはどうにか出力終わって新馬用は取敢えず学習済み。今通常用を行ってます。ちょっと強烈なのは通常用CSVファイルなんですが、648MBと巨大なものになりました。学習時間も考慮が必要になるレベルなんだと思いながら、限られた時間なのでまずは2,500秒16回で明日朝終了予定。20回にしなかったのは出社で自宅出る前に終わってないと困るのでって事です。

今回の大幅変更の結果次第ではもう少しだけ可能性はあるものの、ダメだった場合は根本的にまた考え直す必要が出るかもレベルです。ただ、自分が出来る?ってか自分がどうなかこなせる?って感じでそれなりの機械学習パッケージが用意されれば良いのですが、ML.NETにしても他のものにしても微妙なのは時の流れに委ねるしかない😩

2023/12/09

ヒヤリとしたマイカーのアクセル

ここ最近は片道30キロ程度の通勤になりました。18年目の愛車というか、まあ、数年前に自分の愛車を買い替えて、新車を妻用にして、妻が乗っていたのを自分用にしたのですが、特に飛ばして走る事は無いものの、極端に遅い車を追い越す為にフルスロットルした時です。ベタ踏みしたアクセルが感覚的に足戻してもそのままな感じが...追い越しながらブレーキ踏んで、ちょっとラグ有りながら戻る感覚でした。

普段あまり自分で車の整備とかする訳でもなく、同級生が板金屋してるので任せっぱなし。アクセル戻らないとか怖いので確認してもらおうかと思いながら、ちょっと気になり自分で車確認しました。純正のマットを当然の様に使ってるんですが、まあ、年々なのか何かの整備でなのか、ちょっと分かりませんが、アクセルが戻らなかったのは、このマットにアクセルペダルが引っ掛かり戻らなかった様です😨 怖い怖い!マットの位置をしっかりと調整してっていうか、本来のあるべき位置に戻しましたので大丈夫かと思います。

今後は季節的に路面凍結や降雪なんかが気になる通勤路でスタッドレスへの履き替えなんかも検討しなきゃです。これまでそんな心配のない場所での運転のみでしたが、10日後の週間天気でも-4度とかになる場所なので予算準備して対策が必要な感じです。

Microsoft.ML.AutoML Version 0.21.0の動作

新バージョンでの放置しながらの学習を進めてます。IMonitorクラスのバグ(?)は別として、以前のバージョンでみられたトライアル番号がクリアされずに累積されるのが、規定時間で1回の学習を終えるとリセットされる様に改善されてます。

相変わらずトレーナーは3つに絞った学習をさせてます。

  • FastTree
  • FastForest
  • LightGBM
以前のバージョンではログを見てても、ほぼLightGBM状態だったんですが、新バージョンでは3つがランダムに使われています。まあ、これ自体が良いのか悪いのかは別として最適な学習が出来ているなら改善されたと判断できるのかなぁと。

現時点では新馬戦用モデルのRMSEは0.9484を採用、通常用モデルのRMSEは0.7976を採用してみました。実は学習を新馬戦用は900秒40回とか通常用は2400秒20回とかを秒数を多少変えたりして行ってるんですが、全てのモデルが使えるかというと、最適RMSEだと思い採用しても実際にそのモデルを使うように指定してもエラーになったりします。これは以前のバージョンでも現象確認してたのでMicrosoft.MLなのかMicrosoft.ML.AutoMLなのかのバグ(?)なのかなぁと思ってます。ああ、どうやら今回のリリースって総称してML.NET Ver3.0のリリースって事の様です。

2023/12/04

新しいバージョンで少し進展

途方に暮れながらもアイビー先生に質問したり...まあ、そもそもネット上に情報が無いのでまともな回答は得られませんが😓 試せる事を色々としてたんですが、そもそも、前バージョンでは問題なく動くものがバージョンアップで動かない原因として指定した学習時間が終了してもトライアルが正常に終了せず、'e2'が辞書に無い的なエラーでそのままになるのが一つの症状なんですが、これはAutoMLExperimentに.SetCheckpointを使って万が一の時の情報保存だったかの指定を随分前にしてたんです。いや、前バージョンではこれ入れてても何の問題も無かったんですが、試しにコメントアウトしてみると普通に動く事が分かりました。

まあ、確かにタイムアウトして終了にしても、このSetCheckpointも終了時の処理で関連してるんだとは思うけど...取敢えず1つはクリア出来た。SetCheckpointの恩恵を得た記憶はないので今後は使わない方向でも支障は無い筈。

ただ、相変わらずIMonitorが本来取るべき動作が出来ていない。モニターなんで、トライアル走らせながら感覚的にはApplication.DoEvent()が適度にされているイメージといえばいいのか。これが前バージョンまでは的確に行われていたので、中断ボタンを押せば中断は出来たし、学習アプリ自体もRichTextBoxのログ表示が行われ、いやまあ、ログ表示自体はされてますが、アプリのウィンドウはイベント処理が出来ないので移動やサイズ変更等一切受け付けない状態です。苦肉の策でIMonitorのメソッドのあちらこちらにApplication.DoEvent()入れるとちょっとマシになるとか😒 本来の方法とは全く関係ないコーディングを入れなきゃとかは本当に避けたい所です。

それでも、放置しておけば学習自体は出来るので進めてみます。

2023/12/01

前途多難なMicrosoft.MLとMicrosoft.ML.AutoML

11月28日に新バージョンが正式にリリースされました。

Microsoft.ML Version 3.0.0

Microsoft.ML.AutoML Version 0.21.0

基本的にPreviewリリースがそのまま正式バージョンとしてリリースされたんだと思います。早速入れて試すと、今までのソースのままでは全く動きません。変更点とかのドキュメントとかも無いので途方に暮れてます😖 流石Microsoftクオリティです。

どのトレーナーを使うかのオプション指定をSweepablePipeline設定時に指定するんですが、これまでのバージョンではuseLbfgsだったものがuseLbfgsPoissonRegressionに変更されてたりはシンタックスエラーで簡単に変更が分かったので修正も簡単でした。しかし、全く動かないのはエラーもなくなので何が悪いのかが不明。

せめてML.NET Model Builderが最新バージョンをリリースしてくれれば、それ試しながら様子見とかも出来るんですが、徐々に打つ手が無くなってます😭