

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 機械学習フレームワークと言語
<a name="frameworks"></a>

Amazon SageMaker AI は、一般的なプログラミング言語と機械学習フレームワークのネイティブサポートを提供し、デベロッパーとデータサイエンティストが希望するツールとテクノロジーを活用できるようにします。このセクションでは、SageMaker AI 内での Python と R の操作に関するリファレンスと、それぞれのソフトウェア開発キット (SDK) を操作するためのリファレンスを提供します。さらに、Apache MXNet、PyTorch、TensorFlow など、幅広い機械学習フレームワークと深層学習フレームワークについても取り上げています。

Amazon SageMaker ノートブックのカーネルでは、Python と R をネイティブに使用できます。また、特定のフレームワークをサポートしているカーネルもあります。SageMaker AI の使用を開始する場合、一般的に、[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) が使用されます。ここでは、SageMaker AI でモデルのトレーニングやデプロイを行いやすいオープンソースの Python API やコンテナが用意されているだけでなく、いくつかの異なる機械学習フレームワークや深層学習フレームワークで使用できるサンプルが用意されています。

SageMaker AI での特定のフレームワークの利用や R の使用方法については、次のトピックを参照してください。

言語の SDK とユーザーガイド:
+ [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)
+ [R](r-guide.md)
+ [API リファレンス](api-and-sdk-reference.md)

機械学習フレームワークと深層学習フレームワークのガイド:
+ [Apache MXNet](mxnet.md)
+ [Apache Spark](apache-spark.md)
+ [Chainer](chainer.md)
+ [Hugging Face](hugging-face.md)
+ [PyTorch](pytorch.md)
+ [Scikit-learn](sklearn.md)
+ [SparkML Serving](sparkml-serving.md)
+ [TensorFlow](tf.md)
+ [Triton Inference Server](triton.md)

# Amazon SageMaker AI で Apache MXNet を使用するためのリソース
<a name="mxnet"></a>

[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) の MXNet 推定ツールとモデル、および SageMaker AI のオープンソースの MXNet コンテナを使うと、SageMaker AI での MXNet スクリプトの記述や実行がより簡単になります。次のセクションでは、SageMaker AI を使用してカスタム MXNet コードでモデルをトレーニングしてデプロイする方法を学ぶために使用できるリファレンス資料を提供します。

## 何をしたいですか?
<a name="mxnet-intent"></a>

