API를 사용하여 텍스트 생성 모델을 미세 조정하는 AutoML 작업 생성 - Amazon SageMaker AI

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

API를 사용하여 텍스트 생성 모델을 미세 조정하는 AutoML 작업 생성

대규모 언어 모델(LLM)은 텍스트 생성, 요약, 완료, 질문 답변 등을 비롯한 여러 생성 작업에 탁월합니다. 이들의 성과는 규모가 크고 다양한 데이터세트와 다양한 작업에 대한 광범위한 훈련 덕분일 수 있습니다. 그러나 의료 및 금융 서비스와 같은 특정 영역에서는 고유한 데이터 및 사용 사례에 맞게 적용하기 위해 맞춤형 미세 조정이 필요할 수 있습니다. LLM은 특정 영역에 맞게 훈련을 조정함으로써 성과를 개선하고 대상 애플리케이션에 더 정확한 결과를 제공할 수 있습니다.

Autopilot은 몇몇 사전 훈련된 생성 텍스트 모델을 미세 조정할 수 있는 기능을 제공합니다. 특히 Autopilot은 JumpStart에서 제공하는 다양한 범용 대규모 언어 모델(LLM)의 지침 기반 미세 조정을 지원합니다.

참고

Autopilot의 미세 조정을 지원하는 텍스트 생성 모델은 현재 SageMaker Canvas에서 지원하는 리전에서만 이용할 수 있습니다. 지원되는 리전의 전체 목록은 SageMaker Canvas 설명서에서 확인하세요.

사전 훈련된 모델을 미세 조정하려면 출력을 생성하거나 해당 작업에 맞게 동작하는 방법에 대한 모델을 안내하는 명확한 지침을 가진 특정 데이터세트가 필요합니다. 모델은 데이터세트에서 학습하고 제공된 지침에 맞게 파라미터를 조정합니다. 지침 기반 미세 조정에는 프롬프트 응답 쌍 및 지침으로 표현(phrased as instructions)과 같은 형식의 레이블이 지정된 예제를 사용하는 것이 포함됩니다. 미세 조정에 대한 자세한 내용은 기초 모델 미세 조정을 참조하세요.

다음 지침은 Amazon SageMaker SageMaker Autopilot 작업을 생성하는 프로세스를 간략하게 설명합니다. LLMs https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-reference.html

참고

텍스트 및 이미지 분류, 시계열 예측, 대형 언어 모델 미세 조정과 같은 작업은 2 버전의 AutoML REST API를 통해서만 사용할 수 있습니다. 선택한 언어가 Python인 경우 Amazon SageMaker Python SDK의 AWS SDK for Python (Boto3) 또는 AutoMLV2 객체를 직접 참조할 수 있습니다.

편리한 사용자 인터페이스를 선호하는 사용자는 Amazon SageMaker Canvas를 사용하여 사전 훈련된 모델 및 생성형 AI 기반 모델에 액세스하거나 특정 텍스트, 이미지 분류 또는 예측 요구 또는 생성형 AI에 맞춘 사용자 지정 모델을 생성할 수 있습니다.

LLM을 미세 조정하기 위해 프로그래밍 방식으로 Autopilot 실험을 생성하려면 Amazon SageMaker Autopilot나 AWS CLI에서 지원하는 모든 언어로 CreateAutoMLJobV2 API를 호출할 수 있습니다.

이 API 작업이 선택한 언어의 함수로 변환되는 방식에 대한 자세한 내용은 CreateAutoMLJobV2추가 참고 사항 섹션 및 SDK 선택을 참조하세요. 예를 들어, Python 사용자의 경우 AWS SDK for Python (Boto3)에서 create_auto_ml_job_v2의 전체 요청 구문을 참조하세요.

참고

Autopilot은 여러 후보를 훈련 및 평가할 필요 없이 대규모 언어 모델을 미세 조정합니다. 대신 Autopilot은 데이터세트를 사용하여 대상 모델을 직접 미세 조정하여 기본 목표 지표인 교차 엔트로피 손실을 개선합니다. Autopilot에서 언어 모델을 미세 조정할 때는 AutoMLJobObjective 필드 설정이 필요하지 않습니다.

LLM을 미세 조정한 후에는 DescribeAutoMLJobV2 API 직접 호출 시 BestCandidate를 통해 다양한 ROUGE 점수에 액세스하여 성능을 평가할 수 있습니다. 또한 이 모델은 훈련 및 검증 손실과 Perplexity에 대한 정보도 제공합니다. 미세 조정된 모델에서 생성된 텍스트의 품질을 평가하기 위한 포괄적인 지표 목록은 Autopilot에서 대규모 언어 모델을 미세 조정하기 위한 지표를 참조하세요.

