2024/09/11

久しぶりにLightGBMのビルド

LightGBM Version 4.5.0の直接的な利用にはC#からC++ API経由で呼び出す必要があるとCopilotに言われ、その為にはDLLをビルドする必要があるって事で久しぶりに行う事にしたのですが、若干スムーズに進まなかったのでメモします。

まず、Visual Studio Community 2022は既に当然ながらインストールされているのでこれを使ってビルドする事にしました。説明からRelease・microsoft/LightGBMに飛ぶと現時点(2024.9.11)ではv4.5.0だよって事で下にスクロールしていくと"▼Assets"があり、その下にダウンロード可能な一覧があります。しかし、欲しいファイルは表示されてないので"Show all 20 assets"をクリックすれば"LightGBM-complete_source_code_zip.zip"が出てくるのでクリックしてダウンロード。適当な場所に解凍します。説明では"LightGBM-master/windows"フォルダにある"LightGBM.sln"をとありますが、そもそも普通に回答すると"LightGBM-complete_source_code_zip"というフォルダになり"LightGBM-master"ではありません。なのでVisual Studioで"プロジェクトやソリューションを開く"で"LightGBM-complete_source_code_zip/windows/LightGBM.sln"を選択します。

Visual Studio Community 2022のインストール時にC++での開発にチェックを入れてないとプロジェクトを開こうとするとVisual Studio Installerが起動してインストールが始まります。で、この時点で開いているVisual Studioは無条件に終了されます。実はModel BuilderはVisual Studioの拡張機能なので24時間学習中で残り2時間だったのも強制的に終了させられます。その時点での最適RMSEの学習モデルは保存されるんですがRMSEが不明だったりします。

で、C++のインストールが済んだら強制的に閉めたVisual Studioも再度開きますけど...まっ、学習モデルはあきらめるとして作業を進めるには開けようとしている"LightGBM.sln"はVisual Studio 2015とかのものらしく、古いので対応したものにコンバートしますか的な確認が出て表示されているものをそのまま適応させる感じで進め、指示通り"Debug"ではなく"Release"にしてビルドを開始すると"common.h"の33行目で

#include "fast_double_parser.h"

となっている部分とその次の行の

#include "fmt/format.h"

がファルイが見つからないとエラーになります。この部分を修正する必要があり

#include "../../external_libs/fast_double_parser/include/fast_double_parser.h"
#include "../../external_libs/fmt/include/fmt/format.h"

としてやるとビルドが成功します。で、まあ、今回必要なのはDLLでそれを使うプロジェクトに追加して利用する様なので"Release"から"DLL"にして再度ビルドすれば"LightGBM-complete_source_code_zip/windows/x64/DLL"フォルダにDLLが出来上がる。

追記 2024.9.14
C言語での開発とかまだMS-DOSの頃とかUnixでの経験で30年以上前になるので記憶が曖昧だけど、MS-DOSでは環境変数とかでもしかしてincludeのヘッダーファイルのパスとか指定して置けば行けるんだったのかも? Githubで公開されているソースなので上記のようなエラーが出るままって事では無い様にも思えてきた😅

0 件のコメント:

コメントを投稿