SageMaker AI で、カスタム MXNet モデルをトレーニングしたい。  
ドキュメントについては、「[MXNet によるモデルのトレーニング](https://sagemaker.readthedocs.io/en/stable/using_mxnet.html#train-a-model-with-mxnet)」を参照してください。

SageMaker AI でトレーニングした MXNet モデルがあり、それをホスト済みのエンドポイントにデプロイしたい。  
詳細については、「[MXNet モデルをデプロイする](https://sagemaker.readthedocs.io/en/stable/using_mxnet.html#deploy-mxnet-models)」を参照してください。

SageMaker AI の外部でトレーニングした MXNet モデルがあり、それを SageMaker AI エンドポイントにデプロイしたい。  
詳細については、「[モデルデータからエンドポイントをデプロイする](https://sagemaker.readthedocs.io/en/stable/using_mxnet.html#deploy-endpoints-from-model-data)」を参照してください。

[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) の MXNet クラスの API ドキュメントを見たい。  
詳細については、「[MXNet クラス](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/sagemaker.mxnet.html)」を参照してください。

SageMaker AI MXNet コンテナリポジトリを見つけたい。  
詳細については「[SageMaker AI MXNet コンテナ GitHub リポジトリ](https://github.com/aws/sagemaker-mxnet-container)」を参照してください。

 AWS Deep Learning Containers でサポートされている MXNet バージョンに関する情報を探します。  
詳細については、「[使用可能な Deep Learning Containers イメージ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)」を参照してください。

 SageMaker AI での MXNet スクリプトモードのトレーニングスクリプトの記述や、MXNet スクリプトモードの推定ツールとモデルの使用に関する一般情報については、「[SageMaker Python SDK で MXNet を使う](https://sagemaker.readthedocs.io/en/stable/using_mxnet.html)」を参照してください。

# Amazon SageMaker AI での Apache Spark
<a name="apache-spark"></a>

Amazon SageMaker Spark は、SageMaker AI を使用して Spark 機械学習 (ML) パイプラインを構築するのに役立つオープンソースの Spark ライブラリです。これにより、モデルのトレーニングやホスティングなど、SparkML ステージと SageMaker AI ステージの統合が簡素化されます。SageMaker AI Spark の詳細については、「[SageMaker AI Spark](https://github.com/aws/sagemaker-spark)」の GitHub リポジトリを参照してください。以下のトピックでは、SageMaker AI で Apache Spark を使用する方法について説明します。

SageMaker AI Spark ライブラリは Python と Scala で利用できます。SageMaker AI Spark を使用して、Spark クラスター内の `org.apache.spark.sql.DataFrame` データフレームを使用して SageMaker AI でモデルをトレーニングできます。モデルトレーニング後に、SageMaker AI ホスティングサービスを使ってモデルをホストすることもできます。

SageMaker AI Spark ライブラリ `com.amazonaws.services.sagemaker.sparksdk` には、特に次のようなクラスが用意されています。
+ `SageMakerEstimator` - `org.apache.spark.ml.Estimator` インターフェイスを拡張します。この推定ツールは、SageMaker AI でのモデルトレーニングに使用できます。
+ `KMeansSageMakerEstimator`、`PCASageMakerEstimator`、`XGBoostSageMakerEstimator` - `SageMakerEstimator` クラスを拡張します。
+ `SageMakerModel` - `org.apache.spark.ml.Model` クラスを拡張します。この `SageMakerModel` は、SageMaker AI でのモデルのホスティングと推論に使用できます。

Python Spark (PySpark) と Scala ライブラリのソースコードはともに、[SageMaker AI Spark](https://github.com/aws/sagemaker-spark) GitHub リポジトリからダウンロードできます。

SageMaker AI Spark ライブラリのインストールと例については、「[SageMaker AI Spark for Scala の例](apache-spark-example1.md)」または「[SageMaker AI Spark for Python (PySpark) を使用するためのリソースの例](apache-spark-additional-examples.md)」を参照してください。

で Amazon EMR を使用して Spark クラスターを管理する場合は、 AWS [「Apache Spark](https://aws.amazon.com/emr/features/spark/)」を参照してください。SageMaker AI での Amazon EMR の使用の詳細については、「[Amazon EMR を使用したデータ準備](studio-notebooks-emr-cluster.md)」を参照してください。

**Topics**
+ [Apache Spark アプリケーションを SageMaker AI と統合する](#spark-sdk-common-process)
+ [SageMaker AI Spark for Scala の例](apache-spark-example1.md)
+ [SageMaker AI Spark for Python (PySpark) を使用するためのリソースの例](apache-spark-additional-examples.md)

## Apache Spark アプリケーションを SageMaker AI と統合する
<a name="spark-sdk-common-process"></a>

Apache Spark アプリケーションを SageMaker AI と統合するステップの概要を次に示します。

1. 使い慣れている Apache Spark ライブラリを使用してデータの事前処理を続行します。データセットは Spark クラスター内で `DataFrame` のまま残ります。データを `DataFrame` にロードします。`org.apache.spark.ml.linalg.Vector` が `Doubles` の `features` 列とオプションの `label` 列が `Double`​ 型の値を持つように、前処理を行います。

1. SageMaker AI Spark ライブラリ内で推定ツールを使ってモデルのトレーニングを行います。例えば、モデルトレーニングに SageMaker AI 提供の k-means アルゴリズムを選択した場合、`KMeansSageMakerEstimator.fit` メソッドを呼び出します。

   `DataFrame` を入力として指定します。推定器は `SageMakerModel` オブジェクトを返します。
**注記**  
`SageMakerModel` は `org.apache.spark.ml.Model` を拡張します。

   `fit` メソッドは、次のような処理を実行します。

   1. 入力 `DataFrame` を protobuf 形式に変換します。これは、入力 `DataFrame` から `features` と `label` 列を選択することで実行できます。次に、protobuf データを Amazon S3 バケットにアップロードします。protobuf 形式は、SageMaker AI でのモデルトレーニングに効率的です。

   1. SageMaker AI に [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) リクエストを送信することで、SageMaker AI でのモデルトレーニングを開始します。モデルトレーニングが完了すると、SageMaker AI はモデルのアーティファクトを S3 バケットに保存します。

      SageMaker AI は、モデルトレーニングのために指定されている IAM ロールを継承し、代理としてタスクを実行します。例えば、このロールを使用して、S3 バケットからトレーニングデータを読み取り、モデルアーティファクトをバケットに書き込みます。

   1. `SageMakerModel` オブジェクトを作成して返します。モデルを SageMaker AI にデプロイすることに関連して、コンストラクターは次のタスクを実行します。

      1. SageMaker AI に [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) リクエストを送信します。

      1. SageMaker AI に [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) リクエストを送信します。

      1. SageMaker AI に [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) リクエストを送信します。これにより、SageMaker AI は指定されたリソースを起動し、そのリソース上でモデルをホストします。

1. `SageMakerModel.transform` を使って、SageMaker AI でホストされているモデルから推論を取得できます。

   特徴が指定された入力 `DataFrame` を入力として指定します。`transform` メソッドがそれを推論が含まれる `DataFrame` メソッドに変換します。内部的には、`transform` メソッドは [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html) SageMaker API にリクエストを送信して推論を取得します。この `transform` メソッドは、推論を入力 `DataFrame` に追加します。

# SageMaker AI Spark for Scala の例
<a name="apache-spark-example1"></a>

Amazon SageMaker AI は、Apache Spark アプリケーションを SageMaker と統合するために使用できる Apache AI Spark ライブラリ ([SageMaker AI Spark](https://github.com/aws/sagemaker-spark/tree/master/sagemaker-spark-sdk)) を提供しています。このトピックでは、Scala を使用した SageMaker AI Spark の使用を開始するのに役立つ例を提供しています。SageMaker AI Apache Spark ライブラリの詳細については、「[Amazon SageMaker AI での Apache Spark](apache-spark.md)」を参照してください。

**Spark for Scala をダウンロードする**

Python Spark (PySpark) と Scala ライブラリのソースコードと例はともに、[SageMaker AI Spark](https://github.com/aws/sagemaker-spark) GitHub リポジトリからダウンロードできます。

SageMaker AI Spark ライブラリのインストール方法の詳細については、「[SageMaker Spark](https://github.com/aws/sagemaker-spark/tree/master/sagemaker-spark-sdk)」を参照してください。

SageMaker AI Spark SDK for Scala は Maven の一元化されたリポジトリで提供されています。プロジェクトに Spark ライブラリを追加するため、`pom.xml` ファイルに次の依存関係を追加します。
+  プロジェクトが Maven で構築されている場合は、pom.xml ファイルに以下を追加します。

  ```
  <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>sagemaker-spark_2.11</artifactId>
      <version>spark_2.2.0-1.0</version>
  </dependency>
  ```
+ プロジェクトが Spark 2.1 を基盤としている場合は、pom.xml ファイルに以下を追加します。

  ```
  <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>sagemaker-spark_2.11</artifactId>
      <version>spark_2.1.1-1.0</version>
  </dependency>
  ```

**Spark for Scala の例**

このセクションには、SageMaker AI が提供する Apache Spark Scala ライブラリを使用したサンプルコードが用意されており、Spark クラスター内で `DataFrame` を使って SageMaker AI でモデルをトレーニングできます。その後、[Apache Spark を使う Amazon SageMaker AI でのモデルトレーニングとホスティングにカスタムアルゴリズムを使用する](apache-spark-example1-cust-algo.md) の方法と、[Spark Pipeline で SageMakerEstimator を使用する](apache-spark-example1-extend-pipeline.md) の方法の例を提供しています。

また、このサンプルは SageMaker AI ホスティングサービスを使用して、結果のモデルアーティファクトをホストします。この例の詳細については、「[開始方法: SageMaker AI Spark SDK を使用した SageMaker AI での K-Means クラスタリング](https://github.com/aws/sagemaker-spark?tab=readme-ov-file#getting-started-k-means-clustering-on-sagemaker-with-sagemaker-spark-sdk)」を参照してください。具体的には、この例では次を実行します。
+ `KMeansSageMakerEstimator` を使用してデータに対してモデルの適合 (またはトレーニング) を行います。

  この例では SageMaker AI 提供の k-means アルゴリズムを使ってモデルをトレーニングするため、`KMeansSageMakerEstimator` を使います。モデルは (MNIST データセットの) 手書きの 1 桁の数字の画像を使用してトレーニングを行います。画像は入力 `DataFrame` として指定します。利用しやすいように、SageMaker AI はこのデータセットを Amazon S3 バケットで提供しています。

  レスポンスとして、推定器は `SageMakerModel` オブジェクトを返します。
+ トレーニング済みの `SageMakerModel` を使用して推論を取得する

  SageMaker AI でホストされているモデルから推論を取得するには、`SageMakerModel.transform` メソッドを呼び出します。入力として `DataFrame` を渡します。このメソッドは入力 `DataFrame` を、そのモデルから取得した推論が含まれる別の `DataFrame` に変換します。

  推論は、入力した指定の手書きの 1 桁の数字の画像が属するクラスターを特定します。詳細については、「[K-Means アルゴリズム](k-means.md)」を参照してください。

```
import org.apache.spark.sql.SparkSession
import com.amazonaws.services.sagemaker.sparksdk.IAMRole
import com.amazonaws.services.sagemaker.sparksdk.algorithms
import com.amazonaws.services.sagemaker.sparksdk.algorithms.KMeansSageMakerEstimator

val spark = SparkSession.builder.getOrCreate

// load mnist data as a dataframe from libsvm
val region = "us-east-1"
val trainingData = spark.read.format("libsvm")
  .option("numFeatures", "784")
  .load(s"s3://sagemaker-sample-data-$region/spark/mnist/train/")
val testData = spark.read.format("libsvm")
  .option("numFeatures", "784")
  .load(s"s3://sagemaker-sample-data-$region/spark/mnist/test/")

val roleArn = "arn:aws:iam::account-id:role/rolename"

val estimator = new KMeansSageMakerEstimator(
  sagemakerRole = IAMRole(roleArn),
  trainingInstanceType = "ml.p2.xlarge",
  trainingInstanceCount = 1,
  endpointInstanceType = "ml.c4.xlarge",
  endpointInitialInstanceCount = 1)
  .setK(10).setFeatureDim(784)

// train
val model = estimator.fit(trainingData)

val transformedData = model.transform(testData)
transformedData.show
```

このコード例では、以下を行います。
+ SageMaker AI 提供の S3 バケットから MNIST データセット (`awsai-sparksdk-dataset`) を Spark `DataFrame` (`mnistTrainingDataFrame`) にロードする。

  ```
  // Get a Spark session.
  
  val spark = SparkSession.builder.getOrCreate
  
  // load mnist data as a dataframe from libsvm
  val region = "us-east-1"
  val trainingData = spark.read.format("libsvm")
    .option("numFeatures", "784")
    .load(s"s3://sagemaker-sample-data-$region/spark/mnist/train/")
  val testData = spark.read.format("libsvm")
    .option("numFeatures", "784")
    .load(s"s3://sagemaker-sample-data-$region/spark/mnist/test/")
  
  val roleArn = "arn:aws:iam::account-id:role/rolename"
  trainingData.show()
  ```

  `show` メソッドは、データフレーム内の最初の 20 行のデータを表示します。

  ```
  +-----+--------------------+
  |label|            features|
  +-----+--------------------+
  |  5.0|(784,[152,153,154...|
  |  0.0|(784,[127,128,129...|
  |  4.0|(784,[160,161,162...|
  |  1.0|(784,[158,159,160...|
  |  9.0|(784,[208,209,210...|
  |  2.0|(784,[155,156,157...|
  |  1.0|(784,[124,125,126...|
  |  3.0|(784,[151,152,153...|
  |  1.0|(784,[152,153,154...|
  |  4.0|(784,[134,135,161...|
  |  3.0|(784,[123,124,125...|
  |  5.0|(784,[216,217,218...|
  |  3.0|(784,[143,144,145...|
  |  6.0|(784,[72,73,74,99...|
  |  1.0|(784,[151,152,153...|
  |  7.0|(784,[211,212,213...|
  |  2.0|(784,[151,152,153...|
  |  8.0|(784,[159,160,161...|
  |  6.0|(784,[100,101,102...|
  |  9.0|(784,[209,210,211...|
  +-----+--------------------+
  only showing top 20 rows
  ```

  各行の構成は次の通りです。
  + `label` 列は画像のラベルを特定します。例えば、手書きの数字の画像が 5 桁の場合、ラベルの値は 5 になります。
  + `features` 列には `org.apache.spark.ml.linalg.Vector` 値のベクトル (`Double`) が格納されます。これらは手書きの数字の 784 の特徴です (各手書きの数字は 28 x 28 ピクセルの画像で、784 の特徴があります)。
+ SageMaker AI 推定ツール (`KMeansSageMakerEstimator`) を作成する 

  この推定ツールの `fit` メソッドは、SageMaker AI 提供の k-means アルゴリズムを使用し、入力 `DataFrame` を使ってモデルをトレーニングします。レスポンスとして、推論の取得に使用できる `SageMakerModel` オブジェクトを返します。
**注記**  
`KMeansSageMakerEstimator` は SageMaker AI の `SageMakerEstimator` を拡張し、これが Apache Spark の `Estimator` を拡張します。

  ```
  val estimator = new KMeansSageMakerEstimator(
    sagemakerRole = IAMRole(roleArn),
    trainingInstanceType = "ml.p2.xlarge",
    trainingInstanceCount = 1,
    endpointInstanceType = "ml.c4.xlarge",
    endpointInitialInstanceCount = 1)
    .setK(10).setFeatureDim(784)
  ```

   

  コンストラクターのパラメータが、SageMaker AI でのモデルのトレーニングとデプロイに使用される情報を示します。
  + `trainingInstanceType` と `trainingInstanceCount` - モデルトレーニングに使用される ML コンピューティングインスタンスのタイプと数を指定します。
  + `endpointInstanceType` - SageMaker AI にモデルをホストする際に使用する ML コンピューティングインスタンスタイプを指定します。デフォルトでは、1 つの ML コンピューティングインスタンスが引き受けられます。
  + `endpointInitialInstanceCount` - SageMaker AI 内でモデルをホストするエンドポイントを最初にバックアップする ML コンピューティングインスタンスの数を指定します。
  + `sagemakerRole` - SageMaker AI はこの IAM ロールを継承し、代理でタスクを実行します。たとえば、モデルのトレーニングの場合、S3 からデータを読み取り、トレーニングの結果 (モデルアーティファクト) を S3 に書き込みます。
**注記**  
この例では暗黙的に SageMaker AI クライアントを作成します。このクライアントを作成するには、認証情報を指定する必要があります。API は、これらの認証情報を使って、SageMaker AI へのリクエストを認証します。例えば、認証情報を使って、トレーニングジョブ作成のリクエストや、SageMaker AI ホスティングサービスを使うモデルのデプロイのための API コールを認証します。
  + `KMeansSageMakerEstimator` オブジェクトが作成された後、モデルのトレーニングで使用される次のパラメータを設定します。
    + k-means アルゴリズムによってモデルのトレーニング中に作成される必要があるクラスターの数。0 ～ 9 のそれぞれの桁に 1 つ、合計で 10 のクラスターを指定します。
    + 各入力画像に 784 の特徴があることを特定します (各手書きの数字は 28 x 28 ピクセルの画像で、784 の特徴があります)。
+ 推定器の `fit` メソッドを呼び出す

  ```
  // train
  val model = estimator.fit(trainingData)
  ```

  入力 `DataFrame` をパラメータとして渡します。このモデルは、モデルのトレーニングと SageMaker AI へのデプロイの、すべての処理を行います。詳細については、[Apache Spark アプリケーションを SageMaker AI と統合する](apache-spark.md#spark-sdk-common-process) を参照してください。レスポンスで `SageMakerModel` オブジェクトを取得します。これは、SageMaker AI にデプロイされたモデルからの推論の取得に使うことができます。

  入力 `DataFrame` のみを指定します。モデルのトレーニングに使用される k-means アルゴリズムへのレジストリパスについては、`KMeansSageMakerEstimator` はすでに把握しているため、指定する必要はありません。
+ `SageMakerModel.transform` メソッドを呼び出し、SageMaker AI にデプロイされたモデルから推論を取得します。

  `transform` メソッドは入力として `DataFrame` を取り、それを変換し、そのモデルから取得した推論が含まれる別の `DataFrame` を返します。

  ```
  val transformedData = model.transform(testData)
  transformedData.show
  ```

  わかりやすいように、この例でモデルのトレーニングに使用した同じ `DataFrame` を `transform` の入力として使用します。`transform` メソッドは、次のような処理を実行します。
  + 入力 `DataFrame` 内の `features` 列を protobuf でシリアル化し、それを推論のために SageMaker AI エンドポイントに送信します。
  + プロトコルバッファーのレスポンスを、変換された `distance_to_cluster` 内の追加の 2 列 (`closest_cluster` と `DataFrame`) に逆シリアル化します。

  `show` メソッドは入力 `DataFrame` 内の最初の 20 行の推論を取得します。

  ```
  +-----+--------------------+-------------------+---------------+
  |label|            features|distance_to_cluster|closest_cluster|
  +-----+--------------------+-------------------+---------------+
  |  5.0|(784,[152,153,154...|  1767.897705078125|            4.0|
  |  0.0|(784,[127,128,129...|  1392.157470703125|            5.0|
  |  4.0|(784,[160,161,162...| 1671.5711669921875|            9.0|
  |  1.0|(784,[158,159,160...| 1182.6082763671875|            6.0|
  |  9.0|(784,[208,209,210...| 1390.4002685546875|            0.0|
  |  2.0|(784,[155,156,157...|  1713.988037109375|            1.0|
  |  1.0|(784,[124,125,126...| 1246.3016357421875|            2.0|
  |  3.0|(784,[151,152,153...|  1753.229248046875|            4.0|
  |  1.0|(784,[152,153,154...|  978.8394165039062|            2.0|
  |  4.0|(784,[134,135,161...|  1623.176513671875|            3.0|
  |  3.0|(784,[123,124,125...|  1533.863525390625|            4.0|
  |  5.0|(784,[216,217,218...|  1469.357177734375|            6.0|
  |  3.0|(784,[143,144,145...|  1736.765869140625|            4.0|
  |  6.0|(784,[72,73,74,99...|   1473.69384765625|            8.0|
  |  1.0|(784,[151,152,153...|    944.88720703125|            2.0|
  |  7.0|(784,[211,212,213...| 1285.9071044921875|            3.0|
  |  2.0|(784,[151,152,153...| 1635.0125732421875|            1.0|
  |  8.0|(784,[159,160,161...| 1436.3162841796875|            6.0|
  |  6.0|(784,[100,101,102...| 1499.7366943359375|            7.0|
  |  9.0|(784,[209,210,211...| 1364.6319580078125|            6.0|
  +-----+--------------------+-------------------+---------------+
  ```

  次のようにデータを解釈できます。
  + `label` が 5 の手書き数字は、クラスター 4 (`closest_cluster`) に属します。
  + `label` が 0 の手書き数字は、クラスター 5 に属します。
  + `label` が 4 の手書き数字は、クラスター 9 に属します。
  + `label` が 1 の手書き数字は、クラスター 6 に属します。

**Topics**
+ [Apache Spark を使う Amazon SageMaker AI でのモデルトレーニングとホスティングにカスタムアルゴリズムを使用する](apache-spark-example1-cust-algo.md)
+ [Spark Pipeline で SageMakerEstimator を使用する](apache-spark-example1-extend-pipeline.md)

# Apache Spark を使う Amazon SageMaker AI でのモデルトレーニングとホスティングにカスタムアルゴリズムを使用する
<a name="apache-spark-example1-cust-algo"></a>

[SageMaker AI Spark for Scala の例](apache-spark-example1.md)では、モデルのトレーニングに Amazon SageMaker AI が提供する k-means アルゴリズムを使用しているため、`kMeansSageMakerEstimator` を使用します。代わりに、モデルのトレーニングに独自のカスタムアルゴリズムを使用してもかまいません。Docker イメージが作成済みである場合、独自の `SageMakerEstimator` を作成でき、カスタムイメージの Amazon Elastic Container Registry パスを指定できます。

次のサンプルは、`SageMakerEstimator` から `KMeansSageMakerEstimator` を作成する方法を示しています。新しい推定器で、トレーニングや推論のコードイメージへの Docker レジストリパスを明示的に指定します。

```
import com.amazonaws.services.sagemaker.sparksdk.IAMRole
import com.amazonaws.services.sagemaker.sparksdk.SageMakerEstimator
import com.amazonaws.services.sagemaker.sparksdk.transformation.serializers.ProtobufRequestRowSerializer
import com.amazonaws.services.sagemaker.sparksdk.transformation.deserializers.KMeansProtobufResponseRowDeserializer

val estimator = new SageMakerEstimator(
  trainingImage =
    "811284229777.dkr.ecr.us-east-1.amazonaws.com/kmeans:1",
  modelImage =
    "811284229777.dkr.ecr.us-east-1.amazonaws.com/kmeans:1",
  requestRowSerializer = new ProtobufRequestRowSerializer(),
  responseRowDeserializer = new KMeansProtobufResponseRowDeserializer(),
  hyperParameters = Map("k" -> "10", "feature_dim" -> "784"),
  sagemakerRole = IAMRole(roleArn),
  trainingInstanceType = "ml.p2.xlarge",
  trainingInstanceCount = 1,
  endpointInstanceType = "ml.c4.xlarge",
  endpointInitialInstanceCount = 1,
  trainingSparkDataFormat = "sagemaker")
```

コード内の `SageMakerEstimator` コンストラクターのパラメータは次のとおりです。
+ `trainingImage` - カスタムコードが含まれるトレーニングイメージへの Docker レジストリパスを特定します。
+ `modelImage` - 推論コードが含まれるイメージへの Docker レジストリパスを特定します。
+ `requestRowSerializer` - `com.amazonaws.services.sagemaker.sparksdk.transformation.RequestRowSerializer` を実装します。

  このパラメータは入力 `DataFrame` 内の行をシリアル化して、推論のためにそれを SageMaker AI にホストされたモデルに送信します。
+ `responseRowDeserializer` - 次を実装します。

  `com.amazonaws.services.sagemaker.sparksdk.transformation.ResponseRowDeserializer`.

  このパラメータは、SageMaker AI にホストされたモデルからのレスポンスを逆シリアル化し、`DataFrame` に戻します。
+ `trainingSparkDataFormat` - トレーニングデータを `DataFrame` から S3 にアップロードするときに Spark が使うデータ形式を指定します。たとえば、protobuf 形式の場合は `"sagemaker"`、カンマ区切り値の場合は `"csv"`、LibSVM 形式の場合は `"libsvm"` と指定します。

独自の `RequestRowSerializer` と `ResponseRowDeserializer` を実装し、推論コードが対応しているデータ形式 (.libsvm、.csv など) から行を逆シリアル化できます。

# Spark Pipeline で SageMakerEstimator を使用する
<a name="apache-spark-example1-extend-pipeline"></a>

次の例に示すように、`org.apache.spark.ml.Estimator` 推定器と `org.apache.spark.ml.Model` モデル、および `SageMakerEstimator` 推定器と `SageMakerModel` モデルを `org.apache.spark.ml.Pipeline`パイプラインで使用できます。

```
import org.apache.spark.ml.Pipeline
import org.apache.spark.ml.feature.PCA
import org.apache.spark.sql.SparkSession
import com.amazonaws.services.sagemaker.sparksdk.IAMRole
import com.amazonaws.services.sagemaker.sparksdk.algorithms
import com.amazonaws.services.sagemaker.sparksdk.algorithms.KMeansSageMakerEstimator

val spark = SparkSession.builder.getOrCreate

// load mnist data as a dataframe from libsvm
val region = "us-east-1"
val trainingData = spark.read.format("libsvm")
  .option("numFeatures", "784")
  .load(s"s3://sagemaker-sample-data-$region/spark/mnist/train/")
val testData = spark.read.format("libsvm")
  .option("numFeatures", "784")
  .load(s"s3://sagemaker-sample-data-$region/spark/mnist/test/")

// substitute your SageMaker IAM role here
val roleArn = "arn:aws:iam::account-id:role/rolename"

val pcaEstimator = new PCA()
  .setInputCol("features")
  .setOutputCol("projectedFeatures")
  .setK(50)

val kMeansSageMakerEstimator = new KMeansSageMakerEstimator(
  sagemakerRole = IAMRole(integTestingRole),
  requestRowSerializer =
    new ProtobufRequestRowSerializer(featuresColumnName = "projectedFeatures"),
  trainingSparkDataFormatOptions = Map("featuresColumnName" -> "projectedFeatures"),
  trainingInstanceType = "ml.p2.xlarge",
  trainingInstanceCount = 1,
  endpointInstanceType = "ml.c4.xlarge",
  endpointInitialInstanceCount = 1)
  .setK(10).setFeatureDim(50)

val pipeline = new Pipeline().setStages(Array(pcaEstimator, kMeansSageMakerEstimator))

// train
val pipelineModel = pipeline.fit(trainingData)

val transformedData = pipelineModel.transform(testData)
transformedData.show()
```

`trainingSparkDataFormatOptions` パラメータは、モデルのトレーニングを行うために、"projectedFeatures" 列をプロトコルバッファーにシリアル化するように Spark を構成します。さらに、Spark はデフォルトで "label" 列をプロトコルバッファーにシリアル化します。

"projectedFeatures" 列を使用して推論を作成するため、その列名を `ProtobufRequestRowSerializer` に渡します。

次の例は変換された `DataFrame` を示します。

```
+-----+--------------------+--------------------+-------------------+---------------+
|label|            features|   projectedFeatures|distance_to_cluster|closest_cluster|
+-----+--------------------+--------------------+-------------------+---------------+
|  5.0|(784,[152,153,154...|[880.731433034386...|     1500.470703125|            0.0|
|  0.0|(784,[127,128,129...|[1768.51722024166...|      1142.18359375|            4.0|
|  4.0|(784,[160,161,162...|[704.949236329314...|  1386.246826171875|            9.0|
|  1.0|(784,[158,159,160...|[-42.328192193771...| 1277.0736083984375|            5.0|
|  9.0|(784,[208,209,210...|[374.043902028333...|   1211.00927734375|            3.0|
|  2.0|(784,[155,156,157...|[941.267714528850...|  1496.157958984375|            8.0|
|  1.0|(784,[124,125,126...|[30.2848596410594...| 1327.6766357421875|            5.0|
|  3.0|(784,[151,152,153...|[1270.14374062052...| 1570.7674560546875|            0.0|
|  1.0|(784,[152,153,154...|[-112.10792566485...|     1037.568359375|            5.0|
|  4.0|(784,[134,135,161...|[452.068280676606...| 1165.1236572265625|            3.0|
|  3.0|(784,[123,124,125...|[610.596447285397...|  1325.953369140625|            7.0|
|  5.0|(784,[216,217,218...|[142.959601818422...| 1353.4930419921875|            5.0|
|  3.0|(784,[143,144,145...|[1036.71862533658...| 1460.4315185546875|            7.0|
|  6.0|(784,[72,73,74,99...|[996.740157435754...| 1159.8631591796875|            2.0|
|  1.0|(784,[151,152,153...|[-107.26076167417...|   960.963623046875|            5.0|
|  7.0|(784,[211,212,213...|[619.771820430940...|   1245.13623046875|            6.0|
|  2.0|(784,[151,152,153...|[850.152101817161...|  1304.437744140625|            8.0|
|  8.0|(784,[159,160,161...|[370.041887230547...| 1192.4781494140625|            0.0|
|  6.0|(784,[100,101,102...|[546.674328209335...|    1277.0908203125|            2.0|
|  9.0|(784,[209,210,211...|[-29.259112927426...| 1245.8182373046875|            6.0|
+-----+--------------------+--------------------+-------------------+---------------+
```

# SageMaker AI Spark for Python (PySpark) を使用するためのリソースの例
<a name="apache-spark-additional-examples"></a>

Amazon SageMaker AI は、Apache Spark アプリケーションを SageMaker AI と統合するために使用できる Apache Spark Python ライブラリ ([SageMaker AI PySpark](https://github.com/aws/sagemaker-spark/tree/master/sagemaker-pyspark-sdk)) を提供しています。このトピックでは、PySpark の使用を開始するために役立つ例を提供しています。SageMaker AI Apache Spark ライブラリの詳細については、「[Amazon SageMaker AI での Apache Spark](apache-spark.md)」を参照してください。

**PySpark をダウンロードする**

Python Spark (PySpark) と Scala ライブラリのソースコードはともに、[SageMaker AI Spark](https://github.com/aws/sagemaker-spark) GitHub リポジトリからダウンロードできます。

SageMaker AI Spark ライブラリをインストールする手順については、以下のオプションを使用するか、「[SageMaker AI PySpark](https://github.com/aws/sagemaker-spark/tree/master/sagemaker-pyspark-sdk)」を参照してください。
+ pip を使用したインストール:

  ```
  pip install sagemaker_pyspark
  ```
+ ソースからインストールします。

  ```
  git clone git@github.com:aws/sagemaker-spark.git
  cd sagemaker-pyspark-sdk
  python setup.py install
  ```
+ `Sparkmagic (PySpark)` または `Sparkmagic (PySpark3)` カーネルを使用するノートブックインスタンスで新しいノートブックを作成し、リモートの Amazon EMR クラスターに接続することもできます。
**注記**  
Amazon EMR クラスターは、`AmazonSageMakerFullAccess` ポリシーがアタッチされた IAM ロールを使用して設定する必要があります。EMR クラスターのロールの設定については、Amazon EMR 管理ガイドの「[AWS サービスに Amazon EMR の許可の IAM ロールを設定する](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html)」を参照してください。

**PySpark の例**

SageMaker AI PySpark の使用例については、以下を参照してください。
+ ドキュメントの読み取りで [ Amazon SageMaker AI で Apache Spark を使用する](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-spark/index.html)
+ [SageMaker AI Spark](https://github.com/aws/sagemaker-spark) GitHub リポジトリ

# Amazon SageMaker AI で Chainer を使用するためのリソース
<a name="chainer"></a>

カスタム Chainer コードを使いながら、SageMaker AI を使用してモデルをトレーニング、デプロイできます。SageMaker AI Python SDK の Chainer 推定ツールとモデル、および SageMaker AI オープンソースの Chainer コンテナを使うと、SageMaker AI での Chainer スクリプトの作成と実行がより簡単になります。次のセクションでは、SageMaker AI で Chainer を使用する方法を学ぶために使用できるリファレンス資料を提供します。

## 何をしたいですか?
<a name="chainer-intent"></a>

SageMaker AI で、カスタム Chainer モデルをトレーニングしたい。  
サンプルの Jupyter ノートブックについては、Amazon SageMaker AI サンプル GitHub リポジトリにある [Chainer のサンプルノートブック](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/mxnet_mnist)を参照してください。  
ドキュメントについては、「[Chainer によるモデルのトレーニング](https://sagemaker.readthedocs.io/en/stable/using_chainer.html#train-a-model-with-chainer)」を参照してください。

SageMaker AI でトレーニングした Chainer モデルがあり、それをホスト済みのエンドポイントにデプロイしたい。  
詳細については、「[Chainer モデルをデプロイする](https://sagemaker.readthedocs.io/en/stable/using_chainer.html#deploy-chainer-models)」を参照してください。

SageMaker AI の外部でトレーニングした Chainer モデルがあり、それを SageMaker AI エンドポイントにデプロイしたい。  
詳細については、「[モデルデータからエンドポイントをデプロイする](https://sagemaker.readthedocs.io/en/stable/using_chainer.html#deploy-endpoints-from-model-data)」を参照してください。

[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) の Chainer クラスの API ドキュメントを見たい。  
詳細については、「[Chainer クラス](https://sagemaker.readthedocs.io/en/stable/sagemaker.chainer.html)」を参照してください。

SageMaker AI Chainer コンテナに関する情報を見つけたい。  
詳細については「[SageMaker AI Chainer コンテナ GitHub リポジトリ](https://github.com/aws/sagemaker-chainer-container)」を参照してください。

 サポートされている Chainer のバージョンと、SageMaker AI での Chainer トレーニングスクリプトの書き方と Chainer 推定ツールおよびモデルの使い方に関する一般的な情報については、「[SageMaker Python SDK で Chainer を使用する](https://sagemaker.readthedocs.io/en/stable/using_chainer.html)」を参照してください。

# Amazon SageMaker AI で Hugging Face を使用するためのリソース
<a name="hugging-face"></a>

Amazon SageMaker AI では、SageMaker AI で自然言語処理 (NLP) 向け Hugging Face モデルを使ってトレーニング、ファインチューニング、推論を実行できます。Hugging Face はトレーニングと推論の両方に使用できます。次のセクションでは、Hugging Face モデルに関する情報と、SageMaker AI で Hugging Face を使用する方法を学ぶために使用できるリファレンス資料を提供しています。

Hugging Face [AWS Deep Learning Containers](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/what-is-dlc.html) の開発を通してこの機能を利用できます。これらのコンテナには、Hugging Face Transformers、Tokenizers、データセットライブラリが含まれ、これらのリソースをトレーニングや推論のジョブに使用できます。使用可能な Deep Learning Containers イメージのリストについては、「[使用可能な Deep Learning Containers イメージ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)」を参照してください。これらの Deep Learning Containers イメージは保守されており、セキュリティパッチで定期的に更新されています。

SageMaker Python SDK で Hugging Face Deep Learning Containers をトレーニングに使うには、「[Hugging Face SageMaker AI 推定ツール](https://sagemaker.readthedocs.io/en/stable/frameworks/huggingface/index.html)」を参照してください。Hugging Face 推定ツールを使うと、Hugging Face モデルを他の SageMaker AI 推定ツールと同じように使用できます。ただし、SageMaker Python SDK の使用は任意です。 AWS CLI および を使用して、Hugging Face Deep Learning Containers の使用を調整することもできます AWS SDK for Python (Boto3)。

Hugging Face とその中で利用可能なモデルの詳細については、[Hugging Face のドキュメント](https://huggingface.co/)を参照してください。

## トレーニング
<a name="hugging-face-training"></a>

トレーニングを実行するには、Hugging Face で利用可能な数千ものモデルのいずれかを使用し、追加のトレーニングを行って特定のユースケースに合わせてファインチューニングできます。SageMaker AI では、標準のトレーニングを使用するか、[SageMaker AI データの分散トレーニングとモデルの並列トレーニング](https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-training.html)を活用できます。

カスタムコードを使用する他の SageMaker トレーニングジョブと同様に、メトリクス定義を SageMaker Python SDK に渡すことで、独自のメトリクスを取得できます。例については、「[Defining Training Metrics (SageMaker Python SDK)](https://docs.aws.amazon.com/sagemaker/latest/dg/training-metrics.html#define-train-metrics-sdk)」を参照してください。キャプチャしたメトリクスには、[CloudWatch](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html) を介して、また、[TrainingJobAnalytics](https://sagemaker.readthedocs.io/en/stable/api/training/analytics.html#sagemaker.analytics.TrainingJobAnalytics) メソッドを利用して pandas `DataFrame` としてアクセスできます。モデルのトレーニングとファインチューニングが完了したら、そのモデルを他のモデルと同様に使用して推論ジョブを実行できます。

### Hugging Face 推定ツールを使用してトレーニングを実行する方法
<a name="hugging-face-training-using"></a>

SageMaker AI Python SDK を使って、トレーニングジョブ用の Hugging Face 推定ツールを実装できます。SageMaker Python SDK は、SageMaker AI で機械学習モデルをトレーニングおよびデプロイするためのオープンソースライブラリです。Hugging Face 推定ツールの詳細については、[SageMaker AI Python SDK のドキュメント](https://sagemaker.readthedocs.io/en/stable/frameworks/huggingface/index.html)を参照してください。

SageMaker Python SDK を使うと、次の環境で Hugging Face 推定器を使って、トレーニングジョブを実行できます。
+ [Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html): Studio Classic は、機械学習 (ML) 向けの初の完全な統合開発環境 (IDE) です。Studio Classic は、以下を行ううえで必要なすべての ML 開発ステップを実行することができる、単一のウェブベースのビジュアルインターフェイスを提供します。
  + 準備
  + ビルド
  + トレーニングとチューニング
  + モデルのデプロイと管理

  Studio Classic で Jupyter Notebooks を使用する方法については、「[Amazon SageMaker Studio Classic ノートブックを使用する](notebooks.md)」を参照してください。
+ [SageMaker ノートブックインスタンス](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html): Amazon SageMaker ノートブックインスタンスは、Jupyter ノートブックアプリを実行する機械学習 (ML) コンピューティングインスタンスです。このアプリケーションでは、ノートブックインスタンスで Jupyter Notebooks を実行して次を実行できます。
  + データの準備と処理
  + モデルをトレーニングするためのコードの記述
  + SageMaker AI ホスティングにモデルをデプロイする
  + デバッガー、モデルモニタリング、ウェブベースの IDE などの SageMaker Studio 機能を使用しないモデルのテストと検証
+ ローカル: への接続があり AWS 、適切な SageMaker AI アクセス許可がある場合は、SageMaker Python SDK をローカルで使用できます。ローカルで使用する場合、 AWSの SageMaker AI で Hugging Face のリモートトレーニングと推論ジョブを起動できます。これは、ローカルマシンだけでなく、接続された SageMaker Python SDK と適切なアクセス許可を持つ他の AWS サービスでも機能します。

## 推論
<a name="hugging-face-inference"></a>

推論では、トレーニング済みの Hugging Face モデルまたは事前トレーニング済みの Hugging Face モデルのいずれかを使って、SageMaker AI に推論ジョブをデプロイできます。この組み合わせにおいて、トレーニング済みのモデルと事前トレーニング済みのモデルの両方を、SageMaker AI にデプロイするのに必要なコードは 1 行だけです。カスタムの推論コードを書かずに推論ジョブを実行することもできます。カスタムの推論コードを使うと、独自の Python スクリプトを提供することで、推論ロジックをカスタマイズできます。

### Hugging Face Deep Learning Containers を使って推論ジョブをデプロイする方法
<a name="hugging-face-inference-using"></a>

SageMaker AI での推論の実行にはオプションが 2 つあります。トレーニング済みのモデルを使った推論の実行、または事前トレーニング済み Hugging Face モデルのデプロイが可能です。
+ **トレーニング済みのモデルで推論を実行する**: 独自のトレーニング済みモデルで推論を実行する場合、以下の 2 つのオプションがあります。
  + SageMaker AI Hugging Face Deep Learning Containers で既存の Hugging Face モデルを使用してトレーニングしたモデルで推論を実行します。
  + 独自の既存の Hugging Face モデルを使用して、SageMaker AI でデプロイします。

  SageMaker AI Hugging Face Estimator でトレーニングしたモデルで推論を実行すると、トレーニングが完了したら直ちにモデルをデプロイできます。トレーニング済みのモデルを Amazon S3 バケットにアップロードして、後で推論を実行する際に取り込むこともできます。

  独自の既存の Hugging Face モデルを持ち込む場合は、トレーニング済みのモデルを Amazon S3 バケットにアップロードする必要があります。その後、「[Deploy your Hugging Face Transformers for inference example](https://github.com/huggingface/notebooks/blob/main/sagemaker/10_deploy_model_from_s3/deploy_transformer_model_from_s3.ipynb)」に記載されているとおり、推論を実行する際にそのバケットを取り込みます。
+ **事前トレーニング済みの Hugging Face モデルで推論を実行する**: 数千ある事前トレーニング済みの Hugging Face モデルの 1 つを使って、追加のトレーニングの必要なく推論ジョブを実行できます。「[Deploy pre-trained Hugging Face Transformers for inference example](https://github.com/huggingface/notebooks/blob/main/sagemaker/11_deploy_model_from_hf_hub/deploy_transformer_model_from_hf_hub.ipynb)」で概説されているとおり、推論を実行するには、[Hugging Face モデル](https://huggingface.co/models)のリストから事前トレーニング済みのモデルを選択します。

## 何をしたいですか?
<a name="hugging-face-do"></a>

Hugging Face ノートブックリポジトリの以下のノートブックは、さまざまなユースケースで Hugging Face Deep Learning Containers を SageMaker AI で使用する方法を提供しています。

PyTorch を使う SageMaker AI で、Hugging Face を使ってテキスト分類モデルをトレーニングし、デプロイしたい。  
サンプルの Jupyter ノートブックについては、「[PyTorch の入門用デモ](https://github.com/huggingface/notebooks/blob/main/sagemaker/01_getting_started_pytorch/sagemaker-notebook.ipynb)」を参照してください。

TensorFlow を使う SageMaker AI で、Hugging Face を使ってテキスト分類モデルをトレーニングし、デプロイしたい。  
サンプルの Jupyter ノートブックについては、「[TensorFlow の入門用サンプル](https://github.com/huggingface/notebooks/blob/main/sagemaker/02_getting_started_tensorflow/sagemaker-notebook.ipynb)」を参照してください。

Hugging Face と SageMaker AI Distributed を使って、データ並列処理を使った分散トレーニングを実行したい。  
サンプルの Jupyter ノートブックについては、「[分散トレーニングのサンプル](https://github.com/huggingface/notebooks/blob/main/sagemaker/03_distributed_training_data_parallelism/sagemaker-notebook.ipynb)」を参照してください。

Hugging Face と SageMaker AI Distributed を使って、モデル並列処理を使った分散トレーニングを実行したい。  
サンプルの Jupyter ノートブックについては、「[モデル並列処理のサンプル](https://github.com/huggingface/notebooks/blob/main/sagemaker/04_distributed_training_model_parallelism/sagemaker-notebook.ipynb)」を参照してください。

SageMaker AI でHugging Face を使ったモデルのトレーニングとデプロイにスポットインスタンスを使いたい。  
サンプルの Jupyter ノートブックについては、「[スポットインスタンスのサンプル](https://github.com/huggingface/notebooks/blob/main/sagemaker/05_spot_instances/sagemaker-notebook.ipynb)」を参照してください。

SageMaker AI で Hugging Face を使ってテキスト分類モデルをトレーニングするときに、カスタムメトリクスをキャプチャして SageMaker AI のチェックポイントを使用したい。  
サンプルの Jupyter ノートブックについては、「[カスタムメトリクスを使ったトレーニングのサンプル](https://github.com/huggingface/notebooks/blob/main/sagemaker/06_sagemaker_metrics/sagemaker-notebook.ipynb)」を参照してください。

SageMaker AI で Hugging Face を使って分散型 TensorFlow 質問応答モデルをトレーニングしたい。  
サンプルの Jupyter ノートブックについては、「[分散型 TensorFlow トレーニングのサンプル](https://github.com/huggingface/notebooks/blob/main/sagemaker/07_tensorflow_distributed_training_data_parallelism/sagemaker-notebook.ipynb)」を参照してください。

SageMaker AI で Hugging Face を使用して分散要約モデルをトレーニングしたい。  
サンプルの Jupyter ノートブックについては、「[分散型要約トレーニングのサンプル](https://github.com/huggingface/notebooks/blob/main/sagemaker/08_distributed_summarization_bart_t5/sagemaker-notebook.ipynb)」を参照してください。

SageMaker AI で Hugging Face を使ってイメージ分類モデルをトレーニングしたい。  
サンプルの Jupyter ノートブックについては、「[Vision Transformer トレーニングのサンプル](https://github.com/huggingface/notebooks/blob/main/sagemaker/09_image_classification_vision_transformer/sagemaker-notebook.ipynb)」を参照してください。

SageMaker AI に独自のトレーニング済み Hugging Face モデルをデプロイしたい。  
サンプルの Jupyter ノートブックについては、「[推論のために Hugging Face Transformers をデプロイする](https://github.com/huggingface/notebooks/blob/main/sagemaker/10_deploy_model_from_s3/deploy_transformer_model_from_s3.ipynb)」の例を参照してください。

SageMaker AI に事前トレーニング済みの Hugging Face モデルをデプロイしたい。  
サンプルの Jupyter ノートブックについては、「[推論のために、事前トレーニング済みの Hugging Face Transformers をデプロイする](https://github.com/huggingface/notebooks/blob/main/sagemaker/11_deploy_model_from_hf_hub/deploy_transformer_model_from_hf_hub.ipynb)」の例を参照してください。

# Amazon SageMaker AI で PyTorch を使用するためのリソース
<a name="pytorch"></a>

Amazon SageMaker AI を使うと、PyTorch のカスタムコードを使ってモデルをトレーニングしてデプロイできます。Amazon SageMaker AI Python SDK の PyTorch 推定ツールとモデル、および SageMaker AI のオープンソースの PyTorch コンテナを使うと、SageMaker AI での PyTorch スクリプトの記述や実行がより簡単になります。次のセクションでは、SageMaker AI で PyTorch を使用する方法を学ぶために使用できるリファレンス資料を提供します。

## 何をしたいですか?
<a name="pytorch-intent"></a>

SageMaker AI で、カスタム PyTorch モデルをトレーニングしたい。  
サンプルの Jupyter ノートブックについては、Amazon SageMaker AI サンプル GitHub リポジトリにある [PyTorch のサンプルノートブック](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/pytorch_mnist)を参照してください。  
ドキュメントについては、「[PyTorch によるモデルのトレーニング](https://sagemaker.readthedocs.io/en/stable/using_pytorch.html#train-a-model-with-pytorch)」を参照してください。

SageMaker AI でトレーニングした PyTorch モデルがあり、それをホスト済みのエンドポイントにデプロイしたい。  
詳細については、「[PyTorch モデルをデプロイする](https://sagemaker.readthedocs.io/en/stable/using_pytorch.html#deploy-pytorch-models)」を参照してください。

SageMaker AI の外部でトレーニングした PyTorch モデルがあり、それを SageMaker AI エンドポイントにデプロイしたい。  
詳細については、「[Deploy your own PyTorch model](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#bring-your-own-model)」を参照してください。

[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) の PyTorch クラスの API ドキュメントを見たい。  
詳細については、「[PyTorch クラス](https://sagemaker.readthedocs.io/en/stable/sagemaker.pytorch.html)」を参照してください。

SageMaker AI PyTorch コンテナリポジトリを見つけたい。  
詳細については「[SageMaker AI PyTorch コンテナ GitHub リポジトリ](https://github.com/aws/deep-learning-containers/tree/master/pytorch)」を参照してください。

 AWS Deep Learning Containers でサポートされている PyTorch バージョンに関する情報を探します。  
詳細については、「[使用可能な Deep Learning Containers イメージ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)」を参照してください。

 SageMaker AI での PyTorch スクリプトモードのトレーニングスクリプトの記述や、PyTorch スクリプトモードの推定ツールとモデルの使用に関する一般情報については、「[SageMaker Python SDK で PyTorch を使う](https://sagemaker.readthedocs.io/en/stable/using_pytorch.html)」を参照してください。

# Amazon SageMaker AI で R を使用するためのリソース
<a name="r-guide"></a>

このドキュメントでは、R ソフトウェア環境で Amazon SageMaker AI 機能を使用する方法を学ぶうえで役立つリソースを一覧表示しています。以下のセクションでは、SageMaker AI の組み込み R カーネルを紹介し、SageMaker AI で R の使用を開始する方法を説明して、ノートブックの例をいくつか紹介します。

この例は、初級、中級、上級の 3 つのレベルで構成されています。まず「[Amazon SageMaker AI で R の使用を開始する方法](https://sagemaker-examples.readthedocs.io/en/latest/r_examples/r_sagemaker_hello_world/r_sagemaker_hello_world.html)」から始め、その後 SageMaker AI での R を使用したエンドツーエンドの機械学習について説明します。最後に R スクリプトを使用した SageMaker 処理や、SageMaker AI への独自の R アルゴリズムの導入など、より高度なトピックで締めくくります。

独自のカスタム R イメージを Studio に持ち込む方法については、「[Amazon SageMaker Studio Classic でのカスタムイメージ](studio-byoi.md)」を参照してください。同様のブログ記事については、「[独自の R 環境を Amazon SageMaker Studio で使用する](https://aws.amazon.com/blogs/machine-learning/bringing-your-own-r-environment-to-amazon-sagemaker-studio/)」を参照してください。

**Topics**
+ [SageMaker AI での RStudio のサポート](#rstudio-for-r)
+ [SageMaker AI での R カーネル](#r-sagemaker-kernel-ni)
+ [サンプルノートブックの例](#r-sagemaker-example-notebooks)
+ [SageMaker AI で R の使用を開始する](r-sagemaker-get-started.md)

## SageMaker AI での RStudio のサポート
<a name="rstudio-for-r"></a>

Amazon SageMaker AI は、Amazon SageMaker AI ドメインに統合されたフルマネージド統合開発環境 (IDE) として RStudio をサポートしています。RStudio 統合を使用すると、ドメインで RStudio 環境を起動して、SageMaker AI リソースで RStudio ワークフローを実行できます。詳細については、「[RStudio on Amazon SageMaker AI](rstudio.md)」を参照してください。

## SageMaker AI での R カーネル
<a name="r-sagemaker-kernel-ni"></a>

SageMaker ノートブックインスタンスは、プリインストールされた R カーネルを使って R をサポートします。また、R カーネルには reticulate ライブラリ (R から Python へのインターフェイス) があるため、R スクリプト内から SageMaker AI Python SDK の機能を使用できます。
+ [reticulatelibrary](https://rstudio.github.io/reticulate/): [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) に R インターフェイスを提供します。reticulate パッケージは、R と Python オブジェクトの間で変換されます。

## サンプルノートブックの例
<a name="r-sagemaker-example-notebooks"></a>

**前提条件**
+ [SageMaker AI で R の使用を開始する](https://sagemaker-examples.readthedocs.io/en/latest/r_examples/r_sagemaker_hello_world/r_sagemaker_hello_world.html) – このサンプルノートブックでは、Amazon SageMaker AI の R カーネルを使用して R スクリプトを開発する方法を説明します。このノートブックでは、SageMaker AI の環境と許可を設定し、[UCI Machine Learning リポジトリ](https://archive.ics.uci.edu/datasets)から [Abalone データセット](https://archive.ics.uci.edu/ml/datasets/abalone)をダウンロードし、データの基本的な処理と視覚化を行い、データを CSV 形式で S3 に保存します。

**初級レベル**
+ [R カーネルを使用した SageMaker AI バッチ変換](https://sagemaker-examples.readthedocs.io/en/latest/r_examples/r_batch_transform/r_xgboost_batch_transform.html) – このサンプルノートブックでは、SageMaker AI の Transformer API と [XGBoost アルゴリズム](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html)を使用してバッチ変換ジョブを実行する方法を説明します。このノートブックでは Abalone データセットも使用します。

**中級レベル**
+ [R での XGBoost のハイパーパラメータ最適化](https://sagemaker-examples.readthedocs.io/en/latest/r_examples/r_xgboost_hpo_batch_transform/r_xgboost_hpo_batch_transform.html) – このサンプルノートブックでは、abalone データセットと XGBoost を使用した以前の初級ノートブックを拡張しています。[ハイパーパラメータの最適化](https://sagemaker.readthedocs.io/en/stable/tuner.html)を使ってモデルをチューニングする方法が説明されています。また、バッチ予測にバッチ変換を使う方法と、リアルタイム予測を行うモデルエンドポイントを作成する方法についても学習します。
+ [R を使用した Amazon SageMaker 処理](https://sagemaker-examples.readthedocs.io/en/latest/r_examples/r_in_sagemaker_processing/r_in_sagemaker_processing.html) – [SageMaker 処理](https://aws.amazon.com/blogs/aws/amazon-sagemaker-processing-fully-managed-data-processing-and-model-evaluation/)では、モデル評価ワークロードの前処理、後処理、実行を行うことができます。この例では、R スクリプトを作成して、処理ジョブをオーケストレーションする方法を示します。

**上級レベル**
+ [SageMaker AI で独自の R アルゴリズムをトレーニングしてデプロイする](https://sagemaker-examples.readthedocs.io/en/latest/r_examples/r_byo_r_algo_hpo/tune_r_bring_your_own.html) – 既に R アルゴリズムがある場合、チューニング、トレーニング、デプロイのために SageMaker AI に取り込めます。この例では、R オリジンのモデルでの推論のためにホストされたエンドポイントを使用するまで、カスタム R パッケージを使って SageMaker AI コンテナをカスタマイズする方法を、順を追って説明します。

# SageMaker AI で R の使用を開始する
<a name="r-sagemaker-get-started"></a>

このトピックでは、SageMaker AI で R ソフトウェア環境の使用を開始する方法について説明します。SageMaker AI での R の使用の詳細については、「[Amazon SageMaker AI で R を使用するためのリソース](r-guide.md)」を参照してください。

**SageMaker AI コンソールで R の使用を開始するには**

1. t2.medium インスタンスタイプとデフォルトのストレージサイズを使用して、[ノートブックインスタンスを作成](https://docs.aws.amazon.com/sagemaker/latest/dg/howitworks-create-ws.html)します。より高度なサンプルのためにインスタンスを引き続き使用する予定の場合、より高速なインスタンスとより多くのストレージを選択することも、後でより大きなインスタンスを作成することもできます。

1. ノートブックのステータスが **[実行中]** になるまで待ってから、**[Jupyter を開く]** をクリックします。  
![\[コンソールの [InService] ステータスと [Jupyter を開く] リンクの場所。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/An-R-User-Guide-to-SageMaker/An-R-User-Guide-to-SageMaker-1.png)

1. 利用可能な環境のリストの R カーネルを使用して、新しいノートブックを作成します。  
![\[使用可能な環境のリスト内の R カーネルの場所。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/An-R-User-Guide-to-SageMaker/An-R-User-Guide-to-SageMaker-2.png)

1. 新しいノートブックを作成すると、ノートブック環境の右上隅に R ロゴが表示され、そのロゴの下にカーネルとして R が表示されます。これは、SageMaker AI がこのノートブックの R カーネルを正常に起動したことを示します。  
![\[ノートブック環境の R ロゴと R カーネルの場所。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/An-R-User-Guide-to-SageMaker/An-R-User-Guide-to-SageMaker-3.png)

Jupyterノートブック内の場合、**[カーネル]** メニューを使用して、**[カーネルを変更]** オプションから **[R]** を選択することもできます。

![\[ノートブックカーネルを R に変更する場所。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/An-R-User-Guide-to-SageMaker/An-R-User-Guide-to-SageMaker-4.png)


# Amazon SageMaker AI で Scikit-learn を使用するためのリソース
<a name="sklearn"></a>

Amazon SageMaker AI を使うと、Scikit-learn のカスタムコードを使ってモデルをトレーニングしてデプロイできます。SageMaker AI Python SDK の Scikit-learn 推定ツールとモデル、および SageMaker AI オープンソースの Scikit-learn コンテナを使うと、SageMaker AI での Scikit-learn スクリプトの作成と実行がより簡単になります。次のセクションでは、SageMaker AI で Scikit-learn を使用する方法を学ぶために使用できるリファレンス資料を提供します。

**要件**

Scikit-learn 1.4 には次の依存関係があります。


| 依存関係 | 最小バージョン | 
| --- | --- | 
| Python | 3.10 | 
| NumPy | 2.1.0 | 
| SciPy | 1.15.3 | 
| joblib | 1.5.2 | 
| threadpoolctl | 3.6.0 | 

SageMaker AI Scikit-learn コンテナは次の Scikit-learn バージョンをサポートしています。


| サポートされている Scikit-Learn バージョン | Python の最小バージョン | 
| --- | --- | 
| 1.4-2 | 3.10 | 
| 1.2-1 | 3.8 | 
| 1.0-1 | 3.7 | 
| 0.23-1 | 3.6 | 
| 0.20.0 | 2.7、または 3.4 | 

SageMaker AI での Scikit-learn スクリプトモードのトレーニングスクリプトの記述や、Scikit-learn スクリプトモードの推定ツールとモデルの使用に関する一般情報については、「[SageMaker Python SDK で Scikit-learn を使う](https://sagemaker.readthedocs.io/en/stable/using_sklearn.html)」を参照してください。

## 何をしたいですか?
<a name="sklearn-intent"></a>

**注記**  
SageMaker AI Scikit-Learn サンプルノートブックを実行するには Matplotlib v2.2.3 以降が必要です。

SageMaker AI でのデータ処理、特徴量エンジニアリング、モデル評価のために Scikit-learn を使用したい。  
Jupyter ノートブックのサンプルについては、[https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker\$1processing/scikit\$1learn\$1data\$1processing\$1and\$1model\$1evaluation](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation) を参照してください。  
Scikit-learn モデルのトレーニングとデプロイに関するブログ記事については、「[Amazon SageMaker AI が Scikit-Learn のサポートを追加](https://aws.amazon.com/blogs/machine-learning/amazon-sagemaker-adds-scikit-learn-support/)」を参照してください。  
ドキュメントについては、[こちらのドキュメント](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_processing.html#data-pre-processing-and-model-evaluation-with-scikit-learn)を参照してください。

SageMaker AI で、カスタム Scikit-learn モデルをトレーニングしたい。  
サンプルの Jupyter ノートブックについては、[https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/scikit\$1learn\$1iris](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/scikit_learn_iris) を参照してください。  
ドキュメントについては、「[Scikit-learn によるモデルのトレーニング](https://sagemaker.readthedocs.io/en/stable/using_sklearn.html#train-a-model-with-sklearn)」を参照してください。

SageMaker AI でトレーニングした Scikit-learn モデルがあり、それをホスト済みのエンドポイントにデプロイしたい。  
詳細については、「[Scikit-learn モデルをデプロイする](https://sagemaker.readthedocs.io/en/stable/using_sklearn.html#deploy-sklearn-models)」を参照してください。

SageMaker AI の外部でトレーニングした Scikit-learn モデルがあり、それを SageMaker AI エンドポイントにデプロイしたい。  
詳細については、「[モデルデータからエンドポイントをデプロイする](https://sagemaker.readthedocs.io/en/stable/using_sklearn.html#deploy-endpoints-from-model-data)」を参照してください。

[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) の Scikit-learn クラスの API ドキュメントを見たい。  
詳細については、「[Scikit-learn クラス](https://sagemaker.readthedocs.io/en/stable/sagemaker.sklearn.html)」を参照してください。

SageMaker AI Scikit-learn コンテナに関する情報を見つけたい。  
詳細については、[SageMaker Scikit-learn コンテナの GitHub リポジトリ](https://github.com/aws/sagemaker-scikit-learn-container)を参照してください。

# Amazon SageMaker AI で SparkML Serving を使用するためのリソース
<a name="sparkml-serving"></a>

[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) の SparkML Serving モデルと予測子と、Amazon SageMaker のオープンソース SparkML Serving コンテナは、推論を取得するための、SageMaker AI で MLeap を使ってシリアル化された Apache Spark ML パイプラインのデプロイをサポートします。SageMaker AI で SparkML Serving を使用する方法の詳細については、以下のリソースを参照してください。

SparkML Serving コンテナを使って SageMaker AI にモデルをデプロイする方法については、[SageMaker SparkML コンテナの GitHub リポジトリ](https://github.com/aws/sagemaker-sparkml-serving-container)を参照してください。[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) の SparkML Serving モデルと予測子の詳細については、[SparkML Serving モデルと予測子の API のドキュメント](https://sagemaker.readthedocs.io/en/stable/sagemaker.sparkml.html)を参照してください。

# Amazon SageMaker AI で TensorFlow を使用するためのリソース
<a name="tf"></a>

Amazon SageMaker AI を使うと、カスタム TensorFlow コードを使ってモデルをトレーニングしてデプロイできます。SageMaker AI Python SDK TensorFlow 推定ツールとモデル、SageMaker AI オープンソース TensorFlow コンテナが役立ちます。次のリソースのリストを使用して、使用している TensorFlow のバージョンと実行したい内容に基づいて、詳細情報を見つけます。

## TensorFlow バージョン 1.11 以降を使用する
<a name="tf-script-mode"></a>

TensorFlow バージョン 1.11 以降に対して、[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) は、スクリプトモードのトレーニングスクリプトをサポートしています。

### 何をしたいですか?
<a name="tf-intent"></a>

SageMaker AI で、カスタム TensorFlow モデルをトレーニングしたい。  
サンプル Jupyter ノートブックについては、「[TensorFlow スクリプトモードのトレーニングとサービング](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-python-sdk/tensorflow_script_mode_training_and_serving/tensorflow_script_mode_training_and_serving.html)」を参照してください。  
ドキュメントについては、「[TensorFlow によるモデルのトレーニング](https://sagemaker.readthedocs.io/en/stable/using_tf.html#train-a-model-with-tensorflow)」を参照してください。

SageMaker AI でトレーニングした TensorFlow モデルがあり、それをホスト済みのエンドポイントにデプロイしたい。  
詳細については、「[TensorFlow Serving モデルをデプロイする](https://sagemaker.readthedocs.io/en/stable/using_tf.html#deploy-tensorflow-serving-models)」を参照してください。

SageMaker AI の外部でトレーニングした TensorFlow モデルがあり、それを SageMaker AI エンドポイントにデプロイしたい。  
詳細については、「[モデルアーティファクトから直接デプロイする](https://sagemaker.readthedocs.io/en/stable/using_tf.html#deploying-directly-from-model-artifacts)」を参照してください。

[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) の TensorFlow クラスの API ドキュメントを見たい。  
詳細については、「[TensorFlow 推定器](https://sagemaker.readthedocs.io/en/stable/sagemaker.tensorflow.html)」を参照してください。

SageMaker AI TensorFlow コンテナリポジトリを見つけたい。  
詳細については、[SageMaker TensorFlow コンテナの GitHub リポジトリ](https://github.com/aws/sagemaker-tensorflow-container)を参照してください。

 AWS Deep Learning Containers がサポートしている TensorFlow バージョンに関する情報を見つけたい。  
詳細については、「[使用可能な Deep Learning Containers イメージ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)」を参照してください。

 SageMaker AI での TensorFlow スクリプトモードのトレーニングスクリプトの記述や、TensorFlow スクリプトモードの推定ツールとモデルの使用に関する一般情報については、「[SageMaker Python SDK で TensorFlow を使う](https://sagemaker.readthedocs.io/en/stable/using_tf.html)」を参照してください。

## バージョン 1.11 以前の TensorFlow レガシーモードを使用する
<a name="tf-legacy-mode"></a>

[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) には、TensorFlow バージョン 1.11 以前をサポートするレガシーモードがあります。次の場合、レガシーモードの TensorFlow トレーニングスクリプトを使って、SageMaker AI で TensorFlow ジョブを実行します。
+ スクリプトモードに変換することを望まない既存のモードスクリプトがあります。
+ 1.11 以前の TensorFlow バージョンを使用します。

SageMaker AI Python SDK で使用するレガシーモードの TensorFlow スクリプトの作成方法については、「[TensorFlow SageMaker の推定ツールとモデル](https://github.com/aws/sagemaker-python-sdk/tree/v1.12.0/src/sagemaker/tensorflow#tensorflow-sagemaker-estimators-and-models)」を参照してください。

# Amazon SageMaker AI で Triton Inference Server を使用するためのリソース
<a name="triton"></a>

SageMaker AI では、NVIDIA Triton Inference Server を使用するカスタムコードを使ってモデルをデプロイできます。SageMaker AI で Triton Inference Server を使用する方法の詳細については、以下のリソースを参照してください。

 [Triton Inference Server コンテナ](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/what-is-dlc.html)の開発を通してこの機能を利用できます。これらのコンテナには、NVIDIA Triton Inference Server、一般的な ML フレームワークのサポート、SageMaker AI でのパフォーマンスを最適化できる便利な環境変数が含まれています。使用可能な Deep Learning Containers イメージの完全なリストについては、「[使用可能な Deep Learning Containers イメージ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)」を参照してください。Deep Learning Containers イメージは保守されており、セキュリティパッチで定期的に更新されています。

SageMaker Python SDK では、Triton Inference Server コンテナを SageMaker AI モデル内の他のコンテナと同じように使用できます。ただし、SageMaker Python SDK の使用は任意です。Triton 推論サーバーコンテナは、 AWS CLI および で使用できます AWS SDK for Python (Boto3)。

NVIDIA Triton Inference Server の詳細については、[Triton ドキュメント](https://docs.nvidia.com/deeplearning/triton-inference-server/#)を参照してください。

## 推論
<a name="triton-inference"></a>

**注記**  
Triton Python バックエンドは、共有メモリ (SHMEM) を使用してコードを Triton に接続します。SageMaker AI Inference はインスタンスメモリの最大半分を SHMEM として提供するため、メモリ容量の大きいインスタンスを使用して SHMEM サイズを増大できます。

推論では、トレーニング済みの Triton Inference Server モデルまたは事前トレーニング済みの Triton Inference Server モデルのいずれかを使って、SageMaker AI に推論ジョブをデプロイできます。

Triton Inference Server コンテナの主な機能は次のとおりです。
+ **複数フレームワークのサポート**: Triton は、すべての主要な機械学習フレームワークからのモデルのデプロイに使用できます。Triton は TensorFlow GraphDef、SavedModel、ONNX、PyTorch TorchScript、TensorRT、カスタムの Python/C\$1\$1 のモデル形式をサポートしています。
+ **モデルのパイプライン**: Triton のモデルアンサンブルは、事前/事後処理ロジックと、それらの間の入力および出力テンソルの接続を持つ、1 モデルからなるパイプラインを意味します。アンサンブルが 1 件の推論リクエストを受け取ると、パイプライン全体の実行がトリガーされます。
+ **モデルの同時実行**: 同じモデルの複数のインスタンスを、同じ GPU または複数の GPU で同時に実行できます。
+ **動的バッチ処理**: Triton には複数の組み込みスケジューリングアルゴリズムとバッチ処理アルゴリズムがあり、バッチ処理をサポートするモデルでは、個々の推論リクエストをまとめて、推論スループットを向上させます。これらのスケジューリングおよびバッチ処理の決定は、推論をリクエストするクライアントには透過的です。
+ **多様な CPU と GPU のサポート**: 柔軟性を最大化し、不均一なコンピューティング要件をサポートするために、モデルは CPU または GPU で実行できるようになっています。

## 何をしたいですか?
<a name="triton-do"></a>

SageMaker AI に独自のトレーニング済み PyTorch モデルをデプロイしたい。  
Jupyter Notebook の例については、[Triton 推論サーバーの例を使用した PyTorch Resnet50 モデルのデプロイ](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-triton/resnet50/triton_resnet50.ipynb)を参照してください。

SageMaker AI に独自のトレーニング済み Hugging Face モデルをデプロイしたい。  
Jupyter Notebook の例については、[Triton 推論サーバーの例を使用した PyTorch BERT モデルのデプロイ](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-triton/nlp_bert/triton_nlp_bert.ipynb)を参照してください。