このチュートリアルでは、ユーザーがデータを共有することなく、さまざまなユーザーのデータで機械学習モデルをトレーニングすることを目的とした、統合学習の使用法を説明しています。 このステップは、UI と Tensorflow フレームワークを使用してロー・コード環境で実行します。
これは、UI 主導の統合学習エクスペリメントを実行するためのステップバイステップ・チュートリアルです。 API 駆動型アプローチのコード・サンプルについては、 統合学習の Tensorflow サンプルを参照してください。
このチュートリアルでは、 admin は統合学習エクスペリメントを開始するユーザーを指し、 party は、管理者によってエクスペリメントが開始された後にモデル結果を送信した 1 人以上のユーザーを指します。 このチュートリアルは、管理者と複数のパーティーが実行できますが、1 人のユーザーが管理者とパーティーの両方として完全なランスルーを実行することもできます。 より簡潔に説明するために、下記のチュートリアルでは、1 つのデータ・セットのみが 1 つのパーティーによって実行依頼されます。 管理者とパーティーについて詳しくは、 用語を参照してください。
このチュートリアルでは、以下のタスクを実行します:
チュートリアルをプレビューする
watsonx.aiStudio を使って Federated Learning の実験を作成する方法についての短いビデオチュートリアルをご覧ください。
このビデオは、本書の概念とタスクを学習するためのビジュアル・メソッドを提供します。
前提条件
確認するPythonバージョン
管理者と同じ Python バージョンを使用していることを確認してください。 別の Python バージョンを使用すると、互換性の問題が発生する可能性があります。 さまざまなフレームワークと互換性のある Python のバージョンについては、 フレームワークと Python バージョンの互換性を参照してください。
プロジェクトを開きます
既存の プロジェクト を使用するか、新規プロジェクトを作成します。 少なくとも管理者権限が必要です。
watsonx.aiRuntime サービスをプロジェクトに関連付けます。
- プロジェクトで、 「管理」>「サービス」&「統合」をクリックします。
- 「サービスの関連付け」をクリックします。
- リストから'watsonx.aiランタイムインスタンスを選択し、'アソシエイトをクリックします。インスタンスをセットアップするためにインスタンスを持っていない場合は、'新サービスをクリックします。
タスク 1: 管理者として Federated Learning を開始する
このプロジェクトでは、フェデレーテッドラーニング実験を作成します。TensorflowMNIST データ セットを使用するフレームワーク。
タスク1a:実験の詳細を定義する
プロジェクトで、資産プロジェクトのタブ。
クリック新しいアセット > 分散データでモデルをトレーニングするフェデレーテッド ラーニング実験アセットを作成します。
エクスペリメントの 「名前」 と、オプションで説明を入力します。
機械学習インスタンスの選択」で、関連するwatsonx.aiRuntime インスタンスを確認します。 関連するwatsonx.aiRuntime インスタンスが表示されない場合は、以下の手順に従ってください:
「 Machine Learning サービス・インスタンスの関連付け」をクリックします。
既存のインスタンスを選択して 「関連付け」をクリックするか、 新規サービスを作成します。
再ロード をクリックして、関連付けられたサービスを表示します。
次へ をクリックします。
タスク1b:実験を設定する
「構成」 ページで、 「ハードウェア仕様」を選択します。
のために機械学習フレームワーク、 選択するTensorflow2 。
選択する分類のためにモデルタイプ。
未トレーニング・モデルをダウンロードします。
統合学習エクスペリメントに戻り、 モデル仕様の下の 選択 をクリックしてください。
ダウンロードした
tf_mnist_model.zip
という名前のファイルを 「アップロード」 ファイル・ボックスにドラッグします。必要に応じて選択runtime-23.1-py3.10のためにソフトウェア仕様落ちる。
モデルの名前を入力してクリックします追加。
「フュージョン方式」の 「加重平均」 をクリックし、 「次へ」をクリックします。
タスク1c:ハイパーパラメータを定義する
デフォルトのハイパーパラメーターを受け入れるか、必要に応じて調整します。
完了したら、 次へをクリックしてください。
タスク1d:リモートトレーニングシステムを選択する
「新規システムの追加」をクリックします。
リモート トレーニング システムの名前を入力します。
「許可された ID」の下で、自分のパーティーであるユーザーを選択し、 「追加」をクリックします。 このチュートリアルでは、デモンストレーションの目的で架空のユーザーまたは自分自身を追加できます。
このユーザーは、共同作業者としてプロジェクトに追加する必要があります。編集者またはそれ以上の権限。 使用するリモート・パーティーごとにこのステップを繰り返して、さらにシステムを追加します。完了したら、 システムの追加をクリックしてください。
「リモート・トレーニング・システムの選択 (Select remote training systems)」 ページに戻り、システムが選択されていることを確認してから、 「次へ」をクリックします。
タスク1e:設定を確認する
設定を確認します。 クリック作成する。
状況を監視します。 統合学習エクスペリメントの開始時の状況は 保留中 です。 エクスペリメントでパーティーが接続する準備ができると、状況が セットアップ - リモート・システム待ちに変わります。 これには数分かかることがあります。
クリックセットアップ情報を表示パーティ構成と、リモート パーティで実行できるパーティ コネクタ スクリプトをダウンロードします。
作成した各リモートトレーニングシステムの横にあるダウンロード設定アイコン「」をクリックします。 パーティコネクタスクリプトを、マシン上のディレクトリに次の名前で保存します。
remote-test-system-configuration.py
。「完了」をクリックします。
進捗状況を確認する
次の画像は、「リモート システムを待機中」というステータスの実験を示しています。
タスク2: パーティとしてモデルをトレーニングする
モデルをトレーニングするには、データ セットをダウンロードし、Python スクリプトを編集して実行する必要があります。 モデルをパーティーとしてトレーニングするには、以下のステップを実行します。
タスク2a:データセットとスクリプトをダウンロードする
新しいローカルディレクトリを作成し、ダウンロードしたパーティコネクタスクリプトをタスクに移動します。 1e新しいディレクトリに。
ファイル名を右クリックしてデータハンドラmnist_keras_data_handler.pyをダウンロードし、名前を付けてリンク先を保存をクリックします。 パーティー・コネクター・スクリプトと同じディレクトリーに保存します。
データハンドラーのPythonスクリプトを編集して変更します
ibm_watson_machine_learning
にibm_watsonx_ai
。ファイルを保存します。
リソースハブからMNIST手書きデータセットをダウンロードしてください。 パーティコネクタスクリプト、データハンドラ、その他のファイルと同じディレクトリで、unzipコマンドを実行して解凍します。
unzip MNIST-pkl.zip
。
これでパーティーコネクタスクリプトが完成しました。mnist_keras_data_handler.py
、mnist-keras-test.pkl
そしてmnist-keras-train.pkl
同じディレクトリ内。
タスク2b: watsonx.aiランタイムのインストール
Windowsを使用している場合、またはLinux次のコマンドを実行します。
pip install 'ibm_watsonx_ai[fl-rt23.1-py3.10]'
MシリーズCPUとCondaを搭載したMac OSを使用している場合は、インストールスクリプトそして以下を実行します:
./install_fl_rt23.1_macos.sh <name for new conda environment>
タスク2c:パーティコネクタスクリプトを編集して実行する
パーティ コネクタ スクリプトは次のスクリプトのようになります。
from ibm_watsonx_ai import APIClient
wml_credentials = {
"url": "https://us-south.ml.cloud.ibm.com",
"apikey": "<API KEY>"
}
wml_client = APIClient(wml_credentials)
wml_client.set.default_project("XXX-XXX-XXX-XXX-XXX")
party_metadata = {
wml_client.remote_training_systems.ConfigurationMetaNames.DATA_HANDLER: {
# Supply the name of the data handler class and path to it.
# The info section may be used to pass information to the
# data handler.
# For example,
# "name": "MnistSklearnDataHandler",
# "path": "example.mnist_sklearn_data_handler",
# "info": {
# "train_file": pwd + "/mnist-keras-train.pkl",
# "test_file": pwd + "/mnist-keras-test.pkl"
# }
"name": "<data handler>",
"path": "<path to data handler>",
"info": {
"<information to pass to data handler>"
}
}
}
party = wml_client.remote_training_systems.create_party("XXX-XXX-XXX-XXX-XXX", party_metadata)
party.monitor_logs()
party.run(aggregator_id="XXX-XXX-XXX-XXX-XXX", asynchronous=False)
パーティコネクタファイルを編集し、remote-test-systm-configuration.py
、次の変更を加えます。
資格情報を入力します。リモート トレーニング システムで定義されたユーザーの API キーを貼り付けます。 API キーをお持ちでない場合は、IBM CloudAPI keys ページに移動し、Create API key をクリックしてフィールドに入力し、Create をクリックします。
の中にパーティーメタデータフィールドに、名前、パス、および情報を指定します。これは次の JSON テキストのようになります。
"name": "MnistTFDataHandler", "path": "mnist_keras_data_handler.py", "info": { "train_file": "mnist-keras-train.pkl", "test_file": "mnist-keras-test.pkl" }
パーティコネクタスクリプトを保存します。
パーティコネクタスクリプトを以下のいずれかで実行する。
python
またはpython3
インストールされているものによって異なります。python remote-test-system-configuration.py
UI から、統合学習エクスペリメントの状況をモニターできます。
進捗状況を確認する
次の画像は完了した実験を示しています。
タスク3: モデルを保存してオンラインで展開する
このセクションでは、トレーニングしたモデルを保存してデプロイする方法について説明します。
タスク3a:モデルを保存する
- 完了したFederated Learning実験で、集計を保存。
- 上の集約モデルをプロジェクトに保存する画面で、モデルの名前を入力します。 クリック作成する。
- モデルが作成されたという通知が表示されたら、クリックします。プロジェクトで見る。 通知を見逃した場合は、プロジェクト名をクリックしてアセット タブに戻り、モデル名をクリックして表示します。
タスク3b:モデルをスペースに昇格する
- モデルの詳細ページから、'配備スペースへのプロモーション' をクリックする。
- 選択してくださいターゲットスペースリストから選択するか、新しいデプロイメント スペースを作成します。
選択する新しいデプロイメントスペースを作成する。
デプロイメント スペースの名前を入力します。
ストレージ サービスを選択します。
機械学習サービスを選択します。
「作成」 をクリックします。
デプロイメント スペースが作成されたら、ウィンドウを閉じます。
- 「プロモート後にスペース内のモデルに移動」 オプションを選択します。
- プロモートをクリックします。
タスク3c:オンライン展開を作成して表示する
- モデルがデプロイメント・スペース内に表示されたら、 新規デプロイメントをクリックしてください。
- デプロイメント・タイプとして オンライン を選択してください。
- デプロイメントの名前を指定します。
- 「作成」 をクリックします。
- 展開ステータスが次のように変わるまで待ちます。展開済みをクリックし、デプロイメント名をクリックします。
- アプリケーションでこのデプロイメントを使用するためのエンドポイントとコード スニペットを表示します。
進捗状況を確認する
次の画像は展開を示しています。
次のステップ
カスタマイズされた独自の統合エクスペリメントを作成する準備ができたら、 統合学習エクスペリメントの作成の手順の概要を参照してください。
親トピック: 統合学習のチュートリアルとサンプル