View a markdown version of this page

RFT on Amazon Nova 2용 데이터 준비하기 - Amazon Nova

RFT on Amazon Nova 2용 데이터 준비하기

RFT on Amazon Nova 2는 현재 텍스트 기반 훈련 데이터를 지원합니다. 이 페이지에서는 Amazon Nova 2 이해 모델의 RFT 훈련 데이터를 준비하는 것과 관련하여 데이터 형식, 지원되는 기능, 제약 조건, 모범 사례를 설명합니다.

작은 정보

훈련 작업을 시작하기 전에 데이터세트 형식을 검증하려면 검증 도구 섹션을 참조하세요.

데이터 형식

RFT 훈련 데이터는 OpenAI 강화 미세 조정 형식을 따릅니다. JSONL 훈련 파일의 각 줄은 최상위 필드가 다음과 같은 JSON 객체입니다. 자세히 알아보려면 섹션을 펼치세요.

필수 사항입니다. system, user 및 선택적으로 assistant 역할을 사용하는 대화 턴의 배열입니다.

  • role – 필수입니다. 공통 값﹕ system(모델을 위한 지침) 및 user(작업 또는 입력).

  • content – 필수입니다. 메시지의 텍스트 콘텐츠입니다. 시스템 턴의 경우에는 지침이고, 사용자 턴의 경우에는 작업 또는 입력입니다.

"messages": [ { "role": "system", "content": "instructions" }, { "role": "user", "content": "prompt" } ]

필수 사항입니다. 보상 함수가 모델 응답 점수를 지정하는 데 사용하는 예상 출력 또는 평가 기준입니다. 이 필드는 구조화된 출력으로 제한되지 않습니다. 보상 함수가 품질을 평가하는 데 도움이 되는 모든 형식을 포함할 수 있습니다.

"reference_answer": { "field": "value" }

선택 사항입니다. 이 예에서 모델에 사용할 수 있는 도구 사양의 배열입니다. 각 항목은 도구의 인터페이스와 메타데이터를 정의합니다. 전체 예시는 도구 직접 호출 섹션을 참조하세요.

"tools": [ { "type": "function", "function": { "name": "tool-name", "description": "tool-description", "parameters": { ... } } } ]

RFT 데이터 형식은 messages 및 reference_answer 이외에도 사용자 지정 필드를 지원합니다. 보상 함수가 적절하게 평가하는 데 필요한 추가 데이터를 모두 포함합니다. 이는 레시피에서 구성할 필요가 없으며, 런타임 시 metadata 필드의 보상 함수로 전달됩니다.

일반적인 예는 다음과 같습니다.

메타데이터:

  • id - 추적을 위한 고유 식별자

  • task_id – 작업 수준 식별자

  • difficulty_level - 문제 복잡성 지표

  • domain - 주제 영역 또는 카테고리

  • expected_reasoning_steps - 솔루션에서 단계 수

평가 기준:

  • evaluation_criteria – 구체적인 채점 기준

  • custom_scoring_weights – 다양한 영역의 상대적 중요성

  • context_data – 문제에 대한 배경 정보

  • external_references - 관련 설명서 또는 리소스에 대한 링크

데이터 검증

훈련 작업을 제출하기 전에, 데이터세트를 검증하여 형식 지정 문제를 조기에 포착합니다. 사용 가능한 검증 도구는 검증 도구 섹션을 참조하세요.

샘플 입력

다음은 다양한 RFT 사용 사례에 맞게 필드를 조합하는 방법을 보여주는 완전한 JSON 객체의 예입니다.

