2024/01/29

日立エアコン 白くまくん

建てた家に建築会社のインテリアとしてエアコン4台購入してます。

  • RAS-ZJ40N2(W) 1台 居間用
  • RAS-AJ22N(W) 3台 寝室用
居間用は高機能タイプでフィルター自動お掃除機能とか装備してるもので、寝室用は単純なモデルですね。RAS-ZJ40N2は[凍結洗浄][ファンお掃除ロボ][カビバスター]搭載ハイグレードモデル(14畳)で、RAS-AJ22Nはコンパクトサイズのシンプルエアコン(6畳)だそうです。価格的にも48万円程度とオープン価格(価格.comでは4万円程度)という差なので機能面で違うのは当然ですが、居間用は標準でWi-Fiで家庭内LANに接続可能でスマホアプリで外出先からでも操作可能。

オプションのSP-EM2とかを1.5万円でそれぞれ装備すればPanasonicのHEMSにも追加登録して外出先からの制御も可能になりますが、そこまで出費してまで欲しい機能でもないと思うので今回は見送ります。

2024/01/27

建替え完了

昨日無事に引越しました。まあ、若干天候的な影響から完璧に工事完了しておらず、週明けに最後のコンクリートを流し込んで養生してから来週末までには完了って事になるかと。そんな訳で本来なら余裕で3台、詰め込めば6台以上でも行けるんですが、現時点でどうにか2台。月曜日から養生済むまでは近くの駐車場にって事になります。

建替えで新築してますので全てが新しいです。セキスイハイムでパナソニックのHEMSとかが装備され、YKKの玄関でリモコンにカードキー、スマホアプリでも施錠解錠的な事も。ただ、予算的に全館空調入れず、日立のエアコン入れたのでHEMSからコントロール出来るのかとか色々と調べる必要があります。玄関の鍵もHEMSとの連携が出来るのかどうかとか分からないので調査依頼中。

現時点の総評的には50%程度ですかね😓 建物的には不備とかではないものの、現在ちょっと確認してもらっている事もあったりするし...

ドコモ光の工事は順調に済み、そもそも各部屋のLAN接続口も装備され、ひかりTVオプションでアンテナ・パラボラ無で行ける様にしてますが、その辺りも問題無く行けました。

2024/01/20

ML.NET Ver3.0とLightGBM最新版の相性

ちょっと前にも書きましたが、ふと思うと、実は今回の最新版ML.NET Ver3.0.1でLightGBM Ver4.2との組み合わせを試したんですが、エラーにはなるので問題はあるものの、以前は吹っ飛んでたのがエラーが表示されたので少しは前進してるのかも? ただ、だからといってどうにかなるとかではないので、どうにかしてよって事には変わりはありません。

問題点を報告して対応して頂くとしても、その報告先がどこなのか。このケースですと、ML.NETになのかLightGBMになのかとかね。単に例えばMicrosoftが原因とかが確定なら報告先も確定出来るんですが、こちらには特定出来る程の判断材料も無いし、技量もないorz ただひたすら問題点が修正されるのを待ち続けるのは本当に辛い。

疑問なのは、例えばSQLiteを使うアプリだと単一ファイルでの発行するとエラー起こします。でも、これ、多分ってか逃げ道も作れる。エラートラップしてリトライすればとかあるんですが、正式リリースバージョンでそんなアプリをリリースすべきかの判断としてはちょっと納得の行くものではないんですよね。

最新バージョンの変化点不明

Visual Studio Community 2022は確か2024/1/18付けだったと思いますがVer17.8.5が、いわゆるML.NET関連が2024/1/19付けでVer3.0.1がリリースされたので全て更新。Microsoft.ML.AutoMLのみ元々Ver0.21.0だったのがVer0.21.1への更新です。Visual Studioに関しては多分インストーラーに多少変更点なんかの案内があったかもですが、ML.NETに関してはそんな案内があるのか掲載場所すら不明です。

なんにしてもバグが修正されればと期待しながら更新したんですが何が変わったのか分かりませんでした。

  • 単一ファイルを発行するとSQLiteでエラーになる
  • AutoMLのIMonitorの挙動
  • 学習済みファイルのロードでエラーになる
  • 学習プロセスで一番最初のトライアルが時間切れで終了になると異常となる
まあ、ざっとこんな辺りが現状困っている問題ですが、全て未解決。期待しているModel Builderの最新版はもう半年程度更新されない。こちらはバグ報告してそれは最新版では修正済みですとの報告があったのでそのリリース待ってますがパタリと更新されなくなりましたorz

