Amazon Nova 추출 - Amazon SageMaker AI

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

Amazon Nova 추출

이 빠른 시작 안내서는 SageMaker AI에서 지도 미세 조정(SFT)을 사용하여 Amazon Nova 모델 추출을 시작하는 데 도움이 됩니다.

개념

모델 증류는 대규모 고급 모델의 지식을 더 작고 효율적인 모델로 전이하는 방법입니다. Amazon Nova 모델의 경우, 대형 '교사' 모델(예: Amazon Nova Pro 또는 Amazon Nova Premier)이 가진 능력을 소형 '학생' 모델(예: Amazon Nova Lite 또는 Amazon Nova Micro)에 전달합니다. 이를 통해 적은 자원으로도 높은 성능을 유지하는 사용자 지정 모델을 생성할 수 있습니다.

핵심 구성 요소

추출 프로세스에는 주로 두 가지 유형의 모델이 포함됩니다.

교사 모델은 지식 소스 역할을 하며 다음을 포함합니다.

  • Amazon Nova Pro(amazon.nova-pro-v1:0)

  • Amazon Nova Premier(amazon.nova-premier-v1:0)

학생 모델은 다음과 같은 지식을 얻고 구현합니다.

  • Amazon Nova Lite(amazon.nova-lite-v1:0:300k)

  • Amazon Nova Micro(amazon.nova-micro-v1:0:128k)

  • Amazon Nova Pro(amazon.nova-pro-v1:0:300k) - Amazon Nova Premier를 교사로 사용하는 경우에만 사용 가능

사용 사례

모드 추출은 다음과 같은 경우에 특히 유용합니다.

  • 애플리케이션에는 엄격한 지연 시간, 비용 및 정확도 요구 사항이 있습니다.

  • 특정 작업을 위한 사용자 지정 모델이 필요하지만 레이블이 지정된 고품질 훈련 데이터가 충분하지 않습니다.

  • 소형 모델의 효율성을 유지하면서 고급 모델의 성능을 일치시키고 싶습니다.

사전 조건

  • AWS 계정 Amazon Nova 모델 및 적절한 서비스 할당량(최소 P5 인스턴스 6개와 R5 인스턴스 1개).

  • SageMaker 훈련 작업에 대한 권한이 있는 IAM 역할입니다.

  • 훈련 데이터 및 출력을 저장하기 위한 Amazon S3 버킷입니다.

데이터 증강 설정

데이터 증강 단계에서는 SageMaker 훈련 작업을 사용하여 교사 모델을 사용하여 고품질 훈련 데이터를 생성합니다. 이 섹션에서는 설정 프로세스 및 요구 사항에 대해 자세히 설명합니다.

IAM 역할

IAM 역할을 생성하고 정책을 연결하려면 역할 생성 및 정책 연결(콘솔)을 참조하세요. 를 사용하는 경우 create-roleattach-role-policy의 지침을 AWS CLI따릅니다. 자세한 내용은 SageMaker AI 개발자 안내서의 SageMaker AI 실행 역할을 사용하는 방법을 참조하세요. SageMaker

다음은 참조용 명령의 예입니다.

SageMaker AI 실행 역할 생성

역할은 SageMaker AI, Amazon Bedrock이이 역할을 수임할 수 있도록 신뢰 관계를 사용하여 생성됩니다. 이렇게 하면 배치 추론 작업을 실행할 때 이러한 서비스가 사용자를 대신하여 작동할 수 있습니다.

aws iam create-role \ --role-name NovaCustomizationRole \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": ["sagemaker.amazonaws.com", "bedrock.amazonaws.com"] }, "Action": "sts:AssumeRole" } ] }'

필요한 정책 연결

# Attach AmazonSageMakerFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess # Attach AmazonBedrockFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonBedrockFullAccess # Attach S3 access policy aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess # Attach AmazonEC2FullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess # Attach AmazonEC2ContainerRegistryFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess # Attach AmazonEC2ContainerRegistryFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess

