MLflow

MLflowは、機械学習のライフサイクルの管理を目的として開発されたツールで、実験内容の記録や検索、実行の再現、多様な環境への学習モデルのデプロイ、学習モデルの管理、などの機能を有しています。


利用方法

準備:MLflowのインストール

MLflowで実験内容を記録するためには、予め MLflowパッケージ、および関連パッケージのインストールが必要です。玄界では以下のコマンドによりインストール可能です。

$ pip3.11 install torchmetrics torchinfo mlflow --user


トラッキングサーバの用意

MLflowでは、予めトラッキングサーバと呼ばれるサーバプログラムを起動し、機械学習のプログラムから接続することで、実験内容を記録します。玄界の計算ノードで機械学習プログラムを実行する場合、外部の計算機で起動しているトラッキングサーバを利用することも、玄界のログインノード上でトラッキングサーバを起動して利用することもできます。

  • 外部のトラッキングサーバを利用する場合

    外部で起動しているトラッキングサーバを利用する場合は、接続に必要な情報(トラッキングサーバのホスト名、ポート番号、ユーザ名、パスワード)を、予め確認しておいてください。

  • 玄界のログインノードでトラッキングサーバを起動する場合

    玄界のログインノードでトラッキングサーバを起動する手順は以下の通りです。

    1. ログインノードの IPアドレスの確認

      トラッキングサーバの起動には IPアドレスの指定が必要です。一方、玄界では負荷分散のためログインノードとして 2台のサーバを用いており、それぞれに別のIPアドレスが設定されています。使用するサーバがログインのたびに変わるため、毎回、サーバのホスト名から IPアドレスを確認してください。
      現在ログインしているサーバのホスト名は以下で取得できます。

      $ hostname
      

      また、ホスト名とIPアドレスの対応は以下の表の通りです。

      ホスト名 IPアドレス
      genkai0001 172.16.0.1
      genkai0002 172.16.0.2
    2. モジュールの呼び出し

      以下により、トラッキングサーバの起動に必要なモジュールを呼び出してください。

      $ module load gcc pytorch/2.3.1
      
    3. トラッキングサーバの起動

      以下により、トラッキングサーバを起動してください。ただし、--host 172.16.0.1で指定するIPアドレスは、ログインノードのホスト名に応じて変更してください。

      $ mlflow server --host 172.16.0.1 --port 60000
      

      もし Address already in use というメッセージが出た場合、--port 60000で指定した 60000番ポートが現在使用中なので、60001、60002など、番号を一つずつ変えて、再度実行してください。
      トラッキングサーバが正しく起動された場合、以下のようなメッセージが出力されます。

      [2024-09-17 15:22:09 +0900] [463931] [INFO] Starting gunicorn 23.0.0
      [2024-09-17 15:22:09 +0900] [463931] [INFO] Listening at: http://172.16.0.2:60000 (463931)
      [2024-09-17 15:22:09 +0900] [463931] [INFO] Using worker: sync
      [2024-09-17 15:22:09 +0900] [463938] [INFO] Booting worker with pid: 463938
      [2024-09-17 15:22:09 +0900] [463939] [INFO] Booting worker with pid: 463939
      [2024-09-17 15:22:09 +0900] [463940] [INFO] Booting worker with pid: 463940
      [2024-09-17 15:22:09 +0900] [463941] [INFO] Booting worker with pid: 463941
      

      トラッキングサーバが動いている間はコマンドを受け付けないので、玄界の計算ノードで機械学習プログラムを実行して実験内容をこのトラッキングサーバに記録する場合は、この状態のまま別のウィンドウを開いて玄界にログインしてください。

      トラッキングサーバを終了するには Ctrl-c(コントロールキーを押しながらc)を押してください。


実験内容の記録

MLflowでは、指定したトラッキングサーバに対して実験の内容を記録します。玄界のどの計算ノードからも、外部の計算機上のトラッキングサーバ、もしくは玄界のログインノード上のトラッキングサーバを指定して実験内容を記録できます。

  • 外部のトラッキングサーバを利用

    MLflowのAPI、もしくは環境変数でトラッキングサーバのホスト名とポート番号を指定し、必要に応じてユーザ名、パスワードを入力すると、そのトラッキングサーバに実験内容が記録されます。

  • 玄界のログインノードのトラッキングサーバを利用

    トラッキングサーバを起動する際に指定したIPアドレスとポート番号を MLflowのAPI、もしくは環境変数で指定すると、ログインノード上のトラッキングサーバに実験内容が記録されます。

もしトラッキングサーバの接続情報を対話的に入力する必要がある場合は、対話型ジョブを利用してください。なお、計算ノード上でJupyter Notebookを起動して遠隔利用する場合は以下を参照してください。


実験内容の参照

ブラウザからトラッキングサーバに接続すると、記録された実験内容を参照できます。外部のトラッキングサーバに記録された実験内容を参照する場合は、そのURIをブラウザで直接開いてください。

一方、玄界のログインノード上のトラッキングサーバに記録された実験内容を参照する場合、SSHポートフォワーディング機能による接続が必要となります。その場合の設定内容は以下の通りです。

項目
ローカルコンピュータのポート番号 任意の番号(例えば8888)
SSHサーバ genkai.hpc.kyushu-u.ac.jp
SSHサーバのユーザ名 玄界のスーパーコンピュータアカウント名
SSHサーバのポート番号 20
遠隔サーバ トラッキングサーバを起動したホスト名(genkai0001またはgenkai0002)
遠隔サーバのポート番号 トラッキングサーバ起動時に指定したポート番号

これにより、ローカルコンピュータのブラウザで http://localhost:ローカルコンピュータのポート番号を開くと、玄界のログインノード上のトラッキングサーバに接続して実験内容を参照することができます。

参考資料