View a markdown version of this page

선별된 허브 모델 미세 조정 - Amazon SageMaker AI

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

선별된 허브 모델 미세 조정

선별된 프라이빗 모델 허브에서 모델 참조를 사용하여 미세 조정 훈련 작업을 실행할 수 있습니다. 모델 참조는 SageMaker AI 퍼블릭 허브에서 공개적으로 사용 가능한 JumpStart 모델을 가리키지만, 특정 사용 사례에 맞게 자체 데이터에서 모델을 미세 조정할 수 있습니다. 미세 조정 작업 후에는 사용 또는 엔드포인트에 배포할 수 있는 모델 가중치에 액세스할 수 있습니다.

SageMaker Python SDK를 사용하여 단 몇 줄의 코드로 선별된 허브 모델을 미세 조정할 수 있습니다. 공개적으로 사용 가능한 JumpStart 모델을 미세 조정하는 방법에 관한 자세한 내용은 미세 조정을 위한 파운데이션 모델 및 하이퍼파라미터 섹션을 참조하세요.

사전 조건

선별된 허브에서 JumpStart 모델 참조를 미세 조정하려면 다음과 같이 합니다.

  1. 사용자의 IAM 역할에 SageMaker AI TrainHubModel 권한이 연결되어 있는지 확인합니다. 자세한 내용은 AWS IAM 사용 설명서IAM 자격 증명 권한 추가 및 제거를 참조하세요.

    IAM 역할에 다음 예시와 같은 정책을 연결할 수 있습니다.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sagemaker:TrainHubModel", "Resource": "arn:aws:sagemaker:*:111122223333:hub/*" } ] }
    참고

    선별된 허브가 계정 간에 공유되고 허브 콘텐츠를 다른 계정에서 소유한 경우 다음 예시와 같이 HubContent(모델 참조 리소스)가 요청 계정에 TrainHubModel 권한을 부여하는 리소스 기반 IAM 정책이 있는지도 확인합니다.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "sagemaker:TrainHubModel" ], "Resource": [ "arn:aws:sagemaker:*:111122223333:hub/*" ] } ] }
  2. 미세 조정하려는 JumpStart 모델에 대한 모델 참조가 포함된 선별된 프라이빗 허브가 있어야 합니다. 프라이빗 허브 만들기에 관한 자세한 내용은 프라이빗 모델 허브 생성 섹션을 참조하세요. 공개적으로 사용 가능한 JumpStart 모델을 프라이빗 허브에 추가하는 방법은 프라이빗 허브에 모델 추가 섹션을 참조하세요.

    참고

    선택한 JumpStart 모델은 미세 조정이 가능해야 합니다. SageMaker Python SDK의 hub.list_sagemaker_public_hub_models() 메서드를 사용하여 프로그래밍 방식으로 사용 가능한 모델을 나열할 수 있습니다.

  3. 모델을 미세 조정하는 데 사용할 훈련 데이터세트가 있어야 합니다. 데이터세트는 미세 조정하려는 모델에 적절한 훈련 형식이어야 합니다.

선별된 허브 모델 참조 미세 조정

다음 절차에서는 SageMaker Python SDK를 사용하여 선별된 프라이빗 허브에서 모델 참조를 미세 조정하는 방법을 보여줍니다.

  1. 최신 버전(3.0.0 이상)의 SageMaker Python SDK가 설치되어 있는지 확인합니다. 자세한 내용은 문서 읽기 웹 사이트의 SageMaker Python SDK 버전 3.x 사용을 참조하세요.

    !pip install --upgrade sagemaker
  2. SageMaker Python SDK에서 필요한 AWS SDK for Python (Boto3) 및 모듈을 가져옵니다.

    import boto3 from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute, InputData from sagemaker.core.jumpstart.configs import JumpStartConfig from sagemaker.core.helper.session_helper import Session
  3. Boto3 세션, SageMaker AI 클라이언트 및 SageMaker Python SDK 세션을 초기화합니다.

    sagemaker_client = boto3.Session(region_name=<AWS-region>).client("sagemaker") sm_session = Session(sagemaker_client=sagemaker_client)
  4. ModelTrainer 사용하여를 생성하고 JumpStart 모델 ID, 모델 참조가 포함된 허브의 이름, SageMaker Python SDK 세션을 from_jumpstart_config 제공합니다. 프로그래밍 방식으로 사용 가능한 모델 IDs를 나열하려면 SageMaker Python SDK의 hub.list_sagemaker_public_hub_models() 메서드를 사용합니다.

    선택적으로 ModelTrainer를 생성할 때 instance_typeinstance_count 필드를 지정할 수 있습니다. 그렇지 않은 경우 훈련 작업은 사용 중인 모델에 대해 기본 인스턴스 유형과 개수를 사용합니다.

    또한 필요에 따라 미세 조정 모델 가중치를 저장하려는 Amazon S3 위치에 output_path를 지정할 수 있습니다. output_path를 지정하지 않으면 계정의 리전에 대해 다음 형식(sagemaker-<region>-<account-id>)으로 이름이 지정된 기본 SageMaker AI Amazon S3 버킷을 사용합니다.

    jumpstart_config = JumpStartConfig( model_id="meta-textgeneration-llama-3-2-1b", hub_name=<your-hub-name>, # For gated models, set accept_eula=True to accept the end-user license agreement. # This example uses False. Change it to True to accept the EULA for gated models. accept_eula=False, ) model_trainer = ModelTrainer.from_jumpstart_config( jumpstart_config=jumpstart_config, # Optional: specify your desired instance type and count for the training job. # compute=Compute(instance_type="ml.g5.2xlarge", instance_count=1), # Optional: specify a custom S3 location to store the fine-tuned model artifacts. # output_path="s3://<output-path-for-model-artifacts>", )
  5. InputData 객체를 생성합니다. channel_name를 로 train 설정하고 data_source를 미세 조정 데이터 세트의 위치로 설정합니다. 다음 예제에서를 데이터 세트의 Amazon S3 URI<your-fine-tuning-dataset>로 바꿉니다. 로컬 모드 또는 여러 훈련 데이터 채널 사용과 같은 추가 고려 사항이 있는 경우 문서 읽기 웹 사이트의 SageMaker Python SDK 설명서에서 SageMaker Train을 참조하세요. SageMaker

    training_input = InputData( channel_name="train", data_source="s3://<your-fine-tuning-dataset>", )
  6. 모델 트레이너의 train() 메서드를 호출하고 훈련 데이터를 전달합니다. train() 호출이 아닌 JumpStartConfig (이전 단계에 표시됨)에 대한 EULA 수락을 선언합니다.

    참고

    앞의 JumpStartConfig 예제에서는를 설정합니다accept_eula=False. 게이트 모델의 경우 EULA를 수락True하려면 값을 로 변경해야 합니다.

    model_trainer.train(input_data_config=[training_input])

이제 미세 조정 작업이 시작됩니다.

SageMaker AI 콘솔에서 또는 ListTrainingJobs API를 사용해 훈련 작업을 확인하여 미세 조정 작업을 점검할 수 있습니다.

ModelTrainer 객체에 지정된 Amazon S3 output_path(리전의 기본 SageMaker AI Amazon S3 버킷 또는 해당하는 경우 지정한 사용자 지정 Amazon S3 경로)에서 미세 조정 모델 아티팩트에 액세스할 수 있습니다.