다음 인라인 정책을 Distillation Container에 필요한 고객 실행 역할에 연결합니다.

  • AWS KMS 권한: 역할이 암호화된 리소스에 액세스하거나 암호화 키를 관리하는 데 필요한 AWS Key Management Service와 상호 작용할 수 있도록 허용합니다.

  • IAM:PassRole:이 권한은 한 서비스가 서비스 AWS 통합의 일반적인 패턴인이 역할을 다른 서비스에 전달해야 할 때 종종 필요합니다.

aws iam put-role-policy \ --role-name NovaCustomizationRole \ --policy-name Distillation-Additional-Permissions\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*" } ] }

Amazon VPC 구성

를 사용하여 SageMaker AI 훈련 작업에 대한 Amazon VPC 구성을 생성하려면 SageMaker 훈련을 위한 프라이빗 VPC 구성(콘솔)의 지침을 AWS Management Console따르세요. SageMaker

새 Amazon VPC 생성

Name: Distillation-VPC IPv4 CIDR: 10.0.0.0/16 (or your preferred range) Availability Zones: 2 Public Subnets: 2 Private Subnets: 2 NAT Gateways: 1 (in one AZ)

보안 그룹 생성

Name: Distillation-SG Description: Security group for data distillation jobs Inbound Rules: Allow all traffic from self Outbound Rules: Allow all traffic (0.0.0.0/0)

다음 서비스에 대한 VPC 엔드포인트 생성

com.amazonaws.[region].s3 com.amazonaws.[region].sagemaker.api com.amazonaws.[region].sagemaker.runtime com.amazonaws.[region].bedrock.api com.amazonaws.[region].bedrock.runtime com.amazonaws.[region].sts com.amazonaws.[region].logs com.amazonaws.[region].ecr.api com.amazonaws.[region].ecr.dkr

각 엔드포인트에 대해:

  • Distillation-VPC 선택

  • 프라이빗 서브넷 선택

  • Distillation-SG 보안 그룹 선택

AWS KMS 키

Amazon Bedrock 배치 추론을 사용할 때는 데이터 보안 및 규정 준수를 위해 AWS KMS 키가 필요합니다. Amazon Bedrock 배치 추론 작업을 수행하려면 입력 및 출력 Amazon S3 버킷을 AWS KMS 키로 암호화하여 저장 데이터 보호를 보장해야 합니다.

다음 명령과 AWS CLI 함께를 사용하여 KMS 키를 생성합니다.

# Create KMS key aws kms create-key \ --description "KMS key for Amazon Bedrock batch inference Amazon S3 bucket" \ --region us-east-1

명령은 ARN을 포함한 키 정보를 출력합니다. 출력 예시:

{ "KeyMetadata": { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } }
참고

다음 섹션에서 Amazon S3 버킷을 생성하는 데 필요하므로 출력에서 KMS 키 ARN을 저장합니다.

Amazon S3 버킷

두 가지 유형의 Amazon S3 스토리지가 필요합니다. 고객 관리형 Amazon S3 버킷은 입력 데이터 및 출력 manifest.json 파일을 저장합니다. 이 버킷을 생성하고 관리하며 입력과 출력 모두에 단일 버킷을 사용할 수 있습니다. 이 버킷은 민감한 출력 데이터를 저장하고 Amazon Bedrock 배치 추론 작업에서 사용되므로 KMS 암호화로 구성해야 합니다. Amazon Bedrock에는 배치 추론 작업을 처리하기 위해 KMS로 암호화된 버킷이 필요합니다.

서비스 관리형 Amazon S3 버킷은 모델 가중치를 저장합니다. 서비스 관리형 Amazon S3 버킷은 첫 번째 훈련 작업 중에 자동으로 생성됩니다. 매니페스트 파일을 통해서만 특정 경로에 액세스할 수 있는 제한된 액세스 제어가 있습니다.

특정에서 버킷을 생성하려면 create-bucket CLI 명령을 AWS 리전사용합니다.

