Bolmo 4분 소요

단어 조각 대신 바이트를 읽는 AI, Bolmo는 무엇을 바꿀까?

핵심 요약

  • 일반적인 LLM은 텍스트를 토크나이저가 나눈 단위로 읽습니다.
  • 바이트 모델은 단어 조각 대신 작은 인코딩 단위를 사용해 텍스트를 처리합니다.
  • 기존 LLM을 바이트 단위로 바꾸려면 이미 배운 능력을 새로운 입출력 방식에 연결해야 합니다.
  • 바이트 방식은 표현 단위를 단순하게 만들지만, 처리 길이와 연산 비용이 늘어날 수 있습니다.

한국어 문서를 읽히거나 코드를 다루는 데 AI를 쓰다 보면, 같은 분량이라도 처리에 필요한 토큰 수가 달라집니다. 글을 잘라 읽는 도구인 ‘토크나이저’가 그 차이를 만드는 이유 중 하나입니다. 기존 LLM을 바이트 단위로 바꾸려는 Bolmo의 접근을 이해하려면, AI가 텍스트를 어떤 단위로 읽는지부터 알아야 합니다.

AI는 우리가 보는 글자대로 읽지 않습니다

사람은 문장을 단어와 의미로 읽습니다. 일반적인 LLM은 문장을 읽기 전에 텍스트를 숫자 목록으로 바꿉니다. 이때 텍스트를 나누고 각 조각에 번호를 붙이는 도구가 토크나이저입니다.

이 조각 하나를 ‘토큰’이라고 부릅니다. 토큰은 단어 하나일 수도 있고, 단어의 일부나 문장부호일 수도 있습니다. 자주 등장하는 문자열을 하나로 묶기도 합니다.

예를 들어 ‘읽어주는’이 몇 개의 토큰인지는 글자 수만 보고 알 수 없습니다. 어떤 토크나이저를 쓰느냐에 따라 나누는 방식이 달라지기 때문입니다.

이렇게 나누면 텍스트를 짧은 시퀀스로 압축할 수 있습니다. 자주 등장하는 긴 문자열을 매번 글자별로 읽을 필요가 없으니까요. 다만 어떤 문자열을 하나로 묶을지는 토크나이저의 학습 데이터와 설계에 따라 달라집니다.

그래서 같은 내용을 표현하더라도 언어마다 필요한 토큰 수가 다를 수 있습니다. 낯선 이름이나 오탈자가 들어오면 익숙한 단어와 전혀 다른 조각으로 나뉘기도 합니다. 모델은 조각이 이렇게 달라져도 그 안에서 의미를 알아내야 합니다.

바이트로 읽으면 무엇이 달라질까요?

바이트는 컴퓨터가 데이터를 표현하는 단위입니다. 1바이트는 8비트이며, 가능한 값은 256개입니다. 바이트 모델은 이 작은 단위들로 텍스트를 읽습니다.

여기서 바이트와 글자를 혼동하면 안 됩니다. UTF-8 인코딩에서 영문자 ‘A’는 1바이트지만, 한글 음절 ‘한’은 3바이트입니다. 바이트 모델이라고 해서 한글 한 글자를 한 번에 읽는 것은 아닙니다.

달라지는 것은 미리 정해둔 단어 조각 목록에 덜 의존한다는 점입니다. 새로 생긴 제품명이나 여러 언어가 섞인 문장도 같은 바이트 체계로 표현할 수 있습니다. 따라서 입력을 표현할 때 어떤 문자열을 하나의 토큰으로 등록해뒀는지가 차지하는 비중은 줄어듭니다.

그렇다고 기존 LLM이 모르는 단어를 아예 입력받지 못한다는 뜻은 아닙니다. 많은 토크나이저도 낯선 문자열을 더 작은 조각이나 바이트로 나눠 처리합니다. 차이는 바이트를 기본 처리 단위로 삼느냐에 있습니다.

