View a markdown version of this page

멀티모달 미세 조정을 위한 데이터 준비 - Amazon Nova

멀티모달 미세 조정을 위한 데이터 준비

중요

데이터세트 준비를 시작하기 전에 지도 미세 조정(SFT)이 사용 사례에 적합한 접근 방식인지 확인합니다. SFT는 모델에 새로운 동작, 응답 형식 및 추론 패턴을 가르칩니다. 모델에 새로운 사실적 지식을 가르치지 않습니다. 주요 목표가 모델이 본 적 없는 도메인별 사실, 용어 또는 지식을 도입하는 것인 경우 추론 시간에 해당 컨텍스트를 제공하기 위해 검색 증강 생성(RAG)을 고려하세요. SFT, 강화 미세 조정(RFT) 및 RAG 중에서 선택하는 방법에 대한 지침은 SageMaker 훈련 작업에서 Amazon Nova 사용자 지정 섹션을 참조하세요.

다음은 이해 모델 미세 조정을 위한 데이터 준비에 대한 지침과 요구 사항입니다.

  1. 미세 조정을 위한 최소 데이터 크기는 태스크(복잡 또는 단순)에 따라 다르지만 모델이 훈련할 각 태스크에 대해 최소 100개 이상의 샘플을 보유하는 것이 좋습니다.

  2. 최상의 결과를 얻으려면 훈련과 추론 모두에서 제로샷 설정으로 최적화된 프롬프트를 사용하는 것이 좋습니다.

  3. 훈련 및 검증 데이터세트는 각 줄이 레코드에 해당하는 JSON 객체인 JSONL 파일이어야 합니다. 이러한 파일 이름은 영숫자, 밑줄, 하이픈, 슬래시 및 점으로만 구성할 수 있습니다.

  4. 이미지 및 비디오 제약 조건

    1. 데이터세트에 서로 다른 미디어 모달을 포함할 수 없습니다. 즉, 데이터세트는 이미지가 포함된 텍스트이거나 비디오가 포함된 텍스트일 수 있습니다.

    2. 하나의 샘플(메시지의 단일 레코드)에 여러 개의 이미지가 있을 수 있습니다.

    3. 하나의 샘플(메시지의 단일 레코드)에 한 개의 비디오만 있을 수 있습니다.

  5. schemaVersion는 모든 문자열 값일 수 있습니다.

  6. system 턴(선택 사항)은 고객이 제공한 사용자 지정 시스템 프롬프트일 수 있습니다.

  7. 지원되는 역할은 userassistant입니다.

  8. messages의 첫 번째 턴은 항상 "role": "user"로 시작해야 합니다. 마지막 턴은 봇의 응답이며, "role": "assistant"로 표시됩니다.

  9. Amazon Bedrock에서 image.source.s3Location.urivideo.source.s3Location.uri를 액세스할 수 있어야 합니다.

  10. Amazon Bedrock 서비스 역할에서 Amazon S3의 이미지 파일에 액세스할 수 있어야 합니다. 액세스 권한 부여에 대한 자세한 내용은 Create a service role for model customization을 참조하세요.

  11. 이미지 또는 비디오가 데이터세트와 동일한 Amazon S3 버킷에 있어야 합니다. 예를 들어 데이터세트가 s3://amzn-s3-demo-bucket/train/train.jsonl에 있는 경우 이미지 또는 비디오는 s3://amzn-s3-demo-bucket에 있어야 합니다.

  12. User:, Bot:, Assistant:, System:, <image>, <video>, [EOS] 등의 용어는 예약 키워드입니다. 사용자 프롬프트 또는 시스템 프롬프트가 이 키워드로 시작하거나 프롬프트 내 어디에서든 이 키워드를 포함하고 있으면, 데이터 문제로 인해 훈련 작업이 실패하게 됩니다. 해당 키워드를 특정 사용 사례에서 사용해야 하는 경우, 동일한 의미를 갖는 다른 키워드로 대체하여 학습이 정상적으로 진행되도록 해야 합니다.

참고

