프롬프트 지침을 사용하여 대형 언어 모델(LLM) 미세 조정 - Amazon SageMaker

프롬프트 지침을 사용하여 대형 언어 모델(LLM) 미세 조정

명령어 기반 미세 조정은 레이블이 지정된 예제를 사용하여 특정 작업에 대한 사전 훈련된 파운데이션 모델의 성능을 개선합니다. 레이블이 지정된 예제는 프롬프트, 응답 쌍으로 형식이 지정되고 지시사항으로 구문이 지정됩니다. 이 미세 조정 프로세스는 모델의 가중치를 수정합니다. 명령어 기반 미세 조정에 대한 자세한 내용은 FLAN 소개: 명령어 조정 기능을 갖춘 보다 일반화 가능한 언어 모델스케일링 명령어-미세 조정된 언어 모델을 참조하세요.

FLAN(Fine-tuned LANguage Net) 모델은 명령어 조정을 사용하여 모델이 일반적인 다운스트림 NLP 작업을 보다 쉽게 해결할 수 있도록 합니다. Amazon SageMaker JumpStart는 FLAN 모델 제품군에 다양한 파운데이션 모델을 제공합니다. 예를 들어 FLAN-T5 모델은 다양한 일반 사용 사례에 대해 제로샷 성능을 높이기 위해 광범위한 작업에 대해 미세 조정된 명령입니다. 추가 데이터와 미세 조정을 통해 훈련 전에는 고려하지 않았던 보다 구체적인 작업에 명령어 기반 모델을 추가로 적용할 수 있습니다.

프롬프트-응답 페어 작업 지침을 사용하여 특정 작업에서 LLM을 미세 조정하려면:

  1. JSON 파일에서 지침을 준비합니다. 프롬프트-응답 페어 파일의 필수 형식과 데이터 폴더 구조에 대한 자세한 내용은 지침 기반 미세 조정을 위한 훈련 데이터 준비 및 업로드 섹션을 참조하세요.

  2. 미세 조정 훈련 작업을 생성합니다. 지침은 지침 기반 미세 조정을 위한 훈련 작업 생성 섹션을 참조하세요.

예제 노트북에서 엔드 투 엔드 예제를 찾을 수 있습니다.

JumpStart 파운데이션 모델의 하위 집합만 명령 기반 미세 조정과 호환됩니다. 명령어 기반 미세 조정은 다음과 같은 파운데이션 모델에서 사용할 수 있습니다.

참고

Llama 2 7B와 같은 일부 JumpStart 파운데이션 모델은 미세 조정 및 추론 수행 전에 최종 사용자 라이선스 계약을 수락해야 합니다. 자세한 내용은 최종 사용자 라이선스 계약 섹션을 참조하세요.

  • Flan-T5 Base

  • Flan-T5 Large

  • Flan-T5 Small

  • Flan-T5 XL

  • Flan-T5 XXL

  • Llama 2 13B

  • Llama 2 13B Chat

  • Llama 2 13B Neuron

  • Llama 2 70B

  • Llama 2 70B Chat

  • Llama 2 7B

  • Llama 2 7B Chat

  • Llama 2 7B Neuron

  • Mistral 7B

  • RedPajama INCITE Base 3B V1

  • RedPajama INCITE Base 7B V1

  • RedPajama INCITE Chat 3B V1

  • RedPajama INCITE Chat 7B V1

  • RedPajama INCITE Instruct 3B V1

  • RedPajama INCITE Instruct 7B V1

지침 기반 미세 조정을 위한 훈련 데이터 준비 및 업로드

지침 기반 미세 조정을 위한 훈련 데이터는 JSON Lines 텍스트 파일 형식으로 제공되어야 하며, 여기서 각 줄은 사전입니다. 모든 훈련 데이터는 단일 폴더에 있어야 합니다. 폴더에는 여러 개의 .jsonl 파일이 포함될 수 있습니다.

훈련 폴더에는 데이터의 입력 및 출력 형식을 설명하는 템플릿 JSON 파일(template.json)도 포함될 수 있습니다. 템플릿 파일이 제공되지 않으면 다음 템플릿 파일이 사용됩니다.

{ "prompt": "Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.\n\n### Instruction:\n{instruction}\n\n### Input:\n{context}", "completion": "{response}" }

template.json 파일에 따르면 훈련 데이터의 각 .jsonl 항목에는 {instruction}, {context}{response} 필드가 포함되어야 합니다.

사용자 지정 템플릿 JSON 파일을 제공하는 경우 "prompt""completion" 키를 사용하여 자체 필수 필드를 정의합니다. 다음 사용자 지정 템플릿 JSON 파일에 따라 훈련 데이터의 각 .jsonl 항목에는 {question}, {context}{answer} 필드가 포함되어야 합니다.

{ "prompt": "question: {question} context: {context}", "completion": "{answer}" }

훈련 및 테스트를 위한 데이터 분할

필요에 따라 검증 데이터가 포함된 다른 폴더를 제공할 수 있습니다. 이 폴더에는 하나 이상의 .jsonl 파일도 포함되어야 합니다. 검증 데이터세트가 제공되지 않은 경우 검증 목적으로 설정된 양의 훈련 데이터가 따로 설정됩니다. 모델을 미세 조정할 하이퍼파라미터를 선택할 때 검증에 사용되는 훈련 데이터의 비율을 조정할 수 있습니다.

Amazon S3에 미세 조정 데이터 업로드

준비된 데이터를 Amazon Simple Storage Service(Amazon S3)에 업로드하여 JumpStart 파운데이션 모델을 미세 조정할 때 사용합니다. 다음 명령을 사용하여 데이터를 업로드할 수 있습니다.

from sagemaker.s3 import S3Uploader import sagemaker import random output_bucket = sagemaker.Session().default_bucket() local_data_file = "train.jsonl" train_data_location = f"s3://{output_bucket}/dolly_dataset" S3Uploader.upload(local_data_file, train_data_location) S3Uploader.upload("template.json", train_data_location) print(f"Training data: {train_data_location}")

지침 기반 미세 조정을 위한 훈련 작업 생성

데이터가 Amazon S3에 업로드된 후 JumpStart 파운데이션 모델을 미세 조정하고 배포할 수 있습니다. Studio에서 모델을 미세 조정하려면 Studio에서 모델 미세 조정 섹션을 참조하세요. SageMaker Python SDK를 사용하여 모델을 미세 조정하려면 JumpStartEstimator 클래스를 사용하여 공개적으로 사용 가능한 파운데이션 모델을 미세 조정합니다. 섹션을 참조하세요.

예제 노트북

명령 기반 미세 조정에 대한 자세한 내용은 다음 예제 노트북을 참조하세요.