

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 机器学习框架和语言
<a name="frameworks"></a>

Amazon SageMaker AI 为流行的编程语言和机器学习框架提供原生支持，使开发人员和数据科学家能够利用他们首选的工具和技术。本节提供了在 SageMaker AI 中使用 Python 和 R 以及它们各自的软件开发套件 (SDKs) 的参考资料。此外，它还涵盖了广泛的机器学习和深度学习框架，包括 Apache MXNet、 PyTorch、 TensorFlow。

你可以在亚马逊 SageMaker 笔记本内核中原生使用 Python 和 R。还具有一些支持特定框架的内核。开始使用 SageMaker 人工智能的一种非常流行的方法是使用 A [maz SageMaker on Python 软件开发工具包](https://sagemaker.readthedocs.io/en/stable)。它提供了开源 Python APIs 和容器，便于在 SageMaker AI 中训练和部署模型，以及用于多种不同机器学习和深度学习框架的示例。

有关使用特定框架或如何在 SageMaker AI 中使用 R 的信息，请参阅以下主题。

语言 SDKs 和用户指南：
+ [亚马逊 SageMaker Python 开发工具包](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)

# 将 Apache MXNet 与 Amazon SageMaker AI 配合使用的资源
<a name="mxnet"></a>

[Amaz SageMaker on Python SDK](https://sagemaker.readthedocs.io/en/stable) MXNet 估算器和模型以及 SageMaker AI 开源 MXNet容器使编写 MXNet 脚本和在 A SageMaker I 中运行脚本变得更加容易。以下部分提供了参考资料，您可以用来学习如何使用 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 模型，我想将其部署到 A SageMaker I 端点  
有关更多信息，请参阅[从模型数据部署端点](https://sagemaker.readthedocs.io/en/stable/using_mxnet.html#deploy-endpoints-from-model-data)。

我想查看[亚马逊 SageMaker Python 软件开发工具包 MXNet类的](https://sagemaker.readthedocs.io/en/stable) 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)。

我想查找有关 Dee AWS p Learning Containers 支持的 MXNet 版本的信息。  
有关更多信息，请参阅[可用的深度学习容器映像](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)。

 有关编写 MXNet 脚本模式训练脚本以及在 SageMaker AI 中使用 MXNet脚本模式估计器和模型的一般信息，请参阅与 [Pyth SageMaker on SDK MXNet 配合使用](https://sagemaker.readthedocs.io/en/stable/using_mxnet.html)。

# Apache Spark 搭载亚马逊 A SageMaker I
<a name="apache-spark"></a>

Amazon SageMaker AI Spark 是一个开源 Spark 库，可帮助您使用 SageMaker 人工智能构建 Spark 机器学习 (ML) 管道。这简化了 Spark ML 阶段与 SageMaker AI 阶段（例如模型训练和托管）的集成。有关 SageMaker AI Spark 的信息，请参阅 [SageMaker AI Spark](https://github.com/aws/sagemaker-spark) GitHub 存储库。以下主题提供了学习如何在 SageMaker 人工智能中使用 Apache Spark 的信息。

 SageMaker AI Spark 库有 Python 和 Scala 版本。你可以使用 SageMaker AI Spark 在 Spark 集群中使用`org.apache.spark.sql.DataFrame`数据帧在 SageMaker AI 中训练模型。模型训练结束后，您还可以使用 SageMaker AI 托管服务托管模型。

A SageMaker I Spark 库提供了以下类等：`com.amazonaws.services.sagemaker.sparksdk`
+ `SageMakerEstimator` - 扩展 `org.apache.spark.ml.Estimator` 接口。您可以使用此估算器在 AI 中进行模型训练。 SageMaker 
+ `KMeansSageMakerEstimator`、`PCASageMakerEstimator` 和 `XGBoostSageMakerEstimator` - 扩展 `SageMakerEstimator` 类。
+ `SageMakerModel` - 扩展 `org.apache.spark.ml.Model` 类。你可以用它在 SageMaker AI 中托管模型和获取推论。`SageMakerModel`

你可以从 [SageMaker AI](https://github.com/aws/sagemaker-spark) Spark 存储库中下载 Python Spark (PySpark) 和 Scala GitHub 库的源代码。

有关 SageMaker AI Spark 库的安装和示例，请参阅[SageMaker 适用于 Scala 的人工智能 Spark](apache-spark-example1.md)或[使用 SageMaker AI Spark for Python 的资源 (PySpark) 示例](apache-spark-additional-examples.md)。

如果你使用亚马逊 EMR AWS 来管理 Spark 集群，请参阅 A [p](https://aws.amazon.com/emr/features/spark/) ache Spark。有关在 A SageMaker I 中使用 Amazon EMR 的更多信息，请参阅。[使用 Amazon EMR 准备数据](studio-notebooks-emr-cluster.md)

**Topics**
+ [将你的 Apache Spark 应用程序与 SageMaker 人工智能集成](#spark-sdk-common-process)
+ [SageMaker 适用于 Scala 的人工智能 Spark](apache-spark-example1.md)
+ [使用 SageMaker AI Spark for Python 的资源 (PySpark) 示例](apache-spark-additional-examples.md)

## 将你的 Apache Spark 应用程序与 SageMaker 人工智能集成
<a name="spark-sdk-common-process"></a>

以下是将 Apache Spark 应用程序与 A SageMaker I 集成的步骤的高级摘要。

1. 继续使用您熟悉的 Apache Spark 进行数据预处理。您的数据集仍然是 Spark 集群中的 `DataFrame`。将数据载入 `DataFrame`。预处理后，就有了一个 `features` 列，其中的 `org.apache.spark.ml.linalg.Vector` 值为 `Doubles`，还有一个可选的 `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 格式对于 AI 中的 SageMaker 模型训练非常有效。

   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)请求开始在 AI 中进行 SageMaker 模型训练。模型训练完成后， 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)请求，AI 随后启动指定的资源，并在这些资源上托管模型。

1. 您可以使用从 SageMaker AI 中托管的模型中获得推论。`SageMakerModel.transform`

   提供具有特征的输入 `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 适用于 Scala 的人工智能 Spark
<a name="apache-spark-example1"></a>

Amazon SageMaker AI 提供了一个 Apache Spark 库 ([SageMaker AI Spark](https://github.com/aws/sagemaker-spark/tree/master/sagemaker-spark-sdk))，你可以用它来将 Apache Spark 应用程序与 SageMaker AI 集成。本主题包含一些示例，可帮助您开始使用 Scala 使用 SageMaker AI Spark。有关 SageMaker AI Apache Spark 库的信息，请参阅[Apache Spark 搭载亚马逊 A SageMaker I](apache-spark.md)。

**下载 Spark for Scala**

你可以从 [SageMaker AI](https://github.com/aws/sagemaker-spark) Spark GitHub 存储库中下载 Python Spark (PySpark) 和 Scala 库的源代码和示例。

有关安装 SageMaker AI Spark 库的详细说明，请参阅 [SageMaker AI Spark](https://github.com/aws/sagemaker-spark/tree/master/sagemaker-spark-sdk)。

SageMaker 适用于 Scala 的 AI Spark SDK 已在 Maven 中央存储库中提供。通过向 `pom.xml` 文件添加以下依赖项，将 Spark 库添加到项目中：
+  如果使用 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 人工智能提供的 Apache Spark Scala 库，在 Spark 集群中使用 `DataFrame` s 在 SageMaker AI 中训练模型。随后举例说明如何 [使用 Apache Spark 在亚马逊 A SageMaker I 上使用自定义算法进行模型训练和托管](apache-spark-example1-cust-algo.md) 和 [SageMakerEstimator 在 Spark 管道中使用](apache-spark-example1-extend-pipeline.md)。

以下示例使用 SageMaker AI 托管服务托管生成的模型工件。有关此示例的更多详细信息，请参阅[入门：使用 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)具体而言，此示例执行以下操作： SageMaker 
+ 对数据使用 `KMeansSageMakerEstimator` 调整 (或训练) 模型

  由于该示例使用 SageMaker AI 提供的 k-means 算法来训练模型，因此您使用. `KMeansSageMakerEstimator` 您使用手写体单个位数数字的图像 (来自 MNIST 数据集) 来训练模型。您提供图像作为输入 `DataFrame`。为方便起见， SageMaker AI 在 Amazon S3 存储桶中提供了此数据集。

  作为响应，评估程序返回一个 `SageMakerModel` 对象。
+ 使用经过训练的 `SageMakerModel` 获取推理

  要从 SageMaker AI 中托管的模型中获取推论，可以调用该`SageMakerModel.transform`方法。您传递一个 `DataFrame` 作为输入。该方法将输入 `DataFrame` 转换为另一个包含从模型中获得的推理的 `DataFrame`。

  对于手写体单个位数数字的给定输入图像，该推理标识图像所属的聚类。有关更多信息，请参阅 [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
```

该示例代码执行以下操作：
+ 将 MNIST 数据集从 SageMaker AI (`awsai-sparksdk-dataset`) 提供的 S3 存储桶加载到 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 个特征。(每个手写数字都是一个 28x28 像素的图像，从而形成 784 个特征。)
+ 创建 A SageMaker I 估算器 () `KMeansSageMakerEstimator` 

  该估计器的`fit`方法使用 SageMaker AI 提供的 k 均值算法，使用输入来训练模型。`DataFrame`作为响应，它会返回一个 `SageMakerModel` 对象，此对象可用于获取推理。
**注意**  
`KMeansSageMakerEstimator`扩展了 SageMaker 人工智能`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` - 标识要用于模型训练的机器学习计算实例的类型和数量。
  + `endpointInstanceType`— 标识在 SageMaker AI 中托管模型时要使用的 ML 计算实例类型。默认情况下，采用一个机器学习计算实例。
  + `endpointInitialInstanceCount`— 确定最初支持 SageMaker AI 中托管模型的终端节点的 ML 计算实例的数量。
  + `sagemakerRole`— SageMaker AI 担任此 IAM 角色代表您执行任务。例如，对于模型训练，它从 S3 读取数据并将训练结果（模型构件）写入到 S3 中。
**注意**  
此示例隐式创建了 A SageMaker I 客户端。要创建此客户端，您必须提供凭证。API 使用这些凭证对向 SageMaker AI 发出的请求进行身份验证。例如，它使用凭证对创建训练作业的请求进行身份验证，以及使用 SageMaker AI 托管服务部署模型的 API 调用。
  + 创建 `KMeansSageMakerEstimator` 对象后，您可以设置以下参数，以便用在模型训练中：
    + k-means 算法在模型训练过程中应创建的集群数量。您可以指定 10 个聚类，每个数字（0 到 9）一个。
    + 标识每个输入图像都有 784 个特征 (每个手写数字都是 28x28 像素的图像，从而形成 784 个特征)。
+ 调用评估程序 `fit` 方法

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

  您将输入 `DataFrame` 作为一个参数传递。模型负责训练模型并将其部署到 SageMaker AI 的所有工作。有关更多信息，请参阅[将你的 Apache Spark 应用程序与 SageMaker 人工智能集成](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 端点进行推理。
  + 将 protobuf 响应反序列化成转换的 `distance_to_cluster` 中的两个附加列 (`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 在亚马逊 A SageMaker I 上使用自定义算法进行模型训练和托管](apache-spark-example1-cust-algo.md)
+ [SageMakerEstimator 在 Spark 管道中使用](apache-spark-example1-extend-pipeline.md)

# 使用 Apache Spark 在亚马逊 A SageMaker I 上使用自定义算法进行模型训练和托管
<a name="apache-spark-example1-cust-algo"></a>

在中[SageMaker 适用于 Scala 的人工智能 Spark](apache-spark-example1.md)，之所以使用，`kMeansSageMakerEstimator`是因为该示例使用 Amazon A SageMaker I 提供的 k-means 算法进行模型训练。您可以选择使用自己的自定义算法进行模型训练。假设您已经创建了 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` - 指定 Spark 在将训练数据从 `DataFrame` 上传到 S3 时使用的数据格式。例如，`"sagemaker"` 用于 protobuf 格式，`"csv"` 用于逗号分隔值，`"libsvm"` 用于 LibSVM 格式。

您可以实施自己的 `RequestRowSerializer` 和 `ResponseRowDeserializer` 以序列化或反序列化您的推理代码支持的数据格式中的行，例如 .libsvm 或 .csv。

# SageMakerEstimator 在 Spark 管道中使用
<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` 配置 Spark 以将“projectedFeatures”列序列化成 protobuf 以用于模型训练。此外，Spark 在默认情况下将“label”列序列化成 protobuf。

由于我们想要使用“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 Python 库 ([SageMaker AI PySpark](https://github.com/aws/sagemaker-spark/tree/master/sagemaker-pyspark-sdk))，你可以用它来将 Apache Spark 应用程序与 SageMaker AI 集成。本主题包含可帮助您入门的示例 PySpark。有关 SageMaker AI Apache Spark 库的信息，请参阅[Apache Spark 搭载亚马逊 A SageMaker I](apache-spark.md)。

**下载 PySpark**

你可以从 [SageMaker AI](https://github.com/aws/sagemaker-spark) Spark 存储库中下载 Python Spark (PySpark) 和 Scala 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 管理指南》**中的[为 Amazon EMR 对 AWS 服务的权限配置 IAM 角色](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html)。

**PySpark 例子**

有关使用 SageMaker AI 的示例 PySpark，请参阅：
+ 在 “阅读文档” 中将@@ [亚马逊 SageMaker 人工智能与 Apache Spark 配合使用](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-spark/index.html)。
+ [SageMaker AI Spark](https://github.com/aws/sagemaker-spark) GitHub 存储库。

# 使用 Chainer 和 Amazon A SageMaker I 的资源
<a name="chainer"></a>

您可以使用自定义 Chainer 代码使用 SageMaker AI 来训练和部署模型。 SageMaker AI Python SDK Chainer 估算器和模型以及 SageMaker AI 开源 Chainer 容器使编写 Chainer 脚本并在人工智能中运行它变得更加容易。 SageMaker 以下部分提供了参考资料，你可以用来学习如何将 Chainer 与 SageMaker AI 配合使用。

## 您需要做什么？
<a name="chainer-intent"></a>

我想在 SageMaker AI 中训练一个自定义 Chainer 模型。  
有关 Jupyter 笔记本的示例，请参阅 Amazon A SageMaker I [示例存储库中的 Chainer 示例笔记本](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/mxnet_mnist)。 GitHub  
有关文档，请参阅[使用 Chainer 训练模型](https://sagemaker.readthedocs.io/en/stable/using_chainer.html#train-a-model-with-chainer)。

我有一个用 SageMaker 人工智能训练的 Chainer 模型，我想将其部署到托管端点。  
有关更多信息，请参阅[部署 Chainer 模型](https://sagemaker.readthedocs.io/en/stable/using_chainer.html#deploy-chainer-models)。

我有一个在 SageMaker AI 之外训练的 Chainer 模型，我想将其部署到 A SageMaker I 端点  
有关更多信息，请参阅[从模型数据部署端点](https://sagemaker.readthedocs.io/en/stable/using_chainer.html#deploy-endpoints-from-model-data)。

我想查看 [Amaz SageMaker on 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 版本的信息，以及有关编写 Chainer 训练脚本以及在 SageMaker AI 中使用 Chainer 估算器和模型的一般信息，请参阅在 Python SDK 中使用 [Chainer](https://sagemaker.readthedocs.io/en/stable/using_chainer.html)。 SageMaker 

# 在 Amazon AI 中使用 Hugging Face SageMaker 的资源
<a name="hugging-face"></a>

Amazon SageMaker AI 允许客户在人工智能上使用用于自然语言处理 (NLP) 的 Hugging Face 模型进行训练、微调和运行推理。 SageMaker 您可以使用 Hugging Face 进行训练和推理。以下部分提供有关 Hugging Face 模型的信息，并包括可用于学习如何将 Hugging Face 与 AI 配 SageMaker 合使用的参考资料。

此功能可通过开发 Hugging Face [AWS Deep Learning Containers](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/what-is-dlc.html) 来实现。这些容器包括 Hugging Face Transformers、Tokenizers 和 Datasets 库，它们允许您将这些资源用于训练和推理作业。有关可用深度学习容器映像的列表，请参阅[可用的深度学习容器映像](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)。这些深度学习容器映像会得到维护，并定期更新安全补丁。

要使用带有 SageMaker Python SDK 的 Hugging Face Deep Learning Containers 进行训练，请参阅 [ SageMaker Hugging Face AI 估算器。](https://sagemaker.readthedocs.io/en/stable/frameworks/huggingface/index.html)有了 Hugging Face Estimator，你可以像使用任何其他 AI 估算器一样使用 Hugging Face 模型。 SageMaker 但是，使用 SageMaker Python 开发工具包是可选的。你还可以使用和来编排 Hugging Face Deep Learning Containers 的使用。 AWS CLI 适用于 Python (Boto3) 的 AWS SDK

有关 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 来捕获自己的指标。有关示例，请参阅[定义训练指标 (SageMaker Python SDK)](https://docs.aws.amazon.com/sagemaker/latest/dg/training-metrics.html#define-train-metrics-sdk)。您可以使用该[TrainingJobAnalytics](https://sagemaker.readthedocs.io/en/stable/api/training/analytics.html#sagemaker.analytics.TrainingJobAnalytics)方法以 Panda `DataFrame` s [CloudWatch](https://docs.aws.amazon.com/sagemaker/latest/dg/monitoring-cloudwatch.html)的形式访问捕获的指标。在对模型进行训练和微调后，您就可以像使用其他模型一样使用它来运行推理作业。

### 如何使用 Hugging Face 估算器进行训练
<a name="hugging-face-training-using"></a>

你可以使用 SageMaker AI Python SDK 为训练作业实现 Hugging Face Estimator。 SageMaker Python SDK 是一个开源库，用于在 SageMaker AI 上训练和部署机器学习模型。有关 Hugging Face Estimator 的更多信息，请参阅 [SageMaker AI Python](https://sagemaker.readthedocs.io/en/stable/frameworks/huggingface/index.html) SDK 文档。

使用 SageMaker Python SDK，你可以在以下环境中使用 Hugging Face Estimator 运行训练作业：
+ [Amazon SageMaker Stud](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) io Classic：Studio Classic 是第一个用于机器学习 (ML) 的完全集成的开发环境 (IDE)。Studio Classic 提供了基于网络的单一可视化界面，您可以在其中执行所需的所有 ML 开发步骤：
  + PREPARE
  + build
  + 训调
  + 部署和管理模型

  有关在 Studio Classic 中使用 Jupyter Notebook 的信息，请参阅 [使用 Amazon SageMaker Studio 经典笔记本电脑](notebooks.md)。
+ [SageMaker笔记本实例](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html)：Amazon SageMaker 笔记本实例是运行 Jupyter 笔记本应用程序的机器学习 (ML) 计算实例。通过该应用程序，您可以在笔记本实例中运行 Jupyter Notebooks：
  + 准备和处理数据
  + 编写代码训练模型
  + 将模型部署到 SageMaker AI 托管
  + 在没有调试器、模型监控和基于 Web 的 IDE 等 SageMaker Studio 功能的情况下测试或验证您的模型
+ 本地：如果您已连接 AWS 并拥有相应的 SageMaker AI 权限，则可以在本地使用 SageMaker Python SDK。在本地使用时，你可以在 AI 中为 Hugging Face 启动远程训练和推理作业。 SageMaker AWS这适用于您的本地计算机，以及其他具有连接 SageMaker Python SDK 和相应权限的 AWS 服务。

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

为了进行推理，您可以使用经过训练的 Hugging Face 模型或预先训练的 Hugging Face 模型来部署带有 AI 的推理作业。 SageMaker 通过这种协作，您只需要一行代码即可使用 SageMaker AI 部署经过训练的模型和预训练的模型。您也可以运行推理作业，而无需编写任何自定义推理代码。使用自定义推理代码，您可以通过提供自己的 Python 脚本来自定义推理逻辑。

### 如何使用 Hugging Face Deep Learning Containers 部署推理作业
<a name="hugging-face-inference-using"></a>

您可以通过两种方式使用 A SageMaker I 运行推理。您可以使用自己训练的模型进行推理，也可以部署预训练的 Hugging Face 模型。
+ **使用自己训练的模型运行推理：**使用自己训练的模型进行推理有两个选项：
  + 使用你使用现有 Hugging Face 模型和 AI Hugging Face Deep Learning Containers Deep Learning Contain SageMaker ers 训练的模型进行推理。
  + 带上你自己的现有 Hugging Face 模型，然后 SageMaker 使用 AI 进行部署。

  使用使用 SageMaker AI Hugging Face Estimator 训练的模型运行推理时，可以在训练完成后立即部署模型。您还可以将训练好的模型上传到 Amazon S3 存储桶，并在以后运行推理时摄取它。

  如果您自带已有的 Hugging Face 模型，则必须将训练好的模型上传到 Amazon S3 存储桶。然后，如[为推理示例部署 Hugging Face Transformers](https://github.com/huggingface/notebooks/blob/main/sagemaker/10_deploy_model_from_s3/deploy_transformer_model_from_s3.ipynb) 所示，在运行推理时摄取该数据包。
+ **使用预训练 HuggingFace 模型运行推理：您可以使用数千个预先训练**的 Hugging Face 模型中的一个来运行推理作业，无需额外训练。要运行推理，请从 [Hugging Face 模型](https://huggingface.co/models)列表中选择预训练模型，如[为推理示例部署预训练的 Hugging Face Transformers](https://github.com/huggingface/notebooks/blob/main/sagemaker/11_deploy_model_from_hf_hub/deploy_transformer_model_from_hf_hub.ipynb) 所述。

## 您需要做什么？
<a name="hugging-face-do"></a>

Hugging Face 笔记本存储库中的以下笔记本展示了如何在各种用例中使用 Hugging Face Deep Learning Conta SageMaker iners 和 AI。

我想在 A PyTorch I 中使用 Hugging Fac SageMaker e 来训练和部署文本分类模型。  
要获取 Jupyter 笔记本的示例，请参阅[PyTorch 入门演示](https://github.com/huggingface/notebooks/blob/main/sagemaker/01_getting_started_pytorch/sagemaker-notebook.ipynb)。

我想在 A TensorFlow I 中使用 Hugging Fac SageMaker e 来训练和部署文本分类模型。  
有关 Jupyter 笔记本的示例，请参阅[TensorFlow 入门](https://github.com/huggingface/notebooks/blob/main/sagemaker/02_getting_started_tensorflow/sagemaker-notebook.ipynb)示例。

我想使用 Hugging Face 和 AI Distributed 运行具有数据并行性的分布式训练。 SageMaker   
有关示例 Jupyter 笔记本，请参阅[分布式训练示例](https://github.com/huggingface/notebooks/blob/main/sagemaker/03_distributed_training_data_parallelism/sagemaker-notebook.ipynb)。

我想使用 Hugging Face 和 AI Distributed 来运行具有模型并行性的分布式训练。 SageMaker   
有关示例 Jupyter 笔记本，请参阅[模型并行性示例](https://github.com/huggingface/notebooks/blob/main/sagemaker/04_distributed_training_model_parallelism/sagemaker-notebook.ipynb)。

我想使用竞价实例在 AI 中使用 Hugging Fac SageMaker e 来训练和部署模型。  
有关示例 Jupyter 笔记本，请参阅[竞价型实例示例](https://github.com/huggingface/notebooks/blob/main/sagemaker/05_spot_instances/sagemaker-notebook.ipynb)。

在 SageMaker 人工智能中使用 Hugging Face 训练文本分类模型时，我想捕获自定义指标并使用 AI Checkpointing。 SageMaker   
有关示例 Jupyter 笔记本，请参阅[使用自定义指标进行训练示例](https://github.com/huggingface/notebooks/blob/main/sagemaker/06_sagemaker_metrics/sagemaker-notebook.ipynb)。

我想在 AI 中使用 Hugging Face 训练分布式问答 TensorFlow 模型。 SageMaker   
有关 Jupyter 笔记本的示例，请参阅[分布式 TensorFlow 训练](https://github.com/huggingface/notebooks/blob/main/sagemaker/07_tensorflow_distributed_training_data_parallelism/sagemaker-notebook.ipynb)示例。

我想在 AI 中使用 Hugging Face 训练分布式摘要模型。 SageMaker   
有关示例 Jupyter 笔记本，请参阅[分布式汇总训练示例](https://github.com/huggingface/notebooks/blob/main/sagemaker/08_distributed_summarization_bart_t5/sagemaker-notebook.ipynb)。

我想在 AI 中使用 Hugging Face 来训练图像分类模型 SageMaker 。  
有关示例 Jupyter 笔记本，请参阅 [Vision Transformer 训练示例](https://github.com/huggingface/notebooks/blob/main/sagemaker/09_image_classification_vision_transformer/sagemaker-notebook.ipynb)。

我想在人工智能中部署经过训练的 Hugging Face 模型 SageMaker 。  
有关示例 Jupyter 笔记本，请参阅[部署您的 Hugging Face Transformers 进行推理示例](https://github.com/huggingface/notebooks/blob/main/sagemaker/10_deploy_model_from_s3/deploy_transformer_model_from_s3.ipynb)。

我想在人工智能中部署一个经过预训练的 Hugging Face 模型。 SageMaker   
有关示例 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)。

# PyTorch 与 Amazon A SageMaker I 配合使用的资源
<a name="pytorch"></a>

您可以使用 Amazon SageMaker AI 使用自定义 PyTorch 代码训练和部署模型。 SageMaker AI Python SDK PyTorch 估算器和模型以及 SageMaker AI 开源 PyTorch 容器使编写 PyTorch 脚本和在 A SageMaker I 中运行脚本变得更加容易。以下部分提供了参考资料，您可以用来学习如何 PyTorch 与 SageMaker AI 配合使用。

## 您需要做什么？
<a name="pytorch-intent"></a>

我想在 SageMaker AI 中训练一个自定义 PyTorch 模型。  
要获取 Jupyter 笔记本的示例，请参阅 Amazon A SageMaker I [PyTorch 示例存储库中的示例 GitHub笔记本](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 模型，我想将其部署到 A SageMaker I 端点  
有关更多信息，请参阅[部署自己的 PyTorch 模型](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#bring-your-own-model)。

我想查看[亚马逊 SageMaker Python 软件开发工具包 PyTorch类的](https://sagemaker.readthedocs.io/en/stable) 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)。

我想查找有关 Dee AWS p Learning Containers 支持的 PyTorch 版本的信息。  
有关更多信息，请参阅[可用的深度学习容器映像](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)。

 有关编写 PyTorch 训练脚本以及在 SageMaker AI 中使用 PyTorch估算器和模型的一般信息，请参阅与 [Pyth SageMaker on SDK PyTorch 配合使用](https://sagemaker.readthedocs.io/en/stable/using_pytorch.html)。

# 使用 R 和 Amazon A SageMaker I 的资源
<a name="r-guide"></a>

本文档列出了可帮助您学习如何在 R 软件环境中使用 Amazon SageMaker AI 功能的资源。以下各节介绍了 SageMaker AI 的内置 R 内核，解释了如何在 SageMaker AI 上开始使用 R，并提供了几个示例笔记本。

示例分为三个级别：初级、中级和高级。他们从 A [ SageMaker I 上的 R 入门开始，然后在 A SageMaker I](https://sagemaker-examples.readthedocs.io/en/latest/r_examples/r_sagemaker_hello_world/r_sagemaker_hello_world.html) 上使用 R 进行 end-to-end机器学习，最后是更高级的主题，例如使用 R 脚本 SageMaker 处理以及从 bring-your-own R 算法到 SageMaker AI。

有关如何将自己的自定义 R 映像带入 Studio 中的信息，请参阅[亚马逊 SageMaker Studio 经典版中的自定义图片](studio-byoi.md)。有关类似的博客文章，请参阅[将您自己的 R 环境引入 Amazon SageMaker Studio](https://aws.amazon.com/blogs/machine-learning/bringing-your-own-r-environment-to-amazon-sagemaker-studio/)。

**Topics**
+ [RStudio SageMaker 人工智能支持](#rstudio-for-r)
+ [SageMaker 人工智能中的 R 内核](#r-sagemaker-kernel-ni)
+ [示例笔记本](#r-sagemaker-example-notebooks)
+ [开始在 SageMaker AI 中使用 R](r-sagemaker-get-started.md)

## RStudio SageMaker 人工智能支持
<a name="rstudio-for-r"></a>

Amazon SageMaker AI 支持 RStudio 作为与亚马逊 A SageMaker I 域集成的完全托管的集成开发环境 (IDE)。通过 RStudio 集成，您可以在域中启动 RStudio 环境，以便在 SageMaker AI 资源上运行 RStudio工作流程。有关更多信息，请参阅 [RStudio 在亚马逊上 A SageMaker I](rstudio.md)。

## SageMaker 人工智能中的 R 内核
<a name="r-sagemaker-kernel-ni"></a>

SageMaker 笔记本实例使用预安装的 R 内核支持 R。此外，R 内核还有网状库，一个 R 到 Python 接口，因此你可以在 R 脚本中使用 AI SageMaker Python SDK 的功能。
+ r@@ [eticulateLibrary](https://rstudio.github.io/reticulate/)：为亚马逊 [Python SageMaker ](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 A SageMaker I 的 R 内核开发 R 脚本。在此笔记本中，您可以设置 SageMaker AI 环境和权限，从 [UCI Machine Learning Re](https://archive.ics.uci.edu/datasets) pository 下载[鲍鱼数据集](https://archive.ics.uci.edu/ml/datasets/abalone)，对数据进行一些基本处理和可视化，然后将数据保存为.csv 格式到 S3。

**初级**
+ [SageMaker 使用 R 内核的 AI Batch Tran](https://sagemaker-examples.readthedocs.io/en/latest/r_examples/r_batch_transform/r_xgboost_batch_transform.html) sform — 此示例笔记本描述了如何使用 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) —此示例笔记本扩展了以前的初学者笔记本，这些笔记本使用鲍鱼数据集和. 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) Process [SageMaker ing — Processing 允许您对模型评估工作负载进行预处理](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 包自定义 SageMaker AI 容器，一直到使用托管端点对 R-Origin 模型进行推理。

# 开始在 SageMaker AI 中使用 R
<a name="r-sagemaker-get-started"></a>

本主题介绍如何开始在 SageMaker AI 中使用 R 软件环境。有关将 R 与 SageMaker AI 配合使用的更多信息，请参阅[使用 R 和 Amazon A SageMaker I 的资源](r-guide.md)。

**在 SageMaker AI 控制台中开始使用 R**

1. 使用 t2.medium 实例类型和默认存储大小[创建笔记本实例](https://docs.aws.amazon.com/sagemaker/latest/dg/howitworks-create-ws.html)。如果打算继续使用该实例来处理更高级的示例，可以选择速度更快的实例和更大的存储空间，也可以稍后再创建更大的实例。

1. 等待笔记本状态为**使用中**，然后选择 **Open Jupyter**。  
![\[控制台中InService状态和 Ope n Jupyter 链接的位置。\]](http://docs.aws.amazon.com/zh_cn/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/zh_cn/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/zh_cn/sagemaker/latest/dg/images/An-R-User-Guide-to-SageMaker/An-R-User-Guide-to-SageMaker-3.png)

或者，在 Jupyter Notebook 中使用 **Kernel** 菜单，然后从**更改内核**子菜单中选择 **R**。

![\[将笔记本内核更改为 R 的位置。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/An-R-User-Guide-to-SageMaker/An-R-User-Guide-to-SageMaker-4.png)


# 在 Amazon AI 中使用 Scikit-Learn 的资源 SageMaker
<a name="sklearn"></a>

您可以使用自定义 Scikit-Learn 代码使用 SageMaker Amazon AI 来训练和部署模型。 SageMaker AI Python SDK scikit-Learn 估算器和模型以及 SageMaker AI 开源 Scikit-Learn 容器使编写 Scikit-Learn 脚本和在 AI 中运行脚本变得更加容易。 SageMaker 以下部分提供了参考资料，你可以用来学习如何将 Scikit-Learn 与 AI 配合使用。 SageMaker 

**要求**

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 | 

[有关编写 Scikit-Learn 训练脚本以及在 AI 中使用 Scikit-Learn 估算器和模型的一般信息，请参阅在 Python SDK 中使用 Scikit-L SageMaker earn。 SageMaker ](https://sagemaker.readthedocs.io/en/stable/using_sklearn.html)

## 您需要做什么？
<a name="sklearn-intent"></a>

**注意**  
运行 AI Scikit-Learn 示例笔记本需要 Matplotlib v2.2.3 或更高版本。 SageMaker 

我想在 AI 中使用 Scikit-Learn 进行数据处理、特征工程或模型评估。 SageMaker   
有关 Jupyter 笔记本的示例，请参阅 [https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker\$1processing/scikit](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation)\$1learn\$1data\$1processing\$1and\$1model\$1alumation。  
有关训练和部署 Scikit-Learn 模型的博客文章，请参阅[亚马逊 A SageMaker I 增加](https://aws.amazon.com/blogs/machine-learning/amazon-sagemaker-adds-scikit-learn-support/)了 Scikit-Learn 支持。  
有关文档，请参阅 [ReadTheDocs](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_processing.html#data-pre-processing-and-model-evaluation-with-scikit-learn)。

我想在 AI 中训练一个自定义 Scikit-Learn 模型。 SageMaker   
有关 Jupyter 笔记本的示例，请参阅 [https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/scikit](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/scikit_learn_iris)\$1learn\$1iris。  
有关文档，请参阅[使用 Scikit-learn 训练模型](https://sagemaker.readthedocs.io/en/stable/using_sklearn.html#train-a-model-with-sklearn)。

我有一个用 SageMaker 人工智能训练的 Scikit-Learn 模型，我想将其部署到托管端点。  
有关更多信息，请参阅[部署 Scikit-learn 模型](https://sagemaker.readthedocs.io/en/stable/using_sklearn.html#deploy-sklearn-models)。

我有一个在 AI 之外训练的 Scikit-Learn 模型，我想将其部署到 SageMaker AI 端点 SageMaker   
有关更多信息，请参阅[从模型数据部署端点](https://sagemaker.readthedocs.io/en/stable/using_sklearn.html#deploy-endpoints-from-model-data)。

我想查看 [Amaz SageMaker on Python SDK 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 容器存储库](https://github.com/aws/sagemaker-scikit-learn-container)。 GitHub 

# 在 Amazon AI 上使用 SparkML 服务的资源 SageMaker
<a name="sparkml-serving"></a>

[亚马逊 SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) SparkML 服务模型和预测器以及亚马逊 AI SageMaker 开源 SparkML 服务容器支持部署在 AI 中序列化的 Apache Spark ML 管道以获得推论。 MLeap SageMaker 使用以下资源学习如何将 SparkML 服务与 AI 配合 SageMaker 使用。

有关使用 SparkML 服务容器将模型部署到 SageMaker AI 的信息，请参阅 [SageMaker Spark ML 容器 GitHub 存储库](https://github.com/aws/sagemaker-sparkml-serving-container)。有关 [Amaz SageMaker on Python SDK](https://sagemaker.readthedocs.io/en/stable) SparkML 服务模型和预测变量的信息，请参阅 SparkM [L 服务模型](https://sagemaker.readthedocs.io/en/stable/sagemaker.sparkml.html)和预测器 API 文档。

# TensorFlow 与 Amazon A SageMaker I 配合使用的资源
<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>

对于 1.11 及更高 TensorFlow 版本，[Amaz SageMaker on Python 软件开发工具包](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 服务模型](https://sagemaker.readthedocs.io/en/stable/using_tf.html#deploy-tensorflow-serving-models)。

我有一个在 SageMaker AI 之外训练的 TensorFlow 模型，我想将其部署到 A SageMaker I 端点。  
有关更多信息，请参阅[直接使用模型构件部署](https://sagemaker.readthedocs.io/en/stable/using_tf.html#deploying-directly-from-model-artifacts)。

我想查看[亚马逊 SageMaker Python 软件开发工具包 TensorFlow类的](https://sagemaker.readthedocs.io/en/stable) API 文档。  
有关更多信息，请参阅[TensorFlow 估算器](https://sagemaker.readthedocs.io/en/stable/sagemaker.tensorflow.html)。

我想找到 SageMaker AI TensorFlow 容器存储库。  
有关更多信息，请参阅[SageMaker TensorFlow 容器 GitHub 存储库](https://github.com/aws/sagemaker-tensorflow-container)。

我想查找有关 Dee AWS p Learning Containers 支持的 TensorFlow 版本的信息。  
有关更多信息，请参阅[可用的深度学习容器映像](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)。

 有关编写 TensorFlow 脚本模式训练脚本以及在 SageMaker AI 中使用 TensorFlow 脚本模式估计器和模型的一般信息，请参阅与 [Pyth SageMaker on SDK TensorFlow 配合使用](https://sagemaker.readthedocs.io/en/stable/using_tf.html)。

## TensorFlow 1.11 及更早版本的传统模式
<a name="tf-legacy-mode"></a>

[Amaz SageMaker on Python 软件开发工具包](https://sagemaker.readthedocs.io/en/stable)提供了支持 1.11 及更早 TensorFlow 版本的旧模式。在以下情况下，使用传统模式 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)。

# 使用 Triton 推理服务器和 Amazon AI 的资源 SageMaker
<a name="triton"></a>

SageMaker 人工智能使客户能够在 NVIDIA Triton 推理服务器上使用自定义代码部署模型。使用以下资源学习如何将 Triton 推理服务器与 AI 配 SageMaker 合使用。

 可通过开发 [Triton Inference Server 容器](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/what-is-dlc.html)来获得此功能。这些容器包括 NVIDIA Triton Inference Server、对常见机器学习框架的支持以及允许你优化 AI 性能的有用环境变量。 SageMaker 有关所有可用深度学习容器映像的列表，请参阅[可用的深度学习容器映像](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)。深度学习容器映像会得到维护，并定期更新安全补丁。

你可以像在 SageMaker AI 模型中使用任何其他容器一样使用 Pyt SageMaker hon SDK 的 Triton 推理服务器容器。但是，使用 SageMaker Python 开发工具包是可选的。您可以将 Triton 推理服务器容器与和一起使用。 AWS CLI 适用于 Python (Boto3) 的 AWS SDK

有关 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 大小。

为了进行推理，您可以将经过训练的 ML 模型与 Triton 推理服务器配合使用，使用 AI 部署推理作业。 SageMaker 

Triton Inference Server 容器的一些关键特征包括：
+ **支持多个框架**：Triton 可用于部署所有主要机器学习框架中的模型。Triton 支持 TensorFlow GraphDef 和 SavedModel、ONNX、、T PyTorch TorchScript ensorrt 和自定义 Python/C\$1\$1 模型格式。
+ **模型流水线**：Triton 模型集合表示一个模型的流水线，具有 pre/post 处理逻辑以及它们之间的输入和输出张量连接。向一个集合提出一个推理请求，就会触发整个管道的执行。
+ **并行模型执行**：同一模型的多个实例可以在同一 GPU 上同时运行，也可以在多个 GPU 上同时运行 GPUs。
+ **动态批处理**：对于支持批处理的模型，Triton 有多种内置的计划和批处理算法，这些算法可以将单个推理请求组合在一起以提高推理吞吐量。这些计划和批处理决策对请求推理的客户端是透明的。
+ **支持多样的 CPU 和 GPU**：这些模型可以在 CPUs 或上执行，以 GPUs 获得最大的灵活性，并支持异构计算需求。

## 您需要做什么？
<a name="triton-do"></a>

我想在 SageMaker AI 中部署经过训练的 PyTorch 模型。  
有关 Jupyter 笔记本的示例，请参阅使用 Triton 推[理服务器部署你的 R PyTorch esnet50 模型](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-triton/resnet50/triton_resnet50.ipynb)示例。

我想在人工智能中部署经过训练的 Hugging Face 模型 SageMaker 。  
有关 Jupyter 笔记本的示例，请参阅使用 [Triton 推理服务器部署你的 PyTorch BERT 模型](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-triton/nlp_bert/triton_nlp_bert.ipynb)示例。