Jump to content

Search the Community

Showing results for tags 'prompt 이용'.

  • Search By Tags

    태그는 ,로 구분됩니다.
  • Search By Author

Content Type


Forums

  • CLOVA Studio
    • CLOVA Studio
  • Maps
    • Maps
  • ARC eye
    • ARC eye

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me

Found 21 results

  1. 안녕하세요, 클로바스튜디오 담당입니다! 3월 오픈 베타 전환 이후, 더 많은 사용자 여러분께서 클로바스튜디오를 경험하고 계십니다. 이에 발맞춰 오늘은 몇 가지 새로운 샘플을 선보일게요! 음악의 역사를 랩으로 설명하는 랩퍼 HyperCLOVA X 오늘의 기분에 맞는 칵테일을 추천해 주는 HyperCLOVA X 비슷한 세계관의 책을 추천해 주는 HyperCLOVA X 클릭 한 번으로 Json 양식으로 변환해 주는 HyperCLOVA X ... 상상력을 자극하는 7가지 신규 샘플을 소개합니다! 1. 랩으로 배우는 음악의 역사 플레이그라운드에서 열기 왜 그럴 때 있잖아요, 우리. 어렵고 지루한 내용을 좀 더 쉽고 재미있게 배울 방법은 없을까? 만약 래퍼가 이 따분한 내용을 리드미컬하고 흥미롭게 설명해 준다면 어떨까? (들썩들썩) 그런 상상 한 적 없나요? (...) 먼저 소개할 작업은 음악의 역사를 랩으로 소개하는 작업입니다. 지루할 수 있는 내용을 생동감 있고 리드미컬하게 익힐 수 있는 독창적인 방법이 될 것 같지 않나요? ▼ 특정 장르의 역사를 랩으로 설명해달라는 지시문과 함께, 랩 가사의 [Verse], [Hook]과 같은 구조를 미리 세팅해 두었습니다. ▲ 짜잔, "Jazz의 역사에 대해 설명해줘"라는 요청에 음악의 역사를 랩 가사로 설명해 주고 있습니다. 1절과 2절 그리고 후렴과 같은 곡의 구조를 잘 따르고 있네요. 비트에 맞춰 들리는 이야기, 재미와 흥미 가득한 랩으로, 재즈의 심장 박동을 느껴봐! 재즈의 역사를 느껴봐! 2. AI 바텐더 플레이그라운드에서 열기 오늘 저녁 술 한잔하고 싶은 분들, 이 작업 꼭 해보세요. 날씨와 기분에 어울리는 맞춤형 칵테일을 소개하는 AI 어때요? 오늘 마실만한 칵테일을 추천해줄 수 있는 HyperCLOVA X랍니다. ▼ "너는 숙련된 바텐더야."와 같은 페르소나와 어떤 내용을 담아서 추천해 줬으면 하는지 시스템 프롬프트에 입력했습니다. ▲ 우울한 기분엔 푸른 바다를 연상시키는 상큼한 과일 향의 '블루 하와이'를 추천해 주었네요! 오늘은 너로 정했다! 3. 클로바 도서관 플레이그라운드에서 열기 이 작업 좋아하실 분들 분명히 있을 거예요. 왜 때로는 어떤 책을 골라야 할지 고민이 될때가 있잖아요. 내가 읽은 책이 있는데, 그 느낌 그대로 이어갈 수 있는 비슷한 책들. ▼ 사용자가 인상깊게 읽은 책, 장르를 입력하면 HyperCLOVA X가 적절한 책을 추천해 줍니다. 단, LLM의 특성상 학습 이후의 데이터에 대한 접근이 어렵다는 한계는 존재합니다. 4. 프로젝트 운영 비서 플레이그라운드에서 열기 자, 이제 업무 생산성과 관련한 작업을 소개할게요. 프로젝트 일정을 계획하는 데 도움을 줄 수 있습니다. ▼ 필요한 개발 일정과, 계획 구성원에 대한 정보를 입력합니다. ▲ 이렇게 기간별 투입 인원과 역할을 마크다운 형식의 표로 만들 수 있습니다. 클로바 스튜디오는 개발 도구이기 때문에, 마크다운을 렌더링 하지 않고, 이런 식으로 모든 형식을 출력합니다. ▼ 마크다운 형식은 이렇게 변환해서 사용할 수 있겠죠. 5. Json 양식 변환기 플레이그라운드에서 열기 데이터 변환 작업은 생산성 향상에 큰 역할을 할 수 있을 것이에요. 예를 들어, 사용자가 입력한 데이터를 Json 형식으로 일괄 변환해 주는 AI 변환기를 만드는 것이죠. ▼ 사용자가 입력하는 데이터를 json 형식으로 일괄 변환해 주는 작업입니다. 시스템 프롬프트에 형식에 대한 설명과 스타일을 미리 정의해두었습니다. 이런 변환기는 향후 단순한 데이터 변환뿐만 아니라 복잡한 변환 작업에도 활용될 수 있을 것입니다. 6. 재밌는 경제 이론 선생님 플레이그라운드에서 열기 HyperCLOVA X는 복잡한 주제를 누구나 이해할 수 있도록 쉽게 설명하는 능력이 뛰어납니다. 예를 들어, 경제 이론과 같은 어려운 학문을 초등학생도 이해할 수 있게 직관적인 비유를 사용해 친근하게 설명해 줄 수 있어요. ▼ 단 몇 줄의 지시문만으로 경제 이론 선생님을 만들었습니다. 이해하기 쉽게 설명해 주는 페르소나를 만들기 위해, "안녕 반가워ᄒᄒ"와 같은 말투를 사용하도록 패턴을 설정했습니다. 그리고 답변 시에는 최소 1개 이상의 실제 사례를 함께 제시하도록 했습니다. 우리 함께 경알못 탈출하자구요! 7. 빈칸 학습지 제작 도우미 플레이그라운드에서 열기 HyperCLOVA X는 학습지 제작에도 도움을 줄 수 있을 것입니다. ▼ 지문에서 빈칸을 만들고, 지문에서 중요한 단어를 뽑아줄 수도 있죠. ▼ 모델의 출력 포맷을 위해 1-shot 형태의 예제를 입력해두었습니다. 이렇게 HyperCLOVA X는 다양한 분야에서 활용될 수 있는 무궁무진한 가능성을 가지고 있습니다. 여러분은 시스템 프롬프트를 어떻게 활용하고 계신가요? 다음에도 유용한 샘플을 소개하겠습니다!
  2. 교육 분야에서의 하이퍼클로바X의 활용 가능성 교육 분야에서 하이퍼클로바X는 어떤 활약을 펼치게 될까요? 클로바 스튜디오에서는 시스템 프롬프트를 활용하여 교육용 애플리케이션에 맞게 다양한 방식으로 모습을 변화시킬 수 있습니다. 이런 기술적인 장점 덕분에 교육이라는 영역 안에서 무한한 가능성을 보여줄 수 있습니니다. 예를 들어, 학습자의 연령이나 능력, 다양한 학습 주제와 과제에 이르기까지, 적용할 수 있는 범위가 넓죠. 시스템 프롬프트를 활용한 대화 난이도 조절 특히 하이퍼클로바X는 저학년 대상의 학생들에게도 유용하게 쓰일 수 있을 것입니다. 학생들의 학습 수준에 맞춘, 쉽고 친근한 방식으로 정보를 제공함으로써 아이들이 자연스럽게 지식을 습득하도록 도울 수 있으니까요. ▼ 초등학교 1학년 학생의 눈높이로 설명해 주는 하이퍼클로바X입니다. 이렇게 맞춤형 서비스를 제공하면 개인화된 학습 경험을 통해 학생들의 학습 효과를 높일 수 있고, 이는 결과적으로 학교나 교육 기관의 전반적인 교육 성과 향상에도 기여할 것입니다. 시스템 프롬프트를 활용하여 대화의 난이도를 조절해 볼 수 있습니다. ▼ 이번에는 시스템 프롬프트를 이용해서, 높은 수준의 어휘와 복잡한 문장 구조를 사용하도록 설정했습니다. 이를 통해 고등학생, 대학생 및 전문 분야의 전문가들이 깊이 있는 학습이나 전문적인 지식을 슥득하는 데 도움을 줄 수 있습니다. 하이퍼클로바X의 뛰어난 정보 가공 능력은 교육 파트너사의 활용 가치를 더욱 향상시킬 것입니다. ▼ 다음은 간단한 용어로 설명한 답변과 방정식을 포함한 답변의 예시입니다. 문서 이해를 돕는 퀴즈 활용법 하이퍼클로바X를 활용하는 또 다른 방법 중 하나는 문서를 기반으로 한 퀴즈 생성입니다. 어떤 종류의 문서든지 퀴즈로 변환할 수 있으며, 이를 통해 학습 효과를 더욱 높일 수 있습니다. 예를 들어, 역사적 사건에 관한 문서를 제공하면, 하이퍼클로바X가 해당 내용에 대해 다양한 유형의 질문을 생성하게 됩니다. ▼ 이번에는 '원주율'에 대한 백과사전 문서를 바탕으로 OX 퀴즈를 만들어보겠습니다. 먼저, 이 작업에 대한 지시문과 함께 예시를 추가하여 모델이 보다 잘 이해할 수 있도록 했습니다. (출처: 네이버 지식백과 - 두산동아백과사전) 이제 결과를 확인해볼까요? ▼ 문서를 기반으로 만들어진 세 개의 OX 퀴즈와 각 문항에 대한 해설 및 정답이 제시되었습니다. 다른 예시를 살펴보겠습니다. 이번에는 생물학에서 중요한 주제 중 하나인 '미토콘드리아'에 관련된 문서를 넣었습니다. (출처: 네이버 지식백과 - 두산동아백과사전) ▼ 하이퍼클로바X는 주어진 문서를 분석하여 미토콘드리아의 기능이나 구조 등에 대한 여러 가지 질문을 생성합니다. 이렇게 문서를 기반으로 퀴즈를 만드는 과정은 정보를 수동적으로 읽기만 하는 것보다 훨씬 깊이 있는 이해를 돕는다는 장점이 있습니다. 그리고 교육 자료나 시험 대비용 문제은행을 구축해야 하는 사람들에게도 유용한 도구가 될 수 있습니다. 빈칸 채우기 문제 OX 퀴즈뿐만 아니라 빈칸 채우기 형식의 문제도 만들 수 있습니다. ▼ 영어 지문에서 특정 단어를 빈칸으로 두고, 네 개의 선택지를 포함하도록 요청할 수 있습니다. ▼ 이때, 정답에 대한 해설과 더불어 다른 선택지들이 왜 틀렸는지에 대한 설명도 함께 제공됩니다. 여러 언어로 동시 출력하기 하이퍼클로바X는 기본적으로 한국어와 영어를 중심으로 개발되었지만, 다국어 지원 능력도 보유하고 있습니다. 예를 들어, 한국어로 입력된 주제를 영어, 일본어 등 다른 언어로 번역하여 보여줄 수 있습니다. ▼ 입력하는 주제를 한국어, 영어, 일본어, 독일어로 출력하는 사례입니다. 이러한 기능은 다양한 언어권 사용자들에게 맞춤형 정보를 제공하는데 큰 도움이 될 것입니다. 하이퍼클로바X로 영어 단어장 만들기 ▼ 시스템 프롬프트를 활용하면, 알파벳을 입력하면 해당 알파벳으로 시작하는 다양한 단어들을 출력시키는 작업을 만들 수 있습니다. 필요한 난이도와 단어의 개수를 설정해서 진행할 수도 있습니다. 하이퍼클로바X를 좀 더 형식을 갖춘 형태로 출력을 시킬 수 있습니다. 예를 들어, 아래 소개해 드릴 사례는 하이퍼클로바X를 활용하여 단 몇 분 만에 영어 단어장을 만들어본 것입니다. ▼ 한글 단어를 입력하면 영어 단어, 품사, 유의어, 반의어, 예문을 포함한 답변을 생성하도록 하였습니다. 하이퍼클로바X는 이를 이해하고, 마크다운 형식의 표로 이를 구조화하여 출력합니다. 특히, 예문에서는 입력된 단어가 강조되어 나타나도록 처리했습니다. ▼ 이렇게 마크다운 형태로 출력을 시키는 영어 단어장이 만들어진 것이죠. 교육, 그리고 하이퍼클로바X 교육 분야에서 하이퍼클로바X로 펼쳐질 미래는 상당히 흥미롭습니다. 맞춤형 학습부터 심층적인 퀴즈 생성에 이르기까지, 하이퍼클로바X는 교육자와 학습자 모두에게 새로운 가능성을 열어줄 것입니다. 이런 변화 속에서 하이퍼클로바X는 어떻게 발전하고, 교육 분야에 기여하게 될까요? 앞으로의 하이퍼클로바X의 활약을 기대해 주세요!
  3. HyperCLOVA X는 다양한 산업 영역에서 활용이 가능하며, 그 잠재력은 계속해서 커지고 있습니다. 특히 게임 산업에서는 창의적이고 자유로운 상상력을 펼칠 수 있는 특별한 영역입니다. HyperCLOVA X를 활용하면 캐릭터 설명이나 게임에 쓰일 무기의 특성을 만들 수 있고, 세계관 초안 작성 등 다양한 작업에 활용할 수 있습니다. 또한, 게임 NPC의 다양한 대사 창작과 게임 스토리 개발에도 큰 도움이 될 수 있지요. 오늘은 HyperCLOVA X를 이용해 만들 수 있는 다양한 작업을 보여 드리겠습니다. 먼저 판타지 게임에서 등장하는 인물을 생성하는 작업입니다. ▼ 인물의 이름, 직업, 능력, 스토리 등을 예제로 적어두었는데요. HyperCLOVA X는 시스템 프롬프트에 적힌 이 포맷에 맞추어 출력하게 됩니다. ▲ 마법 요리사라는 직업을 가진 김그린이라는 캐릭터의 성격과 스토리를 생성해 내었습니다. <DALL·E 3로 생성한 이미지> ▼ 강령술사, 흑마법사 등 게임 세계관 속에 등장하는 어떠한 직업이든 어울리게 창작할 수 있습니다. 다음에 소개해 드릴 작업은 게임 속 무기의 특성을 만들어 내는 것입니다. ▼ 판타지 게임 속에서 사용할 무기 3가지를 만들고, 무기에 얽힌 사연도 곁들여 달라고 요청했습니다. ▲ 불의 칼날, 얼음 비수 등 재미있는 게임 속 무기를 만들어 내었네요. ‘참신하게 창작해 줘’ 대신에 조금은 다르게 변화를 주어볼까요? ▼ 이번에는 ‘사악하고, 어둡고, 무서워야 한다’고 설명을 입력했습니다. ▲ 어두운 판타지 게임에 나올법한 무기를 창작해 내었습니다. ▼ 판자지 장르 외에도, SF 게임 등 장르를 불문하고 창작을 할 수 있답니다. 시스템 프롬프트와 예제를 어떻게 구성하는지에 달린 것이죠! 더 나아가 게임 속에서 사용할 행성에 대한 설정 생성까지 시도를 해 보았습니다. ▼ 붉은 사막 행성, 괴생명체, 피난민이라는 키워드를 가지고, 행성의 디테일한 설정을 만들어 내었습니다. ▼ 필자는 여기에 재미를 느껴, 우림 행성, 초고도화된 문명 등 더 많은 행성을 만들어내었지요. 어때요? HyperCLOVA X의 이러한 창작 능력을 이용하여, 범위를 넓혀서 아예 게임의 전체 세계관 구축에도 활용할 수 있지 않을까요? ▼ 상황에 어울리는 NPC의 대사 여러가지를 한번에 만들어낼 수도 있습니다. NPC가 다양한 응답을 할 수 있게 해줌으로써, 게임 속 경험이 더욱 풍부해질 수도 있겠죠. ▼ 입력된 상황에 어울리도록 대사를 출력합니다. 작업자의 상상력을 더한다면 더욱 다양한 작업 만들어 낼 수 있을 것입니다. ▼ AI 던전입니다. 판타지 세계관에서 사용자가 입력하면, HyperCLOVA X는 세계관에 어울리는 형태의 응답을 하면서, 상황극을 전개합니다. 세계관에 참여하고, 몰입하면서 즐길 수 있죠. HyperCLOVA X는 작업자의 생산성을 높여줄 수 있는 AI 문하생이 되어줄 수도 있습니다. ▼ 다음은 스토리 작성을 도와주는 보조 작가 예시입니다. 디저트 나라에서 모험을 떠나는 캐릭터의 동료에 대해서 알려달라고 요청하니, 몇 가지 재미있는 동료들을 만들어 주었습니다. ▼ 이야기에 악당이 왜 필요한지, 악당의 목적과 성격은 무엇을 하면 좋을지 조언을 해주기도 하죠. 이렇게 다양한 상상력을 현실화 시켜줄 수 있는 HyperCLOVA X입니다! 이번 지스타2023에서는 CLOVA Studio 체험존을 통해 다양한 비즈니스 고객분들과 만남을 진행했습니다. 하이퍼클로바X 를 게임 비즈니스에 적용하는 방법을 부스에서 직접 체험 해볼 수 있었죠. 앞으로도 클로바 스튜디오는 게임업계를 비롯한 다양한 분야의 비즈니스에 바로 적용 가능한 서비스를 제공해 나갈 예정입니다. 이만 포스팅을 마치며 재미있는 포스팅으로 다시 찾아오겠습니다!
  4. ※ 본 포스팅은 하이퍼클로바 언어모델에 대한 내용입니다. 하이퍼클로바 언어 모델을 공개한 이후 터득해 온 저희의 여러 가지 프롬프트 노하우를 알려드리겠습니다. 1. 프롬프트의 예제를 다양하게 구성하세요. 프롬프트의 유형은 크게 세 가지가 있습니다. 예제를 구성하지않고 요청하는 zero-shot 프롬프트, 하나의 예제로 구성하는 one-shot 프롬프트, 여러 개의 예제로 구성하는 few-shot 프롬프트가 있습니다. 우리는 이것을 In-context learning이라고 부릅니다. 적절한 예제의 개수는 작업에 따라 달라질 수 있으며, 모델이 잘 이해하는 작업의 경우 3~4개의 예제만 넣어도 잘 수행합니다. 프롬프트에 예제를 몇 개나 넣어야 하는지 궁금해하시는 분들이 많이 계시는데요. ▼ 예제는 무조건 많이 넣어주기보다는 모델이 다양한 케이스에 대한 패턴을 파악할 수 있도록 구성하는 것이 효과적입니다. 원하는 결과가 나오지 않을 때는 예제를 다시 점검해보고 모델에게 정확히 가르쳐주세요. 2. 모델이 출력할 항목을 정확히 지정하세요. 모델이 출력할 결과에 대한 항목을 정확히 지정하는 것이 도움이 될 수 있습니다. ▼ 예를 들어, [항목:] 또는 {검정 분류}와 같은 형식을 말합니다. 이 방법은 튜닝을 위해서 데이터셋 구축하는 데에도 유용하게 쓰일 수 있습니다. 3. 컨텍스트 정보를 활용해보세요. 계절감 ▼ 계절감 있는 출력결과가 나오게 하고 싶으면, 예제에 날짜나 시즌 어휘를 추가해주세요. 초대규모 언어모델은 학습된 날짜까지만 답을 할 수 있으며, 오늘 날짜와 현재 시간은 어떤지 현실 세계와의 연결이 되어있지 않습니다. 시간축을 넣는 것으로 모델에게 시간에 대한 힌트를 줄 수 있습니다. 단, 시즌, 계절감 처럼 넓은 범위의 기간 형태로 쓰일 수 있을 것이며, 정확한 시간을 기준으로 연산에는 부정확할 수 있습니다. 대상자 지정 ▼ 대상자를 지정해두는 것이 좋을 수도 있습니다. 대상자를 넣어줌으로써 대상자를 정확히 인식하면서 문장의 목적을 구체화 시키는 것이죠. 이외에도 컨텍스트 정보는 다양하게 활용할 수 있습니다. 4. 지시문을 넣어주세요. ▼ 프롬프트 앞에 명료하게 지시문을 적어주면 작업의 성능이 향상될 수 있습니다. ▼ 지시문은 최대한 쉽게 풀어서 단순하고 명료하게 작성해 주세요. ▼ 그리고 지시문을 쓸 때 예제 항목에 쓰인 단어를 함께 넣어서 연관성을 높여보세요. 지시문과 항목의 관계성을 높이는 것이죠. 단, 지시문은 복잡한 조건을 보장하지 않기 때문에, 여러 개의 복잡한 조건을 거는 것은 효과적이지 않을 수 있습니다. 5. 지시문에는 부정문보다 긍정문을 사용해주세요. 부정문보다는 긍정문을 사용해보세요. “정중하지 않게 쓰지 않습니다.”보다는 “정중하게 씁니다”, “길지 않게 설명합니다.”보다는 “짧게 설명합니다.”와 같이 최대한 풀어서 설명해서 명료해지는 것이죠. 언어모델은 기본적으로 생성해 내려는 특성이 있다보니, ‘~하지 마세요’처럼 제한을 거는 것 보다는, 긍정적인 방향으로 허용하는 형태가 나을 수 있습니다. 6. 지시문과 예제를 섞어보세요 지시문이랑 예제를 어우러질 수 있도록 하는 것이 효과적일 수 있습니다. 예제를 나열하면서 시퀀적인 패턴으로 인식하게 하는 것보다는 독립적인 구성이 될 수 있도록 하는 것이죠. 7. 단조로운 예제를 바꾸어보세요. 예제가 단조로우면, 실행 결과도 단조로울 수 있습니다. 이때는 Temperature를 아무리 높여도, 문장의 창의성이 더해지지는 않아요. ▼ 상품 큐레이션에 사용할 수 있을만한 감도 깊은 광고 카피들로 구성하면, 언어 모델이 생성하는 결과의 품질이 달라집니다. 8. 키워드로 모델에 변수를 부여해보세요. ‘키워드’에 어떤 분위기나, 단어를 지시함으로써, 더욱 원하는 느낌의 결과가 나오게 할 수 있습니다. 이런 방법을 가지고, 모델을 통제하고 제어할 수 있기도 합니다. 이때 키워드는 아무 키워드나 쓰지 않고, 키워드와 문구를 어느정도 매핑시키는 형태로 예제를 구성하는 것이 좋습니다. 9. 낯설게, 불편하게 조합해보세요. 어울릴 거 같지 않은 두 단어를 조합해 보세요. 새로운 조합을 통해 참신하고 주목도가 높은 문장이 만들어질 수 있습니다. AI는 기계적인 학습을 통해 언어를 이해하고 생성하기 때문에, 사람처럼 감정을 직접 체험하거나 경험할 수는 없습니다. 하지만 한국어에 특화된 하이퍼클로바 언어모델은 언어 데이터에서 아주 섬세한 감성적인 뉘앙스를 파악하고, 단어와 단어 상의 관계성이나, 문맥, 어조를 고려해서, 문장을 만들어 낸다는 특징이자 강점이 있습니다. 하이퍼클로바 언어 모델은 이러한 부분에서 여타 AI에 비해 전혀 밀리지 않고 있습니다. 이외에도 프롬프트를 다룰 수 있는 다양한 노하우가 존재합니다. 여러분의 프롬프트 노하우는 무엇인가요? 하이퍼클로바 노하우는 여기서 마무리하도록 하겠습니다. 곧 안내드릴 하이퍼클로바X 모델의 활용 팁도 기대해주세요!
  5. ※이번 포스팅은 다음 논문에서 영감을 받아 작성되었습니다. L. Reynolds, K. McDonell. Multiversal views on language models. (2021). https://arxiv.org/pdf/2102.06391.pdf 하이퍼클로바, 확률 기반 모델 하이퍼클로바 언어 모델은 주어진 문장을 분석하고, 다음 단어나 토큰을 예측하도록 학습되었습니다. 언어 모델이 토큰을 선택하는 근거는 주어진 문맥과 확률에 기반합니다. 주어진 입력 문장의 이전 텍스트를 통해 가장 적절한 다음 토큰을 예측하는 것이죠. 이렇듯 언어 모델은 왼쪽에서 오른쪽으로 흘러가며 토큰을 선택하는 모습을 보이고 있습니다. 이 과정에서 언어 모델은 하이퍼 파라미터와 같은 미세 조정을 통해 선택이 달라질 수 있습니다. ▼ 여기 문장이 하나 있습니다. ‘너의 밤은 낮보다 아름답다.’라고 무드등이 주는 분위기를 살려서 감성적인 카피를 작성했습니다. ▼ ‘너의’ 단어 뒤에 ‘밤’이라는 단어가 선택된 것인데요. ‘밤’ 이외의 다른 후보들이 있었는지 살펴볼까요? ▲ 후보 토큰을 살펴보니, 마음, 방, 공간, 꿈, 우주 등 여러 대안 후보가 존재했습니다. 그럼 만약 하이퍼클로바 언어모델이 다른 토큰을 선택했다면, 어떤 문장이 만들어질까요? ▼ 다른 단어로 대체하여 실행해 보았습니다. 비슷한 분위기의 문장이지만 각기 다른 방식으로 표현하고 있죠. 다양한 가짓수의 가능성 언어 모델은 어떤 토큰을 선택하는지에 따라 다른 가지의 경로를 만들어 낼 수 있습니다. 우리의 선택으로 다양한 가짓수의 미래가 만들어지듯이 말이죠. ▼ 아래는 돛단배, 바람, 푸른 달을 가지고 만들어진 장면에 대한 묘사입니다. 다양한 가능성이 존재하는 확률적 세계에서 이 문장은 어떤 표현으로도 묘사가 될 수 있을까요? 다차원을 탐험하는 타임머신이 되듯이 다른 토큰을 선택하면서, 문장을 만들어보았습니다. ▼ 아래는 '너머'의 다른 대안 후보들입니다. ▼ 토큰을 하나씩 바꿔가면서 실행해보았습니다. 제시된 세 가지 키워드(돛단배, 바람, 푸른 달)를 어떻게든 포함시키는 형태로 다른 방식으로 문장을 써내려갑니다. 모델이 가장 적절한 토큰을 선택하는 과정 자체를 학습에 이용하면 어떻게 될까요? 더 나아가 토큰 단위가 아니라, 문장 단위로 평가를 해나가면 어떨까요? 좋은 문장을 선택하는 능력을 갖추게 된 언어 모델은 지금보다 훨씬 향상된 스토리텔링 능력을 갖추게 되지 않을까요? ToT(Tree of Thoughts) 실제로 최근 ToT(Tree of Thoughts)라는 방법론이 공개되었습니다. 여러개의 응답을 생성한 뒤, 각 답변에 점수를 부여하고, 이 과정을 반복하면서 가장 높은 점수를 갖고 있는 결과를 낼 수 있도록 학습한 것이죠. 확률적으로 탐색을 진행하는 점에서 Monte Carlo tree search (MCTS)와도 유사합니다. 논문에 따르면 이전보다 크게 향상된 문제 해결 능력을 갖추게 되었다고 합니다. S.Yao, D. Yu, J. Zhao, I. Shafran, T. Griffiths, Y. Cao, K. NarasimhanTree of Thoughts: Deliberate Problem Solving with Large Language Models. (2023). https://arxiv.org/pdf/2305.10601.pdf 이러한 방법론은 시나리오 생성 및 창의적인 글쓰기 등에서도 활용할 수 있지 않을까요? 확률적으로 생성하는 것이 그대의 운명이라면, 하이퍼클로바 언어 모델, 어쩌면 글을 써내려갈 수 밖에 없는 운명이라고 불리울 수 있습니다. 그것이 운명이라면 가장 최선의 선택을 하고 좋은 방향으로 흘러갈 수 있도록 지속적으로 탐구를 해야겠습니다. 이상, 탐구를 마치며 다음에도 유용한 포스팅으로 찾아오겠습니다!
  6. 안녕하세요! 오랜만에 올리는 포스팅이네요. ChatGPT가 전 세계에 돌풍을 일으키고 있는 요즘입니다. 저는 오늘 여러분께, 새로운 프롬프트 스킬을 소개하려고 합니다. 그동안 대규모 언어모델(LLM)은 산술 문제나 상식을 추론하는 능력이 떨어진다고 알려져 왔는데요. 작년 경 'Chain-of-Thought Prompting Elicits Reasoning in Large Language Models'라는 논문을 게재했는데, 이것이 언어모델의 성능을 크게 향상했다고 합니다. (논문 링크) 바로 Chain-of-Thought(CoT)인데요. 문제의 인과 관계에 대해서 차근차근 풀어서 전개하다 보면, 정답에 더 잘 도달할 수 있다는 개념입니다 ‘문제-답’ 대신에 ‘문제-풀이-답’ 형태로 프롬프트를 구성하는 것이죠. 그럼 지금부터 여러분께 CoT 프롬프트 스킬을 소개해 드리겠습니다. 예를 들면, 이런 방식이에요. ▼ 문제의 답을 단답형으로 구성한 기존의 프롬프트는 좌측처럼 오답을 내었습니다. 하지만 우측처럼 문제를 풀이하는 과정을 예제로 넣었더니, 정답으로 귀결되었습니다. 아마도 LLM의 특징을 잘 이해한 스킬이 아닐까요? LLM은 시퀀스 기반으로 빈칸 채우듯이 문장을 생성하는 특징이 있다보니, 이러한 특징을 살려서 중간 과정을 단계별로 풀이했을 때, 그 성능이 좋아진 것이 아니었을까 생각이 듭니다. ▼ 논문에 소개된 다양한 예제입니다. 산수(arithmetic)뿐만 아니라, 일반 상식(common sense), 기호 추론(symbolic reasoning)으로도 테스트 했다고 합니다. ▼ 아래와 같이 성능이 크게 향상되었다고 해요. 이 스킬을 하이퍼클로바 언어 모델에 적용해도 효과적일까요? 결론부터 말씀드리면, “효과가 있다!” 입니다. 몇 가지 실험을 해보았습니다. (Temperature: 0.15~3.0) ▼ 단답 형태의 예제로 구성한 프롬프트는 오답을 내었습니다. ▲ 반면, 풀이 과정을 문장으로 풀어서 예제를 구성했더니, 정답이 나왔습니다. ▼ 더 난이도 있는 문제들로 테스트 했습니다. 기존 프롬프트는 오답이었는데, CoT 프롬프트는 정답이 출력되었습니다. ▼ 날짜를 가지고 추론하는 문제에서도 효과를 보았습니다. 이러한 경험들은 ChatGPT에서도 이어집니다. ▼ ChatGPT에서도 산수 문제를 단계별로 풀이하면서 정답을 내고 있습니다. 그리고 ‘step-by-step’으로 답을 하라고 명령하는 것도 효과적이에요. Chain-of-Thought prompting을 통해 예전에는 많이 부족하던 LLM의 계산 능력을 끌어올릴 수 있었습니다. 하지만 여전히 오답을 내는 경우도 있기 때문에, 수학은 언어 모델이 풀어야 할 영역 중 하나입니다. 그래도 이러한 시도들이 모여서 언젠가 '수학'도 잘하는 AI가 될 수 있겠죠? 다양한 예제가 있는 'Large Language Models are Zero-Shot Reasoners' (링크) 논문 링크를 추가로 소개 드리며, 오늘 글은 여기서 마치겠습니다!
  7. 성능 끌어 올리기 클로바 스튜디오에서는 프롬프트 작업을 한 번 실행하는 것에서 그치는 것이 아니라 개발 프로세스상에서 수정과 검증을 반복하는 과정을 거쳐야 합니다. 차수별로 생성 결과에 대해서 품질을 평가하며 60~70점 수준의 성능까지 끌어올릴 수 있도록 합니다. 이 과정을 통해 최적화된 프롬프트를 완성하는 것이죠. 우리는 이것을 프롬프트 엔지니어링이라고 부릅니다. 하지만 플레이그라운드에서 작업을 하다 보면 원하는 결과가 나오지 않는 상황에 직면하게 됩니다. 아무리 파라미터 조절을 하고 프롬프트를 수정해도 기대하던 결과와 다르게 나오는 것이죠. 기본 모델(Backbone model)로는 성능 개선의 한계에 도달했기 때문입니다. 클로바 스튜디오는 이런 문제들을 해결할 방법을 가지고 있습니다. 바로 ‘튜닝’이죠. 사용자가 보유한 데이터셋을 가지고 모델을 최적화시킬 수 있습니다. ▼ 튜닝을 활용하면 작업 성능이 오르지 않던 정체 구간에서, 성능을 끌어올릴 수 있습니다. 저는 오늘 여러분께 프롬프트로 잘 안되던 작업을 튜닝해서 가능해지도록 한 사례를 공유해 드리려고 합니다. ▼ 클로바 스튜디오에서는 맞춤법 교정기를 쉽게 만들 수 있는데요. 여타 맞춤법 서비스와 비교를 했을 때 성능도 꽤 괜찮은 편입니다. 하지만 저는 다른 형식으로 출력되기를 희망했습니다. ▼ 문장에서 교정이 필요한 단어를 추출한 뒤, 화살표(→) 표기를 가지고 수정된 단어를 보여주는 형식을 원했습니다. ▼ 그렇지만 실행 결과가 좋지 않았습니다. 틀리지 않은 단어를 수정하거나, 다른 단어로 대치시켜버리는 등의 문제가 있었습니다. 여기서 저는 한 가지 의문을 품게 되었습니다. 오류 문장을 교정된 문장으로 변환하는 방식은 잘 되는데, 어째서 오류 문장을 {단어} → {단어 교정} 형태로는 잘 안되는 것일까요? 이 문제를 해결하기 위해 튜닝 기능을 사용해봤습니다. 그럼 지금부터, 좋은 결과를 내지 못했던 작업을, 좋은 결과를 낼 수 있는 작업으로 개선했던 사례를 공유하겠습니다. 튜닝, 꼭 해야 해요? ① 현재 플레이그라운드에는 2048 토큰이라는 제약 조건이 있는데요, 튜닝을 이용하면 이러한 제약 조건 없이 예제를 더욱 다양하게 구성할 수 있습니다. ② 원하는 방식으로 데이터셋을 구성하여, 니즈에 적합한 방향으로 출력이 될 수 있도록 할 수 있습니다. ③ 모델을 학습하면, 모델이 가벼워지며 Task의 수행 시간 단축되고 비용을 절감할 수 있습니다. 데이터셋을 모으는 일 튜닝을 시작하기에 앞서 가장 중요한 것이 바로 데이터셋입니다. 데이터셋을 이미 보유하고 있다면 괜찮으나, 데이터셋이 없는 경우 데이터를 확보하는 데에 시간이 오래 걸릴 수 있습니다. 튜닝으로 좋은 성능을 내려면 최소 1,000건 이상의 데이터가 필요하기 때문이죠. ① 맞춤법 데이터는 어디서 모았나요? 네이버 국어사전 퀴즈, 네이버 국어사전 우리말 바로쓰기, 국립국어원 온라인 가나다, 모두의 말뭉치, 외에도 인터넷상에서 수집한 자주 틀리는 맞춤법 자료들을 참고하여 수동으로 하나씩 직접 작성했습니다. ② 1,000개 데이터를 모으는 데 얼마나 걸렸나요? 개인당 작업 분량에는 다소 차이가 있으나, 4명이 참여했으며 데이터셋 1,200개만큼 모으는 데에 8~9일 정도 소요되었습니다. 다만, 맞춤법의 경우 대부분 정답이 명확히 있기 때문에 다른 유형의 작업보다는 수월한 편일 듯합니다. 반면에 중복되지 않은 새로운 데이터를 구하는 것은 힘들었습니다. ③ 데이터를 쉽게 불릴 방법은 없을까요? 적은 데이터를 가지고 수 배의 데이터로 늘릴 수 있는 ‘데이터 확장(Data Augmentation)’ 기능을 곧 공개합니다. ④ 데이터셋을 구할 수 있는 곳이 있나요? 현재 여러 기관에서 데이터를 개방하여 모두가 쉽게 용이하게 활용할 수 있도록 하고 있습니다. 단, 실서비스 제공을 위해서는 별도 약관 확인 및 법무 검토가 필요할 수 있습니다. AI-Hub (https://www.aihub.or.kr/) 모두의 말뭉치 (https://corpus.korean.go.kr/) 공공데이터포털 (https://www.data.go.kr/) 농식품 빅데이터 거래소 (https://kadx.co.kr/product) Hugging Face (https://huggingface.co/datasets) 본격! 튜닝 시작하기 데이터셋은 csv 혹은 json 형식을 지원합니다. 파일의 첫 번째 행은 Text, Completion이 포함되어 있어야 하며, 총 두 개의 열로만 구성되어야 합니다. ▼ Text 열에는 맞춤법이 틀린 문장을 넣고, Completion 열은 {단어} → {단어 교정} 형태로 구성했습니다. ▼ 모델 엔진을 선택합니다. 자세한 튜닝에 대한 가이드는 다음 링크에서 확인하실 수 있어요. (가이드 보기) ▼ 튜닝 학습이 완료되면 상세 페이지에서 인퍼런스 테스트를 할 수 있습니다. 입력하면 학습된 모델로 출력한 결과를 확인할 수 있지요. 자, 이제 결과를 살펴볼까요! ▼ 문장을 입력하면 {단어} → {단어 교정} 형태로 맞춤법을 교정해주고 있습니다. ▼ 간단한 띄어쓰기를 고쳐주기도 하고요. ▼ 오타를 찾아서 교정합니다. ▼ 문장을 조금 바꾸어 입력해도 맞춤법을 교정해주는 것을 확인할 수 있습니다. ※ 한 가지 알아둘 점은 현재 튜닝은 아래와 같은 인퍼런스 파라미터를 기본으로 하고 있는데요. 파라미터 조절로도 출력 결과에 차이가 있어서, 테스트 앱 발행을 통해 설정값 조절을 하는 것을 해보는 것도 추천합니다. 향후 플레이그라운드에서도 튜닝 모델을 불러와서 사용하실 수 있게 개선할 예정입니다. 튜닝의 성능을 검증하기 이제 튜닝된 모델의 결과를 검증해볼 시간입니다. 기존 프롬프트의 작업과 튜닝의 작업을 비교해볼까요? 문장 50개를 가지고 대략적인 차이를 비교해 보았습니다. ① 단어 추출 교정 프롬프트는 정답이 17개지만, ② 튜닝된 모델의 정답은 2배인 34개입니다. 원래 잘 되던 ③ 문장 변환 프롬프트의 정답이 31개인 걸 보면, 기존에 아예 안되던 프롬프트가 튜닝을 통해서 잘 되던 프롬프트에 버금가거나 상회할 정도로 개선되었다고 볼 수 있습니다. 여전히 오답을 내는 경우도 있었습니다. 이 부분은 데이터 보강, 인퍼런스 파라미터 조정 등을 통해 일부 개선할 수 있을 것이라 예상합니다. 마치며, 저는 이번 사례를 통해서 깨닫게 된 점이 있습니다. 잘 안되는 프롬프트를 튜닝하는 것은 비효율적일 수 있다는 것입니다. 시간을 들여 데이터셋을 만들고 잘 안되던 형식으로 튜닝을 진행해봤자, 단 몇 줄로 이루어진 최적의 프롬프트와 성능이 비슷할 수 있는 것입니다. 그래서 효율적인 프롬프트를 먼저 탐구해보는 것이 결과적으로는 시간과 비용을 절약해줄 수 있으리라 생각합니다. 잘 동작하는 프롬프트를 튜닝하면 성능이 월등히 좋아지지 않을까요? 이만 내용을 마치며, 다음에는 더욱 재미있는 내용으로 찾아올게요.
  8. 토큰(Tokenization) 이해하기 클로바 스튜디오를 잘 활용하려면 먼저 토큰이라는 개념에 대해서 이해하는 것이 좋습니다. 하이퍼클로바 언어 모델은 토큰들의 배열을 나타내는 확률 기반의 모형입니다. 여기서 토큰은 문장(sentence)보다 작은 단위인데요. 한 문장은 여러 개의 토큰으로 구성됩니다. 토큰 분리 기준은 그때그때 다를 수 있으며, 문장을 띄어 쓰는 것만으로 나눌 수도 있고, 의미의 최소 단위인 형태소 단위로 분리할 수 있습니다. (p.27, BERT와 GPT로 배우는 자연어 처리: 트랜스포머 핵심 원리와 허깅페이스 패키지 활용법, 이기창) 예제를 하나 보여드리겠습니다. 위 입력 문장을 토큰화한 작업의 결과는 다음과 같습니다. 작은 조각의 토큰이 모여 문장을 구성하는 원리입니다. 토큰은 주로 형태소 단위의 1-2 토큰으로 나뉘게 됩니다. 따라서 한 글자가 꼭 1토큰은 아니지요. 토큰 절약하기 현재 클로바 스튜디오에서 제공하는 테스트 앱은 Completion API 형태로, 프롬프트와 실행 결과를 합산하여 토큰을 계산하는 방식입니다. 그래서 적은 양의 출력 결과를 얻더라도, 입력한 프롬프트의 토큰도 매번 함께 차감됩니다. 예를 들어, 70토큰 만큼의 프롬프트를 입력하고, 30토큰 만큼의 결과를 얻었다면 100토큰이 차감이 된 것이고, 실행을 다시 하더라도 30토큰만 차감되는 것이 아니라, 프롬프트를 포함하여 100토큰만큼이 또 차감되는 것입니다. 실행을 10번 하면 1,000토큰을 소비하는 것이죠. 매번 실행할 때마다 토큰 소비가 클 수밖에 없고 사용자 입장에서는 부담이 될 수밖에 없을텐데요. 그래서 저는 효율적인 토큰 소비에 대해서 고민하게 되었습니다. ▼ 아래는 문장의 문체를 바꾸어주는 프롬프트의 실행 결과입니다. 프롬프트에는 총 19개의 예제(695토큰)가 쓰였으며, 1회 실행 시 생성 결과는 24토큰 정도 됩니다. Completion API에서는 프롬프트와 실행 결과를 합산해서 토큰 계산해야 하므로, 1회 실행 시 평균 사용 토큰은 695토큰에 24토큰을 더해서 720토큰 정도 됩니다. 100회 실행이라고 가정하면 약 7만2천 토큰을 이용하게 된다고 추산이 됩니다. 지금부터 이 실행 토큰을 줄여보도록 하겠습니다. ① 형식 단순화하기 프롬프트에 쓰이는 형식들은 전부 토큰 소비에 영향을 줍니다. 프롬프트에는 ‘새로운 문장 :’ 형식으로 되어 있었는데요. 이걸 줄여봐야겠다는 생각이 들었습니다. 그런데 한 가지 재미있는 사실을 알게 되었습니다. ‘새로운 문장 :’을 줄여볼 심산으로, ‘묘사:’로 통일시켰는데, 전체 토큰에서 변화가 없던 것입니다. 각각 8자, 3자로 글자 수도 차이가 있었는데 말이죠. 알고보니 ‘새로운 문장 :’은 3토큰으로 '묘사:'랑 같은 토큰 수 이었던 것입니다. 그래서 '변환'이라고 변경해 보았습니다. ‘변환:’은 ‘묘사’랑 같은 글자 수인데, 토큰은 각각 2토큰, 3토큰으로 차이가 있었습니다. ▼ 어쨌든 '변환:' 형식으로 예제들을 전부 맞추었으며, 전체 소비 토큰 686으로 ① 작업 대비 30 토큰 가량 아끼게 되었습니다. 차이가 크게 체감되지 않기 때문에, 다음 단계로 넘어가 봅시다. ② 불필요한 출력 결과 없애기 현재 프리셋에 입력되어있는 Inject는 플레이그라운드에서 사용자의 이용 편의성을 위해서 적용된 것입니다. 사용자가 실행을 누른 뒤, 다른 값을 바로 입력할 수 있게 하기 위함이죠. 그런데 Inject는 프롬프트에 포함이 되므로 토큰을 차감시킵니다. '### 문장:'은 5토큰입니다. 실서비스에서 사용되지 않는 것이라면, 이걸 매번 낭비하게 되는 것이죠. ▼ Inject를 전부 지웠습니다. 깔끔하게 '변환:' 이후부터만 문장을 생성하고, 출력값 뒤에 텍스트도 붙지 않습니다. 소비 토큰은 약 680으로 이전 ① 작업보다 6토큰 정도 절약하게 되었습니다. 아직도 큰 차이가 느껴지지 않고 '굳이?'라는 생각이 드네요. 방법을 찾아서 더 깊게 살펴봅니다. ③ 예제 사이의 ### 를 조절하기 ▼ 예제에 쓰이고 있는 ###를 조절해서 토큰을 아낄 수 있습니다. Stop sequence는 모델이 어디쯤에서 출력을 멈출지 알려주는 것인데요. 현재 프리셋의 예제에 쓰이고 있는 ###는 다른 형식으로도 쓰일 수 있습니다. ▼ 예를 들어, 아래와 같이 ##로 바꾸어도, 성능의 차이가 없습니다. #은 1토큰입니다. 이번 작업의 프롬프트에는 19개 정도의 예제가 들어가 있고 ###도 그만큼 반복되고 있습니다. #만 하나씩 지워도 20토큰 가까이 절약하게 됩니다. ▼ 실제로 프롬프트의 토큰은 640으로 이전 ③ 작업 대비 20토큰 가량 줄었습니다. 전체 소비 토큰도 656 토큰으로 이전 680 토큰 보다 30 정도 절약된 것입니다. 100회 실행을 한다고 치면, 65,680 토큰으로 이전보다 2,380 토큰이 세이브 됩니다. 결과 품질도 안정적으로 유지되고 있습니다. 저는 프롬프트 작업을 할 때 띄어쓰기. 즉, 공백 토큰에 민감하게 반응합니다. 왜냐하면 하이퍼클로바 언어모델은 공백도 1토큰으로 카운트하기 때문이죠. 그럼 이번에는 공백을 살펴볼까요? ④ 공백 줄이기 ▼ 프롬프트에 공백 토큰은 없나 둘러봅니다. 문장 뒤에 반복적으로 쓰이고 있는 공백 토큰을 발견해서 지워줍니다. 고작 1토큰이라고 생각할 순 있지만, 프롬프트에 공백이 10개 있다고 치면, 실행할 때마다 나도 모르게 10토큰씩 억울하게 날아가고 있는 것입니다. 여기부터 보여드릴 방식은 다소 실험적이라 굳이 따라하실 필요는 없습니다. 하지만 토큰 절약에는 효과적입니다. ▼ 만약 만들고자 하는 작업이 문장 변환처럼 한 문장씩으로만 이루어진 작업이라면, 마침표가 크게 중요하지 않다고 여겼습니다. 마침표를 찍을 일이 있다면, 서비스에서 직접 찍으면 되는 것이죠. 마침표는 1토큰입니다. 예제 19개에 문장, 변환 각각 2개씩 문장+마침표가 쓰이고 있으므로, 프롬프트에는 약 40여개의 마침표가 40 토큰으로 쓰이고 있으며, 실행할 때마다 40토큰씩 반복 소비되던 것입니다. ▲ 마침표를 제거하여 프롬프트 토큰을 599까지 줄였습니다. ④ 작업 대비 40 토큰 정도 절약된 것이며 ➀ 작업과 비교하면 무려 100 토큰이 절약된 것입니다. 작업의 품질도 초반 프롬프트와 크게 차이가 없으며, 결과 토큰은 10~20 사이를 유지하며, 글자 수 또한 60자 이내로만 처리합니다. 100회 실행으로 치면 사용 토큰은 6만1천으로 처음 작업과 비교하면 1만 토큰 정도 차이가 있습니다. 두둥! 토큰 계산기 작업을 하다 보면, 내가 입력한 글자 수와 토큰 수를 비교해야 하는 경우가 있는데요. 곧 업데이트될 예정인 ‘토큰 계산기’를 활용해보세요. 이제 입력한 문장의 토큰 수와 글자 수를 계산할 수 있습니다. 토큰 계산기를 활용해서 최적의 Maximum tokens 값을 찾거나, 효율적인 프롬프트를 만드실 수 있을 거예요. 지금까지 토큰 이해하기와 토큰 절약하기에 대한 포스트였습니다. 또 유용한 팁으로 찾아올게요!
  9. 본 포스팅은 2022년 9월 29일 CLOVA Engineering Blog에 먼저 게재된 글입니다. (바로 가기) 지난 포스팅에서는 HyperCLOVA 언어 모델을 활용하여 소설을 창작했던 경험을 소개했습니다. 지난 포스트 보기 이번 글에서는 그 소설을 하이퍼클로바 언어 모델로 어떻게 완성했는지 구체적인 방법에 관해서 설명해 볼게요. 클로바 스튜디오, 사람의 협업 도구가 되다 글을 쓰다 보면 한 번쯤 모니터 속 깜빡이는 커서만 멍하니 바라보던 경험이 있을 겁니다. 이 포스팅을 쓰고 있는 저 역시 글이 잘 써지지 않아 애꿎은 마우스 휠만 빙빙 돌리던 날들이 많았죠. 그랬던 제가 지금은 10회차 이상의 소설을 연재한 아마추어 작가가 되었습니다. 어떻게 가능했을까요? 그건 바로 사람의 글쓰기를 도울 수 있는 도구, 클로바 스튜디오 덕분입니다. 늘리고, 유도하고, 고르고, 바꾸고 소설 쓰기는 아래 그림처럼 크게 네 가지 방법으로 진행되었습니다. 첫째, 입력한 시놉시스를 기반으로 이야기가 이어 써지며 확장될 수 있도록 합니다. 확장된 이야기는 다시 프롬프트에 쓰일 수 있습니다. 둘째, 모델이 올바른 방향으로 생성해나갈 수 있도록 중간중간 지시하면서 결과를 유도합니다. 셋째, 이 과정에서 전개에 도움이 되는 문장이나 표현력이 좋은 문장들은 따로 수집합니다. 수집된 문장은 이야기 전개에 도움이 되는 경우 선별되어 사용됩니다. 넷째, 단조로운 문장의 표현력을 바꾸어서 문장을 더 흥미롭게 만듭니다. 첫 번째, 이야기의 눈덩이를 만드는 일 우리가 눈사람을 만드는 과정을 한번 생각해 볼까요? 처음에는 작고 보잘것없는 눈덩이지만 계속 굴리다 보면 어느새 커다란 덩어리가 되어 있죠. 글쓰기는 이 ‘눈덩이'를 만드는 것에서부터 시작합니다. 아래는 로맨스 판타지 장르의 소설을 만들었던 과정입니다. 작은 화실은 운영하던 주인공 세나가 화실에서 잠이 들었다가 눈을 떠보니 1920년대 프랑스 니스였고, 이곳에서 화가로서 성공하고 사랑하는 연인도 만나게 되는 내용입니다. 먼저 클로바 스튜디오에서 플레이그라운드라는 작업 영역에 간략한 시놉시스와 대사를 포함한 도입부 서너 문장을 프롬프트(Prompt)로 입력한 후 실행 버튼을 누릅니다. ➊ 모델은 기존에 작성된 부분과의 연결성을 고려하여 자연스럽게 다음 문장을 만들어냅니다. ➋ 이렇게 만들어진 결과물은 다시 프롬프트의 재료로 쓰입니다. ➌ 이 과정을 반복해 나가면서 문장을 생성합니다. 이 방법을 통해 작가는 자신이 구상한 이야기의 작은 눈덩이에서부터 시작해서 점차 그 분량을 키워나갈 수 있죠. ※ 프롬프트(Prompt): 하이퍼클로바 언어 모델을 수행하기 위해 입력하는 지시문과 예제문의 형태 두 번째, 사람의 손 터치로 모델의 창작을 주무르다 그렇다면 모델이 스스로 이어 쓰며 만들어간 이야기는 과연 재미있을까요? 아무래도 모델은 이야기꾼은 아니었나 봅니다. 솔직히 말해 모델이 스스로 만들어낸 이야기는 크게 인상 깊지 않았습니다. 인과관계 없이 단순히 장면을 나열하는 경우나, 이야기의 방향이 기대와 다르게 전개되는 경우가 많았습니다. 그러다 보니 비슷하게 소설 흉내는 내었지만, 어딘가 어색하고 재미가 없었죠. 일반적으로 플롯은 소설 속에서 일어나는 여러 사건이 효과적이고 개연성 있게 짜인 것을 말하는데요. 모델의 결과는 그렇지 못했죠. 그건 아마도 현재 모델이 플롯이나 문학적 장치와 같은 데이터를 충분히 학습하지 않았기 때문일 것입니다. 아래 그림은 모델의 순수한 출력 결과이며 전개에 문제가 있는 실패 사례입니다. 뜬금없는 인물이 갑자기 문을 두드리며 등장하며, 심지어 이름은 현아로 주인공이 가르치던 학생의 이름과 같습니다. 두 인물은 이야기를 나누다가 현아는 갑자기 자신이 아프다고 고백합니다. 주인공 세나는 다음날 일자리를 구하기도 하고, 갑자기 고향 집에 내려가겠다는 다짐을 합니다. 이렇게 맥락 없는 흐름이 연속되다 보면 독자 입장에서는 이해하기 어렵고 몰입감도 떨어지게 될 것입니다. 그래서 필요한 것이 사람의 개입이었습니다. 저는 언어 모델의 생성 결과 중간중간에 개입해서 모델이 이야기 흐름에서 벗어나지 않도록 했습니다. 한 가지 재미있는 사실은 약간의 개입만으로도 모델이 제가 의도한 대로 이야기를 이끌어 간다는 것입니다. 예를 들어볼까요? 아래 그림은 중간에 개입했던 흔적들입니다. 주인공 세나가 화실 운영에 어려움을 겪고 있다는 배경에 대한 설명에서 벗어나고 싶었습니다. 그래서 ‘그러던 어느 보통날이었다.’를 입력한 뒤 실행 버튼을 눌러 시간을 전환 시켰습니다. 모델은 ‘나는 여느 때와 같이 그림을 그리고 있었다.’라는 결과를 출력하며 장면을 바꾸어 전개를 이어갔습니다. 앞서 보여드린 실패 사례에서 수입과 월세에 대해 고뇌하던 우울한 감정의 주인공과는 다른 전개임을 확인하실 수 있습니다. ‘내가 자주 그리던 그림은’를 입력해서 모델이 그림에 대해 자세히 설명하게 하였습니다. 그리고 이제 본격적으로 판타지적인 소설 전개가 가능하도록 상황을 조성하였습니다. ‘지금부터 하는 이야기는 황당할 수 있다’, ‘그러던 중’ 등을 입력했습니다. 그 결과 주인공이 그리던 그림 속 여자가 자신을 쳐다보고, 심지어 주인공과 똑 닮았다는 형태로 흥미롭게 전개하게 되었습니다. 이 원리는 하이퍼클로바 언어 모델이 확률 기반의 생성 모델이기 때문인데요. 쉽게 말해 입력된 단어의 다음 단어를 확률적으로 예측하여 선택해 나가며 문장을 완성하는 것입니다. 이 원리를 이용해서 문장 중간에 단어나 문장을 직접 삽입하여 모델의 다음 출력 결과에 대해 영향력을 행사할 수 있었습니다. 몇 가지 예제를 더 보여드리겠습니다. ‘가까이’라는 단어를 넣어서 인물을 피사체 앞으로 옮기기도 하고, ‘어쩌면’이라는 단어를 넣어서 인물의 사유를 담아냅니다. ‘한 번은’을 넣어서 인물의 과거를 회상합니다. 그리고 ‘그때’라는 단어를 넣어 장면을 환기 시킬 수도 있습니다. 이때 누군가 등장을 하기도 하며, 새로운 사건이 발생하기도 합니다. 세 번째, 문장 조각들을 모으는 일 이야기의 뼈대를 만들고 나면 이제 글을 다듬는 작업을 해야 합니다. 이야기 구조 안에서 중요한 역할을 하는 문장들이 있습니다. 도입부나 인물에 대한 묘사, 핵심적인 대사라든지, 극적인 전환점 등 말이죠. 이 문장들이 모여 문단이 되고, 문단이 모여 한편의 글이 됩니다. 하지만 우리에게 주어진 시간은 그리 많지 않습니다. 이런 일련의 과정 중 어느 하나라도 생략하고 싶은 순간이 찾아오죠. 그렇다면 퍼즐 맞추기를 하듯 좋은 문장을 골라내어 배열하면 어떨까요? 질의 문장들이 모여 하나의 덩어리를 이루면 이를 바탕으로 더욱 풍부한 이야기를 만들 수 있을 것입니다. 저의 세 번째 방법인 문장 모으기입니다. 키워드와 장면을 묘사하는 문장 서너 개를 예제로 넣어 프롬프트를 만들었습니다. 이제 키워드를 입력하면 하이퍼클로바 언어 모델은 장면을 묘사할 수 있습니다. 실행해서 얻어낸 문장 중에서도 특히 인상 깊은 문장들은 따로 모아두었다가 적절한 시점에 활용되기도 합니다. 클로바 스튜디오에는 한 번에 최대 15개까지 출력할 수 있는 multiple 기능이 있는데요. 이 기능을 이용하면 더욱 많은 문장을 얻어낼 수 있습니다. 네 번째, 감성 한 스푼 내가 쓴 문장이 단조롭다고 느낀 적 있으신가요? 클로바 스튜디오를 이용하면 단조로운 문체를 더욱 표현력 있게 바꿀 수 있습니다. 아래 그림은 문체 변환 프롬프트를 통해 문장의 표현력을 바꾼 결과입니다. 파도가 '글씨를 지워버렸다'를 '고요하게 쓸어갔다'로 서정적으로 변환했습니다. ‘태양’을 ‘거대한 불덩이’라고 어구를 바꾸면서 다른 분위기를 연출하기도 합니다. ‘달빛은 환하게 비추고 있었다’를 ‘달빛은 환하게 부서져 내리고 있었다’로 바꾸어 좀 더 감성적인 느낌을 살리기도 했죠. 이렇듯 단조로운 문장들을 다양하게 변화시키면서 생동감 있고 풍부한 묘사를 할 수 있습니다. 무한한 가능성을 찾아서 클로바 스튜디오는 다양한 소설 작법에 사용할 수 있습니다. 키워드를 입력하면 시놉시스를 만들어내고, 우리는 여기에서 아이디어를 얻고, 이를 발전시켜 스토리를 구성할 수도 있을 것입니다. 우리의 상상력을 자극히고 영감을 주는 하이퍼클로바 언어 모델입니다. 이외에도 장르 소설을 작성하려면 캐릭터 구축, 장소나 배경 설정 등 세계관을 만드는 것에 많은 준비가 필요합니다. 이러한 준비 작업에 프롬프트는 다양한 방법으로 이용될 수 있습니다. 예를 들어 소설 속 캐릭터 구축에도 이용할 수 있죠. 캐릭터는 작가의 주제를 직접적으로 전달하는 역할을 하는 만큼, 체계적이고 섬세하게 계획된 설정하에 독자들에게도 충분히 납득이 되게 행동해야만 합니다. 아래 그림처럼 캐릭터 인벤토리를 채워내는 작업을 만들면 소설 쓰기가 더욱 수월해질 것입니다. 지금까지 클로바 스튜디오를 창작 활동의 도구로써 활용하는 다양한 방법들을 설명해드렸습니다. 앞으로 클로바 스튜디오을 통해 얼마나 다양한 결과물들이 나오게 될까요? 이제 필요한 건 여러분의 상상력입니다.
  10. 본 포스팅은 2022년 8월 5일 CLOVA Engineering Blog에 먼저 게재된 글입니다. (바로 가기) 하이퍼클로바에 감성 같은걸 끼얹나? 여기 어울릴 것 같지 않은 두 단어가 있습니다. 시계와 아이스크림이라는 단어를 가지고 감성적인 문장을 만들어본다면 우리에겐 어느 정도의 시간이 필요할까요? 아마 꽤 오랜 시간이 걸릴지도 모릅니다. 왜냐하면 이런 상황에서 어떤 감정을 느껴야 하는지 생각해본 적이 많이 없기 때문이죠. 그렇다면 하이퍼클로바 언어 모델은 이 두 단어를 조합해서 어떤 문장을 만들어낼 수 있을까요? 시계와 아이스크림이라는 이질적인 두 단어로 이렇게 멋진 문장을 만들어냈습니다. 시계는 시간이라는 추상적인 개념을 시각화한 물건이죠. 아이스크림은 녹는 성질이 있습니다. 그리고 사랑처럼 달콤하죠. 그리고 그 둘 사이에는 ‘겹친다’와 ‘녹아든다’라는 표현으로, 감정적이고 감각적인 느낌을 전달하고 있습니다. 사랑하는 사람과의 관계에서 느낄 수 있는 설렘과 달콤함을 표현한 문장입니다. 어쩌면 언어의 마술사 하이퍼클로바 언어 모델은 이렇게 생각지도 못했던 단어들의 조합을 가지고도 감성적인 문장을 만들어냅니다. 비유와 상징의 시적 표현을 사용하면서 말이죠. 이뿐만 아니라 문체를 변환하기도 하며 글의 전체적인 분위기도 다룰 수 있습니다. 이를테면 냉소적이면서 비관적인 시선의 글을 쓸 수도 있고, 따듯하고 온기를 가진 시선의 글을 쓸 수 있죠. 다음은 각각 하이퍼클로바 언어 모델이 생성한 비관적인 정서와 낙관적인 정서의 수필입니다. 한국어를 가장 잘 아는 AI 그동안 많은 곳에서 하이퍼스케일 AI를 공개하였습니다. 하지만 그 많은 하이퍼스케일 AI 중에서도 엄청난 양의 한국어 데이터를 학습한 하이퍼클로바 언어 모델이 아마도 한국어를 가장 잘 이해하는 AI일 것입니다. 하이퍼클로바 언어모델이 문장을 얼마나 디테일하게 다룰 수 있는지 살펴볼까요? 아래는 리뷰 문장의 감정을 긍·부정 형식으로 판별하는 작업인데요. 조사의 차이에 따른 문장의 뉘앙스까지 파악하는 것을 확인할 수 있습니다. AI, 일상의 도구가 되다 하이퍼클로바 언어 모델이 세상에 공개된 이후 네이버에서는 이미 그 기술을 여러 서비스에 적용하기도 했으며, 지금도 다양한 연구를 하면서 서비스 곳곳에 하이퍼클로바 기술의 활용처를 넓혀가고 있습니다. 클로바 스튜디오는 하이퍼클로바 언어 모델을 이용할 수 있는 도구입니다. 이를 통해 초대규모 언어 모델의 가능성을 탐색하고, 더 나아가 서비스화까지 검토할 수 있습니다. 그런데 한 가지 주목할 점은 현재 클로바 스튜디오를 다루는 다양한 사람 중에는 모델러뿐만 아니라, 비개발자들이 많다는 것입니다. 기존에는 AI를 개발하려면 데이터를 확보하고, 모델을 구현하기 위한 전문성을 가진 개발자의 리소스가 필요했으며, 여기에 들어가는 시간과 비용이 상당히 많았습니다. 하지만 클로바 스튜디오에서는 단 몇 줄의 지시문과 예제를 입력하는 것만으로도 개발에 대한 지식 없이 AI를 만들 수 있습니다. 클로바 스튜디오는 누구나 접근할 수 있는 플랫폼으로 그동안 멀게만 느껴졌던 AI라는 존재를 우리 삶 속으로 끌어들이는 역할을 할 것입니다. 많은 이들이 AI를 사용하고, 또 다른 누군가에게 도움을 주는 선순환 구조를 만들어가는 것이죠. 무엇이든 될 수 있는 프롬프트 연금술 하이퍼클로바 언어 모델은 어떻게 사용하는지에 따라서 전혀 다른 형상이 될 수 있다는 점에서 연금술과 유사한 점이 있습니다. 예를 들어, 영화 시놉시스를 만들고자 하면, 몇 가지 시놉시스를 예제로 넣으면 됩니다. 예제를 보고서 양식으로 구성하면 보고서 양식대로 결과가 출력되며, 메일 제목과 본문 내용과 같은 이메일 양식으로 구성하면 이메일을 작성합니다. 즉, 예제를 어떻게 구성하는지에 따라 원하는 대로 결과를 얻을 수 있죠. 어떻게 이렇게 다양한 작업이 가능하게 된 것일까요? 그건 바로 인컨텍스트 러닝(In-context Learning)이라는 방식을 통해서입니다. 엄청난 크기의 언어 모델은 소량의 잘 짜인 예시만으로 그 패턴을 이해하며, 작업을 수행할 수 있는 것입니다. 즉, 이렇게 간단한 지시문과 예제를 입력하는 것만으로도 원하는 작업을 만들 수 있고, 우리는 이것을 프롬프트(Prompt)라고 부릅니다. 하이퍼클로바 언어 모델의 작동 원리를 간략하게 설명해 드리겠습니다. 모델은 확률을 기반으로 다음에 나올 단어를 예측하여 문장을 완성합니다. 예를 들어, ‘저’ 다음 단어로 ‘나무’, ‘꽃’, ‘산’을 예측했다고 가정해 본다면, 가장 확률이 높은 ‘나무’ , 이어서 ‘에’ 를 선택해나가서 ‘ 저 나무에 ‘ 라는 결과를 생성하는 원리입니다. 비전문가 본격! 소설가 데뷔하다 하이퍼클로바 언어 모델은 소설 작법과 같은 영역에서도 그 능력을 발휘할 수 있을까요? 우리는 이러한 호기심으로 ‘하이퍼클로바로 소설 쓰기’를 시작했습니다. 클로바 스튜디오를 소설 쓰기를 돕는 보조도구로 활용하는 실험을 진행했으며, 그 성과와 활용법을 소개하려고 합니다. 다양한 문화 소비는 좋아하지만, 소설을 써본 적이 없는 수준의 담당자가 직접 현대 판타지물 연재작과 공포물 단편집을 완성하였으며, 네이버 웹소설의 UGC 코너에 연재하였습니다. ‘서지루, 천재 라이터 되다!’와 ‘공포 문화사: 미스터리 단편집’ 두 편입니다. 읽으러 가기 읽으러 가기 사람과 AI, 완벽한 파트너 현재 하이퍼클로바 기본 모델은 플롯이나 여러 문학적 장치들에 특화되어 학습되어있는 상태는 아닙니다. 그래서인지 하이퍼클로바 생성 결과에는 소설의 재미를 위한 서사 기법이 드러나는 편은 아니었습니다. 예를 들면, 복선이나 클라이맥스로 진입하기 위한 계기, 혹은 극적인 효과 등 말이죠. 이러한 이유로 클로바 스튜디오는 소설을 뚝딱하고 만들어내는 방식으로 사용되지 않았습니다. 클로바 스튜디오에서 만들어진 결과들을 담당자가 선별하여 문장을 묶어내는 방식으로 작업 되었습니다. 즉, 담당자가 머릿속으로 구상하던 스토리의 전개 흐름을 크게 벗어나지 않는 범위 내에서 AI가 이용된 것이죠. 하지만 그런데도 하이퍼클로바 언어 모델의 문장력은 비전문가인 담당자로서는 도움이 많이 되었으며 의지할 수밖에 없었습니다. 모델의 생성 결과를 통해 다음 전개에 아이디어를 얻기도 했지요. ‘서지루, 천재 라이터 되다!’ 소설의 경우 전체 9회 분량의 11,845자에서 하이퍼클로바의 문장은 약 6,354자로 약 50%가량 사용되었습니다. 아래 하이라이트 된 영역이 바로 하이퍼클로바의 생성 문장들입니다. 사람과 AI가 서로 교차 하면서 협업하고 있는 형상입니다. 이보다 완벽한 파트너가 있을까요? 다음 챕터에서는 어떤 방식으로 소설 작업이 이루어졌는지 구체적으로 설명하겠습니다.
  11. 저는 평소 다양한 창작 활동을 하는 터라 머릿속에 구름처럼 떠도는 이미지들이 있는데요. 클로바 스튜디오의 힘을 빌려 이 이미지들을 단편 소설이라는 결과물로 가시화해 보았습니다. 가장 먼저 도전한 장르는 미스터리, 오컬트, 호러입니다. 사건에 대한 묘사, 적당한 서스펜스, 의외의 결말과 같은 요소들을 조합하면 한 편을 완성하기가 수월할 거라 생각했거든요. 글을 시작하기에 앞서 클로바 스튜디오로 만든 저의 세 가지 작품을 먼저 읽어보시면 좋겠습니다. (분량은 길지 않아요.) 1. 그림자의 노래 2. 당신의 그림자 3. 마녀 집으로의 초대 어떻게 읽으셨나요? 사실 소설작법에 대해 제대로 배운 적은 없어서, 문학적 완성도가 떨어질 수는 있습니다. 간략하게 작품의 내용과 의도에 관해 설명해 드릴게요. 첫 번째 단편 <그림자의 노래>는 몰락했던 어느 폭군의 역사적 사실에 기인하여 만든 것입니다. 인생의 끝자락에서 광기로 치닫는 이반 4세(Ivan the terrible)의 심리를 묘사하고 싶었습니다. 정신착란에 걸린 이반은 누군가 자신을 엿보는 듯한 느낌은 받는데, 결국 그 실체를 알아채진 못합니다. 그림자는 '저주'를 노래하며 그를 조롱하며 내용은 마무리됩니다. 두 번째 단편 <당신의 그림자>는 <그림자의 노래>와 관통하는 내용입니다. 이 단편은 심리학자 칼 융이 말하던 무의식 속 어두운 인격이자 반려자인 '그림자'를 소재로 삼고 있습니다. <이부영, 그림자 - 우리 마음속의 어두운 반려자> 한 남자는 방 안에서 낯선 누군가의 시선을 느끼기 시작합니다. 유령일까요? 다른 한 여자는 우울의 깊은 심연에서 허우적거립니다. 그런 그녀에게 박사는 전생 체험을 권하고, 전생에서 그녀는 어느 고독한 남자와 마주하게 됩니다. 남자가 느끼던 시선은 사실 전생 체험을 하던 미래 누군가의 시선이었던 것입니다. 세 번째 단편 <마녀 집으로의 초대>는 환상특급, 구스범스와 비슷한 느낌으로 만들려고 했습니다. 핼러윈 데이에 주인공은 어느 할머니의 집에 방문하게 되는데요. 그 할머니가 사실은 아이들을 잡아먹는 괴담 속 마녀였던 것입니다. 마녀의 집에서 겨우 탈출한 주인공은, 아버지와 함께 그곳에 다시 방문하지만 아무런 흔적도 찾을 수 없었습니다. 각 단편을 위한 저의 계획은 이랬습니다. ① 소재를 가지고 대략적인 플롯을 스케치한다. ② 문장 조각들을 수집하고 아카이브 한다. ② 수집한 조각들을 뭉쳐서 덩어리로 만들고, 이 덩어리를 가지고 이야기를 확장한다. ③ 조각들을 앞뒤로 조립하거나, 덩어리를 깎아가면서 최종 이야기를 완성한다. 먼저 플롯에 사용할 문장 조각들을 수집합니다. 이 문장 조각들은 장면을 묘사하거나, 인물의 심리나 행동을 설명하는 모든 종류의 문장을 말합니다. ▼ 지향하는 분위기, 키워드, 설명을 넣어 결과를 추출합니다. 여러 번 실행하며, 추출 결과는 아카이브 해두면 언젠가 유용하게 쓰일 수 있습니다. 제가 각 세 가지 작품의 조각을 어떻게 모았는지 살펴보세요. 하이퍼클로바가 생성한 것을 초록색 표시했습니다. ▲ 제가 스스로 쓰기 힘들 이런 훌륭한 표현도 만들어냅니다. 적절히 골라 사용하면 묘사를 더욱 입체적으로 할 수 있게 되죠. 이렇게 만든 문장 조각들은 얼기설기 모아서 덩어리로 뭉칩니다. ▼ 덩어리는 복사해서 프롬프트에 다시 붙여넣고, 실행하면서 다음 문장을 만들어 내용을 확장해 나갑니다. 이렇게 확장된 내용을 가지고 이야기 전개에 대한 아이디어를 얻을 수 있죠. 만약 출력 결과가 생각했던 이야기의 흐름에서 벗어나는가 싶으면, 의도하던대로 돌아올 수 있도록 방향을 전환 시킵니다. <하이퍼클로바에 감성 같은걸 끼얹나? (2탄) 참고> ▼ '이반의 아내가 죽고난 후 그의 광기는 더욱 심해졌다.'라는 문장을 넣었더니, 해당 사건 이후 이반의 상태를 묘사합니다. '거 누구요? 누가 감히 짐의 왕실 안에서' 라고 대사 중 일부를 적었더니, 이 대사를 기준으로 다음 전개를 이어갔습니다. 파란색 표시한 것이 제가 중간 개입한 것이며, 하이퍼클로바가 생성한 것은 초록색 표시했습니다. ▼ 중간에 적절히 개입하지 않으면, 의도하지 않던 흐름으로 가버리거나 일차원적인 서술만 반복하는 문제가 있습니다. '동네'라고 적어 동네 친구에 대한 설명을 유도했습니다. '나와 타이론은'이라고 적어 구체적인 다음 행동을 묘사했습니다. ▼ '지금 생각해보면 그 집은'이라고 적어 장소에 대한 묘사를 이어갔습니다. 의외의 발견을 할 때도 있습니다. 마녀가 부를법한 노랫말이 만들어졌길래 모아두었다가 적절한 시점에 배치하여 사용했습니다. ▲ 이야기 끝맺음과 적절한 여운을 주기 위해 개입이 필요합니다. 소설의 문장 80% 이상은 클로바 스튜디오가 직접 만들어낸 것입니다. 하지만 플롯의 구조를 짜거나 문장을 적절히 선별하고 조립하는 데에 시간을 많이 들이게 되었죠. 각 소설의 글자 수와 작업 소요 시간입니다. 1. 그림자의 노래 - 글자 수(공백 포함): 952자 - 작업 소요 시간: 1시간 30분 2. 당신의 그림자 - 글자 수(공백 포함): 2,319자 - 작업 소요 시간: 6시간 3. 마녀 집으로의 초대 - 글자 수(공백 포함): 3,850자 - 작업 소요 시간: 5시간 작업 소요 시간이 글자 수에 비례하지는 않았습니다. 예를 들어 <당신의 그림자>의 경우, 어려운 소재이기도 했지만 두 개의 플롯이 서로 교차하면서 진행되는 구성이다 보니 품이 많이 들어갔습니다. 하지만 <마녀 집으로의 초대>는 클리셰가 많고 어렵지 않은 이야기여서 비교적 수월했습니다. 나름의 노하우가 생겨, 소재만 주어진다면 쉽고 빠르게 단편 소설 한 편을 완성할 수 있을 것 같다는 생각이 듭니다. 미스터리 단편 소설에 대한 작업 일지는 이쯤에서 마무리하겠습니다. 다음에 도전해 볼 장르는 로맨스, 판타지 입니다. 캐릭터를 만들고, 세계관을 구축한다는 점에서 더 높은 난이도가 될 거라 생각이 듭니다. 그리고 워낙 인기 장르이다보니 높은 기대치가 있을 수도 있겠지요.
  12. 품질을 높일 수 있는 작은 차이 하이퍼클로바 스튜디오로 작업을 하다 보면 기대하던 결과가 나오지 않을 때가 있어요. 특히, 분류, 교정처럼 정답을 알 수 있는 작업의 경우 더욱 그렇죠. "예제를 넣었는데도 왜 그럴까요?" 우선 Instruction이 적절했는지 점검해볼 필요가 있습니다. Prompt는 선생님이 학생에게 알려주듯이 문법적인 오류나, 설명의 오류 없이 구체적이고 정확하게 작성을 하는 것이 좋습니다. 제가 하이퍼클로바를 다루면서 얻은 비결은 예제를 무조건 많이 넣어주기보다는 모델이 패턴을 파악할 수 있도록 알려주는 게 효과적이었다는 것입니다. 다음은 입력값을 다양한 특징으로 분류하는 작업입니다. ▲ 돈까스 카레 (보통 맛)을 입력 후 실행하면, 메뉴명: 돈까스 카레, 맵기: 보통 맛으로 분류를 합니다. 그런데 S 사이즈라고도 출력을 했는데, 이건 입력값에 없는 정보죠. ▼ 이 경우에 사이즈는 (없음)이라고 수정을 하여 모델에게 알려줍니다. "너 이럴 땐 이렇게 해야 하는 거야"라고 알려주듯이 말이죠. ▼ 이제 잘 되는지 확인하기 위해 "돈까스 카레 (매운 맛)"이라고 작성합니다. 메뉴명과 맵기 분류를 잘하고, 사이즈 또한 (없음)으로 잘 표시하네요. 하나 더 해볼까요? ▼ "마라 라멘 전혀 안 매운맛"이라고 입력하니, 기대하던 결과대로 분류해 내었습니다. 다음 예제로 넘어가보겠습니다. 쇼핑 플랫폼에서 상품명들은 길고 복잡하게 만들어진 경우가 많아서, 상품명을 한눈에 알기 쉽게 심플하게 교정할 필요성이 있을 수 있죠. 먼저 길고 복잡한 상품명과 그것을 교정한 예제를 넣고 돌리면, 대부분 잘되는 것을 확인했습니다. ▲ 그런데 여기 "순화고플러스 화고 무농약 표고버섯 녹각영지버섯진액 건강즙"이라는 상품이 있습니다. 이 상품은 표고버섯이 아니라, 건강즙이죠. 그런데 아무리 돌려도 "순화고플러스 표고버섯"이라고만 생성하더라고요. Temperature를 조절하여도 결과는 달라지지 않았습니다. 도대체 어떤 상품이길래 교정을 못 하는 것일까? 상품명을 자세히 살펴보았습니다. ...무농약 표고버섯 + ...버섯진액 건강즙 수식을 하는 말과 수식을 받는 말 두 개가 동시에 나열하는 그런 특징을 가지고 있었습니다. 좀 까다로운 상품명입니다. ▼ "소스킹 이천 무농약 마늘 남도종 마늘액 소스"를 라고 비슷한 패턴으로 예제를 하나 추가해 보았습니다. 이걸 교정하면 "소스킹 마늘 소스"겠죠. 이제 결과가 어떻게 달라졌을까요? "순화고플러스 표고버섯 엑기스"라고 교정을 해냅니다. 우리는 이것이 표고버섯이 아니라 '건강즙'이라는 걸 알 수 있지만, AI는 판단하기 어려웠을 거예요. 원하는 결과가 나오지 않을 때는 예제를 다시 점검해보고 모델에게 정확히 가르쳐주세요. 한가지 팁을 더 알려드릴게요. 예제를 뒤에 나열식으로 열거하는 것보다는 설명과 예제를 어우러질 수 있도록 하는 방법이 효과적일 수도 있습니다. 아래 논문에서 4.3 Task specification by demonstration 챕터를 봐주세요. Reynolds,Laria & McDonell, Kyle. Prompt Programming for Large Language Models: Beyond the Few-Shot Paradigm. (2021). https://arxiv.org/abs/2102.07350 ▼ 길고 어려운 상품명을 이해하기 쉬운 상품명으로 교정합니다. 라는 설명을 예제들 앞에 추가했습니다. 비슷한 패턴의 예제를 넣지 않았는데도, 원하는 결과를 만들어냈습니다. 아래는 영수증 메뉴명을 복구해보는 예제입니다. ▲ "울릉도 오징어 파..."라는 메뉴가 있다고 칩시다. 이건 '파전'을 말하는 것일까요? 아니면 '파스타'를 말하는 것일까요? 이런 건 인간 두뇌로도 판단하기가 어렵습니다. 🤔 ▼ 식당명을 "사당 주막"이라고 넣어보았습니다. "울릉도 오징어 파전"이라고 복구를 하네요. ▼ 이번엔 식당명을 "뽀모도로 파스타"라고 적어보았습니다. "울릉도 오징어 파스타"라고 복구를 하네요. 식당 이름이 메뉴를 판단하기에 최적의 데이터가 아닐 수도 있습니다. 어쨌든 중요한 건, 모델이 판단을 할 수 있도록 힌트를 주어야 한다는 것입니다. 이상, 작업이 잘 안될 때 점검해볼 만한 내용이었습니다. 이 작은 차이를 익혀보세요!
  13. 안녕하세요. CLOVA Studio 입니다. 😁 초거대 AI에게 많은 이들이 기대하는 것 중 하나는 아마도 시나리오, 소설과 같은 콘텐츠 창작일 것입니다. 일반적으로 시나리오는 일관된 성격을 갖춘 여러 인물이 등장하며, 여러 사건을 전개해 나가면서 긴 서사를 만들어 냅니다. 하지만 저희가 내부적으로 검토해 보았을 때, '아직은' 하이퍼클로바 언어모델이 기승전결에 대한 개념이 없어서 펼쳐진 이야기를 끝맺지 못하고, 개연성을 구성하기 위한 복합적인 논리력도 다소 부족해 보였습니다. 이러한 미흡한 점이 있기에 시나리오 창작은 현재 저희가 비중을 두어 진행하고 있는 상황은 아니지만, Hyperscale AI를 통한 창작 작업은 앞으로 우리가 풀어가야 할 중요한 숙제입니다. 반면에 수필은 그나마 소설처럼 형식에 구애받지 않고 자유롭게 쓸 수 있어서, 클로바 스튜디오로 활용해 볼 만하겠다고 생각했습니다. 일상생활 속 겪은 일, 과거의 경험 등 내가 보고 느낀 것을 쓰면 되는 것이죠. 하지만 누군가에게는 이마저도 어려운 작업일 수 있습니다. 만약에 클로바 스튜디오가 보조 도구로써 옆에서 수필을 도와준다면 어떨까요? 그럼 지금부터 제가 클로바 스튜디오를 활용하여 수필을 만들어내는 과정을 보여드리겠습니다. 먼저 저는 Maximum tokens을 50으로 설정했습니다. 언어모델에게 너무 많은 것을 맡기지 않은 것이죠. 출력 결과를 한두 문장 단위로 쪼개고, 중간중간 제가 개입해서 '이어주는 말'을 첨가합니다. 이를 통해 출력 결과가 산으로 가지 않도록 했습니다. ▼ 예를 들어 이런 것입니다. '가까이'라는 단어를 넣어서 인물을 피사체 앞으로🕴 옮기기도 하고, '어쩌면'이라는 단어를 넣어서 인물의 사유🤔를 담아냅니다. '한번은'을 넣어서 인물의 과거를 회상합니다. 하이퍼클로바 언어모델은 세부적인 묘사를 하고 확장해 나가는 것에는 뛰어나기 때문에, 이 작은 조각들을 조립해 나가면 좋은 글이 완성이 될 거 같았습니다. ▼ 아래 작업은 '①의사를 관두게 된 내용'에서 시작해서, '②동네에 작은 까페를 차리게 된 내용'까지를 목표로 하고 있습니다. 도입부는 사색이 필요할 듯하여 '생각해보면'으로 운을 띄웠습니다. 하이퍼클로바 언어모델은 이어서 써 내려가기 시작합니다. '...인간의 육체라는 소우주 속에서 벌어지는 갖가지 사연들을 접하면서 거기서 삶의 환희와 비애를 동시에 맛보게 된다.' 라는 문장이 눈에 띕니다. 괜찮은 방향으로 글이 써 내려가질 수 있을 거 같은 느낌이 듭니다. ▲ 의사를 관두게 된 어느 시점으로 전환이 필요할 거 같아서 '2018년 가을'이라고 입력했습니다. 그 시점에 병원을 닫았고 비로소 자유로워졌다고 설명했습니다. 목표하는 이야기로 흐를 수 있도록 '최근 바리스타', '집 근처 골목에 작은'이라고 적어서 정보를 보충합니다. 그다음 '그러고보면'을 넣어서 다시 한번 어떤 사유를 담아냅니다. 커피와 의사라는 전혀 상반된 주제에 대한 작가의 생각을 담아내기 위해 '커피랑 비슷한', '의사는'이라는 양념을 첨가하여 원하는 문장을 유도해 내었습니다. 저는 드라마 '심야식당'과 같이 특별한 공간이길 바랐습니다. 그래서 마지막으로 '카페에는 주로'라고 넣어, 여러 단골이 모이는 공간으로 만들었습니다. 하나 더 해볼까요? ▼ 졸업하는 어느 학생이 노을을 보며 자신의 꿈에 대해 생각해보는 내용을 쓰고자 했습니다. 이번엔 '꿈이라는 말이'로 시작했습니다. '...그것은 결코 잡히지 않는 무지개나 신기루 같이 허망한 것만은 아니었다. 오히려 손에 잡힐 듯 가까운 곳에 있었다.' 어때요? 이 정도면 훌륭한 도입부가 아닐까요? ▲ '나로 말하면'을 넣어 인물에 대해 자세한 설명을 추가합니다. '3년 내내 공부와는 담을 쌓던 학생'이라는 결과가 출력되었습니다. 이에 대해 자세한 에피소드가 필요할 거 같아서 '한 번은'을 넣어서 사연을 첨가했습니다. 장면이 전환되는 것을 확인할 수 있습니다. 꿈에 대해서 논하는 내용이기 때문에, 인물의 어떤 심리적인 변화가 필요하겠죠. '그런 내가'를 넣어서 인물의 변화를 유도하였습니다. 이제 그 꿈이 무엇인지 명시를 해야 했습니다. '내 꿈은'이라고 적어서 '드러머'라는 꿈으로 흘러가도록 합니다. 그 꿈을 가지게 된 계기가 필요하겠죠. 이번엔 '지난 봄'을 넣어 장면을 전환합니다. 이야기 마무리를 위해 수미상관(ㅋ) 형식으로 '꿈, 그것은'이라고 도입부와 비슷하게 넣어서 끝맺음하였습니다. '감성적인 글'이라는 말이 자칫 진부하게 들릴 수도 있습니다. '감성'이 뭘까요? '감성'은 감정, 정서라고 불리는 것들을 말하죠. 이러한 마음의 성질은 수필에서 다양한 톤으로 나타나기도 합니다. ▼ 박완서 소설가는 따듯하고 온기를 가진 시선으로 이야기를 쓰시죠. '노란집'이라는 산문집을 참고하여 프롬프트로 넣었습니다. ▼ 다음은 '그리운 나의 고향집'이라는 키워드를 가지고 비슷한 정서로 글을 생성한 결과입니다. ▼ '스페인 여행에서 보았던 달'을 인풋으로 넣고 생성한 결과입니다. 마찬가지로 비슷한 정서가 느껴집니다. ▼ 이번엔 다자이 오사무의 '인간실격'에 나오는 문단들을 프롬프트로 넣었습니다. 인간의 고통스러운 어두운 내면을 묘사하는 자전적 소설이죠. ▼ '추운 겨울'에 대한 출력 결과입니다. 자신을 '벌레'로 비유하고, 세상을 벌레와 같이 터무니 없이 작고 우스꽝스럽다고 아주 비관적으로 묘사하였습니다. ▼ '아침 공기'에 대한 묘사합니다. 다자이 오시무와 유사한 날선 시선이 느껴집니다. ▼ 다음은 '여름, 노을, 저녁밥'을 키워드로 넣은 경우입니다. 따듯한 정서를 유도하는 인풋을 넣은 경우, 이런 스타일로 출력하기도 합니다. 언젠가 무라카미 하루키는 '직업으로서의 소설가'라는 에세이에서 글쓰기란 '문장을 주물럭거려서, 문장적 정밀도를 올리는 작업'이라고 말했습니다. 클로바 스튜디오가 문학 작품을 뚝!딱! 만들어낼 거라고 기대하기보다는, 부분부분 고쳐가면서 문학 창작 활동을 보완해줄 수 있는 보조 도구로써 활용해보는 것은 어떨까요?
  14. 이 문장은 클로바 스튜디오로 만들어졌습니다. "겨울의 눈과 여름의 얼음으로 만든 음식들로 가득한 세상에서 살고싶다." '눈'과 '얼음'이라는 차가운 형(形)과 '겨울'과 '여름'이라는 대립적 관계의 두 이미지를 가지고 시상을 전개했습니다. 일 년 내내 '차가운 세상'이라는 배경이 더욱 강조되는 효과가 있네요. 여기에 '음식들로'라는 예측하지 못했던 수식어가 붙으니, 느낌이 달라지며 재미있는 상상을 불러일으킵니다. 마치 동화 속의 한 장면 같죠? "밤바다의 파도 소리와 별빛과 달빛만이 존재하는 곳에서 조용히 흘러가는 돛단배는 마치 은하수처럼 보였다." 위 문장은 '은하수', '돛단배', '바람'이라는 세 가지 단어를 인풋으로 넣어서 생성된 것입니다. 여러 감각이 함축된 문장 같은데요. '별빛과 달빛만이 존재...'라는 심상을 통해 '밤바다'의 고요함이 부각 되었습니다. 재미있는 사실은 하이퍼클로바 언어모델은 제가 인풋으로 넣은 '은하수'를 밤하늘의 별로 표현하지 않았어요. 돛단배가 만들어내는 잔잔한 물결이 별빛✨, 달빛🌙에 반사되고, 이게 마치 은하수🌌와 같음을 표현한 것이죠. 이전 글에서 제가 문체에 대해 설명을 한 적이 있습니다. (Text Generation, 어디까지 해봤니?) 오늘은 하이퍼클로바 언어모델의 다양한 시적 표현, 감성적인 글쓰기 등의 가능성을 살펴보겠습니다. 가벼운 글이니, 편하게 봐주세요. ▼ '카피책-당신이 쓰는 모든 글이 카피다'라는 책에서 카피라이터 정철은 어울릴거 같지 않은 두 단어를 조합해보라고 설명했습니다. 낯설게, 그리고 불편하게 조합을 해보면 주목도가 높은 재미있는 문장이 만들어질 수 있다는 거죠. 우리가 잘 아는 '8월의 크리스마스', '살인의 추억' 와 같은 영화도 낯선 단어의 조합으로 만든 제목이죠. 낯선 두 단어를 떠오르기가 쉽지가 않더군요. 그래서 제 아이의 도움을 받았습니다. 아이가 단어를 말하면, 제가 그 단어를 입력해서 문장을 만들어보는 거죠. ▼ '용암'과 '솜사탕'이라니! 어른의 상식으로는 쉽게 생각하기 어려운 조합이었습니다. "마그마는 화산에서 흘러나와 바다로 들어간다. 그리고 다시 하늘로 올라가 구름이 된다. 우리의 마음도 이와 같다." 이 문장에 '솜사탕'이라는 단어는 없지만, 바다로 흘러 들어간 마그마가 만들어낸 수증기를 '솜사탕'으로 표현한 것이 아닐까요? ▼ 아이는 한술 더 떠, '핑크', '티라노' 라고 운을 띄웠습니다. 작업을 캡처하지 못하여 이미지로 대신합니다. "분홍빛 사랑의 시작점에서 너는 나에게 공룡처럼 다가왔다." 놀랍지 않나요? 저는 생각도 하지 못했던 두 단어였는데, 두 단어의 조합으로 제 취향의 문장이 만들어져서놀라웠습니다. 어떤 인물이 내게 마치 '공룡'처럼 임팩트를 주었고, 그게 바로 '분홍빛 사랑의 시작점'이었다는 장면이 그려집니다. 엉뚱하지만 사랑스러운 이미지가 마치 미셸 공드리 영화의 한 장면 같죠. ▼ 다른 몇 가지 결과들입니다. 두 단어로 문장을 만들어 내었고, 이 놀라운 표현들은 어느 문학에 쓰여도 손색이 없다고 생각합니다. 클로바 스튜디오가 만들어내는 문장이 단조롭다고 느낀 적이 있으신가요? 낯선 단어들을 가지고 키워드로 조합해보세요. 따분하고 시시한 듯 보이는 우리 주변도 실로 수많은 매력적인 원석들이 가득하답니다. 작업을 하다 보면 '표절'과 같은 문제가 발생하는 경우가 있을 수도 있습니다. ▼ 다음은 '설국'이라는 키워드를 넣었는데, 소설 '설국'의 도입부가 그대로 나온 경우입니다. 추정하건대, '설국'의 해당 도입부가 블로그 등에서 자주 언급된 문장이기도 하고, '설국'이라는 단어 자체가 해당 소설로 이어지는 그런 또렷한 특징을 가져서 그런 게 아닐까 싶습니다. ▼ 이 경우 Temperature를 0.7 정도로 높이면, 토큰의 무작위성이 높아져 표절의 확률을 줄일 수 있습니다. ▼ 또는 처음 알려드린 거처럼, 두 단어의 조합을 하면 의외성이 더해져 새로운 창작을 할 가능성이 커질 것입니다. 저희는 이처럼 표절과 같은 문제에 대해서 인지하고 있으며, 이를 방지하기 위한 여러 가지 기능적인 방안을 고민하고 있답니다. 내용이 길어져 이만 마무리하고 2탄으로 다시 찾아오겠습니다. 갑자기 날씨가 많이 추워졌네요. 곧 봄이 오려나 봅니다. 모두 건강 유의하세요!
  15. 01000011 01001100 01001111 01010110 01000001 00100000 01010011 01110100 01110101 01100100 01101001 01101111 뭐죠? 암호문인가요? 이 복잡한 숫자는 바로 0과 1을 사용하는 컴퓨터의 언어입니다. 위 이진수를 인간의 언어로 변환하면 'CLOVA Studio'가 된답니다! 그러면 사람과 컴퓨터는 어떻게 의사소통할까요? 컴퓨터는 사람이 사용하는 말을 바로 알아들을 수 없어서, 컴퓨터가 알아들을 수 있는 말로 변환이 필요하죠. 이때 사람의 언어와 컴퓨터의 언어를 이어주는 것이 바로 프로그래밍 언어입니다. 프로그래밍 언어는 컴퓨터에 가까울수록 저수준 언어, 인간과 가까울수록 고수준 언어라고 합니다. 흔히 우리가 '컴파일링'이라고 하는 건 고수준 언어를 저수준 언어로 변환하는 과정을 말해요. 지금부터 클로바 스튜디오를 통해 사용자 발화의 의도를 이해하고, 지시문 형태로 변환하여 대신 수행 해주는 작업을 보여 드리겠습니다. ▼ 먼저 자연어 문장과 intent를 예제로 넣었습니다. ▼ "TV 볼륨 10으로 해줘."라는 문장을 [음량.높임(TV) => 10]으로 시스템이 이해할 수 있는 형태로 변환하였네요. ▼ "블라인드 닫아줘."라는 문장은 [조작.닫힘(블라인드) => CLOSE]으로 변환했습니다. ▼ 이렇게 지시문만 입력한 경우에도 자연어로 변환을 했습니다. 어때요? 그럼 이렇게 활용할 수도 있지 않을까요? ▼ 예약 시스템의 포맷 데이터를 가지고, 대화형으로 변환할 수 있습니다. [...] 입력은 제가 한 것이고, 컬러 표시된 것이 클로바의 결과입니다. 뿐만 아니라 자연어 질의를 검색엔진에 유리한 형태로 가공하여 정답을 출력할 수도 있습니다. ▼ "미금역 근처에 있는 스테이크 집 아웃백 위치가 궁금해 왜냐하면 내 아들이 거기 가고 싶다고 했거든 빵이 맛있어"라는 아주 긴 이 문장에서도 '미금역 근처에 있는 스테이크 집 아웃백 위치'라는 사용자 의도를 파악하고, 최종적으로 [검색("미금역 근처 맛집") = '아웃백스테이크하우스 분당미금점']라는 지시문으로 변환했습니다. 응답 결과는 대화형으로 변환할 수도 있죠. ▼ "나 궁금한게 있는데 피가 왜 빨간색인지 그것이 너무 궁금한거야. 왜냐하면 내가 내가 색종이 자르다가 피가 났는데 왜 초록색이 아닐까" [검색('피 색깔') = 적혈구에 포함된 헤모글로빈의 색 때문에 붉은 색을 띠는것]라고 지시문과 결과를 출력했습니다. "피는 적혈구에 포함된 헤모글로빈의 색 때문에 붉은색을 띠는 것입니다."라고 대화형 결과도 제공합니다. 조금 더 까다로운 질의를 해보겠습니다. ▼ "그 머냐 그 거미인간 거미줄 쏘고 댕기는 그 머지 그 영화 찾아줘"라는 질문은 [검색('스파이더맨')=스파이더맨 홈커밍] 이라고 변환했습니다. 개떡같이 말해도 찰떡같이 알아듣는 하이퍼클로바 언어모델입니다. 자연어를 본격적인 프로그래밍 언어로 가공하는 작업을 만들어볼까요? 입력한 문장에서 스타일적인 요소를 파악하여, HTML 코드에 style 속성을 입히는 작업을 만들어보았습니다. ▼ "'하이퍼클로바 클로즈 베타를 시작합니다.'를 초록색 볼드체로 씁니다. 다음 줄에는 '2022년 2월8일(화)'라고 파란색으로 씁니다. 가운데 정렬로 쓰세요."라고 입력을 합니다. 참고로 프롬프트에는 하나의 예제만 넣은 상태입니다. ▲ style 태그를 적용한 html 코드로 전환된 것을 확인할 수 있습니다. 아, 이런! 결과가 출력된 상태에서 이런 요청이 생겼네요. ▼ '신청하기 버튼도 그려줄래요? 신청하기 버튼의 outlink는...'이라고 한 줄 추가하고 다시 실행합니다. ▼ 그러면 이렇게 버튼에 대한 코드가 추가로 생성됩니다. ▼ 이제 코드 편집기에서 실행해보면, '신청하기' 버튼이 만들어진 것을 확인할 수 있습니다. 물론 버튼을 클릭하면 요청한 페이지로 이동까지 합니다. 이번엔 자연어를 if문으로 가공하는 실험을 해보았습니다. ▼ 마일리지, 연령별 조건들을 적고, 조건이 아닌 경우에 대해서도 명시했습니다. 실행을 눌렀더니 간단한 if~else문으로 변환해주었네요. 이 작업의 경우, 프롬프트에 별도의 예제를 넣지 않았습니다. 지금까지 텍스트를 커맨드로 변환하는, 그리고 그 반대의 과정에 대해서도 살펴보았습니다. 최근 Deepmind가 AlphaCode(링크)를 공개하여 많은 화제가 되었죠. Github 등 여러 출처의 개발 코드들을 가지고 Pre-trained과 Fine-tuned된 모델을 통해, 아주 고수준의 프로그래밍 언어를 구사할 수 있습니다. 이제는 지시문을 기계 언어로 변환하는 것에서만 그치는 것이 아니라, 복잡한 문제를 해결하는 단계까지 다가간 거 같습니다. Text 2 Command로 시작한 글이었는데, 결론은 코딩하는 AI가 되었네요. 하이퍼클로바 언어모델은 앞으로 어떤 형태로 발전해 나갈 수 있을까요?
  16. 안녕하세요. CLOVA Studio 입니다. 😁 초대규모 AI, 하이퍼클로바 언어모델에게는 부족한 점이 하나 있어요. 바로 시의성입니다. 그도 그럴것이 하이퍼클로바 언어모델 학습에 이용된 데이터는 바로 학습을 한 시점까지의 데이터라는 점이죠. 그래서 최신성을 유지하기가 어렵습니다. 그리고 하이퍼클로바 언어모델은 시간에 대한 기준이 없다보니, 작업을 하다보면 "어라? 이건 요즘 최신 정보가 아닌데?" 싶을때가 있어요. 오늘은 시간에 대해서 몇가지 실험을 해보겠습니다! ▼하이퍼클로바 언어모델의 최신성을 테스트 하기 위해 음악 차트 검색기를 만들어 봤습니다. 최근 몇년 사이의 대표곡들을 예제로 넣어두고요. ▼2021년을 검색 해보았습니다. 2021년 10월까지의 정보는 커버하는 듯 합니다. 2022년 1월의 경우 당연하게도 하이퍼클로바 언어모델이 답을 내지 못했습니다. '하이퍼클로바 언어모델은 2021년말 이후 발생한 이벤트에 대한 지식이 부족하다'는 점 숙지해두세요. 만약 만들고자 하는 작업이 특정 시점의 정보를 정확히 알아야하는 경우라면, 저희가 준비중인 '튜닝'이라는 서비스를 통해서 원하는 데이터를 직접 학습시키는 방법이 있습니다. 잠깐! 여기서 그냥 넘어갈 제가 아니죠. 이왕 시작한거 잠시 시간 여행을 다녀올까요? ▼1930년을 입력하니, 이난영, 남인수의 히트곡이 출력됩니다. 1800년대까지 가봤습니다! 1829년의 오페라가 나오네요. 삼국시대라고 하니 기원전 17년의 '황조가'가 출력됩니다...! 덜덜 ▼ 좋아! 기원전 1000년까지 가보자고! 😵‍💫 클로바에게 특정 연도를 입력하면, 그 연도를 인식하면서 대화를 할 수 있을까요? ▼ 1988년도라고 가정하고 프롬프트를 작성해보았습니다. 우리나라에서 가장 높은 건물이 뭐냐고 물었더니, '63빌딩'이라고 답했습니다. ▼ 같은 조건에서 2020년이라고만 바꾸고 다시 물어볼까요? '롯데월드타워'라고 답하네요. (참고로 이 작업은 몇 턴 내에서만 유효하고, "잠실에서는 뭐가 높은데?"처럼 유도하면 프롬프트의 연도를 따르지 않습니다.) 연도는 정확성이 떨어지고, 오답을 낼 가능성이 크니까 생성 모델에는 적합하지 않은 듯 합니다. 그러면 약간은 두리뭉실하게 계절로 정의하면 어떨까요? ▼ 계절은 가을이라고 지시문을 작성하고, 주말에 입을 옷을 물어보았습니다. 가을엔 바람이 많이 부니 '트렌치 코트'를 입으라고 추천하네요. ▼ 여름이라고 정의해두었더니, 날씨가 더우니 '흰색 티셔츠'를 입으라고 합니다. 흰색 티셔츠...우리 클로바...코디 좀 배워야겠어요... 이 실험은 우리에게 어떤 의미가 있을까요? 다음은 카드 문구를 작성해주는 예제입니다. 그런데 모델이 출력한 생성 결과 중에서는 계절에 어울리지 않는 카드 문구가 생성이 되는 경우가 있었습니다. ▼ 예를들면, 현재는 겨울인데 '날씨가 너무 덥더라'라는 문구가 생성된 것이죠. ▼ 이 문제는 계절을 입력하는 것만으로도, 크게 개선할 수 있었다고 합니다. ▼ 이렇게 크리스마스, 발렌타인 데이 처럼 시즌을 입력하는 것도 가능합니다. 계절, 시즌을 입력하는 것만으로도 성능이 향상될 수 있다는 사실, 놀랍지 않나요? 여기까지 하이퍼클로바의 시간 여행이었습니다. 시간을 다루는 법을 익혀 작업 성능을 더 높혀보세요!
  17. 여러분은 AI와 대화를 할 수 있는 시대에 살고 있습니다. 이제는 대화형 인터페이스를 주변에서 너무나도 쉽게 접할 수 있습니다. 문의에 대한 답변을 자동으로 해주는 챗봇부터, 음성 인터페이스를 제공하는 AI 스피커도 있지요. '대화형'이란 무엇일까요? 아래도 '대화'라고 할 수 있을까요? Pearl, Cathy. Designing Voice User Interfaces. 36p. (2019) 정보의 교환이 이루어졌기 때문에 '대화'라고 할 수 있겠으나, 자세히 살펴보면 단발성 대화의 연속입니다. 대화의 맥락을 유지하고, 고유의 페르소나를 가지고 있어야 비로소 실제 사람과의 대화에 가까운 사용자 경험을 제공할 수 있을 것입니다. 대화는 사람이 할 수 있는 가장 자연스러운 인터페이스입니다. 낮은 학습 비용으로 누구나 쉽게 할 수 있죠. 서론이 길어졌습니다. 클로바 스튜디오로 손쉽게 대화 인터페이스를 만들고, 원하는 페르소나와 대화를 하는 법을 설명하겠습니다. ▼ Stop sequences를 통해 모델이 어디서 출력을 멈추게 할지 명령을 내릴 수 있습니다. 하이퍼클로바는 예제에 입력한 만큼을 전부 출력하기 때문에, 다음과 같이 입력을 해야 대화를 한 턴 씩만 하도록 출력할 수 있습니다. ▼ Inject text는 모델의 출력 결과 앞뒤에 원하는 텍스트가 나오도록 합니다. 주로 대화 디자인, 대본 등의 작업에 사용해요. 다음과 같이 입력해야 주거니 받거니 대화할 수 있습니다. ▼ Prompt를 작성합니다. 아래는 AI스피커 클로바와 사용자의 대화입니다. 라고 description을 작성합니다. 사용자가 물으면 공손하고 친절하게 대답합니다.라고도 작성하여도 좋습니다. '~을 하지 말라'고 명시하는 것도 효과가 있다고 합니다. 자, 이제 대화를 해볼까요? AI 스피커와 비슷하게 이렇게 대화가 가능합니다. ▼ 아이 눈높이에서 친근하게 대답해주는 피터팬 AI입니다. 피터팬을 테마로 예제를 바꾸었을 뿐입니다. 예제를 어떻게 넣느냐에 따라서 캐릭터 고유의 말투나 성격을 부여할 수도 있고, 원하는 페르소나와 대화를 할 수 있습니다. ▼ 아래는 🐬돌고래와의 대화입니다. 바다 쓰레기☢️의 심각성에 대해서 5턴 이상 대화를 이어갔습니다. 이렇듯 하이퍼클로바를 이용하면 상황 맥락을 보다 깊게 고려하여 끊김 없이 자연스러운 대화 흐름을 만들 수 있습니다. ⚠️ NOTICE ⚠️ 한 세션에서 대화가 쌓여갈수록 모델이 조금씩 엉뚱한 대답을 하는 경우가 있는데요. 이것은 히스토리가 쌓일수록 prompt의 영향에서 벗어나는 경향이 있기 때문입니다. 다음은 아이덴티티를 구축하는 방법을 소개하겠습니다. ▼ 클로바의 기본, 외적, 취향 정보 등을 prompt로 채워두었습니다. ▼ 클로바가 대화를 하면서 미리 입력해둔 정보를 활용하는 것을 알 수 있습니다. 위에 초록색 표시와 비교해주세요. ▼ 여기서 놀라운 점은 바로 다음 대화입니다. 동물원에 가면 넌 뭘 가장 먼저 볼래?라고 간접적으로 물어보았습니다. 돌고래쇼를 가장 먼저 보겠다고 답을 합니다. ▼ 클로바는 돌고래를 좋아한다고 정의해두었거든요. 대화가 필요할땐 직접 만든 AI와 대화해보는건 어떨까요? 이상, 나만의 AI와 대화하는 법을 소개해드렸습니다!
  18. 납은 금이 될 수 있을까요? 오래전 시도되었던 연금술은 한가지 철학적인 깨달음을 주었습니다. 인간의 내부에 숨겨져 있는 잠재력을 끌어내어 새로운 존재로 변화할 수 있다는 생각을 가지게 하였죠. 하이퍼클로바 언어모델은 연금술과 유사한 점이 있습니다. 어떻게 제련 하는지에 따라서 전혀 다른 형상이 될 수 있죠. 뜬금없는 연금술... 이게 대체 무슨 말이냐고요? 클로바 스튜디오로 만들 수 있는 각양각색의 작업을 소개하겠습니다! Text Generation 음악 서비스에서는 감성적인 언어들이 많이 쓰이게 되죠. 술을 테마로 음악 서비스에서 사용할만한 마케팅 문구를 생성해보겠습니다. 먼저 장르와 키워드에 어울리는 문구를 생성해달라고 작성을 합니다. 그런 뒤 대여섯 개의 예제를 넣었습니다. 저는 출력 결과를 부분적으로 제어하기 위해 키워드를 명시하는 편입니다. ▲ 재즈와 레드와인을 입력 후 실행해보겠습니다. "영롱한 루비빛의 레드 와인처럼 짙은 여운을 남기는 재즈 음악은 어떨까요?"라고 생성해주었네요. 어때요? 레드와인의 붉은 빛깔과 여운이 깊은 재즈의 분위기가 어우러지나요? ▼ 이번엔 술을 화이트 와인으로 바꿔볼까요? "청량감 넘치는 상큼한 화이트 와인의 맛처럼 톡톡 튀는 매력적인 재즈 선율." 화이트 와인의 깔끔한 맛을 톡톡 튀는 재즈의 선율과 엮어주었네요. 오...! 이쯤 되니 자신감이 붙었습니다. 조금 더 다채롭게 시도해보겠습니다. ▼ 제가 좋아하는 IPA 맥주와 브릿팝을 넣어보니, 쌉싸래한 맛과 브릿팝의 음악적 감성도 표현해내었네요. "쌉싸름하면서도 진한 풍미가 매력적인 IPA 맥주처럼 깊이 있고 묵직한 감성의 브릿팝!" 트로트에 을지로 노가리를 입력해보았습니다. ▼ "퇴근 후 맥주 한 잔, 그리고 그 곁엔 구수한 목소리의 트로트가 필요하죠." 지금까지 보여드린 건 일부입니다. 이제 2부로 넘어가시죠! 하이퍼클로바 언어모델은 여러 분야의 글쓰기에서 활용될 수 있습니다. 드라마 등장인물 소개 글을 작성해볼까요? 등장인물의 이름, 직업, 그리고 인물 설명을 예제로 넣었습니다. 물론 외향적인 묘사, 성격 등 다른 특성들도 더 넣으실 수도 있습니다. ▲ 길연주라는 인물의 직업을 식당 점원으로 설정하고 실행했더니, "작은 가게에서 일하면서 지내던 여주에게 첫사랑이 찾아오고 맞이하게 되는 새로운 이야기"의 내용을 묘사했습니다. 클로바 스튜디오에서는 이런 결과물을 한번에 여러 개 생성해낼 수도 있습니다. 다양한 결과물을 한번에 만들어낼 수 있다면, 드라마 작가들이 작업 구상을 할 때 영감도 얻고, 시간도 절약할 수 있지 않을까요? ▲ 원하는 키워드를 넣으면 시놉시스도 그럴싸하게 생성합니다. 테니스 선수, 대학생, 연애를 적고 실행해보았습니다. '기억상실증'이라니...K 드라마 흥행공식이죠. 역시 아이디어가 고갈될 일은 없겠습니다. ▲ 예능의 장면을 묘사하는 자막을 만들어낼 수 있습니다. 하이퍼클로바 언어모델의 문장 생성 능력은 이렇게 쓰일 수도 있습니다. 오픈월드 게임에서는 자유로움과 NPC와의 상호작용이 큰 비중을 차지하죠. 만약 NPC의 대사를 하이퍼클로바 언어모델이 생성해주면, 반복적인 대답을 하지 않고 다양한 상호작용을 만들어낼 수도 있지 않을까요? ▲ 최종 보스를 소개하는 집사의 대사입니다. ▲ 자신의 방패를 건네주는 한 병사의 대사입니다. 이런 느킴? (World of Warcraft 합성) programming 어느날 문득 이런 생각이 들었어요. 코드도 언어의 한 종류이기 때문에 코딩을 대신 해줄 수도 있지 않을까? 학부 이후로 잊고 지냈는데, 제가 유일하게 알고 있는 프로세싱이 떠올랐습니다. 프로세싱(Processing)이라는 인터렉티브 미디어 분야에서 자주 사용하는 자바 기반의 언어가 있는데요. 이 언어를 가지고 하이퍼클로바 언어모델로 인터렉티브한 결과를 만들어보기로 했습니다. 먼저 🇺🇸 영어 모델을 선택합니다. 마우스를 따라다니면서 버블을 남겨달라고 요청을 합니다. void setup () { 은 제가 작성했습니다. 내가 원하는 코딩의 방향이 있는 경우에는 적절히 개입해주는 것이 필요합니다. 그렇지 않으면 원하는 방향으로 코드가 흘러가지 않을 수 있기 때문입니다. ▼ 만들어진 코드를 복사해서 프로레싱에서 돌려봤습니다. 마우스를 따라서 동그라미를 만들어냅니다. [프로세싱에서 해보기] 코딩은 저보다 훨씬 심도있게 시도해볼 수 있는 분들이 계실거라 생각합니다. 입코딩이 가능한 시대가 곧 오게 될까요? 요즘 핫한 Codex처럼 하이퍼클로바 언어모델도 간단한 명령 만으로 코드를 만들어내는 것을 확인했습니다. 이건 다음 기회에 설명드릴 수 있도록 하겠습니다. ▼ 아래는 하이퍼클로바 언어모델이 그려낸 강아지입니다. 골든 리트리버의 긴 꼬리가 인상적이네요. (......그림 연습은 좀 더 해야겠어요 ^^;) Transformation 하이퍼클로바 언어모델은 욕설을 만들어낼 수도 있지만, 반대로 욕설을 순화시킬 수도 있습니다. 원문장과 욕이 없는 문장을 적절하게 예제로 넣었습니다. ▲ '우동' 자체는 욕이 아닌데, 머리에 우동이 들었다는 소리는 듣고싶지 않은 얘기겠죠. 하이퍼클로바 언어모델은 이러한 뉘앙스도 캐치합니다. ▲ 욕설을 걸러내지만, '똑바로' 같은 표현을 '잘'로 순화시키기도 합니다. 이러한 욕설 순화 기능은 스트리밍 서비스나 댓글에서 활용해볼 수 있지 않을까 생각합니다. 클로바 스튜디오를 통해 얼마나 다양한 서비스가 만들어질 수 있을까요? 이제 필요한건 여러분의 상상력입니다!
  19. 안녕하세요. CLOVA Studio 입니다. 😁 CLOVA Studio 를 처음 이용해 보신분들은 Prompt 에 어떻게 지시문을 넣고 예제를 넣는지 굉장히 어려워 하시는데요. Prompt 를 어떻게 디자인 하느냐에 따라 결과물이 달라질 수 있습니다. Prompt에 지시문과 예제를 어떻게 넣느냐에 따라서 모델의 출력 스타일이 달라질 수 있기에 그 미묘한 차이를 보여드리겠습니다! ▼ 날씨, 미세먼지 등과 같이 클로바 스피커 대화에서 자주 쓰이는 대화 중 일부를 예제로 넣었습니다. 대화해보면 답변을 그럭저럭 잘합니다. 좀 더 학구적인 질문을 해볼까요? 광합성이 일어나는 과정, 용액과 관련한 질문을 했더니 대답을 잘 해냅니다. 그런데 이런! 대답을 잘하다가도 엇나가는 경우가 있네요. "달의 뒷면은 왜 볼 수 없어?"에 대한 지문에 "(당황) 그건 저도 잘 모르겠습니다."라고 대답을 해버립니다. ▼ 이번엔 과학 주제에 대한 질문과 구체적이고 자세하게 해설하는 듯한 답변 형태로 예제를 넣었습니다. 같은 질문에 대해 어떻게 대답할까요? 🧐 달의 뒷면을 볼 수 없냐는 질문에 달은 자전과 공전 주기가 같기 때문이라고 그 이유를 정확하게 설명해주죠. ▼ 말투를 바꾸어볼까요? 아이 눈높이에 맞추어 친구처럼 대답하듯이 반말체로 예제를 바꾸었습니다. 이번엔 "지구에서는 달의 앞면만 관측이 가능하고, 그 이유는 달이 자전과 공전을 하면서 항상 같은 면만 지구를 향하고 있기 때문이야" 라고 대답을 하네요. 🤓 ▼ 앞서, 백과형 예제를 넣었던 Clova Pedia에서는 어떻게 대답했을까요? "지구상에 존대하는 물 중 97%는 해수로 이루어져 있는데, 이 해수를 이루는 주성분이 염화나트륨이기 때문이에요."라고 대답을 하네요.😲 이렇듯, prompt를 어떻게 작성하느냐에 따라서 모델은 전혀 다른 출력을 합니다. 이 섬세한 차이를 활용해보세요!
×
×
  • Create New...