최근, 프로젝트를 진행하면서 네이버 클라우드의 CLOVA Studio 서비스를 활용하게 되었다.
Studio 서비스는 본래 클로즈 베타 서비스로 운영하다가 이제 오픈 베타로 전환되면서 사용자가 더욱 늘어날 것으로 보이지만 생각보다 참고할 자료는 많지 않은 상황이다.
나는 NCAI 공인 교육을 수강했고, 네이버 클라우드에서 진행하는 세미나를 듣는 등 여러 기초학습을 진행한 뒤 현재 프로젝트에서 직접 빌드를 짜보는 등 실습을 진행해보고 있다.
학습하는 과정을 기록해보며 복습, 그리고 도움이 될 만한 부분들을 정리하여 업로드한다.
LLM과 CLOVA Studio 서비스에 대해
Studio 서비스는 익히 우리가 알고있는 ChatGPT 와 동일한 LLM 모델이다. 다만 실제로 프로젝트를 진행하고 실습을 해보며 느낀 점은 특이할 만한 점은 '한글' 에 특화되어 있다는 것이다. 따라서 내수용 서비스를 개발한다면 해외의 대화 모델보다 Studio가 경쟁력이 있다고 생각된다.
이제 LLM에 대해서 알아본다. LLM 자체에 대해서는 많이들 자료가 있어서 생략한다.
이런 대화 모델을 활용하는 것의 핵심은 얼마나 명령을 명확하게 잘 내리느냐에 달려 있다고 보인다.
유명한 이야기인데, AI들이 헛소리를 답변하는 짤들이 많이 돌아다닌 적이 있다.
이는 실제로도 전문 용어로 정의하고있다. "Hallucination", 할루시네이션이라고 칭한다.
https://www.sedaily.com/NewsView/29QQ49U8UC
이러한 에러들을 방지하려면 AI가 답변할 수 있는 범위를 명령자가 알고 있어야 하고, 더 구체적으로 명령을 내려야 한다.
따라서, AI가 알고있는 지식의 수준과 데이터셋을 명령자는 인지하고 있어야 한다.
할루시네이션을 방지하기 위해서는 핵심적으로 2가지의 문제를 해결하여야 한다.
1. 훈련 데이터의 문제
> 인간이 아는 범위 내에서 대화를 이끌어가듯이, 인간과 비슷한 뇌 구조를 학습한 딥러닝의 AI도 동일하다. 아는 범위 내에서 답변하게 된다. 알고 있는 지식을 조합하여 허구의 답변을 만들어낼 수 있기 때문에 지식의 기반이 불완전하다면 AI의 답변도 그럴 수밖에 없다.
2. 확률적 추론의 문제
> 딥 러닝 AI는 문제를 추론할 수 있다. 따라서 아는 지식에 대해, 정답률이 높은 지식에 따라 추론하여 답변을 내놓게 된다. 만일, 우리가 편향된 지식을 주입하게 된다면 AI는 그에 따라 편향된 답변만을 제공하게 될 것이다. 이를 방지하기 위해서는 다각도의 시선에서 보아 정제된 객관적이고 다양한 지식을 학습시킬 필요가 있다.
프롬프트 엔지니어링이란?
> 생성형 AI에게 원하는 결과를 받기 위해 명령을 설계하는 기법
즉, 명령을 내리는 방법을 알고있어야 더 효율적으로 AI를 활용할 수 있다.
그럼 이제 실제로 CLOVA Studio 서비스 내에서 프롬프트를 작성해보며 알아본다.
CLOVA Studio - 플레이그라운드
위와 같이 질문을 조금만 수정해줘도 상당히 다른 결과를 출력해준다. 이에 따라 프롬프트를 어떻게 작성하는지의 중요성을 알 수 있다.
효율적이고 원하는 답변을 얻는 프롬프트 노하우는 일반적으로 다음과 같다.
- 다양한 예제 구성
> 단순히 많은 예제보다는 다양한 케이스에 대해 파악할 수 있는 예제가 좋다.
- 출력해야 할 항목을 지정한다.
- 부정문보다 긍정문 사용
> ex) [~~하게 설명하지 마십시오] 보다는 [~~하도록 설명해줘]
- 지시문을 넣기
> 단, 너무 복잡한 지시는 이해하기 어려울 수 있음.
이제, 플레이그라운드에 대해서 알아보자.
** 참고 : Mode 에서 [일반 모드] 는 구버전이다. 성능도 더 낮기 때문에 사용할 이유가 없으므로 되도록 챗 모드를 사용하자.
플레이그라운드는 우리가 생각하는 일반적인 ChatGPT 를 사용하는 화면과는 조금 다르다.
CLOVA Studio 는 단순한 대화모델이라기 보다는, 사용자에 맞게 커스텀화에 특화된 LLM이다. 따라서 조금 다른 모습을 보인다.
[사용자] 부분이 모델에게 질의하는 공간, [어시스턴트] 가 클로바가 답변하는 부분이다.
[시스템] : 대화 모델이 기본적으로 참고하는 공간, 이곳에 어떻게 답변할지와 예시 등을 넣어두면 LLM이 참고한다.
Parameter 상세
Engine : 언어 모델의 버전, 성능이 높을수록 속도는 느리니 참고하는게 좋다. 답변의 퀄리티보다 속도가 중요하다면 HCX-003 보다는 하위버전을 사용하자.
Top P : 누적 확률 값 수치. 일반적으로 높게 설정하는 것이 좋다. (0.8 이상)
> ex) 0.8 로 설정 시, 상위 80%에 포함된 토큰 내에서 결괏값을 생성한다.
*** 토큰 : 한글의 형태소 단위다. ~에게, ~으로 등등
나무가 자랐다. 문장에서 "가" 형태소에 들어갈 수 있는건 여러가지가 있다.
나무처럼 자랐다.
나무가 자랐다.
위와같이 "처럼" "가" 가 들어갈 확률이 높은데, 나무"이" 자랐다. 와 같은 문장은 어색하다. "이" 의 확률은 낮다.
해당 수치를 낮게 설정하면 어색한 문장이 출력될 확률이 높아진다.
Top K : 확률 값이 높은 K개 중 1개를 선택하게 하는 기준 값. 일반적으로 0으로 설정한다.
> ex) 2라고 설정한다면, 확률 값이 높은 순에서 2개의 토큰 중 1개를 선택한다.
나무에 꽃이 피었다 / 만개했다 / 섰다 / 불탔다 와 같이 있다면, 피었다 / 만개했다 둘중 1개를 선택
Maximum tokens : 결괏값의 최대 길이. 최대 4096 토큰까지 허용한다.
Temperature : 문장의 다양성을 조절한다. 낮게 조절하면 정형화된 답변, 높게 조절하면 다양한 답변이 나온다
> 창의적 결과물을 만들 땐 높게, 정확한 답변이 필요한 상황이라면 낮게.
Repetition penalty : 동일 토큰을 적게 사용하도록 설정한다.
> 낮을수록 동일한 문장 생성, 높을수록 다양한 결과를 낸다. 낮다면 동일한 질문에 같은 답변을 한다.
Stop sequences : 특정 단어가 나올 차례가 되면 출력을 멈춘다.
> ex) 한글 순서대로 출력 지시를 내리고, "라" 를 등록하면 가나다 까지 출력됨
Seed : 일관된 결과가 필요할 경우에 설정
> 동일한 답변이 필요할 경우에, 파라미터를 지정해두고 쓸 수 있다.
'IT > NAVER Cloud Platform' 카테고리의 다른 글
[CLOVA Studio] Studio 를 활용한 RAG 생성 (작성중) (0) | 2024.10.23 |
---|---|
[CLOVA Studio - 2] 스킬 트레이너 활용하기 (0) | 2024.04.14 |
[NAVER Cloud Platform] Kubernetes Service 구성하기 (1) | 2023.04.22 |
[NAVER Cloud Platform] VOD Station 서비스 맛보기 (0) | 2023.03.07 |
CDN / GRM 정리 및 간단 실습 (0) | 2022.08.06 |