Nova 2.0 미세 조정 - Amazon SageMaker AI

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

Nova 2.0 미세 조정

사전 조건

훈련 작업을 시작하기 전에 다음을 확인하세요.

  • 입력 데이터와 훈련 작업 출력을 저장하는 Amazon S3 버킷. 두 가지 데이터를 하나의 버킷에 함께 저장하거나, 각 데이터 유형을 별도의 버킷에 저장할 수 있습니다. 훈련을 위해 다른 모든 리소스를 생성하는 AWS 리전동일한 위치에 버킷이 있는지 확인합니다. 자세한 내용은 범용 버킷 생성을 참조하세요.

  • 훈련 작업 실행 권한이 있는 IAM 역할. IAM 정책을 AmazonSageMakerFullAccess에 연결해야 합니다. 자세한 내용은 SageMaker 실행 역할을 사용하는 방법을 참조하세요.

  • 기본 Amazon Nova 레시피, Amazon Nova 레시피 가져오기 참조.

SFT란 무엇입니까?

감독 미세 조정(SFT)은 레이블이 지정된 입력-출력 페어를 사용하여 언어 모델을 훈련합니다. 모델은 프롬프트와 응답으로 구성된 데모 예제에서 학습하여 특정 작업, 지침 또는 원하는 동작에 맞게 기능을 개선합니다.

데이터 준비

개요

Nova 2.0 SFT 데이터는 Nova 1.0과 동일한 Converse API 형식을 사용하며 선택적 추론 콘텐츠 필드가 추가됩니다. 전체 형식 사양은 다음을 참조하세요.

지원되는 기능

  • 입력 유형 - 사용자 콘텐츠 블록의 텍스트, 이미지 또는 비디오

  • 보조 콘텐츠 - 텍스트 전용 응답 및 추론 콘텐츠

  • 데이터 세트 구성 - 동종이어야 합니다. 다음 중 하나를 선택합니다.

    • 텍스트 전용 회전

    • 텍스트 + 이미지 회전

    • 텍스트 + 비디오 턴(문서 이해 지원)

중요

동일한 데이터 세트 내에서 또는 서로 다른 차례로 이미지와 비디오를 혼합할 수 없습니다.

현재 제한 사항

  • 멀티모달 추론 콘텐츠 - Converse 형식은 이미지 기반 추론 콘텐츠를 지원하지만 Nova 2.0 SFT는 reasoningText 필드에서 텍스트 기반 추론 콘텐츠만 지원합니다.

  • 검증 세트 - Nova 2.0을 사용하는 SFT에 대한 검증 데이터 세트를 제공할 수 없습니다. 검증 데이터 세트를 제공하면 훈련 중에 무시됩니다. 이 제한은 UI 기반 및 프로그래밍 방식 작업 제출 모두에 적용됩니다.

지원되는 미디어 형식

  • 이미지 - PNG, JPEG, GIF

  • 비디오 - MOV, MKV, MP4

데이터 형식 예제

Text-only (Nova 1.0 compatible)
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a digital assistant with a friendly personality" } ], "messages": [ { "role": "user", "content": [ { "text": "What country is right next to Australia?" } ] }, { "role": "assistant", "content": [ { "text": "The closest country is New Zealand" } ] } ] }
Text with reasoning (Nova 2.0)
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a digital assistant with a friendly personality" } ], "messages": [ { "role": "user", "content": [ { "text": "What country is right next to Australia?" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I need to use my world knowledge of geography to answer this question" } } }, { "text": "The closest country to Australia is New Zealand, located to the southeast across the Tasman Sea." } ] } ] }
Image + text input
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } }, { "text": "Which country is highlighted in the image?" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I will determine the highlighted country by examining its location on the map and using my geographical knowledge" } } }, { "text": "The highlighted country is New Zealand" } ] } ] }
Video + text input
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-video.mp4", "bucketOwner": "your-aws-account-id" } } } }, { "text": "What is shown in this video?" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I will analyze the video content to identify key elements" } } }, { "text": "The video shows a map with New Zealand highlighted" } ] } ] }

도구 호출

Nova 2.0 SFT는 도구 호출 패턴에 대한 모델 훈련을 지원하므로 모델은 외부 도구 또는 함수를 호출하는 시기와 방법을 배울 수 있습니다.

