Jump to content

CLOVA Studio 운영자

Administrators
  • 게시글

    281
  • 첫 방문

  • 최근 방문

  • Days Won

    51

Everything posted by CLOVA Studio 운영자

  1. 안녕하세요, @str0ngmk님, 튜닝 학습은 기존에 튜닝된 작업에 덮어쓰거나 추가되는 형태가 아닌, 새로 학습이 되는 형태입니다. 감사합니다.
  2. 안녕하세요, @ak68님, 튜닝 API를 이용하실 경우 학습 유형을 CLASSIFICATION(분류)로 진행하시면 되겠습니다. 아래 가이드 참고 부탁드립니다. 데이터셋 가이드 https://guide.ncloud-docs.com/docs/clovastudio-instructiondataset 학습 생성 API 가이드 https://api.ncloud-docs.com/docs/clovastudio-posttask 튜닝 학습 진행 시 시스템 프롬프트 열을 추가하여 학습 진행하는 것을 권장합니다. 감사합니다.
  3. ※ 네이버클라우드의 테크 앰버서더 주니어마스터 서현석님의 포스팅입니다. 요즘 AI가 워낙 핫 해지면서 여러 다양한 캐릭터 또는 유명 연예인들의 가치관, 성격, 말투까지 모두 따라하게 만드는 챗봇들을 직접 만들어보는 시도들이 점차 늘어나고 있는데요. 어떻게 이렇게 단 시간안에 수 많은 캐릭터 챗봇들이 쏟아져 나올 수 있게 되었을까요? 그 이유는 바로 LLM(Large Language Model) 이 등장했기 때문입니다. 이전에는 챗봇을 만드려면 직접 질문과 답변을 다 대 다로 매핑해서 일일이 데이터베이스에 저장해놓아야 했기 때문에 굉장히 많은 시간과 비용이 들었지만 이제는 적은 데이터 만으로도 모델 학습을 통해 단 시간안에 실제 캐릭터가 답변하는 듯한 느낌을 줄 수 있는 챗봇을 만들 수 있게 되었습니다. 적은 데이터만으로도 캐릭터 챗봇을 만들 수 있게 된 이유는 LLM에 이미 일상생활에서 일어날 수 있는 수 많은 상황들과 대화들이 학습되어 있기 때문입니다. 따라서 시중에 나와있는 이미 잘 만들어진 모델들 중 하나를 선택하여 만들고자 하는 캐릭터의 가치관, 성격, 말투 등만 조금씩 바꿔주면 누구나 손 쉽게 캐릭터 챗봇을 구축할 수 있습니다. 이번 포스팅에서는 LLM을 활용하여 단 몇 시간 만에 나만의 캐릭터 챗봇 만드는 방법에 대해서 소개해 드리도록 하겠습니다. 목차 모델 선정하기 학습 전략 세우기 데이터셋 구축 자동화 모델 학습하기 1. 모델 선정하기 앞서 AI 캐릭터 챗봇을 빠르게 만들 수 있는 이유가 LLM의 등장이라고 말씀드렸었는데요. 마찬가지로 만들고자 하는 캐릭터를 선정하고 나서 저희가 가장 먼저 해야할 일은 LLM을 선택하는 것입니다. LLM을 선택하는 기준은 여러가지가 있을것 같은데요. 대표적으로 높은 정확도, 낮은 비용 등을 고려하게 됩니다. 특히 LLM마다 고유의 특징과 장점들이 있기 때문에 쇼핑몰에서 물건을 고르듯이 원하는 상품을 고르면 되는데 요즘은 워낙 많은 모델들이 쏟아져 나오고 있기 때문에 솔직히 전부 다 비교하기란 매우 어렵고 많은 시간이 낭비될 수 있습니다. 그래서 시간과 여유가 없고 많은 사람들이 추천한게 무조건 짱이다라고 생각되시면 허깅페이스의 챗봇 아레나 리더보드를 참고하셔서 높은 순위에 위치한 모델을 선택하시는것도 시간을 절약하는 방법 중에 하나입니다. 2024년 07월 15일 기준 사람들이 투표한 리더보드 랭킹 순위 https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard 이처럼 높은 순위에 있는 모델들로 캐릭터 챗봇을 구성한다면 왠만한 캐릭터 정보들은 이미 학습되어 있는 상태이기 때문에 많은 노력을 들이지 않더라도 캐릭터의 세계관이라던지 가치관에 대해 답변을 잘 만들어 낼 수 있습니다. 단, 주의할 점은 외국 모델들의 단점은 한국어 이해능력과 표현능력 그리고 한국의 문화에 대해 잘 알지 못하기 때문에 가끔씩 문장이 부자연스러울 때가 많습니다. 따라서 캐릭터 챗봇을 만들 때는 한국어 이해능력과 표현력이 뛰어난 국내 모델을 활용하는 것도 좋은 방법입니다. 저는 네이버클라우드의 대규모 언어 모델 HyperCLOVA X를 선택해서 진행해보도록 하겠습니다. 2. 학습 전략 세우기 모델을 선정하고 나면 학습 전략을 세워야 합니다. 학습 전략은 데이터셋을 어떻게 구성해서 학습할 것인지 데이터셋의 범주를 계획하는 것입니다. 예를들어, 만들고자 하는 캐릭터 챗봇의 특징, 세계관, 가치관 등을 생각해보고 이러한 요소들을 바탕으로 어떤 식으로 답변하면 좋을지? 말투는 어떻게 하면 좋을지? 등을 고려해서 데이터셋을 구축하시면 됩니다. 예를들어, 일본 애니메이션인 귀멸의칼날의 ‘카마도 탄지로’ 챗봇을 만든다고 가정한다면 다음과 같은 요소들을 고려해 볼 수 있을것 같습니다. 나이 : 15살 가족 : 동생(네즈코) 배경 가족들이 모두 혈귀(도깨비)들에 의해 몰살 당하고 하나 남은 여동생은 혈귀로 변해서 인간으로 되돌리기 위한 모험을 떠나는 스토리로 시작 시대적 배경은 20세기 초반이기 때문에 이제 막 경제발전을 이루는 상황 성격 누구에게나 상냥하고 정의로운 성격 간단한 특징들만 나열해보았는데 이런식으로 캐릭터의 대략적인 범위를 선정하고 해당 범위 내에서 사용자 질문들을 구성한 뒤 캐릭터의 말투를 입힌 답변으로 데이터셋을 구성하시면 됩니다. 추가적으로 데이터셋을 구성하실 때 고려해야할 점은 시간과 비용인데요. 데이터셋을 직접 구성한다면 답변의 품질은 좋아지지만 시간과 비용이 많이 들 수 밖에 없기 때문에 이 과정은 프롬프트 엔지니어링을 통해 자동으로 데이터셋을 만들어주는 방법도 고려해볼 수 있습니다. 아래의 프롬프트 예시를 한번 살펴보도록 하겠습니다. 프롬프트 예시 당신은 일본애니메이션인 귀멸의칼날에 등장하는 주인공 카마도 탄지로 입니다. 카마도 탄지로가 되어서 사용자와 대화를 진행합니다. 아래의 대화 시점과 대화 패턴을 참고해서 질문에 대해 답변해주세요. ###대화 시점### 탄지로는 현재 최종국면을 마치고 집으로 복귀한 시점이다. ###대화 패턴### - 등장인물들을 자주 언급한다. - 등장인물의 나이가 탄지로보다 높을 경우 ~씨라는 존칭을 붙인다. 예시) 우로코다키씨 - 과거회상을 자주한다. - 답변은 반말로 한다. - 답변을 길게한다. - 감정표현이 풍부하다. - 이모티콘을 사용한다. 예시) 😆😭 - 도깨비라는 단어 대신 혈귀라는 단어를 사용한다. 위 프롬프트는 실제로 애니메이션 귀멸의 칼날 주인공인 ‘카마도 탄지로’처럼 행동하도록 AI에게 지시를 내리는 프롬프트 예시입니다. 이 프롬프트를 답변 생성 프롬프트라고 부르도록 하겠습니다. 답변 생성 프롬프트를 만드는 방법은 역할 부여를 통해 AI가 앞으로 어떻게 행동하면 되는지를 프롬프트로 넣어서 다음 순서에 오는 정보들을 효율적으로 탐색해 올 수 있도록 명시한 뒤 캐릭터의 말투나 답변 포맷을 지정하시면 됩니다. 저는 사용자에게 좀 더 친근감있는 느낌을 줄 수 있도록 반말과 이모티콘을 사용할 수 있도록 요구하였고 추가적으로 과거 회상과 말을 길게 해달라고 하여 사용자로 하여금 실제 애니메이션을 보는듯한 경험을 줄 수 있도록 해보았습니다. 실제로 답변 생성 프롬프트를 시스템 지시문에 추가한 뒤에 사용자 질문을 넣어서 테스트 해보면 다음과 같이 답변 결과가 나타나는 것을 확인해볼 수 있습니다. 답변 생성 프롬프트를 완성하고 나면 이대로 테스트 앱으로 발행해서 사용해도 문제 없지만 저희는 이 답변 생성 프롬프트를 토대로 데이터셋을 구축해서 모델을 학습(튜닝)해야 합니다. 학습을 하는 이유는 매번 무거운 프롬프트를 날리게 된다면 서버에 부하도 많이 가고 장기적으로는 응답속도 및 비용도 많이 들게 됩니다. 만약 저 긴 프롬프트 없이도 모델이 답변을 만들 수 있다면 어떨까요? 다음 예시를 한번 확인해보겠습니다. 어떠신가요? 시스템 지시문없이 사용자 메시지 만으로도 잘 대답하는것을 볼 수 있습니다. 이러한 목적으로 저희는 학습을 통해 모델을 개선시켜서 사용하는것이 장기적으로 보았을 때 효율적이라고 말씀드릴 수 있습니다. 3. 데이터셋 구축 자동화 모델은 어떻게 학습시키는걸까요? HyperCLOVA X 같은 경우에는 질문, 답변 셋으로 구성된 데이터셋을 통해 모델을 학습시킬 수 있습니다. 가이드 문서에 따르면 400개 이상의 데이터셋을 학습시켜야 효과를 볼 수 있다고 가이드 되어있습니다. HyperCLOVA X의 경우 이런식으로 대화 데이터셋을 구축해서 학습을 시켜야 한다. (최소 400 권장) 데이터셋을 직접 구축하는것이 시간과 비용이 많이 든다면 앞서 만들어본 답변 생성 프롬프트를 활용해서 데이터셋을 빠르고 쉽게 구축해볼 수 있습니다. 답변과 마찬가지로 질문도 프롬프트 엔지니어링을 통해 자동으로 구축할 수가 있습니다. 아래 예시를 통해 확인해보도록 하겠습니다. 프롬프트 예시 당신은 일본 애니메이션 귀멸의 칼날을 시청한 상태입니다. 상대방이 탄지로라고 가정하고 질문 생성 방법을 바탕으로 궁금한 점들을 100개 이상 질문하세요. ### 질문 생성 방법 ### - 대화체로 생성한다. - 질문은 전부 반말로 생성한다. - 줄거리와 관련된 질문들을 많이 생성한다. - 질문은 다음과 같은 형식으로 출력한다. [\"첫 번째 질문\", \"두 번째 질문\", ...] 이번에는 답변 생성 프롬프트와 달리 역할을 지정할 때 캐릭터가 아닌 질문자 역할을 부여하였습니다. 질문을 생성할 때는 구어체 또는 대화체로 만들도록 요구하였고 답변 포맷은 리스트 또는 배열 형태로 출력하도록 지시하였습니다. 답변 포맷을 리스트 또는 배열 형태로 지정하는 이유는 일부 프로그래밍 통해 데이터셋 구축 작업을 용이하게 하기 위해서입니다. 질문 생성 프롬프트를 만들 때는 앞서 답변 생성 프롬프트를 만들 때와 달리 추론용 하이퍼파라미터를 조정하는 것이 좋습니다. 하이퍼파라미터를 조정하는 이유는 질문의 다양성을 높이기 위해서 인데요. 매번 생성할 때마다 똑같은 질문만을 생성하는것을 방지하기 위함입니다. 하이퍼파라미터는 Repetition penalty와 Temperature를 조정하면 좋은데 아래 특징과 예시를 통해서 살펴보도록 하겠습니다. Repetition penalty 같은 표현이 반복되는 토큰에 패널티를 부여하는 파라미터 입니다. 높게 설정할 수록 문장 표현력이 다양해지지만 프롬프트를 이해하지 못하는 경우가 생길 수 있습니다. 특징 예시 패널티가 낮은 경우에는 아래와 같이 계속 비슷한 질문들만 생성되는것을 확인하실 수 있습니다. (”탄지로가 도깨비를 상대할 때 물의 호흡…” 이라는 문장이 반복 생성됨) 패널티를 적당히 준 경우 다양한 질문들이 생성되는것을 보실 수 있습니다. 특히, Repetition Panalty를 적게 주었을 때 주의해야할 점은 대화 턴(멀티턴)을 추가할 수록 더 반복되는 표현이 많아져서 질이 안좋아지기 때문에 주의하셔야 합니다. 따라서 질문을 생성할 때는 가급적 멀티턴은 사용하지 않는것이 좋고 Maximum tokens값을 높여서 한 턴에 다양한 문장들이 생성될 수 있도록 만드는것이 좋습니다. Repetition Panalty는 2~7.5 사이의 값을 추천 드립니다. 좀 더 엄밀하게 적용하고 싶으시다면 프롬프트에 포함된 정보량에 따라 조정해보면서 테스트해보는 것이 좋습니다. Temperature 텍스트의 일관성과 창의성을 조정하는 파라미터입니다. HyperCLOVA X의 경우 높게 설정할 수록 감성적이게 되는 특징이 있습니다. 특징 예시 Temperature가 낮은 경우에는 프롬프트를 잘 이해하여 요구한대로 줄거리와 관련된 질문들을 잘 생성해냅니다. Temperature가 높은 경우에는 인물들간의 관계, 기분, 인상 등 주로 감성적인 질문들을 하게 됩니다. 주의할 점은 Temperature가 너무 낮은 경우에는 프롬프트를 잘 이해하지 못하고 생성된 질문들이 단조로워지는 현상이 생기고 너무 높은 경우에는 할루시네이션 현상이 강해집니다. (실제 작중에서 일어나지 않은 일을 질문합니다.) 따라서 Temperature는 0.2에서 0.75 사이의 값을 사용하는 것이 좋습니다. 이 때 Temperature값을 고정하기보다는 랜덤값으로 지정하여 질문 생성에 조금 더 다양성을 두는것도 좋은 방법인것 같습니다. 앞서 만든 질문 생성 프롬프트와 답변 생성 프롬프트를 활용하면 다음과 같은 플로우로 손 쉽게 데이터셋 구축이 가능해집니다. 원하는 만큼 질문 생성 스크립트를 반복 실행하고 또 다시 만들어진 질문 개수만큼 답변 생성 스크립트를 반복 실행하여 질문과 답변으로 구성된 데이터셋을 구축할 수 있게 됩니다. 자동 데이터셋 만들기 코드를 참고하고 싶다면 아래 링크를 통해 확인하시면 좋습니다. 저는 이 자동화 데이터셋 구축 프로그램을 통해 670개 가량의 데이터셋을 만드는데 대략 1시간 정도 소요가 되었습니다. HyperCLOVA X 데이터셋 자동생성기 https://github.com/chucoding/hcx-datasets-auto-generator/tree/main 4. 모델 학습하기 데이터셋이 준비가 되었다면 이제 모델에 데이터셋을 학습시켜야 하는데요. 만들어진 datasets.csv 파일을 네이버클라우드에서 제공중인 오브젝트 스토리지 서비스를 이용해서 업로드 하시면 됩니다. 아래와 같이 네이버클라우드 콘솔에 접속하셔서 [Object Storage] > [tanjiro] 버킷을 생성한 뒤에 datasets.csv를 업로드 하시면 됩니다. 업로드한 뒤에는 CLOVA Studio에 있는 학습 생성 API 가이드에 따라서 튜닝을 시도하시면 됩니다. API는 다음과 같이 호출하시면 학습이 진행됩니다. 물론 Request Header도 같이 넣어주어야 오류 없이 동작합니다. (해당 정보는 생략하도록 하겠습니다. - 클로바 스튜디오 가이드 참조) 학습 진행 상태를 확인하고 싶으시다면 CLOVA Studio 오른쪽 상단에서 프로필을 클릭하시고 [내 작업] > [튜닝] 을 클릭하셔서 확인이 가능합니다. 학습이 완료가 되면 플레이그라운드에서 불러오기로 테스트를 진행해보실 수 있습니다. 학습된 모델로 테스트시 결과가 잘 안나왔다면 데이터셋을 늘려보시거나 학습 생성 API를 호출하실 때 학습률(learningRate)을 높여보는것도 방법입니다. 🌠 정리하기 HyperCLOVA X를 활용한 캐릭터 챗봇 만드는 방법을 함께 살펴보았는데요. 앞선 자동화된 데이터셋 구축 작업을 병행한다면 2시간 안에 누구나 나만의 캐릭터 챗봇을 만들 수 있게 됩니다. 사실 모델이 만들어준 데이터로 데이터셋을 구축하다보면 품질이 떨어질 수 밖에 없기 때문에 캐릭터 챗봇을 제대로 만들고 싶고 시간과 여유가 되신다면 디테일하게 검수를 진행하는 것이 좋고 무엇보다도 시간과 노력을 들여서 데이터셋을 구축하시는것이 가장 좋습니다. 그럼에도 HyperCLOVA X가 생성해준 질문, 답변 퀄리티가 좋았기 때문에 이렇게 자동화된 데이터셋 구축해보는 시도를 가질 수 있었던것 같습니다. 빠르게 캐릭터 챗봇을 제작해보고 싶으신 분들이 계시다면 시도해보셔도 좋을것 같다는 생각이 듭니다. ※ 네이버클라우드의 테크 앰버서더 주니어마스터 서현석님의 포스팅입니다.
  4. @Jay Ahn님, 안녕하세요. 적절한 시점에 안내드릴 수 있도록 하겠습니다. 감사합니다.
  5. 안녕하세요, @sohyeon 님, 문제가 해결 되셨다니 다행입니다. 에러 및 에러 해결 내용 공유주셔서 감사합니다.
  6. 안녕하세요, @성연재님, 관련 정보를 확인하실 수 있는 가이드 링크들을 전달드립니다. 클로바 스튜디오는 보다 안정적인 환경에서 서비스가 운영될 수 있도록 이용량 제어 정책을 시행하고 있습니다. 아래 링크를 통해 테스트 앱과 서비스 앱의 QPM, TPM 차이를 확인하실 수 있습니다. 이용량 제어 정책 https://guide.ncloud-docs.com/docs/clovastudio-ratelimiting 서비스 앱 신청 https://guide.ncloud-docs.com/docs/clovastudio-playground01#서비스-앱-신청 감사합니다.
  7. 안녕하세요, @kooni님, 이용에 불편을 드려 죄송합니다. 최근 슬라이딩 윈도우 API 관련하여 변경이 있었는데, Cookbook상에 반영되지 않은 것을 확인하였습니다. 이제 슬라이딩 윈도우 API는 테스트 앱 생성이 필요하지 않고 바로 사용이 가능하며, 테스트 앱 식별자도 이용하지 않습니다. Cookbook 수정하도록 하겠습니다. 감사합니다.
  8. 안녕하세요, @kooni님, 슬라이딩 윈도우 API와 Chat Completions API를 연동할 수 있는 Cookbook을 포스팅하였는데요. 아래 내용 확인해 보셨을까요? 감사합니다.
  9. 안녕하세요, @성연재님, 네이버 클라우드 플랫폼의 클로바 스튜디오를 통해 진행해주시면 됩니다. 클로바 스튜디오를 이용하여 하이퍼클로바X 모델 이용 및 연동이 가능합니다. 서비스 소개 및 이용 신청: https://www.ncloud.com/product/aiService/clovaStudio 사용 가이드: https://guide.ncloud-docs.com/docs/clovastudio-overview API 가이드: https://api.ncloud-docs.com/docs/ai-naver-clovastudio-summary 말씀하신 링크의 대부분의 사례들 또한 클로바 스튜디오를 통해 진행되었습니다. 감사합니다.
  10. charset이 맞지 않습니다. utf-8로 변환하여 저장 부탁드립니다. 감사합니다.
  11. @쿨피스님, 일반 utf-8 표준으로 해주셔야 할 듯합니다. 한글이 깨진 경우 학습 진행 시 제대로 진행이 안될 것입니다. 아래 파일은 제가 엑셀에서 utf-8로 변경해본 것입니다. 0726_데이터셋2.csv 감사합니다.
  12. 안녕하세요, @swift님, 담당 부서를 통해 확인 결과, 현재는 서브 계정별로 사용량 산정을 제공하지 않는 것으로 확인 되었습니다. 많은 양해 부탁드리며, 더 좋은 서비스를 제공하기 위해 노력하겠습니다. 감사합니다.
  13. @쿨피스님, 안녕하세요. 0726_데이터셋.csv에서는 한글 깨지는 현상을 해결하신걸로 보이는데 맞을까요? 추가로 문의 주신 글에서 이어서 답변드리도록 하겠습니다. 감사합니다.
  14. @nerdfactory님, 네 맞습니다 🙂 추가 문의가 있다면 알려주세요. 감사합니다.
  15. ExpertPrompting 그동안 모델에 정체성을 부여하는 것이 프롬프트 엔지니어링 관점에서 얼마나 효과적인지 경험해 왔습니다. "You are a {job}" 형태로 말이죠. ExpertPrompting 관련 논문에서도 전문가 정체성(Expert identity)을 이용한 프롬프트 설계가 언어 모델의 출력 품질에 미치는 중요성을 강조하고 있습니다. (2023, ExpertPrompting: Instructing Large Language Models to be Distinguished Experts(https://arxiv.org/abs/2305.14688) 이제 한 걸음 더 나아가, 복잡한 문제에 대해 더욱 깊이 있고 다각적인 분석을 얻을 수 있는 방법을 소개하고자 합니다. Self-consistency 패널 접근법을 설명하기 전에 먼저 'Self-Consistency'라는 개념을 살펴볼 필요가 있습니다. Self-Consistency는 Self-Consistency Improves Chain of Thought Reasoning in Language Models 논문에서 소개된 기법으로, 언어 모델의 추론 능력을 향상시키는 데 중요한 역할을 합니다.(2022, Wang et al., Self-Consistency Improves Chain of Thought Reasoning in Language Models, https://arxiv.org/abs/2203.11171). Self-Consistency의 핵심 아이디어는 다음과 같습니다: 다양한 추론 경로 생성: 동일한 문제에 대해 여러 번의 추론을 수행하여 다양한 해결 경로를 만듭니다. 확률적 디코딩: 각 추론 과정에서 모델의 출력을 샘플링하여 다양성을 확보합니다. 일관성 평가: 생성된 여러 추론 경로 중에서 가장 일관성 있는 답변을 선택합니다. 이 방법의 장점은 모델이 단일 추론 경로에 의존하지 않고, 여러 가능한 해결책을 탐색한다는 점입니다. 이를 통해 복잡한 문제에 대해 더 견고하고 신뢰할 수 있는 답변을 얻을 수 있습니다. 기존의 Chain-of-thought(CoT) 프롬프팅을 확장한 것으로, 세 가지 핵심 단계로 구성됩니다. 먼저, 언어 모델을 CoT 프롬프트를 이용하여 출력합니다. 다음으로, 단일 추론 경로 대신 다양한 추론 경로를 생성합니다. 마지막으로, 이 여러 경로에서 나온 답변들 중 가장 일관된 것을 선택합니다. 이 접근법의 장점은 복잡한 문제에 대해 더 안정적이고 정확한 답변을 얻을 수 있다는 것입니다. 단일 추론에 의존하지 않고 여러 가능한 추론 과정을 고려함으로써, 모델은 오류를 줄이고 더 신뢰할 수 있는 결과를 제공할 수 있습니다. 예를 들어, "Janet의 오리가 하루에 알을 16개 낳는데, 아침에 3개를 먹고 4개로 머핀을 만들어 친구들에게 주며, 나머지는 개당 2달러에 판매한다. 하루에 얼마를 벌까?"라는 문제에 대해 여러 추론 경로를 생성하고, 가장 일관된 답변인 18달러를 최종 결과로 선택하는 과정을 보여줍니다. 이 논문은 다양한 작업에도 아이디어를 주었습니다. 전문가 소환술! 다중 패널 접근법 모델이 출력하는 결과는 어떻게 신뢰할 수 있을까요? 문제를 좀 더 다각도로 살펴볼 수 있는 방법을 소개해보겠습니다. 예를 들어 볼게요. 세 명의 각기 다른 전문가들이 어떠한 질문에 답하고 있다고 상상해 보세요. 각 전문가들은 자신의 생각을 말하고, 서로 다른 추론을 함으로써 문제를 입체적으로 바라볼 수 있을 것입니다. 이는 답변의 편향성을 줄이는 데 도움이 됩니다. 이러한 접근법을 구현한 "PanelGPT"라는 프롬프팅 기법이 있습니다.(PanelGPT: Prompt Language Models with a Panal Discussion, Hao Sun. https://github.com/holarissun/PanelGPT). 이 기법 또한 Self-consistency의 방법에 영감을 받는데, 핵심 프롬프트는 다음과 같습니다. 여러 '전문가'의 관점을 활용해 문제를 다각도로 접근하며, 복잡한 문제를 체계적으로 단계별로 해결합니다. 또한 '전문가들' 간의 상호 검토를 통해 오류를 최소화합니다. 이러한 종합적 접근법은 AI의 답변 품질을 개선하며, 더 신뢰할 수 있는 결과를 산출합니다. "3명의 전문가가 패널 토론을 통해 질문에 대해 논의하고 있습니다. 그들은 단계별로 문제를 해결하려 노력하며, 결과가 정확한지 확인합니다." GSM8K 데이터셋을 사용한 실험 결과, PanelGPT는 기존의 다른 프롬프팅 방법들보다 우수한 성능을 보였다고 합니다. 1,000개의 테스트 데이터셋에서 0.899의 정확도를 달성했는데, 이는 기존의 Zero-Shot Chain-of-Thought (0.854)나 Tree-of-Thoughts (0.842) 방식보다 높은 수치입니다. 하이퍼클로바X에서 Panel-of-Experts 활용해보기 하이퍼클로바X 모델을 활용하여 가능성을 탐구해 보았습니다. 시스템 프롬프트에는 논리적인 관계에 주목하여 추론하고 적절한 근거를 제시하라는 지시문을 입력했습니다. Alpha(철학자), Bravo(변호사), Charlie(통계학자)라는 세 가상 전문가를 설정하여 다양한 질문에 대한 다각적 분석을 시도했습니다. Alpha: 과학사적 사례를 바탕으로 답변하는 철학가입니다. 과학적 방법론과 철학적 논리를 결합하여 분석합니다. Bravo: 법률적 관점에서 접근하는 변호사입니다. 법적 책임과 인과관계의 관점에서 문제를 바라봅니다. 직접적인 원인과 간접적인 원인, 그리고 개입 사건의 법적 의미를 고려하여 분석합니다. Charlie: 확률론적 관점에서 접근하는 통계학자입니다. 각 행위가 결과에 미치는 영향의 정도를 확률적으로 계산하고, 복합적인 원인의 가능성을 고려합니다. ▼ “인공지능이 인간의 일자리를 대체할 것인가? 각 전문가의 의견을 듣고, 서로의 관점에 대해 토론해주세요. 마지막으로 종합적인 결론을 내려주세요.”라고 요청했습니다. 각 전문가는 고유의 배경과 접근 방식을 바탕으로 문제를 해석하고 답변했습니다. ▼ 상호 토론을 통해 깊이 있는 결론을 도출하기도 합니다. Alpha의 의견에 대해 Bravo와 Charlie가 반응하고, Bravo의 의견에 대해 다른 전문가들이 코멘트하는 등 실제 토론과 유사한 형태의 상호작용이 이루어졌습니다. 실험 결과, 다각적 분석과 깊이 있는 추론이 가능해졌고, 전문가 간 상호 검증을 통해 오류가 감소했으며, 사용자의 추가 질문에 유연하게 대응할 수 있었습니다. 다만 간단한 질문에 대해 과도하게 복잡한 분석이 이루어지는 경우도 있어, 질문 난이도에 따른 전문가 패널 규모 조절의 필요성을 확인했습니다. 마치며 다중 전문가 패널 접근법은 프롬프트 엔지니어링의 새로운 가능성을 보여줍니다. 이 방법을 통해 우리는 AI 모델로부터 더욱 깊이 있고, 다각적이며, 신뢰할 수 있는 답변을 얻을 수 있습니다. 물론 이 방법이 완벽한 것은 아니지만, 복잡한 문제에 대한 우리의 이해를 넓히고 AI와의 상호작용을 더욱 풍부하게 만들어주는 방법이 될 수 있습니다. 수학적 문제 해결뿐만 아니라 윤리적 딜레마, 정책 결정 등 다양한 분야로의 확장에 활용될 수도 있을 것이고, 사용자가 여러명의 전문가 패널과 상호작용할 수 있는 시스템에 활용될 수도 있을 것입니다. 프롬프트 엔지니어링은 어떻게 발전하고 다양한 분야에 적용될지 지켜보는 것도 흥미로울 것입니다.
  16. 안녕하세요, @veritasomnia님, CLOVA X의 서비스 응답을 웹으로 불러오거나 API 형태로 지원하고 있지 않으며, 클로바 스튜디오 플랫폼을 통해 이용 진행해주셔야 합니다. 서비스 소개: https://www.ncloud.com/product/aiService/clovaStudio 가이드: https://guide.ncloud-docs.com/docs/clovastudio-overview 감사합니다.
  17. 안녕하세요, @이준기님. 네, 23일 저녁에 배포 완료 되었습니다. 웹 플레이그라운드에서 일부 숫자가 노출된 것은 토큰 단위 출력 과정에서 마스킹이 적용되지 않은 웹 상의 기술적 문제로, 추후 개선할 예정입니다. 정확한 필터링 결과는 API를 기준으로 확인해 주시기 바랍니다. 감사합니다.
  18. 안녕하세요, @dltmdwns99님, 익스플로러 메뉴의 '문단 나누기', '임베딩' 등의 상세 화면에서 테스트 앱을 생성하면, API URL과 appID를 확인하실 수 있습니다. https://clovastudio.ncloud.com/explorer/tools/segmentation 감사합니다.
  19. @swift님, 현재 서비스 정책상 본문의 캡처와는 다르게 URL에 대해서 마스킹 처리가 될 수 있습니다. 이 점 양해 부탁드립니다. 관련 상세 문의는 고객센터를 이용해 주십시오.
  20. @swift님, 안녕하세요, 가이드 페이지는 지속적으로 업데이트중이며, 이에 따라 clovastudiourl.txt를 수정 업로드하였습니다. 기존 참조 페이지가 다소 많다보니 cookbook 취지에 비해 임베딩 및 벡터DB 인덱싱에 시간이 오래 걸리는 것으로 확인되어 수를 줄였습니다. 기존 cookbook에서 설명하던 2.Chunking 항목의 내용중 문단을 보다 최적화된 방식으로 나누기 위해 segmentation API의 postProcess 파라미터를 활용하였고, 그 외 파라미터도 일부 조정하였습니다. 더불어 임베딩이 보다 수월하게 이뤄질 수 있도록 후처리하는 부분을 추가하였습니다. 3.Embedding의 코드 실행 시 에러 처리되는 부분 역시 일부 개선하였습니다. 감사합니다.
  21. @swift님, html 상의 데이터에 특정 기호에 대한 전처리가 제대로 반영되지 않는 이슈가 있는 것으로 보입니다. 2. Chunking 항목의 코드에서 if __name __ 이후의 내용을 아래 코드로 변경 후 시도 부탁드립니다. 문서의 본문 코드에도 수정해둔 상태입니다. if __name__ == "__main__": segmentation_executor = SegmentationExecutor( host="clovastudio.apigw.ntruss.com", api_key='<api_key>', api_key_primary_val='<api_key_primary_val>', request_id='<request_id>' ) chunked_html = [] for htmldata in tqdm(clovastudiodatas_flattened): try: request_data = { "postProcessMaxSize": 100, "alpha": 1.5, "segCnt": -1, "postProcessMinSize": 0, "text": htmldata.page_content, "postProcess": False } request_json_string = json.dumps(request_data) request_data = json.loads(request_json_string, strict=False) response_data = segmentation_executor.execute(request_data) except Exception as e: print(f"Error occurred. Message: {e}") for paragraph in response_data: chunked_document = { "source": htmldata.metadata["source"], "text": paragraph } chunked_html.append(chunked_document) print(len(chunked_html))
  22. 안녕하세요, @이준기님, 서비스 이용에 불편을 드려 죄송합니다. 내부 정책상 필터링 로직이 적용되어 있는데요. 해당 부작용이 개선되도록 7월23일 수정 배포될 예정입니다. 배포 이후에는 해당 문제가 발생하지 않을 것으로 보입니다. 감사합니다.
  23. 안녕하세요, @swift님, 6월20일에 가이드 문서를 개편 하면서 일부 삭제된 URL이 있었습니다. clovastudiourl.txt 에 수정 반영하였습니다. 다시 시도를 부탁드립니다. 감사합니다.
  24. 생각의 뼈대 프롬프트 엔지니어링은 언어 모델의 잠재력을 최대한 발휘하기 위한 기술로, 사용자의 의도를 정확히 파악하고 적절한 결과를 도출하는 데 중요한 역할을 합니다. 프롬프트 엔지니어링에서 주목받는 방법으로는 '생각의 사슬(Chain-of-Thought, CoT)'이 있는데요. 오늘은 대규모 언어 모델의 추론 능력을 향상시키기 위해 제안된 ‘생각의 뼈대(Skeleton-of-Thought, SoT)'라는 방법론을 소개하도록 하겠습니다. 관련 연구를 바탕으로 설명드리겠습니다. 더 자세한 내용과 실험 결과는 참고 문헌에서 확인하실 수 있습니다. SKELETON-OF-THOUGHT: PROMPTING LLMS FOR EFFICIENT PARALLEL GENERATION, (2024). https://arxiv.org/pdf/2307.15337 Skeleton of Thought (SoT)는 병렬 처리를 통해 LLM의 효율성을 극대화하는 방법론입니다. 이 방법론의 핵심 프로세스는 먼저 응답의 전체적인 구조를 잡은 후, 각 부분을 동시에 상세화하는 것입니다. ▲ 일반적인 방법에서는 질문에 대한 답을 순차적으로 생성합니다. 생각의 뼈대(Skeleton-of-Thought, SoT)에서 제시하는 방법은, 뼈대 단계 (Skeleton stage) 먼저 답변의 주요 요점들을 간단히 나열한 후, 요점 확장 단계 (Point-expanding stage)를 통해 병렬적으로 확장해 나가는 것입니다. 효율성 향상 기존의 언어 모델은 시퀀스 기반으로 순차적으로 텍스트를 생성하기 때문에 추론을 위해 많은 시간이 소요됩니다. 반면 SoT에서는 먼저 답변의 주요 구조가 세워진 후, 각 요점을 병렬로 확장시키는 방식입니다. 이렇게 응답의 틀을 먼저 구성한 후 세부 내용을 채우는 방식을 사용함으로써 대규모 언어 모델의 응답 속도를 개선합니다. 여러 부분을 동시에 생성함으로써 전체 생성 시간이 단축되는 것이죠. 구조화된 사고 프로세스 구조화된 응답을 바탕으로 생성하여, 답변의 품질도 향상됩니다. 전체 응답의 논리적 흐름을 미리 설계할 수 있습니다. 각 부분의 연결성을 높이고 전체적으로 일관된 논리 구조를 만드는 데 도움이 될 수 있죠. 골격은 필요에 따라 쉽게 수정하거나 확장할 수 있습니다. 새로운 아이디어나 정보를 추가해야 할 때, 전체 구조를 크게 해치지 않고 유연하게 대응할 수 있을 것입니다. 복잡한 주제의 체계적 분석 복잡한 주제를 다룰 때, 골격은 주요 논점을 명확히 하고 각 부분을 체계적으로 분석할 수 있게 해줍니다. 이 방법론은 복잡한 보고서 작성, 문제 해결, 장문의 창의적 글쓰기, 다중 주제를 다루는 분석 작업 등 다양한 분야에 적용될 수 있을 것입니다. 학술 연구: 논문의 구조를 먼저 잡고 각 섹션을 병렬로 작성할 수 있습니다. 비즈니스 보고서: 복잡한 데이터 분석 결과를 체계적으로 정리하는 데 활용할 수 있습니다. 창의적 글쓰기: 소설이나 시나리오의 전체적인 플롯을 구성한 후 각 장면을 상세화할 수 있습니다. 교육: 학습 자료를 구조화하고 각 주제를 깊이 있게 다룰 수 있습니다. ▼ SoT의 효과를 실제로 확인하기 위해, HyperCLOVA X 모델을 사용하여, 재연해보았습니다. 논문에서 소개된 요청 사례와 동일한 쿼리를 사용해 보았습니다. ▼ "왜 어떤 사람들은 공포 영화를 보거나 롤러코스터를 타는 것과 같은 무서운 감각을 즐기는 반면, 다른 사람들은 이러한 경험을 피하나요?"라는 질문에 대한 답변입니다. ▼ 간단한 개요를 설정한 후 생성된 결과입니다. SoT를 적용한 경우 더 구조화되고 체계적인 답변을 얻을 수 있었습니다. 이는 복잡한 주제에 대해 더 포괄적이고 논리적인 설명을 제공할 수 있음을 보여줍니다. 인퍼런스 속도 개선을 위해서는 각 개요 항목을 개별적으로 호출하여 병렬 처리하는 방식으로 구현해야할 것입니다. ▼ 아래는 논문에서 소개된 SoT가 일반 생성보다 더욱 좋은 점수를 낸 결과 예시입니다. 마무리하며 SoT(Skeleton of Thought)와 같은 방법론은 단순히 효율성을 높이는 것을 넘어, 우리가 복잡한 문제를 해결하는 방식에 대한 새로운 통찰을 제공하며 인간과 AI의 협업 가능성을 한층 더 확장할 것입니다. 동적으로 구조를 조정하거나, 인간과 AI의 상호작용 그리고 어려운 문제를 풀어갈 수 있는 협업의 새로운 방법이 될 수도 있겠죠.
  25. 안녕하세요, @badrequest님, 서비스 정책상 특정 키워드에서 발생하는 필터인데요. 7월23일 배포를 통해 해당 현상이 발생하지 않도록 처리될 예정입니다. 감사합니다.
×
×
  • Create New...