2024/01/13

Microsoft Rewards 10回目

前回より62日掛かりました。まあ、デイリーストリークが大晦日だったか元旦に切らしてますので今年は再スタートになってます。前回48日程度でって書いてますが、確か12月のいつ頃か忘れましたが今年の数日前まではMicrosoft Rewardsも不況のあおりなのか取得出来るポイントが減った期間もありました。これまで最低大体5ポイント~10ポイントだったのが1ポイント~2ポイントに下がっていた期間があり、ああっ、Microsoftもこんなポイ活やってもどうよな状況なのかなぁとか、勝手に思ったりしてたんです。更にPCでの検索1回3ポイントで12ポイントってのが廃止されました。

あと、ここ最近PCだけでなくスマホのBingでのRewardsで7日連続でボーナス的なのもあるので、5+5+10+10+15+15+20とかなので1週間で80ポイントってのがあるんですが、若干忘れる事もあったりで...にしても前回より2週間程長かったのはちょっとビックリです。

ああっ、これ、1月9日に達成してましたが時間が取れずに過去の話となってます。

2024/01/09

大きな学習済みモデルでのエラー

相変わらず微妙な記憶なんですが、ML.NET Ver3.0以前から適度にエラーが出るのは確認してるんですが、学習済みモデルの大きさだとは思っていなかったので、以前も同様だったかは自信はありません。年末年始で色々と準備して学習進めてちょっと良さそうな最適RMSEを示したモデルを使って予想させようとすると