도구 호출을 위한 데이터 형식

도구 호출 훈련 데이터에는 도구 사용 패턴을 보여주는 대화 전환과 함께 사용 가능한 도구를 정의하는 toolConfig 섹션이 포함되어 있습니다.

샘플 입력

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an expert in composing function calls." } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "getItemCost", "description": "Retrieve the cost of an item from the catalog", "inputSchema": { "json": { "type": "object", "properties": { "item_name": { "type": "string", "description": "The name of the item to retrieve cost for" }, "item_id": { "type": "string", "description": "The ASIN of item to retrieve cost for" } }, "required": [ "item_id" ] } } } }, { "toolSpec": { "name": "getItemAvailability", "description": "Retrieve whether an item is available in a given location", "inputSchema": { "json": { "type": "object", "properties": { "zipcode": { "type": "string", "description": "The zipcode of the location to check in" }, "quantity": { "type": "integer", "description": "The number of items to check availability for" }, "item_id": { "type": "string", "description": "The ASIN of item to check availability for" } }, "required": [ "item_id", "zipcode" ] } } } } ] }, "messages": [ { "role": "user", "content": [ { "text": "I need to check whether there are twenty pieces of the following item available. Here is the item ASIN on Amazon: id-123. Please check for the zipcode 94086" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "The user wants to check how many pieces of the item with ASIN id-123 are available in the zipcode 94086" } } }, { "toolUse": { "toolUseId": "getItemAvailability_0", "name": "getItemAvailability", "input": { "zipcode": "94086", "quantity": 20, "item_id": "id-123" } } } ] }, { "role": "user", "content": [ { "toolResult": { "toolUseId": "getItemAvailability_0", "content": [ { "text": "[{\"name\": \"getItemAvailability\", \"results\": {\"availability\": true}}]" } ] } } ] }, { "role": "assistant", "content": [ { "text": "Yes, there are twenty pieces of item id-123 available at 94086. Would you like to place an order or know the total cost?" } ] } ] }

도구 호출 요구 사항

훈련 데이터를 호출하는 도구를 생성할 때는 다음 요구 사항을 따르세요.

요구 사항 설명
ToolUse ToolUse는 어시스턴트 턴에만 표시되어야 합니다.
ToolResult 배치 ToolResult는 사용자 교대에만 표시되어야 합니다.
ToolResult 형식 ToolResult는 텍스트 또는 JSON 전용이어야 합니다. Nova 모델에서는 다른 양식이 지원되지 않습니다.
inputSchema 형식 toolSpec 내의 inputSchema는 유효한 JSON 스키마 객체여야 합니다.
toolUseId 일치 각 ToolResult는 이전 어시스턴트 ToolUse에서 유효한 toolUseId를 참조해야 하며, 각 toolUseId는 대화당 정확히 한 번 사용됩니다. ToolUse

중요 정보

  • 모든 훈련 샘플에서 도구 정의가 일관된지 확인

  • 모델은 사용자가 제공하는 데모에서 도구 호출 패턴을 학습합니다.

  • 각 도구를 사용할 때와 도구를 사용하지 않을 때의 다양한 예를 포함합니다.

문서 이해

Nova 2.0 SFT는 문서 기반 작업에 대한 훈련을 지원하므로 모델이 PDF 문서에 대한 질문을 분석하고 응답하는 방법을 배울 수 있습니다.

문서 이해를 위한 데이터 형식

훈련 데이터에 대한 문서 이해에는 문서 콘텐츠를 추출하고 추론하는 모델 학습과 함께 사용자 콘텐츠 블록의 문서 참조가 포함됩니다.

샘플 입력

{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "document": { "format": "pdf", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/documents/customer_service_debugging.pdf", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the document to answer the question.", "type": "text" } ] } ] }

문서 이해 제한 사항

제한 사항 세부 정보
지원되는 형식 PDF 파일만
최대 문서 크기 10MB
모달리티 믹싱 샘플에는 문서와 텍스트가 있을 수 있지만 문서를 다른 양식(이미지, 비디오)과 혼합할 수는 없습니다.

문서 이해를 위한 모범 사례

  • 문서의 형식을 명확하게 지정하고 텍스트를 추출할 수 있는지 확인합니다.

  • 다양한 문서 유형 및 질문 형식을 다루는 다양한 예제 제공

  • 모델이 문서 분석 패턴을 학습하는 데 도움이 되는 추론 콘텐츠 포함

