

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 기계 학습 프레임워크 및 언어
<a name="frameworks"></a>

Amazon SageMaker AI는 널리 사용되는 프로그래밍 언어 및 기계 학습 프레임워크에 대한 네이티브 지원을 제공하여 개발자와 데이터 과학자가 선호하는 도구와 기술을 활용할 수 있도록 지원합니다. 이 섹션에서는 Python 및 R 작업에 대한 참조와 SageMaker AI 내의 해당 소프트웨어 개발 키트(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 컨테이너를 사용하면 보다 쉽게 MXNet 스크립트를 작성해 SageMaker AI에서 실행할 수 있습니다. 다음 섹션에서는 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 Container GitHub 리포지토리](https://github.com/aws/sagemaker-mxnet-container)를 참조하세요.

 AWS 딥 러닝 컨테이너에서 지원하는 MXNet 버전에 대한 정보를 찾고 싶습니다.  
자세한 내용은 [사용 가능한 딥 러닝 컨테이너 이미지](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)를 참조하세요.

 MXNet 스크립트 모드 훈련 스크립트 작성과 SageMaker AI에서 MXNet 스크립트 모드 예측기 및 모델 사용에 대한 일반 정보는 [Using MXNet with the SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/using_mxnet.html)를 참조하세요.

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

Amazon SageMaker AI Spark는 SageMaker AI를 사용하여 Spark 기계 학습(ML) 파이프라인을 구축하는 데 도움이 되는 오픈 소스 Spark 라이브러리입니다. 이 라이브러리는 모델 훈련 및 호스팅과 같은 Spark ML 단계와 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에서 모델을 호스팅하고 추론을 얻을 수 있습니다.

[SageMaker AI Spark](https://github.com/aws/sagemaker-spark) GitHub 리포지토리에서 Python Spark(PySpark) 및 Scala 라이브러리 둘 다에 대한 소스 코드를 다운로드할 수 있습니다.

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 AWS 을 사용하여 Spark 클러스터를 관리하는 경우 [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` 열과 값이 `Double` 유형인 선택적 `label` 열을 갖도록 데이터를 전처리합니다.

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) 요청을 전송하고, 그러면 지정된 리소스를 시작하고 해당 리소스에서 모델을 호스팅합니다.

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 AI와 통합하는 데 사용할 수 있는 Apache 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 다운로드**

[SageMaker AI Spark](https://github.com/aws/sagemaker-spark) GitHub 리포지토리에서 Python Spark(PySpark) 및 Scala 라이브러리 둘 다에 대한 소스 코드 및 예시를 다운로드할 수 있습니다.

SageMaker AI Spark 라이브러리 설치에 대한 자세한 지침은 [SageMaker AI Spark](https://github.com/aws/sagemaker-spark/tree/master/sagemaker-spark-sdk)를 참조하세요.

SageMaker AI Spark SDK for Scala는 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 예시**

이 섹션에서는 Spark 클러스터에서 `DataFrame`을 사용하여 SageMaker AI에서 모델을 훈련하기 위해 SageMaker AI에서 제공하는 Apache Spark Scala 라이브러리를 사용하는 예시 코드를 제공합니다. 그런 다음 [Apache Spark와 함께 Amazon SageMaker AI에서 모델 훈련 및 호스팅을 위해 사용자 지정 알고리즘 사용](apache-spark-example1-cust-algo.md) 및 [Spark 파이프라인에서 SageMakerEstimator 사용](apache-spark-example1-extend-pipeline.md) 방법에 대한 예시가 이어집니다.

다음 예시에서는 SageMaker AI 호스팅 서비스를 사용하여 결과 모델 아티팩트를 호스팅합니다. 이 예시에 대한 자세한 내용은 [Getting Started: K-Means Clustering on SageMaker AI with SageMaker AI Spark SDK](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 데이터세트에서 손으로 쓴 한 자리 숫자의 이미지를 사용하여 모델을 훈련합니다. 이미지를 입력 `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
```

이 예제 코드에서는 다음 작업을 수행합니다.
+ SageMaker AI(`awsai-sparksdk-dataset`)에서 제공한 S3 버킷에서 Spark `DataFrame`(`mnistTrainingDataFrame`)으로 MNIST 데이터세트를 로드합니다.

  ```
  // 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` 열은 `Double`값의 벡터(`org.apache.spark.ml.linalg.Vector`)를 저장합니다. 수기 숫자에는 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 컴퓨팅 인스턴스 유형을 식별합니다. 기본적으로 하나의 ML 컴퓨팅 인스턴스가 수임됩니다.
  + `endpointInitialInstanceCount` - SageMaker AI에서 모델을 호스팅하는 엔드포인트를 처음 지원하는 ML 컴퓨팅 인스턴스의 수를 식별합니다.
  + `sagemakerRole` - SageMaker AI는 이 IAM 역할을 수임하여 사용자를 대신해 작업을 수행합니다. 예를 들어 모델 훈련의 경우 S3로부터 데이터를 읽고 훈련 결과(모델 아티팩트)를 S3에 씁니다.
**참고**  
이 예시는 명시적으로 SageMaker AI 클라이언트를 생성합니다. 이 클라이언트를 생성하려면 보안 인증을 입력해야 합니다. API는 이러한 자격 증명을 사용하여 SageMaker AI에 대한 요청을 인증합니다. 예를 들어, 이 API는 자격 증명을 사용하여 훈련 작업을 생성하기 위한 요청과 SageMaker AI 호스팅 서비스를 사용하여 모델을 배포하기 위한 API 직접 호출을 인증합니다.
  + `KMeansSageMakerEstimator` 객체가 생성된 이후 모델 훈련에서 사용되는 다음 파라미터를 설정합니다.
    + k-means 알고리즘이 모델 훈련 도중 생성해야 하는 클러스터 수입니다. 각 자리마다 하나씩 0\$19까지 총 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). 이에 대한 응답으로 SageMaker AI에 배포된 모델에서 추론을 얻는 데 사용할 수 있는 `SageMakerModel` 객체를 얻습니다.

  `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 응답을 변형된 `DataFrame`의 2개의 추가 열(`distance_to_cluster` 및 `closest_cluster`)로 역직렬화합니다.

  `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 파이프라인에서 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`를 사용합니다. 대신 모델 훈련을 위해 자체 사용자 지정 알고리즘을 사용하도록 선택할 수도 있습니다. 이미 도커 이미지를 생성했다고 가정하는 경우 자체 `SageMakerEstimator`를 생성하고 사용자 지정 이미지에 대한 Amazon Elastic Container Registry 경로를 지정할 수 있습니다.

다음 예제는 `SageMakerEstimator`에서 `KMeansSageMakerEstimator`를 생성하는 방법을 보여줍니다. 새 예측기에서 훈련 및 추론 코드 이미지에 대한 도커 레지스트리 경로를 명시적으로 지정합니다.

```
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` - 사용자 지정 코드가 포함된 훈련 이미지의 도커 레지스트리 경로를 식별합니다.
+ `modelImage` - 추론 코드가 포함된 이미지의 도커 레지스트리 경로를 식별합니다.
+ `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)으로부터 행을 직렬화 및 역직렬화합니다.

# Spark 파이프라인에서 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`는 Spark가 모델 훈련을 위해 "projectedFeatures" 열을 protobuf로 직렬화하도록 Spark를 구성합니다. 추가로 Spark는 기본적으로 protobuf "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 다운로드**

[SageMaker AI Spark](https://github.com/aws/sagemaker-spark) GitHub 리포지토리에서 Python Spark(PySpark) 및 Scala 라이브러리 둘 다에 대한 소스 코드를 다운로드할 수 있습니다.

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 사용에 대한 예시는 다음을 참조하세요.
+ 문서 읽기의 [Using Amazon SageMaker AI with 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>

SageMaker AI를 사용하면 사용자 지정 Chainer 코드를 사용하여 모델을 훈련하고 배포할 수 있습니다. SageMaker AI Python SDK Chainer 예측기 및 모델과 SageMaker AI 오픈 소스 Chainer 컨테이너를 사용하면 Chainer 스크립트를 작성하고 SageMaker AI에서 쉽게 실행할 수 있습니다. 다음 섹션에서는 Chainer를 SageMaker AI와 함께 사용하는 방법을 배우는 데 사용할 수 있는 참조 자료를 제공합니다.

## 어떤 작업을 수행하려고 합니까?
<a name="chainer-intent"></a>

SageMaker AI에서 사용자 지정 Chainer 모델을 훈련하고 싶습니다.  
예시 Jupyter Notebook은 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 Container GitHub 리포지토리](https://github.com/aws/sagemaker-chainer-container)를 참조하세요.

 지원되는 Chainer 버전에 대한 자세한 내용과 Chainer 훈련 스크립트 작성 및 SageMaker AI에서 Chainer 예측기 및 모델 사용에 대한 일반적인 정보는 [Using Chainer with the SageMaker Python SDK](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 딥 러닝](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/what-is-dlc.html) 컨테이너 개발을 통해 사용할 수 있습니다. 이러한 컨테이너에는 Hugging Face Transformer, Tokenizer 및 데이터세트 라이브러리가 포함되어 있어 이러한 리소스를 훈련 및 추론 작업에 사용할 수 있습니다. 딥 러닝 컨테이너에서 사용할 수 있는 이미지 목록은 [사용 가능한 딥 러닝 컨테이너 이미지](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)를 참조하세요. 이러한 딥 러닝 컨테이너 이미지는 보안 패치를 통해 유지 관리되고 정기적으로 업데이트됩니다.

SageMaker Python SDK와 함께 Hugging Face Deep Learning Containers를 훈련에 사용하려면 [Hugging Face SageMaker AI Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/huggingface/index.html)를 참조하세요. Hugging Face Estimator를 사용하면 다른 SageMaker AI 예측기와 마찬가지로 Hugging Face 모델을 사용할 수 있습니다. 하지만 SageMaker Python SDK를 사용하는 것은 선택 사항입니다. AWS CLI 및를 사용하여 Hugging Face 딥 러닝 컨테이너 사용을 오케스트레이션할 수도 있습니다 AWS SDK for Python (Boto3).

Hugging Face와 사용 가능한 모델에 대한 자세한 내용은 [Hugging Face 설명서](https://huggingface.co/)를 참조하세요.

## 학습
<a name="hugging-face-training"></a>

훈련을 실행하려면 Hugging Face에서 제공되는 수천 개의 모델 중 원하는 모델을 사용하고 추가 훈련을 통해 사용 사례에 맞게 미세 조정합니다. SageMaker AI를 사용하면 표준 훈련을 사용하거나 [SageMaker 분산 데이터 및 모델 병렬 훈련](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) 메서드를 사용해 Panders `DataFrame`으로 액세스할 수 있습니다. 모델을 훈련하고 미세 조정한 후에는 다른 모델처럼 사용하여 추론 작업을 실행할 수 있습니다.

### Hugging Face Estimator를 사용하여 훈련을 실행하는 방법
<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 SDK 문서](https://sagemaker.readthedocs.io/en/stable/frameworks/huggingface/index.html)를 참조하세요.

SageMaker Python SDK를 사용하면 다음과 같은 환경에서 Hugging Face Estimator를 사용하여 훈련 작업을 실행할 수 있습니다.
+ [Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html): Studio Classic은 기계 학습(ML)을 위한 최초의 완전 통합 개발 환경(IDE)입니다. Studio Classic은 다음에 필요한 모든 ML 개발 단계를 수행할 수 있는 단일 웹 기반 시각적 인터페이스를 제공합니다.
  + 준비
  + build
  + 훈련 및 조정
  + 모델 배포 및 관리

  Studio Classic에서 Jupyter Notebook을 사용하는 방법에 대한 자세한 내용은 [Amazon SageMaker Studio Classic 노트북 사용](notebooks.md) 섹션을 참조하세요.
+ [SageMaker 노트북 인스턴스](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html): Amazon SageMaker 노트북 인스턴스는 Jupyter Notebook 앱을 실행하는 기계 학습(ML) 컴퓨팅 인스턴스입니다. 이 앱을 사용하면 노트북 인스턴스에서 Jupyter Notebook을 실행하여 다음을 수행할 수 있습니다.
  + 데이터 준비 및 처리
  + 모델을 훈련하기 위한 코드 작성
  + SageMaker AI 호스팅에 모델 배포
  + Debugger, Model Monitoring 및 웹 기반 IDE와 같은 SageMaker Studio 기능 없이 모델 테스트 또는 검증
+ 로컬:에 연결되어 AWS 있고 적절한 SageMaker AI 권한이 있는 경우 SageMaker Python SDK를 로컬에서 사용할 수 있습니다. 로컬에서 사용하면 AWS에서 SageMaker AI의 Hugging Face에 대한 원격 훈련 및 추론 작업을 시작할 수 있습니다. 이는 로컬 시스템과 연결된 SageMaker Python SDK 및 적절한 권한이 있는 다른 AWS 서비스에서 작동합니다.

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

추론의 경우 훈련된 Hugging Face 모델 또는 사전 훈련된 Hugging Face 모델 중 하나를 사용하여 SageMaker AI로 추론 작업을 배포할 수 있습니다. 이 협업을 통해 SageMaker AI를 통해 훈련된 모델과 사전 훈련된 모델을 모두 배포하는 데 단 한 줄의 코드만 있으면 됩니다. 또한 사용자 지정 추론 코드를 작성할 필요 없이 추론 작업을 실행할 수 있습니다. 사용자 지정 추론 코드를 사용하면 고유한 Python 스크립트를 제공하여 추론 로직을 사용자 지정할 수 있습니다.

### Hugging Face 딥 러닝 컨테이너를 사용하여 추론 작업을 배포하는 방법
<a name="hugging-face-inference-using"></a>

SageMaker AI를 사용하여 추론을 실행하는 데는 두 가지 옵션이 있습니다. 훈련한 모델을 사용하여 추론을 실행하거나 사전 훈련된 Hugging Face 모델을 배포할 수 있습니다.
+ **훈련된 모델로 추론 실행**: 훈련된 자체 모델을 사용하여 추론을 실행하는 두 가지 옵션이 있습니다.
  + 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)에 나온 것과 같이 추론을 실행할 때 해당 버킷을 수집합니다.
+ **사전 훈련된 HuggingFace 모델로 추론 실행: **사전 훈련된 수천 개의 Hugging Face 모델 중 하나를 사용하여 추가 훈련 없이 추론 작업을 실행할 수 있습니다. 추론을 실행하려면 추론을 위해 [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 노트북 리포지토리에 있는 다음 노트북은 다양한 사용 사례에서 SageMaker AI와 함께 Hugging Face Deep Learning Containers를 사용하는 방법을 보여줍니다.

PyTorch와 함께 SageMaker AI에서 Hugging Face를 사용하여 텍스트 분류 모델을 훈련하고 배포하고 싶습니다.  
예제 Jupyter Notebook은 [PyTorch 시작하기 데모](https://github.com/huggingface/notebooks/blob/main/sagemaker/01_getting_started_pytorch/sagemaker-notebook.ipynb)를 참조하세요.

TensorFlow와 함께 SageMaker AI에서 Hugging Face를 사용하여 텍스트 분류 모델을 훈련하고 배포하고 싶습니다.  
예제 Jupyter Notebook은 [TensorFlow 시작하기 예제](https://github.com/huggingface/notebooks/blob/main/sagemaker/02_getting_started_tensorflow/sagemaker-notebook.ipynb)를 참조하세요.

Hugging Face와 SageMaker AI Distributed를 사용하여 데이터 병렬화 방식의 분산형 훈련을 실행하고자 합니다.  
예제 Jupyter Notebook은 [분산 훈련 예제](https://github.com/huggingface/notebooks/blob/main/sagemaker/03_distributed_training_data_parallelism/sagemaker-notebook.ipynb)를 참조하세요.

Hugging Face와 SageMaker AI Distributed를 사용하여 모델 병렬화 방식의 분산형 훈련을 실행하고자 합니다.  
예제 Jupyter Notebook은 [모델 병렬화 예제](https://github.com/huggingface/notebooks/blob/main/sagemaker/04_distributed_training_model_parallelism/sagemaker-notebook.ipynb)를 참조하세요.

SageMaker AI에서 Hugging Face를 사용하여 모델을 훈련하고 배포하기 위해 스팟 인스턴스를 사용하고 싶습니다.  
예제 Jupyter Notebook은 [스팟 인스턴스 예제](https://github.com/huggingface/notebooks/blob/main/sagemaker/05_spot_instances/sagemaker-notebook.ipynb)를 참조하세요.

SageMaker AI에서 Hugging Face를 사용하여 텍스트 분류 모델을 훈련할 때 사용자 지정 지표를 캡처하고 SageMaker AI Checkpointing을 사용하고 싶습니다.  
예제 Jupyter Notebook은 [사용자 지정 메트릭을 사용한 훈련 예제](https://github.com/huggingface/notebooks/blob/main/sagemaker/06_sagemaker_metrics/sagemaker-notebook.ipynb)를 참조하세요.

SageMaker AI에서 Hugging Face를 사용하여 분산 질문 답변 TensorFlow 모델을 훈련하고 싶습니다.  
예제 Jupyter Notebook은 [분산 TensorFlow 훈련 예제](https://github.com/huggingface/notebooks/blob/main/sagemaker/07_tensorflow_distributed_training_data_parallelism/sagemaker-notebook.ipynb)를 참조하세요.

SageMaker AI에서 Hugging Face를 사용하여 분산 요약 모델을 훈련하고 싶습니다.  
예제 Jupyter Notebook은 [분산 요약 훈련 예제](https://github.com/huggingface/notebooks/blob/main/sagemaker/08_distributed_summarization_bart_t5/sagemaker-notebook.ipynb)를 참조하세요.

SageMaker AI에서 Hugging Face를 사용하여 이미지 분류 모델을 훈련하고 싶습니다.  
예제 Jupyter Notebook은 [Vision Transformer 훈련 예제](https://github.com/huggingface/notebooks/blob/main/sagemaker/09_image_classification_vision_transformer/sagemaker-notebook.ipynb)를 참조하세요.

훈련된 Hugging Face 모델을 SageMaker AI에 배포하고 싶습니다.  
예제 Jupyter Notebook은 [추론 예시를 위해 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 AI에 배포하고 싶습니다.  
예제 Jupyter Notebook은 [추론 예시를 위해 사전 훈련된 Hugging Face Transformer 배포](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 코드를 사용하는 모델을 훈련 및 배포할 수 있습니다. SageMaker AI Python SDK PyTorch 예측기 및 모델과 SageMaker AI 오픈 소스 PyTorch 컨테이너를 사용하면 보다 쉽게 PyTorch 스크립트를 작성해 SageMaker AI에서 실행할 수 있습니다. 다음 섹션에서는 PyTorch를 SageMaker AI와 함께 사용하는 방법을 배우는 데 사용할 수 있는 참조 자료를 제공합니다.

## 어떤 작업을 수행하려고 합니까?
<a name="pytorch-intent"></a>

SageMaker AI에서 사용자 지정 PyTorch 모델을 훈련하고 싶습니다.  
예시 Jupyter Notebook은 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 엔드포인트에 배포하려고 합니다.  
자세한 내용은 [자체 PyTorch 모델 배포](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 Container GitHub 리포지토리](https://github.com/aws/deep-learning-containers/tree/master/pytorch)를 참조하세요.

 AWS 딥 러닝 컨테이너에서 지원하는 PyTorch 버전에 대한 정보를 찾고 싶습니다.  
자세한 내용은 [사용 가능한 딥 러닝 컨테이너 이미지](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)를 참조하세요.

 SageMaker AI를 사용한 PyTorch 훈련 스크립트 작성과 에서 PyTorch 예측기 및 모델 사용에 대한 일반 정보는 [Using PyTorch with the SageMaker Python SDK](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을 시작하는 방법을 설명하고, 몇 가지 예시 노트북을 제공합니다.

예시는 초급, 중급, 고급의 세 가지 레벨로 구성됩니다. [Getting Started with R on SageMaker AI](https://sagemaker-examples.readthedocs.io/en/latest/r_examples/r_sagemaker_hello_world/r_sagemaker_hello_world.html)에서 시작하여 R on SageMaker AI를 이용한 엔드투엔드 기계 학습으로 이어진 다음, R 스크립트를 사용한 SageMaker Processing 및 SageMaker AI에 자체 R 알고리즘 가져오기와 같은 고급 주제로 마무리합니다.

사용자 지정 R 이미지를 Studio로 가져오는 방법에 대한 자세한 내용은 [Amazon SageMaker Studio Classic의 사용자 지정 이미지](studio-byoi.md)을 참조하세요. 비슷한 블로그 기사를 보려면 [Amazon SageMaker Studio에 자체 R 환경 가져오기](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 커널에는 R에서 Python으로 변환하는 인터페이스인 reticulate 라이브러리가 있으므로 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>

**사전 조건**
+ [Getting Started with R on SageMaker AI](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)를 다운로드한 뒤 데이터에 대한 기본적인 처리 및 시각화 작업을 수행한 다음 데이터를 S3에 .csv 형식으로 저장합니다.

**초급 레벨**
+ [SageMaker AI Batch Transform using R Kernel](https://sagemaker-examples.readthedocs.io/en/latest/r_examples/r_batch_transform/r_xgboost_batch_transform.html) - 이 샘플 노트북에서는 SageMaker AI의 변환기 API 및 [XGBoost 알고리즘](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html)을 사용하여 일괄 변환 작업을 수행하는 방법을 설명합니다. 이 노트북은 Abalone 데이터세트도 사용합니다.

**중급 레벨**
+ [Hyperparameter Optimization for XGBoost in R](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)를 통한 모델 조정 방법에 대해 설명합니다.또한 일괄 예측을 위해 일괄 변환을 사용하는 방법과 실시간 예측을 수행하기 위해 모델 엔드포인트를 생성하는 방법도 배웁니다.
+ [Amazon SageMaker Processing with R](https://sagemaker-examples.readthedocs.io/en/latest/r_examples/r_in_sagemaker_processing/r_in_sagemaker_processing.html) - [SageMaker Processing](https://aws.amazon.com/blogs/aws/amazon-sagemaker-processing-fully-managed-data-processing-and-model-evaluation/)을 통해 모델 평가 워크로드를 사전 처리, 사후 처리 및 실행할 수 있습니다. 이 예제에서는 Processing 작업을 오케스트레이션하기 위해 R 스크립트를 생성하는 방법을 보여 줍니다.

**고급 레벨**
+ [Train and Deploy Your Own R Algorithm in SageMaker AI](https://sagemaker-examples.readthedocs.io/en/latest/r_examples/r_byo_r_algo_hpo/tune_r_bring_your_own.html) - 이미 R 알고리즘이 있고 이를 조정, 훈련 또는 배포하기 위해 이를 SageMaker AI에 가져오고 싶으신가요? 이 예시는 R-origin 모델에서 추론을 위해 호스팅된 엔드포인트를 사용할 수 있도록 사용자 지정 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 열기**를 선택합니다.  
![\[콘솔에서 서비스 중 상태 및 Jupyter 열기 링크의 위치입니다.\]](http://docs.aws.amazon.com/ko_kr/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/ko_kr/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/ko_kr/sagemaker/latest/dg/images/An-R-User-Guide-to-SageMaker/An-R-User-Guide-to-SageMaker-3.png)

또는 Jupyter Notebook을 사용하는 경우 **커널** 메뉴를 사용하여 **커널 변경** 하위 메뉴에서 **R**을 선택할 수 있습니다.

![\[노트북 커널을 R로 변경하는 위치입니다.\]](http://docs.aws.amazon.com/ko_kr/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 컨테이너를 사용하면 보다 쉽게 Scikit-learn 스크립트를 작성해 SageMaker AI에서 실행할 수 있습니다. 다음 섹션에서는 Scikit-learn을 SageMaker AI와 함께 사용하는 방법을 배우는 데 사용할 수 있는 참조 자료를 제공합니다.

**요구 사항**

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 훈련 스크립트 작성 및 SageMaker AI에서 Scikit-learn 예측기 및 모델 사용에 대한 일반 정보는 [Using Scikit-learn with the SageMaker Python SDK](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 Notebook은 [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 adds Scikit-Learn support](https://aws.amazon.com/blogs/machine-learning/amazon-sagemaker-adds-scikit-learn-support/)를 참조하세요.  
설명서는 [ReadTheDocs](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_processing.html#data-pre-processing-and-model-evaluation-with-scikit-learn)를 참조하세요.

SageMaker AI에서 사용자 지정 Scikit-learn 모델을 훈련하고 싶습니다.  
예제 Jupyter Notebook은 [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 AI 오픈 소스 SparkML Serving 컨테이너는 추론을 얻기 위해 SageMaker AI에서 MLeap을 사용하여 직렬화된 Apache Spark ML 파이프라인 배포를 지원합니다. 다음 리소스를 사용하여 SageMaker AI에서 SparkML Serving을 사용하는 방법을 알아봅니다.

SparkML 서빙 컨테이너를 사용하여 SageMaker AI에 모델을 배포하는 방법에 대한 자세한 내용은 [SageMaker SparkML Container 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 Notebook은 [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 Container GitHub 리포지토리](https://github.com/aws/sagemaker-tensorflow-container)를 참조하세요.

 AWS 딥 러닝 컨테이너에서 지원하는 TensorFlow 버전에 대한 정보를 찾고 싶습니다.  
자세한 내용은 [사용 가능한 딥 러닝 컨테이너 이미지](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)를 참조하세요.

 TensorFlow 스크립트 모드 훈련 스크립트 작성과 SageMaker AI에서 TensorFlow 스크립트 모드 예측기 및 모델 사용에 대한 일반 정보는 [Using TensorFlow with the SageMaker Python SDK](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 이하를 지원하는 레거시 모드를 제공합니다. 다음과 같은 경우 SageMaker AI에서 레거시 모드 TensorFlow 훈련 스크립트를 사용하여 TensorFlow 작업을 실행하세요.
+ 스크립트 모드로 변환하지 않으려는 기존 레거시 모드 스크립트가 있는 경우
+ TensorFlow 1.11 이전 버전을 사용하려는 경우

SageMaker AI Python SDK와 함께 사용할 레거시 모드 TensorFlow 스크립트를 작성하는 방법에 대한 자세한 내용은 [TensorFlow SageMaker Estimators and Models](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에서 성능을 최적화할 수 있는 유용한 환경 변수가 포함됩니다. 사용 가능한 모든 딥 러닝 컨테이너 이미지 목록은 [사용 가능한 딥 러닝 컨테이너 이미지](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)를 참조하세요. 딥 러닝 컨테이너 이미지는 보안 패치를 통해 유지 관리되고 정기적으로 업데이트됩니다.

SageMaker AI 모델의 다른 컨테이너와 마찬가지로 SageMaker Python SDK와 함께 Triton Inference Server Container를 사용할 수 있습니다. 하지만 SageMaker Python SDK를 사용하는 것은 선택 사항입니다. Triton 추론 서버 컨테이너는 AWS CLI 및와 함께 사용할 수 있습니다 AWS SDK for Python (Boto3).

NVIDIA Triton Inference Server에 대한 자세한 내용은 [Triton 설명서](https://docs.nvidia.com/deeplearning/triton-inference-server/#)를 참조하세요.

## Inference
<a name="triton-inference"></a>

**참고**  
Triton Python 백엔드는 공유 메모리(SHMEM)를 사용하여 코드를 Triton에 연결합니다. SageMaker AI Inference는 인스턴스 메모리의 최대 절반을 SHMEM으로 제공하므로 더 큰 SHMEM 크기를 위해 메모리가 더 많은 인스턴스를 사용할 수 있습니다.

추론의 경우 Triton Inference Server와 함께 훈련된 ML 모델을 사용하여 SageMaker AI와 함께 추론 작업을 배포할 수 있습니다.

Triton 추론 서버 컨테이너의 주요 기능 중 일부는 다음과 같습니다.
+ **다중 프레임워크 지원**: Triton을 사용하여 모든 주요 ML 프레임워크의 모델을 배포할 수 있습니다. Triton은 TensorFlow GraphDef 및 SavedModel, ONNX, PyTorch Torch Script, TensorRT 및 사용자 지정 Python/C\$1 모델 형식을 지원합니다.
+ **모델 파이프라인**: Triton 모델 앙상블은 전/후 처리 로직과 이들 사이의 입력 및 출력 텐서 연결을 갖춘 하나의 모델의 파이프라인을 나타냅니다. 앙상블에 대한 단일 추론 요청은 전체 파이프라인의 실행을 트리거합니다.
+ **동시 모델 실행**: 동일한 모델의 여러 인스턴스를 동일한 GPU 또는 여러 GPU에서 동시에 실행할 수 있습니다.
+ **동적 일괄 처리**: 일괄 처리를 지원하는 모델의 경우 Triton에는 개별 추론 요청을 결합하여 추론 처리량을 개선하는 여러 개의 기본 제공 스케줄링 및 일괄 처리 알고리즘이 있습니다. 이러한 스케줄링 및 일괄 처리 결정은 추론을 요청하는 클라이언트에게 투명합니다.
+ **다양한 CPU 및 GPU 지원**: CPU 또는 GPU에서 모델을 실행하여 유연성을 극대화하고 이기종 컴퓨팅 요구 사항을 지원할 수 있습니다.

## 어떤 작업을 수행하려고 합니까?
<a name="triton-do"></a>

훈련된 PyTorch 모델을 SageMaker AI에 배포하고 싶습니다.  
예제 Jupyter Notebook은 [Triton Inference Server를 사용하여 PyTorch Resnet50 모델 배포하기 예제](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-triton/resnet50/triton_resnet50.ipynb)를 참조하세요.

훈련된 Hugging Face 모델을 SageMaker AI에 배포하고 싶습니다.  
예제 Jupyter Notebook은 [Triton Inference Server를 사용하여 PyTorch BERT 모델 배포하기 예제](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-triton/nlp_bert/triton_nlp_bert.ipynb)를 참조하세요.