‘토크나이저 없는 모델’이라는 표현도 이런 맥락에서 이해해야 합니다. 텍스트를 숫자로 바꾸는 과정까지 사라지지는 않습니다. 학습된 단어 조각을 고르는 단계가 맡는 역할이 달라집니다.

기존 LLM을 바꾸는 일이 어려운 이유

Bolmo를 이해하려면 byteification, 즉 기존 모델을 바이트 단위 모델로 바꾸는 개념을 알아둘 필요가 있습니다. 기존 LLM에서 출발하면 이미 학습한 언어 능력을 활용할 여지가 있습니다. 그 능력을 이어 쓸 수 있다면, 모든 것을 처음부터 다시 배워야 하는 부담도 줄일 수 있습니다.

하지만 입력을 바이트로 쪼갠다고 해서 전환이 끝나지는 않습니다.

기존 모델은 특정 토큰에 대응하는 숫자 표현을 입력받으며 학습했습니다. 출력할 때도 같은 토큰 목록을 기준으로 다음에 올 조각을 예측합니다. 읽고 쓰는 단위가 달라지면 입력과 출력 양쪽에서 연결을 다시 맞춰야 합니다.

익숙한 문장을 다른 표기법으로 읽어야 하는 상황을 떠올리면 쉽습니다. 문장의 뜻을 안다고 해서 새로운 표기법까지 곧바로 해석할 수 있는 것은 아닙니다.

그러니 ‘바이트를 입력할 수 있는가’만 확인해서는 충분하지 않습니다. 입력 방식이 바뀌어도 기존의 지식과 추론 능력을 얼마나 유지하는지 확인해야 합니다. 여기에 추가 학습이 얼마나 필요한지도 따져봐야 합니다.

작은 단위로 읽는 대가, 더 긴 처리 과정

바이트 방식에는 그만큼 부담도 따릅니다. 단위를 잘게 나눌수록 모델이 처리해야 할 시퀀스가 길어질 수 있습니다.

기존 토크나이저가 긴 문자열을 토큰 하나로 묶었다면, 바이트 방식에서는 이를 여러 단위로 나눠야 합니다. 모델이 이 단위들을 그대로 처리하는 구조라면 계산량과 메모리 사용량이 늘어날 수 있습니다. 한 번에 담을 수 있는 실제 문서 분량도 달라집니다.

출력할 때도 마찬가지입니다. 한 단계에 한 바이트씩 생성한다면, 같은 문장을 완성하는 데 더 많은 단계가 필요할 수 있습니다. 실제 속도는 여러 바이트를 묶어서 처리하는지 등 모델을 어떻게 설계했느냐에 따라 달라집니다.

그래서 바이트 모델을 평가할 때는 정답률만으로 판단하기 어렵습니다. 같은 문서를 읽고 같은 길이의 답을 내놓는 데 드는 시간과 비용도 함께 봐야 합니다. 처리 단위가 다른 모델끼리 ‘초당 토큰 수’만 비교하면 사용자가 실제로 느끼는 성능을 잘못 짚을 수 있습니다.

바이트를 쓴다고 다국어 성능까지 저절로 좋아지지는 않습니다. UTF-8에서는 문자마다 필요한 바이트 수가 다릅니다. 한국어를 표현할 수 있다고 해서 한국어의 맥락까지 잘 이해하는 것도 아닙니다. 어떤 데이터를 얼마나 학습했는지, 그 데이터의 질은 어떤지가 여전히 중요합니다.

Bolmo를 볼 때는 AI가 글을 나눠 읽는 방식을 어디까지 바꿀 수 있을지 따져봐야 합니다. 바꾼 뒤에도 기존 능력을 얼마나 유지하는지, 실제 처리 비용은 얼마나 드는지가 판단 기준입니다. 매일 쓰는 한국어 문서를 더 정확하게 읽어주면서 비용도 감당할 만하다면, 바이트 모델이 가져온 변화를 체감할 수 있을 겁니다.

Bolmo 바이트 모델 토크나이저 LLM

댓글

    댓글을 불러오는 중...