local ai llm 모델 학습을 위한 dataset json 타입 만드는 방법

 Local LLM(Llama 3, Gemma 2 등)을 직접 튜닝(Fine-tuning)하기 위해 데이터를 준비하시는군요!

LLM 학습용 데이터셋은 단순히 정보를 나열하는 게 아니라, **AI가 학습할 '대화의 흐름'**을 정의하는 것이 핵심입니다. 현재 업계에서 가장 표준으로 쓰이는 3가지 JSON 형식을 정리해 드릴게요.


1. 지시 이행형 (Instruction Format)

가장 일반적인 형식입니다. "질문(Instruction) - 맥락(Input) - 답변(Output)"의 구조를 가집니다.

  • 사용처: 특정 작업(리뷰 요약, 코드 생성 등)을 학습시킬 때

  • 구조:

JSON
[
  {
    "instruction": "고객의 리뷰를 분석하여 사장님의 답글 점수를 매겨주세요.",
    "input": "리뷰: 와플 생크림이 너무 적어요. / 답글: 죄송합니다. 다음엔 듬뿍 드릴게요.",
    "output": "점수: 85점. 사과와 개선 약속이 포함되어 있으나 구체적인 보상 언급이 부족함."
  },
  {
    "instruction": "오늘 날짜를 기준으로 마감일을 계산하세요.",
    "input": "오늘: 2026-02-10, 기한: 3일 뒤",
    "output": "마감일은 2026-02-13입니다."
  }
]

2. 대화형 (ChatML / ShareGPT Format)

최근 Llama 3나 최신 모델들이 가장 선호하는 형식입니다. role(역할)과 content(내용)로 구분되어 실제 채팅처럼 학습합니다.

  • 사용처: 챗봇의 말투나 대화 흐름을 학습시킬 때

  • 구조:

JSON
[
  {
    "conversations": [
      {"role": "system", "content": "당신은 친절한 식당 사장님입니다."},
      {"role": "human", "content": "여기 주차 되나요?"},
      {"role": "gpt", "content": "네, 건물 뒷편에 전용 주차장이 마련되어 있습니다! 편하게 오세요. 😊"}
    ]
  }
]

3. 단순 텍스트형 (Raw Text / Pre-training)

구조 없이 긴 글을 학습시킬 때 씁니다.

  • 사용처: 기술 문서, 법전, 소설 등 대량의 지식을 주입할 때

  • 구조:

JSON
[
  {"text": "Spring AI는 스프링 프레임워크 기반의 AI 애플리케이션 개발을 돕는 라이브러리이다... (중략)"},
  {"text": "2026년 연말정산 변경 지침에 따르면 결혼 세액공제가 신설되어..."}
]

🛠 데이터셋 제작 시 지켜야 할 3대 원칙

  1. 다양성 (Diversity): 똑같은 패턴의 문장만 넣으면 AI가 "앵무새"가 됩니다. 질문의 어투를 다양하게 섞으세요. ("알려줘", "알려줄래?", "알려주십시오")

  2. 품질 (Quality): 쓰레기를 넣으면 쓰레기가 나옵니다 (GIGO). 오타가 있거나 사실관계가 틀린 데이터는 과감히 삭제하세요.

  3. 일관성 (Consistency): 시스템 프롬프트(정체성)를 일관되게 유지해야 합니다. 어떨 때는 반말하고 어떨 때는 존댓말 하면 AI가 혼란에 빠집니다.


💡 실전 전략

지금 가지고 계신 '리뷰 평가 결과 엑셀' 데이터를 학습 데이터로 만드신다면 1번(지시 이행형) 구조를 추천드립니다.

  • Instruction: "리뷰를 보고 전문가 점수를 매기고 사람이 작성했을 확률을 분석하라"

  • Input: 엑셀의 review_contentreply 컬럼 합치기

  • Output: 엑셀의 master_score, human_prob, human_reason 합치기

이렇게 만든 JSON 파일을 Hugging Facedatasets 라이브러리로 로드하면 바로 학습이 가능합니다.


 DBeaver를 사용해서 MySQL 데이터를 AI 학습용 JSON 데이터셋으로 뽑아내는 방법은 아주 간단합니다. 쿼리 결과창에서 몇 번의 클릭만으로 가능합니다.

LLM 학습(Fine-tuning)을 위한 지시 이행형(Instruction) 구조로 만드는 단계별 가이드를 드립니다.


1. DBeaver에서 데이터 추출(Export) 단계

  1. SQL 실행: 먼저 학습에 필요한 데이터를 쿼리로 뽑습니다.

    • 예: SELECT review_content, reply, master_score FROM ai_review_table;

  2. 결과창 우클릭: 데이터 그리드(결과창) 아무 곳이나 우클릭합니다.

  3. 데이터 내보내기: [Data Transfer] -> **[Export Data]**를 선택합니다.

  4. 대상 형식 선택: 목록에서 JSON을 선택하고 Next를 누릅니다.

  5. 설정 확인: * JSON 형식: 보통 Array of objects 형식이 학습용으로 쓰기 좋습니다.

  6. 경로 지정 및 완료: 파일 이름을 정하고 Proceed를 누르면 끝입니다!


2. AI 학습용 Dataset 형식으로 커스텀하기 (추천)

단순히 테이블을 뽑으면 AI 학습에 적합하지 않을 수 있습니다. SQL 자체에서 LLM이 이해하기 좋은 구조로 합쳐서 뽑는 것이 훨씬 효율적입니다.

MySQL 쿼리 예시:

AI에게 "리뷰를 보고 답글 점수를 매겨라"라는 미션을 주는 구조입니다.

SQL
SELECT 
    '고객의 리뷰와 사장님의 답글을 분석하여 서비스 점수를 매겨주세요.' as instruction,
    CONCAT('리뷰 내용: ', review_content, ' / 사장님 답글: ', reply) as input,
    CONCAT('점수: ', master_score, '점 / 이유: ', human_reason) as output
FROM ai_review_table
WHERE master_score IS NOT NULL;
  • 이렇게 쿼리를 실행한 후 위 1번 방법(JSON Export)으로 뽑으면 바로 Fine-tuning에 쓸 수 있는 데이터셋이 완성됩니다.


3. JSON 구조 비교 (DBeaver 기본 vs 학습용)

구분DBeaver 기본 추출 (JSON)AI 학습용 추천 구조
모양{"id": 22431, "score": 2, ...}{"instruction": "...", "input": "...", "output": "..."}
특징데이터 백업용 (모든 컬럼 포함)AI가 '질문-답변' 관계를 배우기 좋음
학습 효과낮음 (맥락이 없음)매우 높음 (의도 학습 가능)

💡  꿀팁

만약 데이터 양이 많다면(수천 건 이상), DBeaver에서 JSON으로 뽑은 뒤 파이썬(Python) 스크립트로 **Train/Test 데이터(8:2 비율)**로 나누는 과정이 필요합니다.


댓글

이 블로그의 인기 게시물

자바 string 비교 할때 equlas 를 사용하자

jqgrid 에서 export execl 붙이기

flutter webview scroll 안되는 경우 gestureRecognizers: gestureRecognizers, 추가 해서 되었다