본문으로 건너뛰기
실습하기

파인튜닝 데이터셋 검증하기

파인튜닝 데이터셋 검증하기: 꼭 알아야 할 체크포인트

파인튜닝을 위한 학습 데이터셋에서 JSONL 형식이 잘못되었거나, JSONL이 10개 미만의 JSON 객체를 포함하고 있다면 파인튜닝이 작동하지 않을 것입니다.

또한 중복 데이터가 있거나, 필수 필드가 누락되었거나, 데이터 타입이 일관성 없는 경우에도 모델이 학습을 제대로 수행하지 못할 수 있습니다.

이번 수업에서는 파인튜닝을 시작하기 전에, 데이터셋에서 검증해야 할 중요한 요소들을 살펴보겠습니다.


파일 형식 검증

우선, 데이터 파일이 JSON Lines 형식인지 확인해야 합니다.

JSONL 파일은 각 줄에 하나의 JSON 객체를 포함하고 있어야 합니다.

파일을 열어 모든 줄이 유효한 JSON 형식인지 확인해 보세요. 이 과정에서 UTF-8로 인코딩되어 있는지도 체크하는 것이 좋습니다.

예시 JSONL 파일
{"messages": [{"role": "system", "content": "당신은 친절한 여행 가이드 챗봇입니다."}, {"role": "user", "content": "안녕하세요, 오늘 날씨가 어떻습니까?"}, {"role": "assistant", "content": "안녕하세요! 오늘 날씨는 맑고 화창합니다."}]}
{"messages": [{"role": "system", "content": "당신은 친절한 여행 가이드 챗봇입니다."}, {"role": "user", "content": "추천할 만한 관광지가 있나요?"}, {"role": "assistant", "content": "물론입니다! 서울의 경복궁과 남산타워를 추천합니다."}]}

필수 필드 확인

다음으로, 각 JSON 객체에 필요한 필드가 모두 존재하는지 확인합니다.

예를 들어, 텍스트 데이터와 레이블이 포함된 데이터셋이라면, 각 객체에 messages 필드가 있어야 하며, message(s 생략)이나 다른 이름의 필드가 존재하지 않아야 합니다.

필수 필드 예시
{"messages": [{"role": "system", "content": "당신은 친절한 여행 가이드 챗봇입니다."}, {"role": "user", "content": "안녕하세요, 오늘 날씨가 어떻습니까?"}, {"role": "assistant", "content": "안녕하세요! 오늘 날씨는 맑고 화창합니다."}]}  # 'messages' 필드가 존재
{"messages": [{"role": "system", "content": "당신은 친절한 여행 가이드 챗봇입니다."}, {"role": "user", "content": "추천할 만한 관광지가 있나요?"}, {"role": "assistant", "content": "물론입니다! 서울의 경복궁과 남산타워를 추천합니다."}]} # 일관성 유지

데이터 타입 검증

필드의 데이터 타입이 일관성 있는지도 확인해야 합니다. messages 필드는 객체 배열이어야 하고, 각 객체의 rolecontent 필드는 문자열이어야 합니다. 데이터 타입이 혼용되면 모델이 혼란스러워할 수 있습니다. 모든 JSON 객체에서 각 필드가 올바른 데이터 타입을 가지는지 점검해 보세요.

데이터 타입 일관성 예시
{"messages": [{"role": "system", "content": "당신은 친절한 여행 가이드 챗봇입니다."}, {"role": "user", "content": "안녕하세요, 오늘 날씨가 어떻습니까?"}, {"role": "assistant", "content": "안녕하세요! 오늘 날씨는 맑고 화창합니다."}]}  # 'messages'는 객체 배열, 'role'과 'content'는 문자열
{"messages": [{"role": "system", "content": "당신은 친절한 여행 가이드 챗봇입니다."}, {"role": "user", "content": "추천할 만한 관광지가 있나요?"}, {"role": "assistant", "content": "물론입니다! 서울의 경복궁과 남산타워를 추천합니다."}]} # 일관성 유지

중복 데이터 확인

마지막으로, 중복된 데이터가 없는지 확인합니다. 중복 데이터는 모델의 학습에 편향을 줄 수 있기 때문에, 데이터셋의 고유 식별자를 사용하여 중복 여부를 판단하고, 필요시 중복을 제거합니다.

중복 데이터 예시
{"messages": [{"role": "system", "content": "당신은 친절한 여행 가이드 챗봇입니다."}, {"role": "user", "content": "안녕하세요, 오늘 날씨가 어떻습니까?"}, {"role": "assistant", "content": "안녕하세요! 오늘 날씨는 맑고 화창합니다."}]}  # 중복되지 않은 데이터
{"messages": [{"role": "system", "content": "당신은 친절한 여행 가이드 챗봇입니다."}, {"role": "user", "content": "추천할 만한 관광지가 있나요?"}, {"role": "assistant", "content": "물론입니다! 서울의 경복궁과 남산타워를 추천합니다."}]} # 유일한 데이터
{"messages": [{"role": "system", "content": "당신은 친절한 여행 가이드 챗봇입니다."}, {"role": "user", "content": "안녕하세요, 오늘 날씨가 어떻습니까?"}, {"role": "assistant", "content": "안녕하세요! 오늘 날씨는 맑고 화창합니다."}]} # 중복된 데이터, 제거 필요

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!