

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

# 빠른 시작: SageMaker AI 샌드박스 도메인을 만들어 Studio에서 Amazon EMR 클러스터 시작
<a name="studio-notebooks-emr-cluster-quickstart"></a>

이 섹션에서는 Amazon SageMaker Studio에서 전체 테스트 환경을 빠르게 설정하는 방법을 안내합니다. 사용자가 Studio에서 직접 새 Amazon EMR 클러스터를 시작할 수 있는 새 Studio 도메인을 만듭니다. 이 단계에서는 Amazon EMR 클러스터에 연결하여 Spark 워크로드 실행을 시작할 수 있는 예시 노트북을 제공합니다. 이 노트북을 사용하여 Amazon EMR Spark 분산 처리 및 OpenSearch 벡터 데이터베이스를 사용하여 검색 증강 생성(RAG)을 구축합니다.

**참고**  
시작하려면 관리자 권한이 있는 AWS Identity and Access Management (IAM) 사용자 계정을 사용하여 AWS Management Console에 로그인합니다. AWS 계정에 가입하고 관리 액세스 권한이 있는 사용자를 만드는 방법에 대한 자세한 내용은 [Amazon SageMaker AI 사전 조건 충족](gs-set-up.md) 섹션을 참조하세요.

**Studio 테스트 환경을 설정하고 Spark 작업 실행을 시작하는 방법:**
+ [1단계: Studio에서 Amazon EMR 클러스터를 시작하기 위한 SageMaker AI 도메인 만들기](#studio-notebooks-emr-cluster-quickstart-setup)
+ [2단계: Studio UI에서 새 Amazon EMR 클러스터 시작](#studio-notebooks-emr-cluster-quickstart-launch)
+ [3단계: JupyterLab 노트북을 Amazon EMR 클러스터에 연결](#studio-notebooks-emr-cluster-quickstart-connect)
+ [4단계: CloudFormation 스택 정리](#studio-notebooks-emr-cluster-quickstart-clean-stack)

## 1단계: Studio에서 Amazon EMR 클러스터를 시작하기 위한 SageMaker AI 도메인 만들기
<a name="studio-notebooks-emr-cluster-quickstart-setup"></a>

다음 단계에서는 CloudFormation 스택을 적용하여 새 SageMaker AI 도메인을 자동으로 생성합니다. 또한 스택은 사용자 프로필을 만들고 필요한 환경 및 권한을 구성합니다. SageMaker AI 도메인은 Studio에서 Amazon EMR 클러스터를 직접 시작할 수 있도록 구성됩니다. 이 예에서 Amazon EMR 클러스터는 인증 없이 SageMaker AI와 동일한 AWS 계정에 만들어집니다. [get\$1started](https://github.com/aws-samples/sagemaker-studio-emr/tree/main/cloudformation/getting_started) GitHub 리포지토리에서 Kerberos와 같은 다양한 인증 방법을 지원하는 추가 CloudFormation 스택을 찾을 수 있습니다.

**참고**  
SageMaker AI는 AWS 리전 기본적으로 AWS 계정당 5개의 Studio 도메인을 허용합니다. 스택을 만들기 전에 계정에 리전에 도메인이 4개 이하인지 확인하세요.

**Studio에서 Amazon EMR 클러스터를 시작하기 위한 SageMaker AI 도메인을 설정하려면 다음 단계를 따르세요.**

1. `sagemaker-studio-emr` GitHub 리포지토리에서 이 [CloudFormation 템플릿](https://github.com/aws-samples/sagemaker-studio-foundation-models/blob/main/workshop-artifacts/cfn/workshop-cfn.yaml)의 원시 파일을 다운로드합니다.

1.  CloudFormation 콘솔로 이동: [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)

1. **스택 만들기**를 선택한 다음 드롭다운 메뉴에서 **새 리소스 사용(표준)**을 선택합니다.

1. **1단계**에서:

   1. **템플릿 준비** 섹션에서 **기존 템플릿 선택**을 선택합니다.

   1. **템플릿 지정** 섹션에서 **템플릿 파일 업로드**를 선택합니다.

   1. 다운로드한 CloudFormation 템플릿을 업로드하고 **다음을** 선택합니다.

1. **2단계**에서 **스택 이름**과 **SageMakerDomainName**을 입력한 후, **다음**을 선택합니다.

1. **3단계**에서 모든 기본값을 유지하고 **다음**을 선택합니다.

1. **4단계**에서 확인란을 선택하여 리소스 만들기를 확인하고 **스택 만들기**를 선택합니다. 이렇게 하면 계정 및 리전에 Studio 도메인이 만들어집니다.

## 2단계: Studio UI에서 새 Amazon EMR 클러스터 시작
<a name="studio-notebooks-emr-cluster-quickstart-launch"></a>

아래 단계에서는 Studio UI에서 새 Amazon EMR 클러스터를 만듭니다.

1. SageMaker AI 콘솔([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/))로 이동한 후 왼쪽 메뉴에서 **도메인**을 선택합니다.

1. 도메인 이름(**GenerativeAIDomain**)을 클릭하여 **도메인 세부 정보** 페이지를 엽니다.

1. 사용자 프로필 `genai-user`에서 Studio를 시작합니다.

1. 왼쪽 탐색 창에서 **데이터**로 이동한 다음 **Amazon EMR 클러스터**로 이동합니다.

1. Amazon EMR 클러스터 페이지에서 **만들기**를 선택합니다. CloudFormation 스택에서 만든 **SageMaker Studio 도메인 인증 없음 EMR** 템플릿을 선택한 후, **다음**을 선택합니다.

1. 새 Amazon EMR 클러스터의 이름을 입력합니다. 선택적으로 코어 및 마스터 노드의 인스턴스 유형, 유휴 제한 시간 또는 코어 노드 수와 같은 다른 파라미터를 업데이트합니다.

1. **리소스 만들기**를 선택하여 새 Amazon EMR 클러스터를 시작합니다.

   Amazon EMR 클러스터를 만든 후 **EMR 클러스터** 페이지의 상태를 따릅니다. 상태가 `Running/Waiting`으로 변경되면 Amazon EMR 클러스터를 Studio에서 사용할 준비가 된 것입니다.

## 3단계: JupyterLab 노트북을 Amazon EMR 클러스터에 연결
<a name="studio-notebooks-emr-cluster-quickstart-connect"></a>

아래 단계에서는 JupyterLab의 노트북을 실행 중인 Amazon EMR 클러스터에 연결합니다. 이 예에서는 노트북을 가져와 Amazon EMR Spark 분산 처리 및 OpenSearch 벡터 데이터베이스를 사용하여 검색 증강 생성(RAG) 시스템을 구축합니다.

1. 

**JupyterLab 시작**

   Studio에서 JupyterLab 애플리케이션을 시작합니다.

1. 

**프라이빗 공간 만들기**

   JupyterLab 애플리케이션을 위한 공간을 만들지 않은 경우 **JupyterLab 공간 만들기**를 선택합니다. 공간의 이름을 입력하고 공간을 **프라이빗**으로 유지합니다. 다른 모든 설정은 기본값으로 두고 **공간 만들기**를 선택합니다.

   아니면 JupyterLab 공간을 실행하여 JupyterLab 애플리케이션을 시작합니다.

1. 

**추론을 위한 LLM 및 임베딩 모델 배포**
   + 상단 메뉴에서 **파일**을 선택한 다음 **새로 만들기**와 **터미널**을 차례로 선택합니다.
   + 터미널에서 다음 명령을 실행합니다.

     ```
     wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-00-setup/Lab_0_Warm_Up_Deploy_EmbeddingModel_Llama2_on_Nvidia.ipynb
     mkdir AWSGuides
     cd AWSGuides
     wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-03-rag/AWSGuides/AmazonSageMakerDeveloperGuide.pdf
     wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-03-rag/AWSGuides/EC2DeveloperGuide.pdf
     wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-03-rag/AWSGuides/S3DeveloperGuide.pdf
     ```

     그러면 `Lab_0_Warm_Up_Deploy_EmbeddingModel_Llama2_on_Nvidia.ipynb` 노트북이 로컬 디렉터리로 검색되고 3개의 PDF 파일이 로컬 `AWSGuides` 폴더에 다운로드됩니다.
   + `lab-00-setup/Lab_0_Warm_Up_Deploy_EmbeddingModel_Llama2_on_Nvidia.ipynb`를 열고 `Python 3 (ipykernel)` 커널을 유지한 다음 각 셀을 실행합니다.
**주의**  
계속하기 전에 **Llama 2 라이선스 계약** 섹션에서 Llama2 EULA를 수락해야 합니다.  
노트북은 추론을 위해 `Llama 2` 및 `all-MiniLM-L6-v2 Models`이라는 두 모델을 `ml.g5.2xlarge`에 배포합니다.

     모델을 배포하고 엔드포인트를 만드는 데 시간이 걸릴 수 있습니다.

1. 

**기본 노트북 열기**

   JupyterLab에서 터미널을 열고 다음 명령을 실행합니다.

   ```
   cd ..
   wget --no-check-certificate https://raw.githubusercontent.com/aws-samples/sagemaker-studio-foundation-models/main/lab-03-rag/Lab_3_RAG_on_SageMaker_Studio_using_EMR.ipynb
   ```

   JupyterLab 의 왼쪽 패널에 추가 `Lab_3_RAG_on_SageMaker_Studio_using_EMR.ipynb` 노트북이 표시됩니다.

1. 

**`PySpark` 커널 선택**

   `Lab_3_RAG_on_SageMaker_Studio_using_EMR.ipynb` 노트북을 열고 `SparkMagic PySpark` 커널을 사용하고 있는지 확인합니다. 노트북의 오른쪽 상단에서 커널을 전환할 수 있습니다. 현재 커널 이름을 선택하여 커널 선택 모달을 연 다음 `SparkMagic PySpark`를 선택합니다.

1. 

**클러스터에 노트북 연결**

   1. 노트북 오른쪽 상단에서 **클러스터**를 선택합니다. 이 작업을 수행하면 액세스 권한이 있는 실행 중인 모든 클러스터가 나열된 모달 창이 열립니다.

   1. 클러스터를 선택하고 **연결**을 선택합니다. 새 자격 증명 유형 선택 모달 창이 열립니다.

   1. **자격 증명 없음**을 선택한 다음 **연결**을 선택합니다.  
![\[JupyterLab 노트북에 대한 Amazon EMR 자격 증명 선택을 보여주는 모달입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/emr/studio-notebooks-emr-credential-selection.png)

   1. 노트북 셀이 자동으로 채워지고 실행됩니다. 노트북 셀은 Amazon EMR 클러스터에 연결하는 기능을 제공하는 `sagemaker_studio_analytics_extension.magics` 확장을 로드합니다. 그런 다음 `%sm_analytics` 매직 명령을 사용하여 Amazon EMR 클러스터 및 Spark 애플리케이션에 대한 연결을 시작합니다.
**참고**  
Amazon EMR 클러스터에 대한 연결 문자열에 인증 유형이 `None`으로 설정되어 있는지 확인합니다. 이는 다음 예에서 `--auth-type None` 값으로 표시됩니다. 필요한 경우 필드를 수정할 수 있습니다.  

      ```
      %load_ext sagemaker_studio_analytics_extension.magics
      %sm_analytics emr connect --verify-certificate False --cluster-id your-cluster-id --auth-type None --language python
      ```

   1. 연결을 성공적으로 설정하면 연결 셀 출력 메시지에 클러스터 ID, `YARN` 애플리케이션 ID, Spark 작업을 모니터링하기 위한 Spark UI 링크를 포함한 `SparkSession` 세부 정보가 표시됩니다.

`Lab_3_RAG_on_SageMaker_Studio_using_EMR.ipynb` 노트북을 사용할 준비가 되었습니다. 이 예시 노트북은 LangChain 및 OpenSearch를 사용하여 RAG 시스템을 구축하기 위해 분산 PySpark 워크로드를 실행합니다.

## 4단계: CloudFormation 스택 정리
<a name="studio-notebooks-emr-cluster-quickstart-clean-stack"></a>

완료 후에는 두 엔드포인트를 종료하고 CloudFormation 스택을 삭제하여 요금이 지속적으로 발생하는 것을 방지해야 합니다. 스택을 삭제하면 스택에서 프로비저닝한 모든 리소스가 정리됩니다.

**스택 작업을 마쳤을 때 CloudFormation 스택을 삭제하려면**

1.  CloudFormation 콘솔로 이동: [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)

1. 삭제할 스택을 선택합니다. 이름으로 검색하거나 스택 목록에서 찾을 수 있습니다.

1. **삭제** 버튼을 클릭하여 스택 삭제를 완료한 다음 **삭제**를 다시 클릭하여 스택에서 만든 모든 리소스가 삭제됨을 확인합니다.

   스택 삭제가 완료될 때까지 기다립니다. 몇 분 정도 걸릴 수 있습니다. CloudFormation 은 스택 템플릿에 정의된 모든 리소스를 자동으로 정리합니다.

1. 스택에서 만든 모든 리소스가 삭제되었는지 확인합니다. 예를 들어 남은 Amazon EMR 클러스터가 있는지 확인합니다.

**모델의 API 엔드포인트를 제거하는 방법**

1. SageMaker AI 콘솔([https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/))로 이동합니다.

1. 탐색 창에서 **추론**을 선택하고 **엔드포인트**를 선택합니다.

1. `hf-allminil6v2-embedding-ep` 엔드포인트를 선택한 다음 **작업** 드롭다운 목록에서 **삭제**를 선택합니다. `meta-llama2-7b-chat-tg-ep` 엔드포인트에 대해 단계를 반복합니다.