사전 조건

Autopilot을 사용하여 SageMaker AI에서 미세 조정 실험을 생성하기 전에 다음 단계를 수행해야 합니다.

  • (선택 사항) 미세 조정하려는 사전 훈련된 모델을 선택합니다.

    Amazon SageMaker Autopilot에서 미세 조정이 가능한 사전 훈련된 모델 목록은 미세 조정을 위한 대규모 언어 모델 지원를 참조하세요. 모델 선택은 필수가 아닙니다. 모델이 지정되지 않은 경우 Autopilot은 자동으로 Falcon7BInstruct 모델을 기본값으로 사용합니다.

  • 지침 데이터세트 생성. 지침 기반 데이터세트에 대한 형식 요구 사항에 대해 알아보려면 데이터세트 파일 유형 및 입력 데이터 형식을 참조하세요.

  • Amazon S3 버킷에 데이터세트를 저장합니다.

  • 실험을 실행하는 데 사용되는 SageMaker AI 실행 역할에 대한 입력 데이터가 포함된 Amazon S3 버킷에 대한 전체 액세스 권한을 부여합니다.

    • SageMaker AI 실행 역할 검색에 대한 자세한 내용은 섹션을 참조하세요실행 역할을 가져옵니다..

    • SageMaker AI 실행 역할에 Amazon S3의 하나 이상의 특정 버킷에 액세스할 수 있는 권한을 부여하는 방법에 대한 자세한 내용은의 SageMaker AI 실행 역할에 추가 Amazon S3 권한 추가를 참조하세요실행 역할 생성.

  • 또한 JumpStart에서 사용하는 기본 스토리지 Amazon S3 버킷에 액세스하는 데 필요한 권한을 실행 역할에 제공해야 합니다. 이 액세스 권한은 JumpStart에서 사전 훈련된 언어 모델 아티팩트를 저장하고 검색하는 데 필요합니다. 이 Amazon S3 버킷에 대한 액세스 권한을 부여하려면 실행 역할에 새로운 인라인 사용자 지정 정책을 생성해야 합니다.

    다음은 us-west-2에서 AutoML 미세 조정 작업을 구성할 때 JSON 편집기에서 사용할 수 있는 예제 정책입니다.

    JumpStart의 버킷 이름은에 따라 미리 결정된 패턴을 따릅니다 AWS 리전. 그에 따라 버킷 이름을 조정해야 합니다.

    { "Sid": "Statement1", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::jumpstart-cache-prod-us-west-2", "arn:aws:s3:::jumpstart-cache-prod-us-west-2/*" ] }

이 작업이 완료되면 Autopilot API 요청에서 이 실행 역할의 ARN을 사용할 수 있습니다.

필수 파라미터

LLM 미세 조정을 위한 Autopilot 실험을 생성하기 위해 CreateAutoMLJobV2를 호출할 때는 다음 값을 제공해야 합니다.

  • 작업 이름을 지정하기 위한 AutoMLJobName. 이름은 string 형식이어야 하며 최소 길이가 1자이고 최대 길이가 32자여야 합니다.

  • AutoMLJobInputDataConfig에 포함된 training 유형의 하나 이상의 AutoMLJobChannel. 이 채널은 미세 튜닝 데이터세트가 위치한 Amazon S3 버킷의 이름을 지정합니다. validation 채널을 정의할 때 옵션이 있습니다. 검증 채널이 제공되지 않고 ValidationFractionAutoMLDataSplitConfig에 구성되어 있는 경우, 이 비율을 사용하여 훈련 데이터세트를 훈련 세트와 검증 세트로 무작위로 나눕니다. 또한 데이터세트의 콘텐츠 유형(CSV 또는 Parquet 파일)을 지정할 수 있습니다.

  • 훈련 작업의 설정을 구성하기 위한 TextGenerationJobConfig 유형의 AutoMLProblemTypeConfig.

    특히 기본 모델의 이름을 지정하여 BaseModelName 필드에서 미세 조정할 수 있습니다. Amazon SageMaker Autopilot에서 미세 조정이 가능한 사전 훈련된 모델 목록은 미세 조정을 위한 대규모 언어 모델 지원를 참조하세요.

  • AutoML 작업의 아티팩트를 저장할 Amazon S3 출력 경로를 지정하기 위한 OutputDataConfig.

  • 데이터 액세스에 사용되는 역할의 ARN을 지정하기 위한 RoleArn.

다음은 (Falcon7BInstruct) 모델 미세 조정을 위해 CreateAutoMLJobV2에 API를 호출할 때 사용되는 전체 요청 형식의 예입니다.

{ "AutoMLJobName": "<job_name>", "AutoMLJobInputDataConfig": [ { "ChannelType": "training", "CompressionType": "None", "ContentType": "text/csv", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://<bucket_name>/<input_data>.csv" } } } ], "OutputDataConfig": { "S3OutputPath": "s3://<bucket_name>/output", "KmsKeyId": "arn:aws:kms:<region>:<account_id>:key/<key_value>" }, "RoleArn":"arn:aws:iam::<account_id>:role/<sagemaker_execution_role_name>", "AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7BInstruct" } } }

다른 모든 파라미터는 선택 사항입니다.

선택적 파라미터

다음 섹션에서는 미세 조정 AutoML 작업에 전달할 수 있는 몇 가지 선택적 파라미터에 대해 자세히 설명합니다.

자체 검증 데이터세트와 사용자 지정 데이터 분할 비율을 제공하거나 Autopilot이 데이터세트를 자동으로 분할하도록 할 수 있습니다.

AutoMLJobChannel 개체(필수 파라미터 AutoMLJobinputDataConfig 참조)에는 기계 학습 모델을 구축할 때 데이터를 사용하는 방법을 지정하는 값 중 training 또는 validation으로 설정할 수 있는 ChannelType이 있습니다.

데이터 소스를 하나 이상 제공해야 하며 훈련 데이터용 및 검증 데이터용으로 최대 두 개의 데이터 소스가 허용됩니다. 데이터를 훈련 및 검증 데이터세트로 분할하는 방법은 데이터 원본이 한 개 또는 두 개인지에 따라 달라집니다.

  • 데이터 소스가 하나뿐인 경우 ChannelType은 기본적으로 training으로 설정되며 이 값을 가져야 합니다.

    • AutoMLDataSplitConfigValidationFraction 값이 설정되지 않은 경우, 기본적으로 이 소스의 데이터 중 0.2(20%)가 검증에 사용됩니다.

    • ValidationFraction을 0과 1 사이의 값으로 설정하면 데이터세트가 지정된 값을 기준으로 분할됩니다. 여기서 값은 검증에 사용되는 데이터세트의 비율을 지정합니다.

  • 데이터 소스가 두 개 있는 경우, AutoMLJobChannel 개체 중 하나의 ChannelType을 기본값인 training으로 설정해야 합니다. 다른 데이터 소스의 ChannelTypevalidation으로 설정해야 합니다. 두 데이터 소스는 CSV 또는 Parquet으로 형식이 같고 스키마가 같아야 합니다. 각 소스의 모든 데이터가 훈련 또는 검증에 사용되므로 이 경우에 ValidationFraction에 대한 값을 설정하지 않아야 합니다. 이 값을 설정하면 오류가 발생합니다.

Autopilot을 사용하면 미세 조정된 모델을 엔드포인트에 자동으로 배포할 수 있습니다. 미세 조정된 모델에 대한 자동 배포를 활성화하려면 AutoML 작업 요청에 ModelDeployConfig를 포함하세요. 이를 통해 미세 조정된 모델을 SageMaker AI 엔드포인트에 배포할 수 있습니다. 다음은 사용자 지정에 사용할 수 있는 구성입니다.

미세 조정 전에 최종 사용자 라이선스 계약을 수락해야 하는 모델의 경우 AutoMLProblemTypeConfig를 구성할 때 TextGenerationJobConfigTrueModelAccessConfigAcceptEula 속성을 설정하여 EULA를 수락할 수 있습니다.

AutoMLProblemTypeConfig를 구성할 때 TextGenerationJobConfigTextGenerationHyperParameters 속성에서 하이퍼파라미터 값을 설정하여 텍스트 생성 모델의 학습 프로세스를 최적화할 수 있습니다.

Autopilot을 사용하면 모든 모델에서 4개의 공통 하이퍼파라미터를 설정할 수 있습니다.

  • epochCount: 값은 1 ~ 10 범위 내의 정수 값을 포함하는 문자열이어야 합니다.

  • batchSize: 값은 1 ~ 64 범위 내의 정수 값을 포함하는 문자열이어야 합니다.

  • learningRate: 값은 0 ~ 1 범위 내의 부동 소수점 값을 포함하는 문자열이어야 합니다.

  • learningRateWarmupSteps: 값은 0 ~ 250 범위 내의 정수 값을 포함하는 문자열이어야 합니다.

각 하이퍼파라미터에 대한 자세한 내용은 텍스트 생성 모델의 학습 프로세스를 최적화하기 위한 하이퍼파라미터 섹션을 참조하세요.

다음 JSON 예제는 4개의 하이퍼파라미터가 모두 구성된 TextGenerationJobConfig로 전달된 TextGenerationHyperParameters 필드를 보여줍니다.

"AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7B", "TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"} } }