Data Science Workshop (DSW) は、複数の開発環境が組み込まれたクラウドベースの AI 開発向け統合開発環境 (IDE) を提供します。Notebook や VSCode に慣れている方であれば、すぐにモデル開発を始めることができます。このトピックでは、MNIST 手書き認識タスクを例に、DSW でモデルを迅速に開発する方法を説明します。
MNIST 手書き認識タスクは、ディープラーニングにおける最も古典的な入門タスクの 1 つです。その目的は、10 種類の手書き数字 (0 から 9) を認識する機械学習モデルを構築することです。

前提条件
開始する前に、Alibaba Cloud アカウントを使用して PAI をアクティブ化し、ワークスペースを作成する必要があります。これを行うには、PAI コンソールにログインし、左上隅でリージョンを選択してから、必要な権限を付与してプロダクトをアクティブ化します。
課金情報
この例では、パブリックリソースを使用して DSW インスタンスと Elastic Algorithm Service (EAS) モデルサービスを作成します。これらのリソースは従量課金制で課金されます。課金ルールの詳細については、「DSW の課金」および「EAS の課金」をご参照ください。
DSW インスタンスの作成
DSW ページに移動します。
PAI コンソールにログインします。
ページの左上隅で、ターゲットリージョンを選択します。
左側のナビゲーションウィンドウで [Workspace] をクリックし、管理したいワークスペースの名前をクリックします。
左側のナビゲーションウィンドウで、 を選択します。次に、[Create Instance] をクリックします。

[Create Instance] ページで、次の主要なパラメーターを設定し、その他のパラメーターはデフォルト値を使用します。
[Resource Type]: [Public Resources] を選択します。このリソースタイプの課金方法は従量課金です。
[Instance Type]:
ecs.gn7i-c8g1.2xlargeを選択します。このインスタンスタイプの在庫が不足している場合は、別の GPU インスタンスタイプを選択できます。
[Image]: [Official Image] を選択し、次のイメージを検索して選択します:
modelscope:1.26.0-pytorch2.6.0-gpu-py311-cu124-ubuntu22.04。環境の問題を避けるため、このトピックで使用されているものと同じイメージを選択してください。
[Storage Path Mounting]: モデル開発プロセスのファイルを永続的に保存するために、このトピックでは Object Storage Service (OSS) を使用します。[OSS] をクリックし、
アイコンをクリックして [Bucket] を選択し、pai_testなどのフォルダを作成します。完全なパラメーター構成は次のとおりです。OSS をアクティブ化していない場合、または現在のリージョンで利用可能なバケットがない場合は、次の手順に従って OSS をアクティブ化し、バケットを作成します:
[Uri]:
oss://**********oss-cn-hangzhou-internal.aliyuncs.com/pai_test/。マウントパス:
/mnt/data/。
[OK] をクリックして DSW インスタンスを作成します。
インスタンスの起動に失敗した場合は、「インスタンスの起動とリリースに関する一般的な問題」をご参照ください。
DSW でのモデル開発
DSW インスタンスを開く
[Open] をクリックして、作成した DSW インスタンスの開発環境に移動します。

PAI-DSW インターフェイスは次の図のようになります:

モデル開発コードを記述します。このトピックでは、Notebook 開発環境を例として使用し、MNIST 手書き認識のトレーニングコードを提供します。mnist.ipynb をクリックしてコードをダウンロードします。次に、DSW ページの左上隅にある
アイコンをクリックして、コードファイルをアップロードします。
モデルトレーニングコードを実行します。
mnist.ipynbファイルを開き、トレーニングコードが含まれるセルを見つけて、
ボタンをクリックしてコードを実行します。コードは自動的に MNIST データセットを dataSetディレクトリにダウンロードし、トレーニング後に最適なチェックポイントをoutputディレクトリに保存します。トレーニングプロセスには約 10 分かかります。

トレーニング中、検証セットに対するモデルの精度が表示されます。この値は、未知のデータに対するモデルの汎化能力を表します。この例では、検証セットでの精度は 98% であり、モデルが良好に機能していることを示しています。次のステップに進むことができます。
TensorBoard で損失曲線を表示して、トレーニングの状態を理解します。次のセルを実行し、TensorBoard の URL:
http://localhost:6006/をクリックします。
TensorBoard では、トレーニングデータセットの損失を反映する train_loss 曲線と、検証セットの損失を反映する validation_loss 曲線を表示できます。

グラフを表示した後、セル内の
アイコンをクリックして TensorBoard を停止します。トレーニング済みのモデルを呼び出して、そのパフォーマンスをテストします。図に示されているセルを実行します。セルには 20 枚のテスト画像が表示され、それらの真のラベルとモデルの予測結果が出力されます。

出力例:

モデルファイルを OSS にコピーして永続的に保存します。このトピックの DSW インスタンスはパブリックリソースを使用して作成されており、そのファイルは無料ディスクに保存されます。インスタンスが 15 日以上停止したままである場合、ディスク上のコンテンツは削除されます。したがって、モデルファイルを OSS にコピーして永続的に保存する必要があります。これにより、後で PAI-EAS を使用してモデルをデプロイするのも容易になります。

OSS コンソールにログインしてファイルを表示します:

これでモデル開発は完了です。本番環境の他のアプリケーションでモデルを呼び出したい場合は、「EAS を使用してモデルをオンラインサービスとしてデプロイする」をご参照ください。
このトピックの DSW インスタンスはパブリックリソースを使用して作成され、従量課金制で課金されます。DSW インスタンスが不要になった場合は、さらなる課金を避けるために停止または削除してください。
EAS を使用したモデルのオンラインサービスとしてのデプロイ
モデルがトレーニングされると、EAS を使用して、オンライン推論サービスまたは AI Web アプリケーションとして迅速にデプロイできます。EAS は異種リソースをサポートし、自動スケーリング、ワンクリックストレステスト、カナリアリリース、リアルタイムモニタリングなどの機能を組み合わせて、高コンカレンシーシナリオで安定した継続的なサービスを低コストで保証します。
モデルサービスの Web インターフェイスを記述し、OSS にコピーします。Web インターフェイスのコードとコピーコマンドが提供されています。次のセルを実行して、これらの操作を実行できます。

(オプション) DSW で Web インターフェイスが起動できることを確認します。次のセルを実行して、不足しているサードパーティパッケージをインストールし、サービスを開始します。

コードを実行してサービスインターフェイスをテストします。ページの上部にある [WebIDE] をクリックします。左側で、
request_web.pyコードファイルをクリックします。次に、
アイコンをクリックしてコードを実行し、サービスインターフェイスにリクエストを送信します。
次の結果が返されます:
{"prediction": 7}説明DSW で実行されている Web サービスにインターネットから直接アクセスしたい場合は、DSW 用に Virtual Private Cloud (VPC)、NAT Gateway、および Elastic IP Address (EIP) を構成する必要があります。詳細については、「インスタンス内のサービスにインターネット経由でアクセスする」をご参照ください。
EAS を構成します。PAI コンソールで、左側のナビゲーションウィンドウで、[Elastic Algorithm Service (EAS)] > [Deploy Service] > [Custom Deployment] をクリックします。

次の主要なパラメーターを設定し、その他のパラメーターはデフォルト値を使用します:
デプロイメント方式:イメージベースのデプロイメント
[Image Configuration]: [Image Address] を選択します。DSW インスタンスに使用されているイメージの URL をコピーして貼り付けます。
このイメージの環境は、DSW を使用した際にこのトピックのモデルサービスコードを正しく実行できることが確認されています。したがって、未知のランタイム環境の問題を避けるために、デプロイには同じイメージを使用してください。

[Mount Storage]: モデルファイルとサービスインターフェイスコードは OSS にコピーされています。したがって、[OSS] をクリックし、対応する OSS パスを選択します。

[Command]: コマンドは DSW でのサービス起動コマンドと同じです。ただし、
web.pyは/mnt/data/にマウントされるため、web.pyのパスを適宜変更する必要があります。最終的なコマンドは次のようになります:python /mnt/data/web.py[Port]:
web.pyで使用されるポート、つまり9000を設定します。[Third-party Library Configuration]: DSW でのテスト中に、選択したイメージに bottle ライブラリが不足していることが判明しました。したがって、このライブラリをサードパーティライブラリの構成に追加する必要があります。

[Resource Type]: [Public Resources] を選択します。[Resource Specification] には、
ecs.gn7i-c8g1.2xlargeを選択します。[Configure A System Disk]: [Show More] をクリックし、Extra System Disk を 20 GB に設定します。
使用するイメージが大きいため、追加のシステムディスクを設定しないと、容量不足でサービスが起動できません。
[Deploy] をクリックしてサービスを作成します。作成プロセスには約 5 分かかります。ステータスが [Running] に変わると、サービスはデプロイされています。
呼び出し情報を表示します。モデルサービスの詳細ページで、[View Invocation Information] をクリックして、[Public Endpoint] と [Token] を取得します。

サービスを呼び出します。次のサービスリクエストコードを実行します。コード内の [Endpoint] と [Token] を、前のステップで取得した実際の情報に置き換えます。
import requests """ テスト画像の URL: ラベルは 7 http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_7_No_0.jpg ラベルは 2 http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_2_No_1.jpg ラベルは 1 http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_1_No_2.jpg ラベルは 0 http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_0_No_3.jpg ラベルは 4 http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_4_No_4.jpg ラベルは 5 http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_9_No_5.jpg """ image_url = 'http://aliyun-document-review.oss-cn-beijing.aliyuncs.com/dsw_files/mnist_label_7_No_0.jpg' # クライアントは画像をダウンロードしてバイナリデータを取得します。 img_response = requests.get(image_url, timeout=10) # ステータスコードに基づいてリクエストが成功したかどうかを自動的に確認します。 img_response.raise_for_status() img_bytes = img_response.content # ヘッダー情報。YOUR_TOKEN を実際のトークンに置き換えてください。 # 本番環境では、機密情報の漏洩を防ぐために、トークンを環境変数として設定することを推奨します。 # 環境変数の設定方法の詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/configure-the-alibaba-cloud-accesskey-environment-variable-on-linux-macos-and-windows-systems をご参照ください。 headers = {"Authorization": "YOUR_TOKEN"} # バイナリデータを POST リクエストの本文としてモデルサービスに送信します。 resp = requests.post('YOUR_ENDPOINT/predict_image', data=img_bytes, headers=headers) print(resp.json())次の結果が返されます:
{"prediction": 7}
このトピックの EAS サービスはパブリックリソースを使用して作成され、従量課金制で課金されます。サービスが不要になった場合は、さらなる課金を避けるために停止または削除してください。

関連ドキュメント
DSW インスタンスの起動失敗のトラブルシューティング方法の詳細については、「DSW インスタンスの作成」をご参照ください。
DSW の課金項目と課金方法の詳細については、「DSW の課金」をご参照ください。
DSW のコア機能の詳細については、「DSW の概要」をご参照ください。
DSW で実行されている Web サービスにインターネットから直接アクセスする方法の詳細については、「インスタンス内のサービスにインターネット経由でアクセスする」をご参照ください。
EAS のコア機能の詳細については、「EAS の概要」をご参照ください。