비디오 이해

Nova 2.0 SFT는 비디오 기반 작업에 대한 훈련을 지원하므로 모델이 비디오 콘텐츠에 대한 질문을 분석하고 응답하는 방법을 배울 수 있습니다.

비디오 이해를 위한 데이터 형식

비디오 이해 훈련 데이터에는 비디오 콘텐츠보다 정보와 이유를 추출하는 모델 학습과 함께 사용자 콘텐츠 블록의 비디오 참조가 포함됩니다.

샘플 입력

{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/videos/customer_service_debugging.mp4", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the video to answer the question.", "type": "text" } ] } ] }

비디오 이해 제한 사항

제한 사항 세부 정보
최대 비디오 크기 50MB
최대 비디오 지속 시간 15분
샘플당 비디오 샘플당 하나의 비디오만 허용됩니다. 동일한 샘플의 여러 비디오는 지원되지 않습니다.
모달리티 믹싱 샘플에는 비디오와 텍스트가 있을 수 있지만 비디오를 다른 양식(이미지, 문서)과 결합할 수는 없습니다.

지원되는 비디오 형식

  • MOV

  • MKV

  • MP4

비디오 이해를 위한 모범 사례

  • 비디오를 간결하게 유지하고 작업과 관련된 콘텐츠에 집중합니다.

  • 모델이 의미 있는 정보를 추출하기에 비디오 품질이 충분한지 확인

  • 비디오 콘텐츠의 특정 측면을 참조하는 명확한 질문 제공

  • 다양한 비디오 유형 및 질문 형식을 다루는 다양한 예제 포함

추론 모드와 비합리 모드 비교

추론 콘텐츠 이해

추론 콘텐츠(chain-of-thought이라고도 함)는 최종 답변을 생성하기 전에 모델의 중간 사고 단계를 캡처합니다. 그런 assistant 다음 reasoningContent 필드를 사용하여 이러한 추론 트레이스를 포함합니다.

손실 계산 방법

  • 추론 콘텐츠 포함 - 훈련 손실에는 추론 토큰과 최종 출력 토큰이 모두 포함됩니다.

  • 추론 콘텐츠 없음 - 훈련 손실은 최종 출력 토큰에서만 계산됩니다.

멀티턴 대화에 reasoningContent 여러 어시스턴트 턴을 포함할 수 있습니다.

서식 지정 지침

  • 추론 콘텐츠에 일반 텍스트 사용

  • 작업에 특별히 필요하지 </thinking> 않은 한 <thinking> 및와 같은 마크업 태그 방지

  • 추론 콘텐츠가 명확하고 문제 해결 프로세스와 관련이 있는지 확인합니다.

추론 모드를 활성화해야 하는 경우

다음과 같은 경우 훈련 구성reasoning_enabled: true에서를 설정합니다.

  • 훈련 데이터에 추론 토큰이 있음

  • 모델이 최종 출력을 생성하기 전에 사고 토큰을 생성하도록 하려는 경우

  • 복잡한 추론 작업에서 성능을 개선해야 함

를 사용하여 이유 없는 데이터 세트에 대한 Nova 훈련reasoning_enabled = true이 허용됩니다. 그러나 Nova는 주로 추론을 적용하지 않고 데이터에 표시된 응답을 생성하는 방법을 배우기 때문에 모델이 추론 기능을 상실할 수 있습니다. 이유 없는 데이터 세트에 대해 Nova를 훈련시키고 싶지만 추론 중에 추론을 기대하는 경우 훈련 중에 추론을 비활성화하고(reasoning_enabled = false) 추론을 위해 활성화할 수 있습니다. 이 접근 방식을 사용하면 추론 시 추론을 사용할 수 있지만 추론 없이 추론에 비해 성능이 향상되지는 않습니다. 일반적으로 추론 데이터 세트를 사용할 때는 훈련 및 추론 모두에 대한 추론을 활성화하고, 비합리적 데이터 세트를 사용할 때는 둘 다에 대해 추론을 비활성화합니다.

다음과 같은 reasoning_enabled: false 경우를 설정합니다.

  • 훈련 데이터에 추론 토큰이 없습니다.

  • 명시적 추론 단계의 이점을 얻지 못하는 간단한 작업에 대해 훈련하고 있습니다.

  • 속도를 최적화하고 토큰 사용량을 줄이려는 경우

