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

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

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

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

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

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

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

  2. 미세 조정 훈련 작업을 생성합니다. 지침은 지침 기반 미세 조정을 위한 훈련 작업 생성 단원을 참조하십시오.

에서 예제를 찾을 end-to-end 수 있습니다예제 노트북.

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

참고

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

  • Flan-T5 기본

  • Flan-T5 라지

  • Flan-T5 스몰

  • Flan-T5 XL

  • Flan-T5 XXL

  • Llama 2 13B

  • Llama 2 13B 채팅

  • Llama 2 13B 뉴런

  • Llama 2 70B

  • Llama 2 70B 채팅

  • Llama 2 7B

  • Llama 2 7B 채팅

  • Llama 2 7B 뉴런

  • 미스랄 7B

  • RedPajama INCITE 기본 3B V1

  • RedPajama INCITE 기본 7B V1

  • RedPajama INCITE 채팅 3B V1

  • RedPajama INCITE 채팅 7B V1

  • RedPajama INCITE 3B V1 지시

  • RedPajama INCITE 지시 7B V1

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

지침 기반 미세 조정을 위한 훈련 데이터는 JSON 행 텍스트 파일 형식으로 제공되어야 하며, 여기서 각 행은 사전입니다. 모든 훈련 데이터는 단일 폴더에 있어야 합니다. 폴더에는 여러 개의 .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에 미세 조정 데이터 업로드

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

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 클래스를 사용하여 공개적으로 사용 가능한 파운데이션 모델을 미세 조정합니다..

예제 노트북

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