データレイクコンピューティング DLC は、Spark エンジンを使用して機械学習リソースグループを作成する方法をサポートし、ユーザーがモデルトレーニングなどの機械学習シナリオを実行するのを支援します。
このドキュメントでは、提供されているデモデータセットとコードサンプルを使用して、Scikit-learnのフレームワークでモデルトレーニングを行う実践的な体験ができます。
説明:
リソースグループ:Spark標準エンジンの計算リソースの二次キュー分割で、リソースグループは親標準エンジンに属し、同じエンジン内のリソースグループは互いにリソースを共有します。
DLC Spark標準エンジンの計算ユニット(CU)は、必要に応じて複数のリソースグループに分割でき、各リソースグループが使用できるCU数の最小値と上限、起動/停止ポリシー、並列数、動的/静的パラメータなどを設定できます。これにより、マルチテナントや複数タスクなどの複雑なシナリオにおける計算リソースの分離とワークロードの効率的な管理が可能になります。異なるカテゴリのタスク間でのリソース分離を実現し、個々の大規模クエリがリソースを長期間占有するのを防ぎます。
現在、DLC機械学習リソースグループ、WeData Notebook探索、機械学習はすべてホワイトリスト機能です。利用する場合は、チケットを提出してDLCとWeDataチームに連絡し、機械学習リソースグループ、Notebook、MLFlowサービスの開通を申請してください。 アカウントと製品の開通
アカウントと製品の開通
DLCアカウントと製品の開通機能は、すべてTencent Cloudのメインアカウントによる開通が必要です。メインアカウントが完了すると、デフォルトでメインアカウント下のすべてのサブアカウントが利用可能になります。調整が必要な場合は、CAM機能を通じて調整できます。具体的な操作手順については、新規ユーザー開通フルプロセスを参照してください。 機能とMLflowサービスの開通はすべてメインアカウント単位で行われ、メインアカウントでの操作が完了すると、そのメインアカウント下のすべてのサブアカウントが利用可能になります。
お客様の地域情報、APPID、メインアカウントUIN、VPC ID、およびサブネットIDを提供する必要があります。VPCとサブネット情報は、MLflowサービスのネットワーク接続操作に使用されます。
説明:
製品内の複数の機能でネットワーク接続が必要なため、ネットワークの接続性を確保するために、今後の実行リソースグループの購入やNotebookワークスペースの作成などの操作は、すべてこの1つのVPCとサブネット内で行うことをお勧めします。
設定データアクセスポリシー
データアクセスポリシー(CAM role arn)は、データジョブの実行中にアクセスするデータソースおよびオブジェクトストレージCOS上のデータの安全性を確保するために、ユーザーがアクセス管理(CAM)でデータアクセス権限を設定するポリシーです。
データレイクコンピューティングDLCでデータジョブを設定する際は、データの安全性を確保するために、対応するデータアクセスポリシーを指定する必要があります。
DLCで計算リソースを購入する
製品サービスの開通が完了したら、まずデータレイクコンピューティングDLCで計算リソースを購入できます。機械学習機能を使用する場合は、購入するエンジンタイプが「標準エンジン-spark」、カーネルバージョンが「Standard-S 1.1」であることを確認してください。
2. 「リソースを作成」を選択します。
3. 標準エンジン-sparkを購入し、カーネルバージョンはStandard1.1を選択してください。
説明:
1. アカウントの購入には財務権限またはメインアカウントでの購入が必要です。
2. 課金モデルは、ビジネスシーンに応じて選択できます。
3. クラスタ仕様は64CU以上を選択することをお勧めします。
機械学習リソースグループを作成する
標準エンジンの購入が完了したら、エンジン管理ページに戻り、該当エンジンで機械学習リソースグループを作成する必要があります。その後、機械学習関連の機能を利用できます。 注意:
リソースグループの作成が完了すると、編集や変更はサポートされません。削除して再作成する方法で管理できます。
1. 操作内の「リソースグループ管理」をクリックしてください。
2. リソースグループページに入ったら、左上のリソースグループ作成ボタンをクリックします。
3. 機械学習リソースグループタイプを作成する。
説明:
データレイクコンピューティング DLC AI リソースグループは現在、Scikit-learn(1.6.0)、TensorFlow(2.18.0)、PyTorch(2.5.1)、Python(3)、Spark MLlib(3.5)フレームワークを使用した機械学習の実行をサポートしています。
業務シナリオ選択:機械学習。
フレームワークタイプ:実際の業務シナリオに応じて、適切なフレームワークを選択して作成できます。
当社が提供するデモを体験したい場合は、MLオープンソースフレームワークを選択し、イメージパッケージには「scikit-learn-v1.6.0」を選択してください。
リソース構成:必要に応じて選択できます。
設定が完了したら、確認をクリックしてリソースグループリストページに戻ります。数分後、リストページ上部の更新ボタンをクリックして確認できます。
機械学習データセットをCOSにアップロード
データレイクコンピューティング DLC と WeData を使用して機械学習を行う必要がある場合、現在はデータをクラウドにアップロードする方法でのみインタラクションがサポートされています。オブジェクトストレージを組み合わせて使用することをお勧めします。
説明:
現在、COSデータを直接sparkで読み取ることのみがサポートされています。
他のフレームワークの要件がある場合、現在の回避策は次のとおりです:まずデータをCOSにアップロードし、ローカルにダウンロードしてローカルファイルを生成した後、学習操作を行います。この回避策では、アップロードとダウンロードに時間がかかる場合があります。
この機能の最適化は現在開発サポート中です。
2. COSにログインし、ストレージバケットを選択して、このデータセットをアップロードします。 3. アップロードが完了したら、メタデータ管理に進み、データカタログを作成するか、既存のデータカタログを使用して外部テーブルをアップロードします。 4. DLC コンソールに移動し、メタデータ管理を選択して、データベースタブをクリックします。 5. データベースを作成し、名前を「database_testnotebook」とします。
6. 作成したデータベースに入り、外部テーブルを作成します。
注意:
アップロードする外部テーブルのデータベース名とテーブル名にご注意ください。Notebookではselectでデータベース名とテーブル名を呼び出します。
7. COSストレージバケットのパスを選択し、demoデータセットを見つけます。
8. データ形式をcsvに選択し、関連する設定を行います。
9. テーブル名を作成します:demo_test_sklearn。
10. 作成が完了したら、確認をクリックして戻ります。
CREATE TABLE database_testnotebook.demo_test_sklearn (
at STRING COMMENT 'from deserializer',
v STRING COMMENT 'from deserializer',
ap STRING COMMENT 'from deserializer',
rh STRING COMMENT 'from deserializer',
pe STRING COMMENT 'from deserializer')
USING csv
LOCATION 'cosn://your cos location'
WeData-Notebook機能でデモを実践してください
リソースグループとdemoデータセットの作成が完了したら、WeDataに移動してNotebookとMLflowを使用してモデルトレーニングの実践を行います。
WeDataプロジェクトを作成し、DLCエンジンを関連付けます
1. プロジェクトを作成するか、既存のプロジェクトを選択してください。詳細はプロジェクトリストを参照してください。 2. 「構成ストレージおよびコンピューティングエンジン」で必要なDLCエンジンを選択します。
実行リソースグループを購入し、プロジェクトに関連付けます
ノートブックタスクを編成スペースで定期的にスケジュールする必要がある場合は、スケジュールリソースグループを購入し、指定されたプロジェクトに関連付けてください。詳細はスケジュールリソースグループの設定をご参照ください。 操作手順:
1. 「実行リソースグループ > スケジューリングリソースグループ > 標準スケジューリングリソースグループ」に進み、作成をクリックします。
2. リソースグループ構成。
地域:スケジューリングリソースグループの所在地域は、ストレージおよびコンピューティングエンジンの所在地域と一致する必要があります。例えば、国際サイトのシンガポール地域でDLCエンジンを購入した場合、同じ地域のスケジューリングリソースグループを購入する必要があります。
VPCとサブネット:1.1のVPCとサブネットを直接選択することを推奨します。他のVPCとサブネットを選択する場合、選択したVPCとサブネットが1.1のVPCとサブネットとネットワーク接続可能であることを確認してください。
仕様:タスク量に応じて選択します。
3. 作成が完了したら、リソースグループリストの操作欄で「プロジェクトを関連付ける」をクリックし、このスケジュールリソースグループを使用したいプロジェクトに関連付けます。
Notebookワークスペースを作成
1. プロジェクトでデータガバナンス機能を選択し、Notebook機能をクリックして、既存のワークスペースを作成または使用します。
2. ワークスペースを作成する際には、標準sparkエンジン、standard1.1バージョンのエンジンを選択し、機械学習オプションとMLflowサービスにチェックを入れてください。
|
エンジン | 使用するNotebookタスクにアクセスするDLCエンジンを選択してください。 現在のプロジェクトのプロジェクト管理にバインドされているDLCエンジン。 |
DLCデータエンジン | 使用するNotebookタスクにアクセスするDLCデータエンジンを選択してください。 |
機械学習 | 選択したDLCデータエンジンに「機械学習」タイプのリソースグループが含まれている場合、このオプションが表示され、デフォルトで選択されます。 |
ネットワーク | 1.1のVPCとサブネットを直接選択することを推奨します。他のVPCとサブネットを選択する場合、選択したVPCとサブネットが1.1のVPCとサブネットとネットワーク接続可能であることを確認してください。 |
RoleArn | RoleArnはDLCエンジンがオブジェクトストレージCOSのデータにアクセスするためのポリシー(CAM role arn)です。詳細はデータアクセスポリシーの設定をご参照ください。 |
MLflowサービス | MLflowを使用して実験とモデルを管理します。デフォルトではチェックされていません。 チェックを入れると、NotebookタスクでMLflow関数を使用して作成した実験と機械学習が、1.1で展開されたMFlowサービスに報告され、後で機械学習 > 実験管理、モデル管理で確認できます。 |
Notebookファイルを作成
左側のリソースエクスプローラーでフォルダとNotebookファイルを作成できます。注意:Notebookファイルは(.ipynb)で終わる必要があります。リソースエクスプローラーには、3つのビッグデータシリーズチュートリアルが事前に組み込まれており、ユーザーはすぐに使用できます。
カーネル(kernel)を選択
1. カーネルを選択をクリックします。
2. ポップアップ表示されるドロップダウンオプションで「DLC リソースグループ」を選択します。
3. 次のレベルのオプションで、DLCデータエンジン内の作成したScikit-learnリソースグループを選択します。
Notebookファイルを実行する
1. 初期設定を確認します。
2. 実践チュートリアルの実行:公開データのアイリスデータセットを使用してデモンストレーションを行い、ロジスティック回帰モデルを用いて異なる種類の花を分類し、分類結果を可視化します。
注意:
モデルを実行する前に、必要なtencentcloud-dlc-connectorをインストールし、対応する設定を完了する必要があります。
!pip install tencentcloud-dlc-connector
!pip install --upgrade 'sqlalchemy<2.0'
!pip install --upgrade pandas==2.2.3
!pip install numpy
!pip install matplotlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
import tdlc_connector
from tdlc_connector import constants
import mlflow
mlflow.sklearn.autolog()
conn = tdlc_connector.connect(region="ap-***",
secret_id="*******",
secret_key="*******",
engine="your engine",
resource_group=None,
engine_type=constants.EngineType.AUTO,
result_style=constants.ResultStyles.LIST,
download=True
)
query = """
SELECT `sepal.length`, `sepal.width`,`petal.length`,`petal.width`,species FROM at_database_testnotebook.demo_test_sklearn
"""
iris = pd.read_sql(query, conn)
iris.head()
X = iris[['petal.length', 'petal.width']].values
category_map = {
'setosa': 0,
'versicolor': 1,
'virginica': 2
}
y= iris['species'].replace(category_map)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=1, stratify=y)
print('Labels count in y:', np.bincount(y))
print('Labels count in y_train:', np.bincount(y_train))
print('Labels count in y_test:', np.bincount(y_test))
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
X_combined_std = np.vstack((X_train_std, X_test_std))
y_combined = np.hstack((y_train, y_test))
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression(C=100.0, random_state=1, solver='lbfgs', multi_class='ovr')
lr.fit(X_train_std, y_train)
plot_decision_regions(X_combined_std, y_combined,
classifier=lr, test_idx=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.tight_layout()
plt.show()
y_pred = lr.predict(X_test_std)
print(accuracy_score(y_test, y_pred))
MLflowでトレーニング結果を確認し、モデルを登録します。
1. 機械学習機能を選択。
2. 実験記録を確認し、最適なトレーニング結果をモデルとして登録します。