例外がスローされました: 'System.Reflection.TargetInvocationException' (Microsoft.ML.Core.dll の中)
'SaraD.exe' (CoreCLR: clrhost): 'C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\8.0.0\System.Diagnostics.StackTrace.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。
'SaraD.exe' (CoreCLR: clrhost): 'C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\8.0.0\System.Reflection.Metadata.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。
'SaraD.exe' (CoreCLR: clrhost): 'C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\8.0.0\System.IO.MemoryMappedFiles.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Collections.Immutable.ImmutableArray.Create[T](T[] items, Int32 start, Int32 length)
   at Microsoft.ML.Trainers.FastTree.RegressionTreeBase..ctor(InternalRegressionTree tree)
   at Microsoft.ML.Trainers.FastTree.TreeEnsembleModelParametersBasedOnRegressionTree.<>c.<CreateTreeEnsembleFromInternalDataStructure>b__5_0(InternalRegressionTree tree)
   at System.Linq.Enumerable.SelectListIterator`2.Fill(ReadOnlySpan`1 source, Span`1 destination, Func`2 func)
   at System.Linq.Enumerable.SelectListIterator`2.ToList()
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Microsoft.ML.Trainers.FastTree.TreeEnsemble`1..ctor(IEnumerable`1 trees, IEnumerable`1 treeWeights, Double bias)
   at Microsoft.ML.Trainers.FastTree.RegressionTreeEnsemble..ctor(IEnumerable`1 trees, IEnumerable`1 treeWeights, Double bias)
   at Microsoft.ML.Trainers.FastTree.TreeEnsembleModelParametersBasedOnRegressionTree.CreateTreeEnsembleFromInternalDataStructure()
   at Microsoft.ML.Trainers.FastTree.TreeEnsembleModelParametersBasedOnRegressionTree..ctor(IHostEnvironment env, String name, ModelLoadContext ctx, VersionInfo ver)
   at Microsoft.ML.Trainers.LightGbm.LightGbmRegressionModelParameters..ctor(IHostEnvironment env, ModelLoadContext ctx)
   at Microsoft.ML.Trainers.LightGbm.LightGbmRegressionModelParameters.Create(IHostEnvironment env, ModelLoadContext ctx)
   at InvokeStub_LightGbmRegressionModelParameters.Create(Object, Span`1)
   at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   --- End of inner exception stack trace ---
   at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at Microsoft.ML.Runtime.ComponentCatalog.LoadableClassInfo.CreateInstanceCore(Object[] ctorArgs)
   at Microsoft.ML.Runtime.ComponentCatalog.LoadableClassInfo.CreateInstance(IHostEnvironment env, Object args, Object[] extra)
   at Microsoft.ML.Runtime.ComponentCatalog.TryCreateInstance[TRes](IHostEnvironment env, Type signatureType, TRes& result, String name, String options, Object[] extra)
   at Microsoft.ML.Runtime.ComponentCatalog.TryCreateInstance[TRes,TSig](IHostEnvironment env, TRes& result, String name, String options, Object[] extra)
   at Microsoft.ML.ModelLoadContext.TryLoadModelCore[TRes,TSig](IHostEnvironment env, TRes& result, Object[] extra)
   at Microsoft.ML.ModelLoadContext.TryLoadModel[TRes,TSig](IHostEnvironment env, TRes& result, RepositoryReader rep, Entry ent, String dir, Object[] extra)
   at Microsoft.ML.ModelLoadContext.LoadModel[TRes,TSig](IHostEnvironment env, TRes& result, RepositoryReader rep, Entry ent, String dir, Object[] extra)
   at Microsoft.ML.ModelLoadContext.LoadModelOrNull[TRes,TSig](IHostEnvironment env, TRes& result, RepositoryReader rep, String dir, Object[] extra)
   at Microsoft.ML.ModelLoadContext.LoadModelOrNull[TRes,TSig](IHostEnvironment env, TRes& result, String name, Object[] extra)
   at Microsoft.ML.ModelLoadContext.LoadModel[TRes,TSig](IHostEnvironment env, TRes& result, String name, Object[] extra)
   at Microsoft.ML.Data.RegressionPredictionTransformer.Create(IHostEnvironment env, ModelLoadContext ctx)
   at InvokeStub_RegressionPredictionTransformer.Create(Object, Span`1)
   at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   --- End of inner exception stack trace ---
   at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at Microsoft.ML.Runtime.ComponentCatalog.LoadableClassInfo.CreateInstanceCore(Object[] ctorArgs)
   at Microsoft.ML.Runtime.ComponentCatalog.LoadableClassInfo.CreateInstance(IHostEnvironment env, Object args, Object[] extra)
   at Microsoft.ML.Runtime.ComponentCatalog.TryCreateInstance[TRes](IHostEnvironment env, Type signatureType, TRes& result, String name, String options, Object[] extra)
   at Microsoft.ML.Runtime.ComponentCatalog.TryCreateInstance[TRes,TSig](IHostEnvironment env, TRes& result, String name, String options, Object[] extra)
   at Microsoft.ML.ModelLoadContext.TryLoadModelCore[TRes,TSig](IHostEnvironment env, TRes& result, Object[] extra)
   at Microsoft.ML.ModelLoadContext.TryLoadModel[TRes,TSig](IHostEnvironment env, TRes& result, RepositoryReader rep, Entry ent, String dir, Object[] extra)
   at Microsoft.ML.ModelLoadContext.LoadModel[TRes,TSig](IHostEnvironment env, TRes& result, RepositoryReader rep, Entry ent, String dir, Object[] extra)
   at Microsoft.ML.ModelLoadContext.LoadModelOrNull[TRes,TSig](IHostEnvironment env, TRes& result, RepositoryReader rep, String dir, Object[] extra)
   at Microsoft.ML.Data.TransformerChain`1..ctor(IHostEnvironment env, ModelLoadContext ctx)
   at Microsoft.ML.Data.TransformerChain.Create(IHostEnvironment env, ModelLoadContext ctx)
   at InvokeStub_TransformerChain.Create(Object, Span`1)
   at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   --- End of inner exception stack trace ---
   at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at Microsoft.ML.Runtime.ComponentCatalog.LoadableClassInfo.CreateInstanceCore(Object[] ctorArgs)
   at Microsoft.ML.Runtime.ComponentCatalog.LoadableClassInfo.CreateInstance(IHostEnvironment env, Object args, Object[] extra)
   at Microsoft.ML.Runtime.ComponentCatalog.TryCreateInstance[TRes](IHostEnvironment env, Type signatureType, TRes& result, String name, String options, Object[] extra)
   at Microsoft.ML.Runtime.ComponentCatalog.TryCreateInstance[TRes,TSig](IHostEnvironment env, TRes& result, String name, String options, Object[] extra)
   at Microsoft.ML.ModelLoadContext.TryLoadModelCore[TRes,TSig](IHostEnvironment env, TRes& result, Object[] extra)
   at Microsoft.ML.ModelLoadContext.TryLoadModel[TRes,TSig](IHostEnvironment env, TRes& result, RepositoryReader rep, Entry ent, String dir, Object[] extra)
   at Microsoft.ML.ModelLoadContext.LoadModel[TRes,TSig](IHostEnvironment env, TRes& result, RepositoryReader rep, Entry ent, String dir, Object[] extra)
   at Microsoft.ML.ModelLoadContext.LoadModelOrNull[TRes,TSig](IHostEnvironment env, TRes& result, RepositoryReader rep, String dir, Object[] extra)
   at Microsoft.ML.ModelLoadContext.LoadModel[TRes,TSig](IHostEnvironment env, TRes& result, RepositoryReader rep, String dir, Object[] extra)
   at Microsoft.ML.ModelOperationsCatalog.Load(Stream stream, DataViewSchema& inputSchema)
   at Microsoft.ML.ModelOperationsCatalog.Load(String filePath, DataViewSchema& inputSchema)
   at SaraD.MLTime.PreparePredictionEngineJuni() in E:\My Project\SaraD\SaraD\MLTime.cs:line 1210
   at SaraD.MLTime..ctor() in E:\My Project\SaraD\SaraD\MLTime.cs:line 1148