추론 데이터 생성

데이터 세트에 추론 추적이 없는 경우 Nova Premier와 같은 추론 지원 모델을 사용하여 생성할 수 있습니다. 모델에 입력-출력 페어를 제공하고 추론 프로세스를 캡처하여 추론 증강 데이터 세트를 구축합니다.

훈련에 추론 토큰 사용

추론 모드가 활성화된 상태에서 훈련하면 모델은 내부 추론을 최종 답변과 분리하는 방법을 학습합니다. 훈련 프로세스:

  • 입력, 추론, 답변 등 데이터를 트리플로 구성

  • 추론 토큰과 응답 토큰 모두에서 표준 다음 토큰 예측 손실을 사용하여 최적화합니다.

  • 응답을 생성하기 전에 모델이 내부적으로 추론하도록 장려합니다.

효과적인 추론 콘텐츠

고품질 추론 콘텐츠에는 다음이 포함되어야 합니다.

  • 중간 사고 및 분석

  • 논리적 공제 및 추론 단계

  • Step-by-step 문제 해결 접근 방식

  • 단계와 결론 간의 명시적 연결

이렇게 하면 모델이 “응답하기 전에 생각”할 수 있는 기능을 개발하는 데 도움이 됩니다.

데이터 세트 준비 지침

크기 및 품질

  • 권장 크기 - 샘플 2,000~10,000개

  • 최소 샘플 - 200

  • 우선순위 - 수량보다 품질이 좋습니다. 예제가 정확하고 주석이 잘 달렸는지 확인

  • 애플리케이션 정렬 - 데이터 세트는 프로덕션 사용 사례를 긴밀하게 반영해야 합니다.

다양성

다음과 같은 다양한 예를 포함합니다.

  • 예상 입력의 전체 범위 포함

  • 다양한 난이도 표시

  • 엣지 케이스 및 변형 포함

  • 패턴을 좁히기 위한 과적합 방지

출력 형식

어시스턴트 응답에서 원하는 출력 형식을 명확하게 지정합니다.

  • JSON 구조

  • 테이블

  • CSV 형식

  • 애플리케이션별 사용자 지정 형식

멀티턴 대화

멀티턴 데이터 세트의 경우 다음 사항에 유의하세요.

  • 손실은 사용자 교체가 아닌 어시스턴트 교체 시에만 계산됩니다.

  • 각 어시스턴트 응답의 형식이 올바르게 지정되어야 합니다.

  • 대화 전환 간에 일관성 유지

품질 체크리스트

  • 충분한 데이터 세트 크기(2K-10K 샘플)

  • 모든 사용 사례를 다루는 다양한 예제

  • 명확하고 일관된 출력 형식 지정

  • 정확한 레이블 및 주석

  • 프로덕션 시나리오의 대표

  • 모순이나 모호성이 없음

데이터 업로드

데이터 세트는 SageMaker 훈련 작업에서 액세스할 수 있는 버킷에 업로드해야 합니다. 올바른 권한 설정에 대한 자세한 내용은 사전 조건을 참조하세요.

훈련 작업 시작

하이퍼파라미터 선택 및 레시피 업데이트

Nova 2.0의 설정은 Nova 1.0의 설정과 거의 동일합니다. 입력 데이터가 S3에 업로드되면 미세 조정 폴더에서 SageMaker Hyperpod 레시피의 레시피를 사용합니다. Nova 2.0의 경우 사용 사례에 따라 업데이트할 수 있는 몇 가지 주요 하이퍼파라미터는 다음과 같습니다. 다음은 Nova 2.0 SFT PEFT 레시피의 예입니다.

Nova 훈련과의 엄격한 호환성을 위해 SageMaker PySDK의 v2.254.1을 사용하세요. SDK를 v3.0 버전으로 업그레이드하면 변경 사항이 중단됩니다. SageMaker PySDK v3에 대한 지원이 곧 제공될 예정입니다.

샘플 입력

