Machine Learning Designerには、柔軟で視覚化された方法でモデルを構築およびデバッグするためのさまざまなモデルコンポーネントが用意されています。 このトピックでは、Machine Learning Designerでパイプラインを使用してモデルをビルドおよびデバッグする方法について説明します。 このトピックでは、心臓病予測モデルが使用されます。
前提条件
パイプラインが作成されます。 詳細については、「パイプラインの作成」をご参照ください。
Build a model
モデルは、複数のノード (コンポーネント) タスクで構成されます。 パイプラインを使用してノードタスクを調整し、ビジネス要件に基づいてモデルを構築できます。 モデルを構築する前に、モデルを分割してノードタスクを計画することを推奨します。 また、単純なタスクごとに1つのノードを使用することをお勧めします。 次のセクションでは、モデルを構築するプロセスについて説明します。
パイプラインの詳細ページで、左側のコンポーネントリストで目的のコンポーネントを見つけ、そのコンポーネントをキャンバスにドラッグします。
コンポーネントリストでは、次の図のCSVファイルの読み取りコンポーネントのように、Alinkコンポーネントに紫色のマークが付いています。 Alinkコンポーネントは、スタンドアロンユニットとして機能し、グループに集約できます。 グループのリソースを設定すると、実行効率とリソース使用率が向上します。 詳細については、「Alinkコンポーネント」をご参照ください。
ページの右側で、目的のノードをクリックし、コンポーネントパラメーターを設定します。
ノード間に線を引いて、ノード間の上流と下流の関係を形成できます。 このプロセスはパイプラインを作成します。
各ノードは、1つ以上の入力または出力ポートを有する。 コンポーネントのポートの上にポインターを移動して、ポートのデータ型を表示し、ポートのデータ型に基づいてコンポーネント間に線を引きます。
パイプラインを実行すると、パイプラインノードが順番に実行されます。 下流ノードは、すべての上流ノードが実行された後にのみ実行できます。
ほとんどの場合、モデルには次のモジュールが含まれます。
データの読み取り
データソースまたは宛先コンポーネントをパイプラインに追加して、MaxComputeテーブルまたはObject Storage Service (OSS) バケットからデータを読み取ります。 詳細については、「コンポーネント参照: データソースまたは宛先」をご参照ください。 この例では、MaxComputeデータがデータソースとして使用されます。
MaxComputeテーブルを作成し、テーブルにデータをインポートします。 詳細については、「MaxComputeテーブルの作成と管理」をご参照ください。
この例では、テストプロジェクトにheartdiseaseテーブルが作成され、テストデータがインポートされます。
-- Create a table. CREATE TABLE IF NOT EXISTS heartdisease( age STRING COMMENT 'The age of the patient. ', sex STRING COMMENT 'The gender of the patient. Valid values: female and male. ', The type of chest pain of the patient. Valid values: typical, atypical, non-anginal, and asymptomatic. ', trestbps STRING COMMENT 'The resting blood pressure level of the patient. ', chol STRING COMMENT 'The serum cholesterol level of the patient. ', fbs STRING COMMENT 'The fasting blood sugar level of the patient. If the fasting blood sugar level is greater than 120 mg/dl, the value is set to true. Otherwise, the value is set to false. ', restecg STRING COMMENT 'The resting electrocardiogram (ECG) result of the patient. Valid values: norm and hyp. ', thalach STRING COMMENT ‘The maximum number of heartbeats. ', exang STRING COMMENT ’Specifies whether the patient has exercise-induced angina. Valid values: true and false. ', oldpeak STRING COMMENT 'The ST depression that is induced by exercise relative to rest. ', slop STRING COMMENT 'The slope of the peak exercise ST segment. Valid values: down, flat, and up. ', ca STRING COMMENT 'The number of major vessels that are colored by using fluoroscopy. ', thal STRING COMMENT 'The type of defect of the patient. Valid values: norm, fix, and rev. ', `status` STRING COMMENT 'The presence of heart disease in the patient. Valid values: buff (healthy) and sick (unhealthy). ', style STRING); -- This is only an example. You can directly import public test data from PAI. INSERT INTO heartdisease select * from pai_online_project.heart_disease_prediction;
[テーブルの読み取り] コンポーネントを右側のキャンバスにドラッグして、MaxComputeテーブルからデータを読み取ります。
Read Table-1という名前のノードがキャンバスに自動的に生成されます。 名前の数字は、同じコンポーネントがキャンバスにドラッグされる順序に従います。
ノード設定ページで、ソーステーブルの名前を指定します。 詳細については、「読み取りテーブル」をご参照ください。
キャンバスで、[Read Table-1] コンポーネントをクリックします。 右側のノード設定ページで、[テーブル名] フィールドにMaxComputeテーブルの名前を指定します。 この例では、
heartdisease
と入力します。MaxComputeプロジェクト間でテーブルからデータを読み取るには、
プロジェクト名. テーブル名
形式でテーブル名を入力します。 例: test2.heartdiseaseとして。 プロジェクトの権限があることを確認してください。キャンバスの右側にある [フィールド情報] タブをクリックして、パブリックデータの列の詳細を表示します。
前処理データ
データを読み取った後、モデルのトレーニングまたは予測の入力要件を満たすためにデータの前処理が必要です。 Machine Learning Designerは、さまざまなデータ前処理および大規模モデルデータ前処理コンポーネントを提供します。
SQLスクリプトコンポーネントを使用して、機能の実装に使用するカスタムSQLスクリプトを準備することもできます。 次のスクリプトは、入力フィーチャのデータ型を変換する方法の例を示しています。
select age,
(case sex when 'male' then 1 else 0 end) as sex,
(case cp when 'angina' then 0 when 'notang' then 1 else 2 end) as cp,
trestbps,
chol,
(case fbs when 'true' then 1 else 0 end) as fbs,
(case restecg when 'norm' then 0 when 'abn' then 1 else 2 end) as restecg,
thalach,
(case exang when 'true' then 1 else 0 end) as exang,
oldpeak,
(case slop when 'up' then 0 when 'flat' then 1 else 2 end) as slop,
ca,
(case thal when 'norm' then 0 when 'fix' then 1 else 2 end) as thal,
(case status when 'sick' then 1 else 0 end) as ifHealth
from ${t1};
モデルのトレーニング
モデルコンポーネントは、上流で前処理されたデータを受け取り、下流で予測または推論コンポーネントなどのコンポーネントを接続します。 モデルコンポーネントは、1つまたは複数の入力ポートまたは出力ポートを有し得る。 コンポーネントのポートの上にポインターを移動して、ポートのデータ型を表示し、ポートのデータ型に基づいてコンポーネント間に線を引きます。
この例では、バイナリ分類のロジスティック回帰コンポーネントが使用されています。 このコンポーネントは、2つの出力ポートを有する。
ロジスティック回帰モデル: トレーニングされたモデルの出力ポートは、予測コンポーネントのモデル結果入力として使用できます。
PMML: モデル展開は、PMML (Predictive Model Markup Language) モデルに依存する。 たとえば、PMMLプロセッサなどの組み込みプロセッサを使用して生成されたモデルをデプロイする場合は、コンポーネントを実行する前に、モデルコンポーネントのパラメーター設定でPMMLを生成するかどうかを選択する必要があります。
複数のモデルを同時にトレーニングしたり、異なるパラメータを設定して同じモデルをトレーニングしたりすることもできます。 たとえば、E2E Development and Usage of LLM: Data Processing + Model Training + Model Inferenceのケースでは、qwen-7b-chatモデルとllama2-7b-chatモデルを同時に微調整し、同じテストデータを使用して2つのモデルによって生成された参照結果を比較できます。
モデル予測または推論の実行
モデルのトレーニング後、予測コンポーネントまたは推論コンポーネントを接続してモデルのパフォーマンスをテストできます。
この例では、予測成分が使用される。 予測コンポーネントは、2つの入力ポートを有する。
モデル結果入力: トレーニングされたモデルが入力として使用されます。
予測データ入力: 前処理されたテストデータが入力として使用されます。
モデルの評価
特定のモデルが評価コンポーネントを提供します。 対応する評価コンポーネントを使用して、関連するメトリックを使用してモデルのパフォーマンスを分析できます。
たとえば、Machine Learningには次の評価コンポーネントが用意されており、予測コンポーネントの下流コンポーネントとして使用できます。
モデルのデバッグ
デバッグ実行
パイプライン: キャンバスの左上隅にある
アイコンをクリックして、パイプラインを直接実行します。 パイプラインが複雑な場合は、デバッグを容易にするために、モジュールごとに1つ以上のノードを実行することをお勧めします。
単一または複数のコンポーネント: 目的のコンポーネントを右クリックして、1つ以上のコンポーネントを実行します。 複数の実行メソッドがサポートされています。
コンポーネントが期待どおりに実行されると、アイコンが表示されます。 コンポーネントの実行に失敗した場合、アイコンが
表示されます。 コンポーネントを右クリックして、ログと結果を表示できます。
ログと結果の表示
データの表示と分析の視覚化:
コンポーネントの実行後、コンポーネントを右クリックし、[データの表示] を選択して、生成されたデータを表示できます。
特定のコンポーネントについて、Machine Learning Designerを使用すると、データをグラフやグラフに変換して、複雑なデータや分析結果を直感的でわかりやすい方法で表示できます。 これにより、重要な情報をすばやく取得し、傾向とパターンを特定して、より効率的な分析と意思決定を行うことができます。 視覚化された方法でデータを分析するには、コンポーネントを右クリックして [Visual Analysis] を選択するか、キャンバスの上部にある視覚化アイコンをクリックします。 詳細については、「Visualized analysis」をご参照ください。
ログの表示: コンポーネントの実行に失敗した場合、コンポーネントを右クリックし、[ログの表示] を選択して障害のトラブルシューティングを行います。
実行中のタスクの表示
キャンバスの右上隅にある [すべてのタスクを表示] をクリックして、すべての履歴タスクの実行詳細を表示します。 各実行は、モデリング中に履歴タスクとして記録されます。 各履歴タスクは、実行に関与するノード、ノードの構成、および生成されたデータを記録します。
バージョンをロールバックする前に、履歴タスクの詳細を表示し、バージョンが正しいかどうかを確認することをお勧めします。 また、ロールバックを実行する前に、モデルパイプラインを保存して実行することをお勧めします。 これにより、最新のステータスを含むタスクレコードが生成されます。 ロールバック中に例外が発生した場合は、モデルパイプラインを最新のステータスにロールバックできます。
関連ドキュメント
モデルのデバッグ後、トレーニング済みモデルを新しいモデルとして登録し、モデルを管理できます。 詳細については、「モデルの登録と管理」をご参照ください。
モデルをデバッグした後、モデルをデプロイしてオンラインモデル予測を実行できます。 詳細については、「モデルの予測とデプロイ」をご参照ください。
モデルサービスをデプロイした後、Machine Learning Designerが提供するUpdate EAS service (ベータ) コンポーネントを使用して、モデルサービスを定期的に更新できます。 詳細については、「オンラインモデルサービスの定期更新」をご参照ください。
DataWorksでは、オフラインワークフローをスケジュールし、モデルを定期的に更新できます。 詳細については、「Machine Learning DesignerでのDataWorksタスクの使用によるパイプラインのスケジュール」をご参照ください。
その他のコンポーネントについては、「コンポーネントリファレンス: すべてのコンポーネントの概要」をご参照ください。
Machine Learning Designerの課金については、「Machine Learning Designerの課金」をご参照ください。