ちょっと長いですが、こんな感じのエラーになります。該当行はmlcontext.model.loadしてる所です。厳密に100MBという事ではないですが、100MB未満の学習済みモデルのロードでは問題なく予測が出来ますが...ちょっと順位学習のモデルで見てて思ったんですが、通常用学習済みモデルで126MBはロード出来てるので、もしかすると境界は128MBかもです。161MBとか200MB超えのモデルもありますが、全滅かな。

英語で報告試みましたが自分の英語力が本当に低いのが残念です😞

2024/01/05

LightGBMについての追記

 本体アプリはJV-Linkを使うのでx86ターゲットにしてるので、LightGBM関連のNuGetパッケージをインストールしているとターゲット違いだとエラーになりビルド出来ませんので本体アプリからは除外しました。

JRA-VANはJV-Linkを64bit化を今年早い段階で実現して欲しいですが、予測出来る事としては可能性はほぼ無い。これ、単に自分が感じるJRA-VANのやる気度です。技術力が低いのはあからさまに明白です。しかし、提供元ではありますので提供されるものを最大限に利用させて頂いております。あっ、しっかり料金は納めてます。

まあね、そもそもMicrosoft自体が例えばVisual Studioの64bit化がOSのそれよりも遅れましたし、別にMicrosoftが技術的に優れている企業とは思っていませんが、少なくともJRA-VANがそれを超えるとは到底思っていませんので...基本的にユーザーは妥協するしかないですorz

LightGBM Ver4.?.?との相性?

ちょっと先程書いた内容で作業進めてましたが、ML.NET Ver3.0とLightGBM Ver4以降がかみ合ってない感じです。少し前にLightGBM Ver4.2.0のリリースに合わせて諸々のビルドして試して撃沈してたんですが、今回NuGetからインストールするLightGBMのバージョンがVer4.0以降だとアプリが普通に飛びます。この現象は、学習アプリが吐き出すLightGBM.exeを最新にしたりすると起きる現象と全く同じです。NuGetでLightGBMを入れないとデフォで入るVer3.5.5とかだったかと思いますが、それとは問題なく動作します。

散々苦労したLightGBMのビルドなんですが、ちょっと納得もしますが、実はVer4.1.0のビルドまでは動いたのも更に気になる所です。これ、放置すると修正入らない可能性もあるので、また最近としては、たどたどしい英語で報告入れる必要が出てきたかもorz

ML.NETでの開発

苦労続きな機械学習プログラミングはそもそも確定的なテキストを参考に始めた訳ではなく、手探りで人工知能(AI)や機械学習に関して全くの知識がない状態で手を出した玉手箱です。1年前にはまだデータベースすら完成状態ではなく、機械学習に手を出したのはゴールデンウィーク。ドタバタした定年退職からの再就職先探しをしながらやり始めてたんですが、あまりにも苦労したのでもう随分とやってる気になってました😜

グーグル先生や今ではアイビー先生の手も借りたりで始めた機械学習プログラミング。今回利用しているライブラリー的なツールはML.NETと称されたオープンソースで有志が開発を進めているものなんだとは思います。そんな有志の中でMicrosoftなんかも絡んでって事でMicrosoftの公式(?)のチュートリアル諸々を参考に作業始めてます。これ、多分根本的な部分でNuGetの詳細も把握しないまま進めてるのも若干(?)問題なくだとは思います。

  • Microsoft.ML
  • Microsoft.ML.AutoML