!pip install sagemaker==2.254.1
run: name: {peft_recipe_job_name} model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: {peft_model_name_or_path} data_s3_path: {train_dataset_s3_path} # SageMaker Hyperpod (SMHP) only and not compatible with SageMaker Training jobs. Note replace my-bucket-name with your real bucket name for SMHP job replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16, 32 output_s3_path: "" # Output artifact path (Hyperpod job-specific; not compatible with standard SageMaker Training jobs). Note replace my-bucket-name with your real bucket name for SMHP job training_config: max_steps: 10 # Maximum training steps. Minimal is 4. save_steps: 10 # How many training steps the checkpoint will be saved. Should be less than or equal to max_steps save_top_k: 1 # Keep top K best checkpoints. Note supported only for SageMaker HyperPod jobs. Minimal is 1. max_length: 32768 # Sequence length (options: 8192, 16384, 32768 [default], 65536) global_batch_size: 32 # Global batch size (options: 32, 64, 128) reasoning_enabled: true # If data has reasoningContent, set to true; otherwise False lr_scheduler: warmup_steps: 15 # Learning rate warmup steps. Recommend 15% of max_steps min_lr: 1e-6 # Minimum learning rate, must be between 0.0 and 1.0 optim_config: # Optimizer settings lr: 1e-5 # Learning rate, must be between 0.0 and 1.0 weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 adam_beta1: 0.9 # Exponential decay rate for first-moment estimates, must be between 0.0 and 1.0 adam_beta2: 0.95 # Exponential decay rate for second-moment estimates, must be between 0.0 and 1.0 peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "lora" # Enable LoRA for PEFT lora_tuning: alpha: 64 # Scaling factor for LoRA weights ( options: 32, 64, 96, 128, 160, 192), lora_plus_lr_ratio: 64.0

레시피에는 Nova 1.0과 거의 동일한 하이퍼파라미터도 포함되어 있습니다. 주목할 만한 하이퍼파라미터는 다음과 같습니다.

  • max_steps - 작업을 실행할 단계 수입니다. 일반적으로 하나의 에포크(전체 데이터 세트를 통해 실행되는 하나)의 경우 단계 수 = 데이터 샘플 수/글로벌 배치 크기입니다. 단계 수가 많고 전역 배치 크기가 작을수록 작업 실행 시간이 길어집니다.

  • reasoning_enabled - 데이터 세트의 추론 모드를 제어합니다. 옵션:

    • true: 추론 모드 활성화(높은 추론과 동일)

    • false: 추론 모드 비활성화

    참고: SFT의 경우 추론 작업 수준을 세밀하게 제어할 수 없습니다. 를 설정하면 전체 추론 기능이 reasoning_enabled: true 활성화됩니다.

  • peft.peft_scheme - 이를 "lora"로 설정하면 PEFT 기반 미세 조정이 활성화됩니다. null(따옴표 없음)로 설정하면 전체 순위 미세 조정이 활성화됩니다.

훈련 작업 시작

from sagemaker.pytorch import PyTorch # define OutputDataConfig path if default_prefix: output_path = f"s3://{bucket_name}/{default_prefix}/{sm_training_job_name}" else: output_path = f"s3://{bucket_name}/{sm_training_job_name}" recipe_overrides = { "run": { "replicas": instance_count, # Required "output_s3_path": output_path }, } estimator = PyTorch( output_path=output_path, base_job_name=sm_training_job_name, role=role, disable_profiler=True, debugger_hook_config=False, instance_count=instance_count, instance_type=instance_type, training_recipe=training_recipe, recipe_overrides=recipe_overrides, max_run=432000, sagemaker_session=sagemaker_session, image_uri=image_uri, tags=[ {'Key': 'model_name_or_path', 'Value': model_name_or_path}, ] ) print(f"\nsm_training_job_name:\n{sm_training_job_name}\n") print(f"output_path:\n{output_path}")
from sagemaker.inputs import TrainingInput train_input = TrainingInput( s3_data=train_dataset_s3_path, distribution="FullyReplicated", s3_data_type="Converse", ) estimator.fit(inputs={"validation": val_input}, wait=False)
참고

Nova 2.0의 지도 미세 조정에는 검증 데이터 세트 전달이 지원되지 않습니다.

작업을 시작하려면:

  • 데이터 세트 경로 및 하이퍼파라미터로 레시피 업데이트

  • 노트북에서 지정된 셀을 실행하여 훈련 작업 제출

노트북은 작업 제출을 처리하고 상태 추적을 제공합니다.