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

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

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

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

Autopilot은 몇몇 사전 훈련된 생성 텍스트 모델을 미세 조정할 수 있는 기능을 제공합니다. 특히 오토파일럿은 에서 구동되는 다양한 범용 대형 언어 모델 (LLM) 의 명령 기반 미세 조정을 지원합니다. JumpStart

참고

오토파일럿에서 미세 조정을 지원하는 텍스트 생성 모델은 현재 Canvas에서 지원하는 지역에서만 이용할 수 있습니다. SageMaker 지원되는 지역의 전체 목록은 SageMaker Canvas 설명서를 참조하십시오.

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

다음 지침은 API Reference를 사용하여 텍스트 생성 LLM을 미세 조정하기 위한 SageMaker 파일럿 실험으로 Amazon Autopilot 작업을 생성하는 프로세스를 간략하게 설명합니다. SageMaker

참고

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

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

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

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

참고

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

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

사전 조건 

오토파일럿을 사용하여 에서 SageMaker 미세 조정 실험을 만들기 전에 다음 단계를 수행하세요.

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

    Amazon SageMaker Autopilot에서 미세 조정할 수 있는 사전 학습된 모델 목록은 을 참조하십시오. 미세 조정을 위한 대규모 언어 모델 지원 모델 선택은 필수가 아닙니다. 모델이 지정되지 않은 경우 오토파일럿은 자동으로 Falcon7Binstruct 모델을 기본값으로 사용합니다.

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

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

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

    • SageMaker 실행 역할 검색에 대한 자세한 내용은 을 참조하십시오실행 역할 가져오기.

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

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

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

    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 미세 조정을 위한 오토파일럿 실험을 CreateAutoMLJobV2 생성하기 위해 호출할 때는 다음 값을 제공해야 합니다.

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

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

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

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

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

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

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

{ "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개체 (필수 매개변수 AutoML 참조 JobInputDataConfig) 에는 기계 학습 모델을 구축할 때 데이터를 사용하는 방법을 지정하는 validation 값 중 하나로 training 설정할 수 있는 a가 있습니다. ChannelType

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

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

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

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

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

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

미세 조정 전에 최종 사용자 라이선스 계약에 동의해야 하는 모델의 경우, 구성 시 AcceptEula 속성을 to in으로 설정하여 EULA를 수락할 수 있습니다. ModelAccessConfig True TextGenerationJobConfig AutoMLProblemTypeConfig

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

오토파일럿을 사용하면 모든 모델에서 네 가지 공통 하이퍼파라미터를 설정할 수 있습니다.

  • 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"} } }