この2つさえNuGetで入れておけばコンパイルも通るしビルドも出来、実際に学習させてからの諸々も出来ます。しかし、まあ、実は以前もちょっと気になり、それ以外のMicrosoft.MLファミリー的なものを入れた事もあったんですが、違いも理解せずでクリーンに戻してました。

今回いつもの様にデバックというか実行してた時のエラーメッセージ見てるとMicrosoft.ML.CpuMath.dllがとかのメッセージが出てまして、ん?、そんなもの入れてないけど?と気になり、NuGetでMicrosoft.ML.CpuMathを入れたらエラーメッセージが消えた!

え?関係あるの?って事で、ちょっと気になる事は、そもそも正解を指導されてとか理解してやっている訳ではないのです。ML.NETがVer3.0に正式になりましたって話はネット上で確認しては居ますがだからってとは思ってました。ここでまた根本的な事なのかもですが、

  • LightGBM Ver4.2.0
  • Microsoft.ML Ver3.0.0
  • Microsoft.ML.AutoML Ver0.21.0
  • Microosft.ML.CpuMath Ver3.0.0
  • Microsoft.ML.DataView Ver3.0.0
  • Microsoft.ML.FastTree Ver3.0.0
  • Microsoft.ML.LightGbm Ver3.0.0
を学習アプリのNuGetと本体で追加インストールして揃えてみました。

は~~~っ、何がってまたやり直しかと思うと明日の金杯には間に合わない😭

順位学習用CSV出力

 延々と待たされた。結局ほぼ8時間を要しました😔 なぜそこまで時間が掛かったのか不思議なんですが...今回限りとかではないし、新馬戦用や通常用の様にファクターの変更が無ければ差分出力で済ませるとかは、ほぼ不可能。理由は新馬戦用や通常用の学習モデルを使って出力した予測走破タイムを使って学習データを作成しますので、学習モデルが変われば全てのデータ再出力が必要になります。ちょっと気が滅入る。

昨夜から予定通り2,400秒50回をスタートしましたが朝方にエラーで取りました。これ、その回の学習が最初のトライアルが終わる前に学習時間が終了すると1つもトライアルが終わらなかったよ!ってエラーになるんです。これで終わると指定回数に関係なく止まってしまうので対策が必要かもです。まあ、今回は止まった直ぐ後に目が覚めてPC確認して再スタート30回程度でしましたので支障はありませんでしたけど。

実際には良いのかは不明ですが、順位学習としては最適RMSEがこれまで最高の1.2085とかが出てたりします。新馬戦用や通常用の場合とは若干違うからなのか、1.0を下回るものはまだ出ません。これが出る様だとこれまでとは違う実戦結果が見込めもかもと期待はしてますが...

2024/01/04

金杯って1月5日固定だと思った

今年の金杯は1月6日ですね。これって自分の記憶には残ってないのですが、今年から変わった? いやまあ別に変ったからってなんじゃないですけどね。まあ、確か厩務員さんとか含めて労働条件的な問題とかもあるんだと思うし、少し前までは有馬でおわりだったのが28日のホープフルまで延びたり大変だと思うので全然OKです😉

暮れは29日の昨年最後のJRA-VAN提供データをデータベースに取り込んだ後に新馬用と通常用のCSVを1990年~2023年で作成し学習開始。CSVデータ出力はちょっと学習して、これまでのデータに12月分だけ出力したものを追加する事で時間短縮。新馬戦用の最適RMSEは0.8740で妥協。通常用はかなりの回数を秒数変えて試みましたが3,000秒で出た0.8188で今日午前中に妥協。というのも、この2つを使って順位学習用CSVデータの出力した後に学習になるので時間的にこれ以上は無理と判断。前回は4時間半程度で出力出来た記憶でしたので昼前にスタートして午後5時には順位学習スタート出来ると思ってましたがあまかった。既に6時間経過してますがやっと2020年分に入った所です😣 待っている間にブルーレイのトップガン-マーベリック-をPCでまた視聴してたのが悪かったかは不明ですが滅茶苦茶遅いです。

まあ、ここまで来ればもう少しで学習開始出来ます。19時からとして最大36時間程度だとすると...2,000秒で行くか2,400秒で行くかは迷う所です。2,400秒では計算上は54回が限度なので50回が余裕をもって無難な回数になりそうです。まあ、それが十分なのかは不明ですが、6日は町内の行事があるので朝から夕方まで時間取られるのでタイムリミットギリギリになる。後は実馬券的にどの程度行くかの判断をする必要はあります。

今年は良い年にしたいです😜