미세 조정 작업을 제출하기 전에 데이터세트를 검증하려면 GitHub에서 사용할 수 있는 데이터세트 검증 스크립트를 사용하면 됩니다.

효과적인 훈련 설계 예제

훈련 데이터에서 모델이 보여주길 원하는 동작을 보여줘야 합니다. SFT는 모델에 알아야 할 내용이 아닌 답변하는 방식을 가르칩니다. 주로 사실적 지식을 주입하기 위한 훈련 예제를 만드는 경우(예: “오류 코드 E-45는 무엇을 의미합니까?”의 답변은 “E-45는 센서 제한 시간을 나타냅니다”) 미세 조정 없이 RAG 또는 프롬프트 엔지니어링으로 동일한 결과를 달성할 수 있는지 고려합니다.

소스 데이터를 대화 형식으로 변환할 때는 따라야 하는 원칙:

  1. 실제 사용자 쿼리에서 시작합니다. 프로덕션에서 최종 사용자가 실제로 모델에 입력할 법한 프롬프트를 그대로 반영해 사용자 턴을 작성합니다. 실제 사용 패턴을 반영하지 않는 인위적이거나 지나치게 간소화된 질문은 피하세요.

  2. 모범적인 어시스턴트 응답을 작성합니다. 각 어시스턴트 턴은 모델에서 생성하기를 원하는 이상적인 응답이어야 합니다. 즉, 모든 예제에서 정확하고 형식이 양호하며 어조와 구조가 일관적이어야 합니다.

  3. 시스템 프롬프트를 전략적으로 사용합니다. 출력 형식, 페르소나 및 도메인 컨텍스트와 같은 영구 지침을 시스템 턴에 배치합니다. 훈련과 추론 모두에서 동일한 시스템 프롬프트를 사용하면 최상의 결과를 얻을 수 있습니다.

  4. 예제는 샘플당 하나의 스킬에 초점을 맞춥니다. 모델을 분류하고, 질문에 답하고, 요약해야 하는 경우 단일 샘플에서 여러 스킬을 결합하는 대신 각 스킬에 대해 별도의 예제 세트를 생성합니다.

  5. 양보다는 품질을 우선시합니다. 품질이 높고 일관적인 수백 개의 예제가 대체로 노이즈가 있거나 모순되는 수천 개의 예시보다 성과가 뛰어납니다. 훈련 전에 데이터를 중복 제거하고 검토하세요.

일반 데이터 변환 패턴

다음 패턴은 일반적인 엔터프라이즈 데이터 형식을 효과적인 SFT 훈련 예제로 변환하는 방법을 보여줍니다.

패턴 1: 분류 또는 조회를 위한 구조화된 레코드

소스 데이터가 issue, causeresolution과 같은 필드가 있는 레코드의 테이블 또는 데이터베이스인 경우 각 레코드를 관련 입력 필드와 어시스턴트 응답을 대상 출력 필드로 사용하여 사용자 질문으로 프레이밍합니다.

// train.jsonl { "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a technical support assistant. Given an issue description, identify the most likely root cause and recommended resolution." } ], "messages": [ { "role": "user", "content": [ { "text": "A user reports: 'Application crashes on startup after the latest update.' What is the likely cause and resolution?" } ] }, { "role": "assistant", "content": [ { "text": "Cause: Incompatible configuration file from the previous version.\nResolution: Delete the local configuration cache and restart the application to regenerate default settings." } ] } ] }
패턴 2: 구조화된 Q&A에 대한 계층적 또는 분류 체계 데이터

소스 데이터가 제품 범주 트리 또는 분류 시스템과 같은 코드 계층 구조 또는 분류 체계인 경우 모델에 계층 구조를 탐색하도록 요청하는 질문을 생성합니다. 시스템 프롬프트 또는 사용자 턴에 분류 컨텍스트를 포함합니다.

// train.jsonl { "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a product catalog assistant. Answer questions about product categories and classifications accurately." } ], "messages": [ { "role": "user", "content": [ { "text": "What top-level category does product code 'EL-4520' belong to, and what subcategories does it include?" } ] }, { "role": "assistant", "content": [ { "text": "Product code EL-4520 belongs to the Electronics category. It includes the subcategories: Audio Equipment, Portable Speakers, and Wireless Accessories." } ] } ] }
패턴 3: 절차적 문서를 교육 대화로 변환