Chemistry problem
{ "id": "chem-01", "messages": [ { "role": "system", "content": "You are a helpful chemistry assistant" }, { "role": "user", "content": "Calculate the molecular weight of caffeine (C8H10N4O2)" } ], "reference_answer": { "molecular_weight": 194.19, "unit": "g/mol", "calculation": "8(12.01) + 10(1.008) + 4(14.01) + 2(16.00) = 194.19" } }
Math problem
{ "id": "math-001", "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] } }
Code problem
{ "id": "code-002", "messages": [ { "role": "system", "content": "You are a helpful programming assistant" }, { "role": "user", "content": "Write a Python function that reverses a string without using built-in reverse methods" } ], "reference_answer": { "code": "def reverse_string(s):\n result = ''\n for i in range(len(s) - 1, -1, -1):\n result += s[i]\n return result", "test_cases": [ { "input": "hello", "expected_output": "olleh" }, { "input": "", "expected_output": "" }, { "input": "a", "expected_output": "a" }, { "input": "Python123", "expected_output": "321nohtyP" } ], "all_tests_pass": true } }
Tool usage
{ "id": "tool-001", "messages": [ { "role": "system", "content": "You are a helpful game master assistant" }, { "role": "user", "content": "Generate a strength stat for a warrior character. Apply a +2 racial bonus modifier." } ], "tools": [ { "type": "function", "function": { "name": "StatRollAPI", "description": "Generates character stats by rolling 4d6, dropping the lowest die result, and applying a modifier.", "parameters": { "type": "object", "properties": { "modifier": { "description": "An integer representing the modifier to apply to the total of the stat roll.", "type": "integer" } }, "required": ["modifier"] } } } ], "reference_answer": { "tool_called": "StatRollAPI", "tool_parameters": { "modifier": 2 }, "expected_behavior": "Call StatRollAPI with modifier=2 and return the calculated stat value" } }
With additional properties

다음 예에는 평가 중에 보상 함수에 전달되는 사용자 지정 메타데이터 필드가 포함되어 있어 특정 사용 사례에 맞게 조정된 정교한 점수 매기기 로직을 구현할 수 있습니다.

{ "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] }, "task_id": "algebra_001", "difficulty_level": "easy", "domain": "algebra", "expected_reasoning_steps": 3 }

지원되는 기능

다음 표에는 RFT on Amazon Nova 2의 기능 지원에 대한 내용이 요약되어 있습니다.

RFT 기능 지원
기능 RFT on Amazon Nova 2
텍스트 이해 Nova 2.0 Lite에서 지원됩니다. 일반/텍스트 이해을(를) 참조하세요.
이미지 이해 지원되지 않음
비디오 이해 지원되지 않음
문서 이해 지원되지 않음
도구 직접 호출 Nova 2.0 Lite에서 지원됩니다. 도구 직접 호출을(를) 참조하세요.
추론 Nova 2.0 Lite에서 지원됩니다. 추론을(를) 참조하세요.

일반/텍스트 이해

이 섹션에는 RFT on Amazon Nova 2 훈련 데이터를 준비할 때 적용되는 일반적인 제약과 모범 사례가 요약되어 있습니다.

제약 조건

일반 데이터세트 제약 조건
제약 조건 세부 사항
데이터세트 형식 JSONL(줄당 JSON 객체 1개).
최소 훈련 예시 수 100
최소 평가 예시 수 100
지원되는 양식 텍스트 전용

모범 사례:

  • 최소 데이터세트 크기(훈련 예시 100개 및 평가 예시 100개)로 시작하여, 보상 함수를 검증하고 RFT가 사용 사례에 적합한지 확인한 후 스케일 업하는 것이 좋습니다.

  • 평가 우선 접근 방식을 권장합니다. 대규모 RFT 훈련에 투자하기 전에 모델의 기준 성능을 평가합니다.

    • 높은 성능(> 95% 보상) – 모델이 이미 잘 작동하므로 RFT가 불필요할 수 있습니다.

    • 매우 낮은 성능(0% 보상) - 먼저 SFT로 전환하여 기본 기능을 설정하세요.

    • 중간 성능 - RFT가 적절할 가능성이 큽니다.

  • 작은 데이터세트로 시작하면 보상 함수에 버그가 없는지 검증하고, RFT가 적절한 접근 방식인지 확인하고, 문제를 조기에 식별해 해결하고, 스케일 업하기 전에 워크플로를 테스트할 수 있습니다.

  • 모델 응답에서 일관되게 실행되는 신뢰할 수 있는 보상 함수와 고품질 입력 데이터의 우선순위를 지정합니다.

샘플 입력

{ "id": "math-001", "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] } }

도구 직접 호출

RFT는 도구 호출 패턴에서 모델 훈련을 지원하므로 모델은 외부 도구 또는 함수를 호출하는 시점과 방법을 배울 수 있습니다.

제약 조건

도구 직접 호출 제약 조건
제약 조건 세부 사항
도구 정의 위치 도구는 훈련 예시의 최상위 tools 배열에 선언됩니다.
도구 정의 형식 각 도구에는 type, function.name, function.description, 그리고 function.parameters의 유효한 JSON 스키마가 포함되어야 합니다.
참조 답변 reference_answer를 사용하여, 보상 함수가 정확성을 평가할 수 있도록 예상 도구 호출(예: tool_called, tool_parameters)을 지정합니다.

모범 사례:

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

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

  • 각 도구를 사용해야 하는 경우와 도구를 사용하지 않아야 하는 경우에 관한 다양한 예제를 포함합니다.

샘플 입력

{ "id": "tool-001", "messages": [ { "role": "system", "content": "You are a helpful game master assistant" }, { "role": "user", "content": "Generate a strength stat for a warrior character. Apply a +2 racial bonus modifier." } ], "tools": [ { "type": "function", "function": { "name": "StatRollAPI", "description": "Generates character stats by rolling 4d6, dropping the lowest die result, and applying a modifier.", "parameters": { "type": "object", "properties": { "modifier": { "description": "An integer representing the modifier to apply to the total of the stat roll.", "type": "integer" } }, "required": ["modifier"] } } } ], "reference_answer": { "tool_called": "StatRollAPI", "tool_parameters": { "modifier": 2 }, "expected_behavior": "Call StatRollAPI with modifier=2 and return the calculated stat value" } }

추론

RFT on Amazon Nova 2는 모델이 최종 답변을 생성하기 전에 먼저 명시적 사고 토큰을 생성하는 추론 모드를 지원합니다. reasoning_effort 훈련 구성 필드를 사용하여 훈련 중에 추론 동작을 제어합니다.

제약 조건

추론 제약 조건
제약 조건 세부 사항
사용 가능한 모드 none(reasoning_effort 필드 생략), low 및 high. RFT에는 medium 옵션이 없습니다.
기본 동작 구성에 reasoning_effort 필드가 없으면 추론이 비활성화됩니다.
토큰 제한 추론이 활성화된 경우 확장된 추론 출력을 수용하려면 max_new_tokens를 32,768로 설정합니다.

각 모드를 사용해야 하는 경우

다음과 같은 경우 high 추론을 사용합니다.

  • 복잡한 분석 작업

  • 수학적 문제 해결

  • 여러 단계의 논리적 연역

  • 단계별 사고가 가치를 더하는 작업

다음에는 none(reasoning_effort 생략) 또는 low 추론을 사용합니다.

  • 단순한 사실적 쿼리

  • 직접 분류

  • 속도 및 비용 최적화

  • 간단한 질문과 답변

비용 및 성능의 장단점

추론 모드의 노력이 높아질수록 다음이 증가합니다.

  • 훈련 시간 및 비용

  • 추론 지연 시간 및 비용

  • 복잡한 추론 작업에 대한 모델 기능

효과적인 훈련 데이터의 특성

명확성 및 일관성

좋은 RFT 예제에는 여러 모델 출력에서 정확한 보상을 계산할 수 있는 명확하고 모호하지 않은 입력 데이터가 필요합니다. 다음을 포함하여 데이터에서 노이즈를 방지합니다.

  • 일관되지 않은 형식 지정

  • 모순되는 레이블 또는 지침

  • 모호한 프롬프트

  • 참조 답변 충돌

모호할 경우 훈련 프로세스에서 오해가 발생하고 모델이 의도하지 않은 동작을 학습하게 됩니다.

다양성

데이터세트는 강력한 실제 성능을 보장하기 위해 프로덕션 사용 사례의 완전한 다양성을 캡처해야 합니다. 포함:

  • 여러 입력 형식 및 엣지 케이스

  • 로그 및 사용자 분석의 실제 프로덕션 사용 패턴 매핑

  • 사용자 유형, 지리적 리전 및 계절적 변형을 고려하는 샘플

  • 간단한 문제부터 복잡한 문제까지 난이도 포함

보상 함수 고려 사항

효율적인 훈련을 위해 보상 함수를 설계합니다.

  • 분이 아닌 초 단위 내 실행

  • Lambda를 사용하여 효과적으로 병렬 처리

  • 일관되고 신뢰할 수 있는 점수 반환

  • 여러 유형의 모델 출력을 정상적으로 처리

빠르고 확장 가능한 보상 함수를 사용하면 빠른 반복과 비용 효율적인 실험이 가능합니다.

평가형 LLM을 사용하는 RFT 훈련

개요

대규모 언어 모델(LLM)은 강화 미세 조정(RFT) 워크플로의 평가자 역할로 더 많이 사용되고 있으며, 모델 최적화를 안내하는 자동화된 보상 신호를 제공합니다. 이 접근 방식에서 LLM은 정확성, 품질, 스타일 준수 또는 시맨틱 동등성 평가와 같은 지정된 기준에 따라 모델 출력을 평가하고 강화 학습 프로세스를 주도하는 보상을 지정합니다.

이는 여러 표현(예: '1/3', '0.333', '삼분의 일')의 시맨틱이 동등한지 확인하거나 일관성 및 관련성과 같은 미묘한 품질을 평가하는 등 프로그래밍 방식으로 정의하기 어려운 작업에 특히 유용합니다. LLM 기반 평가를 보상 함수로 사용하면 광범위한 인적 주석 없이도 RFT 규모를 복잡한 도메인으로 조정할 수 있으므로 기존 정렬 문제를 넘어 다양한 사용 사례에서 모델을 빠르게 반복하고 지속적으로 개선할 수 있습니다.

LLM 판단 검증

프로덕션 환경에서 평가형 LLM을 배포하기 전에 평가 모델의 평가가 사람의 평가와 일치하는지 확인합니다. 여기에는 다음이 포함됩니다.

  • 작업의 대표 샘플에서 LLM 평가와 인적 평가자 간 합의 비율 측정

  • 사람과 LLM의 합의가 사람 간 합의 비율을 충족하거나 초과하도록 보장

  • 평가 모델의 잠재적 편향 식별

  • 보상 신호가 모델을 의도한 방향으로 안내한다는 확신 구축

이 검증 단계는 자동화된 평가 프로세스가 프로덕션 품질 기준을 충족하는 모델을 생성하는 데 도움이 됩니다.

LLM 평가에 대한 Lambda 구성

평가형 LLM 사용은 검증 가능한 보상을 통한 강화 학습(RLVR)에 Lambda 함수를 사용하는 확장입니다. Lambda 함수 내에서 Amazon Bedrock에 호스팅되는 모델 중 하나를 직접 호출합니다.

중요한 구성 요구 사항:

구성 요구 사항 세부 사항
Amazon Bedrock 처리량 충분한 할당량 사용된 Amazon Bedrock 모델의 처리량 할당량이 훈련 워크로드에 충분하도록 보장
Lambda 제한 시간 연장된 제한 시간 최대 15분으로 Lambda 함수 제한 시간을 구성합니다. 기본 설정은 3초이며, 이는 Amazon Bedrock 모델 응답에 충분하지 않음
Lambda 동시성 동시성 증가 Lambda는 훈련 중에 병렬로 간접 호출됩니다. 동시성을 늘려 사용 가능한 처리량 극대화
레시피 구성 Lambda 설정 일치 동시성 제한은 레시피에서 구성해야 함