데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      에이닷 뮤직 에이전트 Multi Prompt Fine-tuning 도전기 (feat. gpt-4o-mini)

      jongbum.baik 24.10.29
      1,349 5 1
      DEVOTEE 요약
      에이닷 3.0의 뮤직 에이전트에서는 Multi Prompt Fine-tuning 기술을 사용하여 프롬프트 효율성을 높이고 비용을 절감하고자 했지만, 학습과정에서 다양한 시행착오를 겪었습니다. 특히, gpt-3.5-turbo 모델에서는 유니코드 생성 에러와 한글 깨짐 문제를 경험했지만, gpt-4o-mini로 전환함으로써 이러한 문제들이 상당히 개선되었습니다. 이러한 개선을 통해 프롬프트의 품질이 향상되었으며, 앞으로도 LLM을 활용한 다양한 시도를 통해 지식과 경험을 공유해 나가고자 합니다.
      DEVOTEE 추천 블로그

      안녕하세요. 지난 8월, 에이닷 3.0이 새로운 모습으로 시장에 공개되었습니다.

      에이전트로서의 정체성을 한층 강화한 에이닷 3.0에서는 뮤직 에이전트 역시 완성도를 높이기 위한 다양한 변화를 시도했는데요.

      오늘은 뮤직 에이전트 개편 과정에서 활용된 기술 중 하나인 Multi Prompt Fine-tuning에 대해 소개해 드리겠습니다.


      Multi Prompt Fine-tuning이란?

      image.png

      파인튜닝(Fine-tuning) 은 사전 학습된 LLM을 특정 작업이나 도메인에 맞게 미세 조정하는 기술인데요.

      일반적으로는 하나의 작업이나 프롬프트를 하나의 LLM에 학습시키는 방식으로 사용됩니다.

      멀티 프롬프트 파인튜닝(Multi Prompt Fine-tuning) 이란, 일반적인 파인튜닝 과정과 달리 다양한 특화 작업을 하나의 LLM에 학습시키는 기술을 의미합니다.

      멀티 프롬프트 파인튜닝을 활용하면 모델 서빙 비용 절감, 일반화 능력 향상 등 다양한 개선을 기대할 수 있는 것으로 알려져 있습니다.


      Why?

      뮤직 에이전트의 완성도를 향상시키는 과정에서 프롬프트의 수가 늘어나게 되었고, 각 프롬프트의 품질을 높히기 위하여 파인튜닝이 필요한 상황이 되었습니다.

      다만, 모든 프롬프트를 개별 모델로 학습하여 배포하기에 운영비용 측면에서 부담이 존재하였기 때문에 다소 모험적인 멀티 프롬프트 파인튜닝을 시도하게 되었습니다.

      Azure 기준 Fine-tuning 모델 배포 시 시간당 호스팅 비용

      image.png


      시행 착오

      지난 8월 개편 당시, 저희는 gpt-3.5-turbo 모델을 기준으로 멀티 프롬프트 파인튜닝을 시도했는데요.

      실험 초기에는 "LLM인데 여러 프롬프트를 한 번에 학습하는게 당연하지 않을까?"라는 생각으로 시작했지만,

      막상 실제로 학습데이터를 구성하여 학습을 수행하였을 때 예상치 못한 문제들을 마주치게 되었습니다.

      그래서 이번 섹션에서는 저희가 겪은 이슈들 중에서, 비슷한 시도를 하시는 분들께 도움이 될 만한 내용을 공유해 드리려 합니다.


      Generation Error

      모델 통합 초기에 추가 실험 진행 여부를 고민하게 될 정도로 개인적으로는 매우 심각한 에러 상황이었습니다.

      초기 실험에서 저희는 각 프롬프트 별 학습 데이터를 임의로 섞어서 통합 학습 데이터를 구성한 후 모델을 학습시켰는데요.

      이렇게 학습된 모델을 테스트하는 과정에서 다음과 같은 에러가 간헐적으로 발생하였습니다.

      {
        "error": {
          "message": "Failed to create completion as the model generated invalid Unicode output. Unfortunately, this can happen in rare situations. Consider reviewing your prompt or reducing the temperature of your request. You can retry your request, or contact us through an Azure support request at: https://go.microsoft.com/fwlink/?linkid=xxxx if the error persists. (Please include the request ID xxxx in your message.)",
          "type": "server_error",
          "param": null,
          "code": "invalid_model_output"
        }
      }

      관련 문서와 마이크로소프트 문의 결과에 따르면 해당 현상은 LLM이 유니코드 문자를 생성할 때, 발생할 수 있는 gpt-3.5-turbo 모델의 버그인 것으로 확인되었습니다.

      Several customers, especially those using Chinese, Japanese, Korean, and other languages, intermittently encounter 500 error responses from the AOAI service. The error message points to an issue with invalid Unicode output.

      저희는 해당 유니코드 생성 오류가 발생한 상세 원인을 학습 데이터 구성 방식에 있을 것이라고 가정하고,

      아래와 같이 하나의 배치에 동일한 학습 데이터가 배치되도록 구성을 변경하여 다시 모델을 학습시켜 보았고, 해당 방법을 통하여 유니코드 생성 오류가 해결되는 것을 확인할 수 있었습니다.

      Batch Size에 맞추어 학습 데이터 순차 구성

      예시) Batch Size를 2로 가정

      image.png


      프롬프트 간 간섭 현상

      모델 통합을 계획할 때 저희는 나름의 확신이 있었습니다.

      LLM에서 시스템 프롬프트가 코드의 if/else처럼 작동하여, 서로 분리된 영역에서 학습이 이루어질 것이라고 생각했기 때문인데요.

      하지만 실제로 학습 결과를 검증해 보니 예상치 못한 문제들을 마주하게 되었습니다.


      예를 들어, A 프롬프트에서 학습한 문체가 B 프롬프트에 활용되는 케이스가 발견되었고,

      출력 형태가 다른 프롬프트들(예: JSON, 일반 텍스트 등)을 학습시켰을 때는 에러 없이 출력되지만, 간헐적으로 한글이 깨지는 현상이 발견되었습니다.

      특히 쌍모음이나 쌍자음이 포함된 글자를 출력할 때 이런 문제가 발생했습니다.


      이러한 한글 깨짐 현상을 해결하기 위해 저희는 교정을 위한 Few Shot 예제와 추가 프롬프트를 도입하여, 해당 현상을 최대한 예방하는 방향으로 모델 통합을 진행하였습니다.

      한글 깨짐 방지 프롬프트 예시

      (Fine-tuning에 활용된 프롬프트 원문 뒤에 추가)
      
      ...
      
      "한국어 맞춤법 교정 예시"와 같이 한국어 맞춤법을 정확하게 검수하고 교정하여 신중하게 Response를 생성해줘.
      
      <한국어 맞춤법 교정 예시>
      - 활기창게 신나는 노래를 추천드려요. -> 활기차게 신나는 노래를 추천드려요.
      - 로꼀의 감성 가득한 힙합과 알앤비 음악으로 마음을 따뜻하게 채워보세요. -> 로꼬의 감성 가득한 힙합과 알앤비 음악으로 마음을 따뜻하게 채워보세요.
      - 음압을 들어보세요. -> 음악을 들어보세요.
      - 신나는 음악을 즐겨보시는군요. -> 신나는 음악을 즐겨 들으시는군요.
      - 알앤비를 제외한 다어종 장르 -> 알앤비를 제외한 다양한 장르
      - 시티팝 음앥을 추천드려요. -> 시티팝 음악을 추천드려요.
      - 리메이크 곡들로 풍성한 감성을 느꤄보세요. -> 리메이크 곡들로 풍성한 감성을 느껴보세요
      - 다어종 보컬 -> 다양한 보컬
      - 음악 세계을 esperience해 보세요. -> 음악 세계를 경험해 보세요.


      gpt-4o-mini의 등장

      에이닷 3.0의 오픈 준비를 모두 마치고 출시를 기다리던 중에, gpt-4o와 gpt-4o-mini가 공개되었습니다.

      이미 QA(Quality Assurance)를 완료하여 모델을 교체할 수는 없었지만, 세상을 놀라게 한 이 새로운 모델을 사용해 멀티 프롬프트 파인튜닝을 적용하면 품질이 얼마나 향상될지 궁금했는데요.

      그래서 기존에 해결하기 어려웠던 몇 가지 케이스를 비교해 보았습니다.


      RAG

      가장 눈에 띄는 부분은 RAG 품질의 향상이었습니다.

      간헐적으로 프롬프트에 제공하지 않은 정보를 언급하는 할루시네이션 현상이 개선되었으며,

      영어를 그대로 한글로 번역한 듯한 어색하고 민감한 어휘들이 상대적으로 자연스럽게 개선된 것을 체감할 수 있었습니다.

      주어진 정보에 없는 내용을 언급하는 케이스 개선 (할루시네이션 개선)

      image.png

      인종 관련 민감한 어휘(예: 혼혈, 혼합 등) 처리 개선

      image.png


      Intent / Entity Extractor

      Intent / Entity Extractor의 경우, JSON 포맷으로 출력하도록 설계되어 있고 해당 JSON 포맷을 파인튜닝시키면 간헐적으로 한글이 깨지는 현상이 발견되었습니다.

      gpt-4o-mini로 파인튜닝한 모델의 경우, 현재까지는 한글 깨짐 현상을 발견하지 못하였고, 전반적인 멀티턴 상황에서의 분석 능력도 상당히 향상된 것을 느낄 수 있었습니다.

      한글 깨짐 현상 개선

      image.png


      Reactive Messasge Generator

      Reactive Message를 생성하는데 있어서도 gpt-4o-mini는 훨씬 유창한 한국어를 구사하는 것으로 나타났습니다.

      기존 gpt3.5-turbo가 외국인이 한국말을 하는 느낌이었다면, gpt-4o-mini는 한국인이 한국어를 하는 느낌에 가까워졌다는 생각이 듭니다.

      장르 설명 등에 있어서 잘못된 어휘(예: 온스) 사용 케이스 개선

      image.png


      맺으며

      오늘은 gpt-3.5-turbo를 기반으로 다양한 프롬프트를 하나의 모델로 통합하려는 과정에서 겪은 시행착오와 gpt-4o-mini로 전환하여 품질을 비교한 경험을 공유해 보았습니다.

      이번 프로젝트를 진행하면서 OpenAI의 기술 발전 속도에 다시 한 번 놀랐는데요.

      이전 버전(gpt-3.5-turbo)에서 열심히 해결하려 노력했지만 해결할 수 없었던 이슈들이 신규 버전(gpt-4o-mini)에서 별다른 노력 없이 해소되는 것을 보며 다소 허탈하면서도 감탄을 금할 수 없었습니다.


      최근 공개된 o1 모델도 프롬프팅과 파인튜닝 방식에 기존과 다른 새로운 시각을 제시하는 것 같습니다.

      지금 우리가 고민하고 공유하는 이 지식들의 유효기간이 점점 짧아지고 있다는 아쉬움도 있지만, 현재 주어진 환경에서 최선을 다해 올바른 방법을 찾아가는 이 순간들을 즐기고자 합니다.


      앞으로도 LLM을 활용한 다양한 시도를 이어가며, 그 경험을 여러분과 함께 나누도록 하겠습니다.

      감사합니다.


      • 작성자

        • 백종범 (jongbum.baik@sk.com)

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      jongbum.baik 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기