LLM을 데이터셋 생성에 활용하기
실제 데이터가 가장 믿을 만한 기준이야. 합성 데이터는 점심시간 한 번이면 사례 50개를 500개로 늘릴 수 있어. 잘 활용하면 운영 로그가 아직 포괄하지 못한 드문 조합, 적대적 입력, 여러 언어의 사례 같은 빈틈을 채울 수 있지.
합성 데이터가 잘하는 일
- 다루지 못한 영역 보완 — 실제 사용자가 아직 다루지 않은 언어, 분야, 형식의 예시를 생성해.
- 적대적 테스트 — 탈옥 공격 프롬프트의 변형, 프롬프트 주입 시도, 형식상의 경계 사례를 만들 수 있어.
- 한계 테스트 — 매우 긴 입력, 깊게 중첩된 JSON, 여러 언어가 섞인 문서를 만들 수 있어.
- 개인정보를 보호하는 개발 — 민감한 데이터의 합성 버전을 사용하면 개발자가 실제 기록을 직접 다루지 않고도 반복해서 개선할 수 있어.
합성 데이터가 잘하지 못하는 일
- 실제 분포 재현 — 생성된 입력에는 모델이 만든 티가 나. 실제 사용자 입력보다 지나치게 매끄럽고 정중한 경향이 있어.
- 아직 알려지지 않은 실패 발견 — LLM은 아무도 모르는 새로운 실패 방식을 스스로 찾아내지 못해.
- 최종 출시 결정 — 합성 평가 결과만 보고 출시 여부를 결정하면 안 돼. 실제 데이터와 합성 데이터를 함께 사용하되 실제 데이터에 더 큰 가중치를 둬.
원칙: 합성 데이터는 다루지 못한 영역의 빈틈을 채우고, 실제 데이터는 새로운 실패 방식을 발견해. 둘 다 사용하되 어느 하나로 다른 하나를 대체하지 마.
실제로 효과가 있는 생성 패턴
씨앗 확장. 실제 사례 20개를 가져와 모델이 각 사례마다 다섯 가지 변형(바꿔 쓰기, 더 긴 버전, 다른 언어 등)을 생성하게 해. 그러면 실제 분포의 형태를 유지한 사례 100개를 얻을 수 있어.
페르소나 중심. N개의 사용자 페르소나 관점에서 사례를 생성해. 즉석에서 만든 프롬프트보다 의도의 다양성을 더 잘 포착할 수 있어.
실패 유형 중심. 우려되는 실패 방식을 나열해. 그런 다음 모델이 각 실패를 유발할 만한 입력을 만들게 해.