AWS KMS 암호화를 사용하여 Amazon S3 버킷을 생성하는 명령의 예입니다. 를 AWS KMS 키 ARN{kms_key_arn}으로 바꿉니다. 아직 생성하지 않은 경우 먼저 AWS KMS 키를 생성해야 합니다.

aws s3api create-bucket \ --bucket {my_bucket_name} \ --region {aws_region} \ --create-bucket-configuration LocationConstraint={aws_region} \ --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{kms_key_arn}" }, "BucketKeyEnabled": true } ] }'

SageMaker 훈련 작업 시작

훈련 작업을 시작하기 전에 데이터를 준비합니다.

데이터 형식 요구 사항 - 입력 데이터 세트는 JSONL 형식이어야 하며, 자세한 내용은 모델 이해를 위한 데이터 추출 준비를 참조하십시오.

데이터 세트 제약 조건

  • 최소 프롬프트: 100

  • 최대 파일 크기: 2GB

  • 최대 줄 길이: 180KB

  • 파일 형식: JSONL 전용

입력 데이터를 업로드하려면 다음 명령을 실행합니다.

aws s3 cp /path/to/input-data/ s3://customer-input-data-bucket/ —recursive

데이터 증강 레시피

SageMaker HyperPod 레시피 리포지토리에서 추출 레시피를 가져올 수 있습니다. 추출 레시피는 디렉터리 아래에 있습니다recipes-collection/recipes/fine-tuning/nova. 데이터 증강 프로세스는 YAML 구성 파일에 의해 제어됩니다. 다음은 각 파라미터에 대한 자세한 설명입니다. 모두 필수 필드입니다.

파라미터 설명
name

훈련 작업을 설명하는 이름입니다. 이렇게 하면에서 작업을 식별하는 데 도움이 됩니다 AWS Management Console.

distillation_data

데이터 추출 작업을 활성화하고이 필드를 수정하지 않습니다.

maxNumberOfPrompts

데이터 세트의 최대 프롬프트 수입니다.

maxResponseLength

프롬프트(토큰)당 최대 응답 길이입니다.

maxInputFileSizeInGB

입력 파일의 최대 크기(GB).

maxLineLengthInKB

입력 파일에서 한 줄의 최대 크기(KB).

maxStudentModelFineTuningContextLengthInTokens

학생 모델의 최대 컨텍스트 창 크기(토큰). 는 학생 모델 용량을 초과해서는 안 됩니다. 학생 모델 용량에 따라이 값을 32k 또는 64k로 설정할 수 있습니다.

teacherModelId

교사 모델 ID를 설정할 때 다음 두 가지 중에서 선택합니다.

  • Amazon Titan Premier의 경우: IAD 리전의 경우 "us.amazon.nova-premier-v1:0". 참고: IAD 리전에서만 사용할 수 있습니다.

  • Amazon Nova Pro의 경우: IAD 리전의 경우 "us.amazon.nova-pro-v1:0", ARN 리전의 경우 "eu.amazon.nova-pro-v1:0".

temperature

응답 무작위성을 제어합니다(잔액에 0.7 권장).

top_p

토큰 샘플링에 대한 누적 확률 임계값(0.9 권장).

customer_bucket

입력/출력 데이터를 위한 Amazon S3 버킷입니다.

kms_key

AWS KMS S3에서 출력을 암호화하는 키, Bedrock 배치 추론에서 추론 작업에서 반환된 출력을 저장하는 데 필요합니다.

제한

Nova Premier로서의 교사 모델의 경우 - Amazon Bedrock 배치 추론으로 인해 IAD 리전(us-east-1)에서만 지원되며 ARN(eu-north-1) 리전에서는 사용할 수 없습니다.

모범 사례

데이터 준비

  • 100개의 고품질 레이블이 지정된 예제를 포함하여 교사 모델을 안내합니다.

  • 제출 전에 품질이 좋지 않은 레이블 제거

  • 텍스트 이해 유도 모범 사례 따르기

  • 추출을 시작하기 전에 교사 모델로 프롬프트 테스트