소스 데이터가 표준 운영 절차, 런북 또는 단계별 가이드로 구성된 경우 절차를 태스크 중심 질문으로 변환합니다. 사용자는 태스크를 수행하는 방법을 질문하고, 어시스턴트는 일관된 형식으로 단계를 제공합니다.

// train.jsonl { "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an IT operations assistant. Provide step-by-step instructions based on approved runbooks and standard operating procedures." } ], "messages": [ { "role": "user", "content": [ { "text": "How do I reset a user's multi-factor authentication when they have lost access to their device?" } ] }, { "role": "assistant", "content": [ { "text": "Follow these steps to reset a user's multi-factor authentication:\n1. Verify the user's identity using the approved verification procedure.\n2. Disable the existing MFA configuration in the identity management console.\n3. Generate a new temporary access code and send it to the user's verified email.\n4. Instruct the user to log in with the temporary code and re-enroll their new device.\n5. Confirm the new MFA device is working by requesting a test authentication.\n6. Document the reset in the support ticket." } ] } ] }
참고

패턴 1 및 2에서 사실적 콘텐츠(예: 코드, 범주 또는 해결 방법)가 모델의 훈련 전 데이터에 아직 없는 경우 SFT에만 의존하여 기억하는 대신 추론 시간에 RAG를 사용하여 이 정보를 제공하는 것이 바람직합니다. SFT는 모델에 응답 형식과 추론 패턴을 가르치는 데 가장 효과적이며, RAG는 사실적 기반을 처리합니다.

예제 데이터세트 형식

다음 예제 데이터세트 형식은 따를 수 있는 가이드를 제공합니다.

다음 예제는 텍스트에 대한 사용자 지정 미세 조정 전용입니다.

// train.jsonl { "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a digital assistant with a friendly personality" } ], "messages": [ { "role": "user", "content": [ { "text": "What is the capital of Mars?" } ] }, { "role": "assistant", "content": [ { "text": "Mars does not have a capital. Perhaps it will one day." } ] } ] }

다음 예제는 텍스트와 단일 이미지에 대한 사용자 지정 미세 조정용입니다.

// train.jsonl{ "schemaVersion": "bedrock-conversation-2024", "system": [{ "text": "You are a smart assistant that answers questions respectfully" }], "messages": [{ "role": "user", "content": [{ "text": "What does the text in this image say?" }, { "image": { "format": "png", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.png", "bucketOwner": "your-aws-account-id" } } } } ] }, { "role": "assistant", "content": [{ "text": "The text in the attached image says 'LOL'." }] } ] }

다음 예제는 텍스트와 비디오에 대한 사용자 지정 미세 조정용입니다.

{ "schemaVersion": "bedrock-conversation-2024", "system": [{ "text": "You are a helpful assistant designed to answer questions crisply and to the point" }], "messages": [{ "role": "user", "content": [{ "text": "How many white items are visible in this video?" }, { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-video.mp4", "bucketOwner": "your-aws-account-id" } } } } ] }, { "role": "assistant", "content": [{ "text": "There are at least eight visible items that are white" }] } ] }

데이터세트 제약 조건

Amazon Nova는 이해 모델에 대한 모델 사용자 지정에 다음과 같은 제약 조건을 적용합니다.

모델

최소 샘플 수

최대 샘플 수

콘텐츠 길이

Amazon Nova Micro

8

2만

3만 2,000

Amazon Nova Lite

8

2만

3만 2,000

Amazon Nova Pro

8

2만

3만 2,000

이미지 및 비디오 제약 조건

최대 이미지 수

10/샘플

최대 이미지 파일 크기

10MB

최대 비디오 수

1/샘플

최대 비디오 길이/기간

90초

최대 비디오 파일 크기

50MB

지원되는 미디어 형식
  • 이미지 - png, jpeg, gif, webp

  • 비디오 - mov, mkv, mp4, webm