Nova 2.0에서 SFT
RFT 훈련 데이터는 OpenAI 대화 형식을 따릅니다. 각 훈련 예제는 메시지, 참조 답변 및 선택적 도구 정의를 포함하는 JSON 객체입니다. 이 섹션에서는 Nova 2.0에서 RFT에 대한 효과적인 훈련 데이터를 준비하는 방법에 대한 지침을 제공합니다.
데이터 형식 및 구조
각 훈련 예제는 다음을 포함하는 JSON 객체입니다.
-
messages: 시스템, 사용자 및 선택적으로 어시스턴트 역할을 사용하는 대화 턴 배열
-
reference_answer: 보상 계산에 대한 평가 기준 또는 예상 출력
-
tools(선택 사항): 모델에서 사용할 수 있는 함수 정의 배열
-
id(선택 사항): 추적 및 중복 제거를 위한 고유 식별자
각 예제는 JSONL 파일에서 한 줄에 있어야 하며 한 줄에 하나의 JSON 객체가 있어야 합니다.
다음 예제에서는 실측 정보 값을 포함하는 참조 답변을 사용하는 화학 문제를 보여줍니다.
{ "id": "chem-001", "messages": [ { "role": "system", "content": "You are a helpful chemistry assistant" }, { "role": "user", "content": "Predict hydrogen bond donors and acceptors for this SMILES: CCN(CC)CCC(=O)c1sc(N)nc1C" } ], "reference_answer": { "donor_bond_counts": 2, "acceptor_bond_counts": 4, "explanation": "Calculated using Lipinski's rule of five: N-H groups (2 donors), N and O atoms with lone pairs (4 acceptors)" } }
참고
reference_answer에는 도메인별 규칙을 사용하여 계산된 실측 정보 값이 포함되어 있습니다. 보상 함수는 모델 예측 값을 이러한 참조 값과 비교하여 보상 점수를 계산합니다.
다음 예제에서는 해법 단계를 포함하는 수학 문제를 보여줍니다.
{ "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"] } }
다음 예제에서는 예상 동작이 있는 도구 사용을 보여줍니다.
{ "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" } }
필드 설명
필드 |
설명 |
추가 참고 사항 |
필수 |
|---|---|---|---|
id |
이 RFT 예제의 고유 식별자 |
문자열(예: 'sample-001'). 추적 및 중복 제거에 유용합니다. |
아니요 |
messages |
프롬프트 및 컨텍스트를 정의하는 채팅 메시지의 정렬된 목록 |
객체의 배열입니다. 모델은 이를 순서대로 확인합니다. 일반적으로 시스템 메시지로 시작한 다음 사용자로 진행합니다. |
예 |
messages[].role |
메시지에서 화자 |
공통 값: 'system', 'user'(다른 컨텍스트에서 때때로 'assistant') |
아니요 |
messages[].content |
메시지의 텍스트 콘텐츠 |
일반 문자열. 시스템의 경우 지침, 사용자의 경우 태스크 또는 입력에 해당합니다. |
아니요 |
도구 |
이 예제에서 모델에 사용할 수 있는 도구 사양 |
배열. 각 항목은 도구의 인터페이스와 메타데이터를 정의합니다. 유형으로 'function' 또는 'internal'이 포함될 수 있습니다. |
아니요 |
reference_answer |
이 예제의 예상 모델 출력 |
태스크에 따라 문자열 또는 객체에 해당합니다. 평가 또는 훈련의 대상으로 사용됩니다. |
아니요 |
참고
추가 사용자 지정 필드(예: task_id, difficulty_level, context_data)는 검증되지 않으며 보상 함수에 메타데이터로 전달됩니다.
하이퍼파라미터 지침
훈련 접근 방식을 기반으로 다음과 같은 권장 하이퍼파라미터를 사용합니다.
일반:
-
에포크: 1
-
학습률(lr): 1e-7
-
세대 수: 8
-
최대 새 토큰 수: 8192
-
배치 크기: 256
저순위 적응(LoRA)
-
LoRA 순위: 32
참고
데이터세트 크기 및 검증 성능에 따라 이러한 값을 조정합니다. 훈련 지표를 모니터링하여 과적합을 방지합니다.
추가 속성
'additionalProperties': true 설정을 사용하면 핵심 스키마 요구 사항 이외의 사용자 지정 필드를 포함할 수 있으므로 적절한 평가를 위해 보상 함수에 필요한 데이터를 유연하게 추가할 수 있습니다.
일반적인 추가 필드
다음과 같은 유형의 추가 필드를 포함할 수 있습니다.
메타데이터:
-
task_id: 추적을 위한 고유 식별자
-
difficulty_level: 문제 복잡성 지표
-
domain: 주제 영역 또는 카테고리
-
expected_reasoning_steps: 해법의 단계 수
평가 기준:
-
evaluation_criteria: 특정 등급 루브릭
-
custom_scoring_weights: 여러 측면의 상대적 중요도
-
context_data: 문제에 대한 배경 정보
-
external_references: 관련 설명서 또는 리소스에 대한 링크
추가 속성이 있는 예제
다음 예제에는 사용자 지정 메타데이터 필드가 포함되어 있습니다.
{ "id": "algebra_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"] }, "task_id": "algebra_001", "difficulty_level": "easy", "domain": "algebra", "expected_reasoning_steps": 3 }
데이터세트 크기 권장 사항
시작점
다음과 같은 최소 데이터세트 크기로 시작합니다.
-
최소 100개의 훈련 예제
-
최소 100개의 평가 예제
모델 응답에서 일관되게 실행되는 신뢰할 수 있는 보상 함수와 고품질 입력 데이터의 우선순위를 지정합니다.
평가 우선 접근 방식
대규모 RFT 훈련에 투자하기 전에 모델의 기준 성능을 평가합니다.
-
높은 성능(> 95% 보상): RFT가 불필요할 수 있음 - 모델이 이미 잘 작동함
-
매우 낮은 성능(0% 보상): 먼저 SFT로 전환하여 기본 기능을 설정함
-
중간 성능: RFT가 적절할 가능성이 큼
이 평가 우선 접근 방식은 보상 함수에 버그가 없도록 보장하고 RFT가 사용 사례에 올바른 방법인지를 결정합니다. 소규모로 시작하여 RFT 워크플로에 익숙해지면서, 문제를 조기에 식별 및 수정하고, 스케일 업하기 전에 접근 방식을 검증하며, 보상 함수 신뢰성을 테스트할 수 있습니다. 검증 후에 더 큰 데이터세트로 확장하여 성능을 더욱 개선할 수 있습니다.
효과적인 훈련 데이터의 특성
명확성 및 일관성
좋은 RFT 예제에는 여러 모델 출력에서 정확한 보상을 계산할 수 있는 명확하고 모호하지 않은 입력 데이터가 필요합니다. 다음을 포함하여 데이터에서 노이즈를 방지합니다.
-
일관되지 않은 형식 지정
-
모순되는 레이블 또는 지침
-
모호한 프롬프트
-
참조 답변 충돌
모호할 경우 훈련 프로세스에서 오해가 발생하고 모델이 의도하지 않은 동작을 학습하게 됩니다.
다양성
데이터세트는 강력한 실제 성능을 보장하기 위해 프로덕션 사용 사례의 완전한 다양성을 캡처해야 합니다. 포함:
-
다양한 문제 유형 및 난이도
-
여러 입력 형식 및 엣지 케이스
-
모든 예상 시나리오의 대표 샘플
이러한 다양성은 과적합을 방지하는 데 도움이 되고 모델이 익숙하지 않은 입력을 정상적으로 처리하도록 보장합니다.
보상 함수 고려 사항
효율적인 훈련을 위해 보상 함수를 설계합니다.
-
분이 아닌 초 단위 내 실행
-
Lambda를 사용하여 효과적으로 병렬 처리
-
일관되고 신뢰할 수 있는 점수 반환
-
여러 유형의 모델 출력을 정상적으로 처리
빠르고 확장 가능한 보상 함수를 사용하면 대규모로 신속한 반복과 비용 효율적인 실험이 가능합니다.