모델 선택

  • 일반 사용 사례에서 Nova Pro를 교사로 사용

  • 전문 도메인 지식을 위해 Nova Premier 고려

  • 지연 시간 및 비용 요구 사항에 따라 학생 모델 선택

성능 최적화

  • 권장 온도(0.7) 및 top_p(0.9)로 시작합니다.

  • 미세 조정 전에 증강 데이터 품질 검증

  • 하이퍼파라미터 선택의 지침에 따라 하이퍼파라미터를 조정합니다.

PySDK로 작업 시작

다음 샘플 노트북은 추출을 위해 SageMaker 훈련 작업을 실행하는 방법을 보여줍니다. 자세한 내용은 SageMaker AI 예측기를 사용하여 훈련 작업 실행을 참조하세요.

import os import sagemaker,boto3 from sagemaker.pytorch import PyTorch from sagemaker.inputs import TrainingInput sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() # SETUP job_name = <Your_job_name> # Must be unique for every run input_s3_uri = <S3 URI to your input dataset> # Must end in .jsonl file output_s3_uri = <S3 URI to your output bucket> + job_name image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-distillation-repo:SM-TJ-DISTILL-LATEST" # Do not change instance_type = "ml.r5.4xlarge" # Recommedation is to use cpu instances instance_count = 1 # Must be 1, do not change role_arn = <IAM role to execute the job with> recipe_path = <Local path to your recipe> # Execution estimator = PyTorch( output_path=output_s3_uri, base_job_name=job_name, role=role_arn, instance_count=instance_count, instance_type=instance_type, training_recipe=recipe_path, max_run=432000, sagemaker_session=sagemaker_session, image_uri=image_uri, subnets= ['subnet-xxxxxxxxxxxxxxxxx','subnet-xxxxxxxxxxxxxxxxx'], # Add subnet groups created in previous steps security_group_ids= ['sg-xxxxxxxxxxxxxxxxx'], # Add security group created in previous steps disable_profiler=True, debugger_hook_config=False ) trainingInput = TrainingInput( s3_data=input_s3_uri, distribution='FullyReplicated', s3_data_type='Converse' ) # The keys must be "train". estimator.fit(inputs={"train": trainingInput})

증강 데이터 품질 검증

미세 조정을 진행하기 전에 증강 데이터의 품질을 검증하는 것이 중요합니다.

  1. 출력 버킷의 sample_training_data.jsonl 파일을 검토합니다. 이 파일에는 증강 데이터 세트의 무작위 샘플 50개가 포함되어 있습니다.

  2. 이러한 샘플의 관련성, 일관성 및 사용 사례와의 일치 여부를 수동으로 검사합니다.

  3. 품질이 기대치를 충족하지 않는 경우 입력 데이터 또는 추출 파라미터를 조정하고 데이터 증강 프로세스를 다시 실행해야 할 수 있습니다.

데이터 증강이 완료된 후 두 번째 단계는 Amazon SageMaker HyperPod를 사용하여 학생 모델을 미세 조정하는 것입니다. 자세한 내용은 전체 순위 지도 미세 조정(SFT) 단원을 참조하십시오.

SFT 훈련 레시피에서 이전 작업에서 반환된 데이터 세트 경로를 전달할 수 있습니다.

data_s3_path: "s3://[escrow-bucket]/[job-name]/distillation_data/training_data.jsonl"

또한 이전 단계에서 생성된 권장 훈련 구성을 재정의합니다.

제한 사항

  • 는이 증강 데이터에 대해 SFT Nova 미세 조정 기법만 지원합니다.

  • 는 Amazon SageMaker HyperPod에서 SFT Nova 미세 조정 기법만 지원합니다. HyperPod

  • 다중 모달 추출은 지원되지 않습니다.

  • 사용자 지정 교사 모델은 지원되지 않습니다.