Data Science Workshop (DSW) は、複数の組み込み環境を備えた、AI 開発向けのクラウドベースの IDE を提供します。ノートブックや VS Code に精通している場合は、すぐにモデル開発を開始できます。本トピックでは、MNIST 手書き数字認識タスクを使用して、DSW でモデルを開発する方法を紹介します。
MNIST 手書き数字認識タスクは、ディープラーニングにおける最も古典的な入門タスクの 1 つです。目標は、10 種類の手書き数字 (0 から 9) を認識する機械学習モデルを構築することです。

前提条件
Alibaba Cloud アカウントで PAI をアクティブ化し、ワークスペースを作成します。PAI コンソールにログインし、左上のコーナーでリージョンを選択し、プロンプトに従って権限を付与し、サービスをアクティブ化します。
課金
この例では、従量課金のパブリックリソースを使用して DSW インスタンスと Elastic Algorithm Service (EAS) モデルサービスを作成します。詳細な課金ルールについては、「DSW の課金」および「EAS の課金」をご参照ください。
DSW インスタンスの作成
DSW ページに移動します。
PAI コンソールにログインします。
ページ左上のコーナーで、対象のリージョンを選択します。
左側のナビゲーションウィンドウで、Workspaces をクリックし、使用するワークスペースの名前をクリックします。
左側のナビゲーションウィンドウで、 の順に選択し、Create an instance. をクリックします。

Configure Instance ページで、以下のパラメーターを設定し、残りのパラメーターはデフォルト値のままにします。
Resource Type: Public Resources を選択します。これは従量課金オプションです。
Instance Type:
ecs.gn7i-c8g1.2xlargeを選択します。このインスタンスタイプが在庫切れの場合は、別の GPU インスタンスタイプを選択できます。
Image config: Alibaba Cloud Image を選択し、その後、次のイメージを検索して選択します。
modelscope:1.26.0-pytorch2.6.0-gpu-py311-cu124-ubuntu22.04。環境の問題を避けるため、本トピックで指定されているものと同じイメージを使用してください。
Mount storage:モデル開発ファイルを永続的に保存するため、このチュートリアルでは Object Storage Service (OSS) を使用します。[OSS] をクリックし、
アイコンをクリックして [バケット] を選択し、pai_testなどのディレクトリを作成します。OSS をアクティブ化していない、または現在のリージョンにバケットがない場合は、次の手順で作成します:
URI:
oss://**********oss-cn-hangzhou-internal.aliyuncs.com/pai_test/Mount Path:
/mnt/data/
OK をクリックして DSW インスタンスを作成します。
インスタンスの起動に失敗した場合は、「DSW インスタンスの作成」をご参照ください。
DSW でのモデル開発
インスタンスリストページで、Open をクリックして新しいインスタンスの開発環境に入ります。次に、Launcher ページで [ノートブックの作成] をクリックします。

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

検証データセットで 98% の精度が得られた場合、モデルのパフォーマンスは良好であると判断し、次のステップに進むことができます。
TensorBoard で損失曲線を監視して、トレーニングの進捗を確認します。次のセルを実行し、TensorBoard の URL
http://localhost:6006/をクリックします。
TensorBoard では、トレーニングセットの損失を反映する train_loss 曲線と、検証データセットの損失を反映する validation_loss 曲線を確認できます。

チャートを確認した後、後続のセルを実行する前に、セル内の
アイコンをクリックして TensorBoard を停止してください。トレーニング済みのモデルを呼び出して、そのパフォーマンスをテストします。次の図に示すセルを実行します。これにより、20 個のテスト画像が表示され、それらの真のラベルとモデルの予測が出力されます。

出力例:

モデルファイルを Object Storage Service (OSS) にコピーして永続的に保存します。このチュートリアルの DSW インスタンスはパブリックリソースを使用して作成されており、そのファイルは一時的なクラウドディスクに保存されます。インスタンスが 15 日以上停止したままである場合、クラウドディスク上のコンテンツは削除されます。したがって、モデルファイルを OSS にコピーして永続的に保存する必要があります。これにより、Elastic Algorithm Service (EAS) を使用したモデルのデプロイも容易になります。

OSS コンソールにログインして、コピーされたファイルを確認します:

これでモデル開発は完了です。本番環境で他のアプリケーションからこのモデルを呼び出すには、「EAS を使用したモデルのオンラインサービスとしてのデプロイ」をご参照ください。
このチュートリアルの DSW インスタンスはパブリックリソースを使用して作成されており、従量課金制です。追加料金の発生を避けるため、不要になったインスタンスは停止または削除してください。
EAS を使用したモデルのデプロイ
Elastic Algorithm Service (EAS) を使用すると、トレーニング済みのモデルをオンライン推論サービスや AI Web アプリケーションとして迅速にデプロイできます。EAS は異種リソースをサポートし、自動スケーリング、ワンクリックストレステスト、カナリアリリース、リアルタイムモニタリングを統合して、高同時実行シナリオでのサービス安定性を低コストで確保します。
このチュートリアルでは、モデルサービスの Web API コードと、それを OSS にコピーするコマンドを提供しています。以下のセルを実行するだけです。

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

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

以下の主要なパラメーターを設定し、他のパラメーターはデフォルト設定のままにします:
Deployment Method: Image-based Deployment
Image Configuration:Image Address を選択し、DSW インスタンスに使用したイメージのアドレスをコピーして貼り付けます。
DSW でこのイメージ環境が本トピックのモデルサービスコードを実行できることを確認済みです。したがって、未知のランタイム問題を避けるために、デプロイには同じイメージを使用することを推奨します。

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

Command to Run:実行コマンドは DSW でのサービス起動コマンドと同じです。ただし、
web.pyは/mnt/data/にマウントされているため、web.pyのパスを適宜変更する必要があります。最終的な実行コマンドはpython /mnt/data/web.pyです。Port Number:
web.pyで使用されるポートを9000に設定します。Third-party Library Settings:DSW でのテストにより、選択したイメージに
bottleライブラリが不足していることが判明しました。そのため、サードパーティライブラリ設定でこのライブラリを追加する必要があります。
Resource Type:Public Resources を選択します。Instance Type には、
ecs.gn7i-c8g1.2xlargeを選択します。Configure a system disk:サイズを 20 GB に設定します。
イメージサイズが大きいため、起動失敗を防ぐために、より大きなシステムディスクが必要です。
Deploy をクリックしてサービスを作成します。作成プロセスには約 5 分かかります。ステータスが Running に変わると、デプロイは成功です。
呼び出し情報を表示します。サービス詳細ページで、View Endpoint Information をクリックして、Internet Endpoint と Token を取得します。

サービスを呼び出します。以下のサービスリクエストコードを実行します。コード内のプレースホルダー Internet 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 ラベルは 9 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_public_endpoint>/predict_image', data=img_bytes, headers=headers) print(resp.json())次の結果が返されます:
{"prediction": 7}
このチュートリアルの EAS サービスはパブリックリソースを使用して作成されており、従量課金制です。追加料金の発生を避けるため、不要になったサービスは停止または削除してください。

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