

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

# Autopilot 모델 배포 및 예측
<a name="autopilot-llms-finetuning-deploy-models"></a>

대규모 언어 모델(LLM)을 미세 조정한 후에는 대화형 예측을 얻을 수 있도록 엔드포인트를 설정하여 실시간 텍스트 생성을 위한 모델을 배포할 수 있습니다.

**참고**  
성능을 높이려면 `ml.g5.12xlarge`에서 실시간 추론 작업을 실행하는 것이 좋습니다. 또는 Falcon-7B-Instruct 및 MPT-7B-Instruct 텍스트 생성 작업에 적합한 `ml.g5.8xlarge` 인스턴스를 사용할 수도 있습니다.  
Amazon EC2에서 제공하는 인스턴스 유형 선택의 [가속 컴퓨팅](https://aws.amazon.com/ec2/instance-types/) 범주에서 이러한 인스턴스에 대한 상세 내용을 찾을 수 있습니다.

## 실시간 텍스트 생성
<a name="autopilot-llms-finetuning-realtime"></a>

SageMaker API를 사용하여 미세 조정 모델을 SageMaker AI 호스팅 [실시간 추론 엔드포인트](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html)에 수동으로 배포한 다음, 다음과 같이 엔드포인트를 간접적으로 호출하여 예측을 시작할 수 있습니다.

**참고**  
또는 Autopilot에서 미세 조정 실험을 생성할 때 자동 배포 옵션을 선택할 수 있습니다. 모델 자동 배포 설정에 대한 자세한 내용은 [자동 배포를 활성화하는 방법](autopilot-create-experiment-finetune-llms.md#autopilot-llms-finetuning-auto-model-deployment) 섹션을 참조하세요.  
또한 SageMaker Python SDK와 `JumpStartModel` 클래스를 사용하여 Autopilot으로 미세 조정된 모델을 사용하여 추론을 수행할 수 있습니다. Amazon S3에서 모델 아티팩트의 사용자 지정 위치를 지정하여 이 작업을 수행할 수 있습니다. 모델을 JumpStart 모델로 정의하고 추론을 위해 모델을 배포하는 방법에 대한 자세한 내용은 [JumpStartModel 클래스를 사용한 로우 코드 배포](https://sagemaker.readthedocs.io/en/stable/overview.html#deploy-a-pre-trained-model-directly-to-a-sagemaker-endpoint)를 참조하세요.

1. **후보 추론 컨테이너 정의 가져오기**

   [DescribeAutoMLJobv2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html#API_DescribeAutoMLJobV2_ResponseSyntax) API 직접 호출에 대한 응답에서 검색된 `BestCandidate` 개체 내에서 `InferenceContainerDefinitions`을 찾을 수 있습니다. 추론을 위한 컨테이너 정의는 훈련된 모델을 배포하고 실행하여 예측하도록 설계된 컨테이너식 환경을 말합니다.

   다음 AWS CLI 명령 예제에서는 [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) API를 사용하여 작업 이름에 대한 권장 컨테이너 정의를 가져옵니다.

   ```
   aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name {{job-name}} --region {{region}}
   ```

1. **SageMaker AI 모델 만들기**

   이전 단계의 컨테이너 정의를 사용하여 [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) API를 사용하여 SageMaker AI 모델을 만듭니다. 다음 AWS CLI 명령을 예제로 참조하십시오. 모델 이름에는 `CandidateName`을 사용하세요.

   ```
   aws sagemaker create-model --model-name '{{<your-candidate-name>}}' \
                       --primary-container '{{<container-definition}}' \
                       --execution-role-arn '{{<execution-role-arn>}}' --region '{{<region>}}
   ```

1. **엔드포인트 구성 생성**

   다음 AWS CLI 명령 예제에서는 [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) API를 사용하여 엔드포인트 구성을 생성합니다.
**참고**  
모델 다운로드 시간이 오래 걸려 엔드포인트 생성 시간이 초과되는 것을 방지하려면 `ModelDataDownloadTimeoutInSeconds = 3600` 및 `ContainerStartupHealthCheckTimeoutInSeconds = 3600`를 설정하는 것이 좋습니다.

   ```
   aws sagemaker create-endpoint-config --endpoint-config-name '{{<your-endpoint-config-name>}}' \
                       --production-variants '{{<list-of-production-variants>}}' ModelDataDownloadTimeoutInSeconds=3600 ContainerStartupHealthCheckTimeoutInSeconds=3600 \
                       --region '{{<region>}}'
   ```

1. **엔드포인트 생성** 

   다음 AWS CLI 예제에서는 [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) API를 사용하여 엔드포인트를 생성합니다.

   ```
   aws sagemaker create-endpoint --endpoint-name '{{<your-endpoint-name>}}' \
                       --endpoint-config-name '{{<endpoint-config-name-you-just-created>}}' \
                       --region '{{<region>}}'
   ```

   [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html) API를 사용하여 엔드포인트 배포 진행 상황을 확인합니다. 다음 AWS CLI 명령을 예제로 참조하십시오.

   ```
   aws sagemaker describe-endpoint —endpoint-name '{{<endpoint-name>}}' —region {{<region>}}
   ```

   `EndpointStatus`가 `InService`로 변경되면 엔드포인트를 실시간 추론에 사용할 수 있습니다.

1. **엔드포인트 호출** 

   다음 명령은 실시간 추론을 위해 엔드포인트를 호출합니다. 프롬프트는 바이트 단위로 인코딩해야 합니다.
**참고**  
입력 프롬프트의 형식은 언어 모델에 따라 다릅니다. 텍스트 생성 프롬프트의 형식에 대한 자세한 내용은 [텍스트 생성 모델의 요청 형식 실시간 추론](#autopilot-llms-finetuning-realtime-prompt-examples) 섹션을 참조하세요.

   ```
   aws sagemaker invoke-endpoint --endpoint-name '{{<endpoint-name>}}' \ 
                     --region '{{<region>}}' --body '{{<your-promt-in-bytes>}}' [--content-type] 'application/json' {{<outfile>}}
   ```

## 텍스트 생성 모델의 요청 형식 실시간 추론
<a name="autopilot-llms-finetuning-realtime-prompt-examples"></a>

대규모 언어 모델(LLM)마다 특정 소프트웨어 종속성, 런타임 환경 및 하드웨어 요구 사항이 있을 수 있으며, 이는 추론을 위한 모델을 호스팅하는데 있어서 Autopilot의 권장 컨테이너에 영향을 미칠 수 있습니다. 또한 각 모델은 필요한 입력 데이터 형식과 예측 및 출력에 필요한 예상 형식을 지정합니다.

다음은 일부 모델 및 권장 컨테이너의 입력 예시입니다.
+ 권장 컨테이너 `huggingface-pytorch-tgi-inference:2.0.1-tgi1.0.3-gpu-py39-cu118-ubuntu20.04`가 있는 Falcon 모델의 경우:

  ```
  payload = {
      "inputs": "Large language model fine-tuning is defined as",
      "parameters": {
          "do_sample": false,
          "top_p": 0.9,
          "temperature": 0.1,
          "max_new_tokens": 128,
          "stop": ["<|endoftext|>", "</s>"]
      }
  }
  ```
+ 권장 컨테이너 `djl-inference:0.22.1-fastertransformer5.3.0-cu118`가 있는 다른 모든 모델의 경우:

  ```
  payload= {
      "text_inputs": "Large language model fine-tuning is defined as"
  }
  ```