1️⃣ 토큰(token)의 개념
프롬프트 공학에 있어서 가장 중요한 개념이 뭐냐 꼽는다면
토큰이라고 해도 과언이 아니다. 이에 대해선 다음글에서 설명하겠다
먼저 개념부터 보면 토큰은 '컴퓨터의' 단어이다
1girl 이라면 우리로썬 뭐 두단어로 볼수도 있겠지만 보통 한단어로 인식한다
하지만 컴퓨터의 감성토큰집에 따르면
1 + girl 이렇게 두개의 단어, 즉 2토큰이 된다
여기까진 납득가능하지만 1_girl 이러면 3토큰이 되어 버린다. 1과 _밑줄과 girl 이렇게 나뉘기 때문
쉼표역시 1토큰취급이다.
다행히 기준이 뭐냐라고 물었을때 컴인지감수성 이딴게 나오는게 아니라 명확하게
단어집이 존재한다. 이 링크를 클릭해보면 주루룩 정리된 것을 볼 수 있다.
(다만 단어집은 이거말고도 있으며 다른거 쓸수도 있다)
단어집 자체는 우리도 오지게 공부하는 영단어집이랑 별 다를게 없다
한글대신 컴퓨터의 언어인 숫자가 대신 적혔을뿐
다만 딱 하나 단어집을 보면 같은 단어인데 `</w>` 가 붙은거랑 아닌게 있다.
이건 이 단어로 끝나는가 아닌가를 나타낸다.
즉,
"0": 15,
"0</w>": 271,
0 단독으로 끝나면 [271] 토큰인거고 00 이렇게 되면 [15, 271] 이렇게 단어가 분류가 되는 것이다
만약 000 이면? [15,15,271] 이된다.
"bat": 1,
"bat</w>": 11,
"girl": 2,
"girl</w>": 22,
"batgirl</w>": 12345
자 새로운 예시를 보자 (토큰번호는 알기쉽게 임의로 했다)
bat girl은 어떻게 될까 [1,22] 이다. bat으로 끝난게 아니니까 </w> 없는 일반토큰 [1]이고
girl로 끝났으니 [2]이 아니라 'girl</w>' 인 [22] 이다
만약 batgirl 이면? 단어집에 그런단어가 없다면 그대로 위와 똑같이 [1,22] 두토큰이겠지만
마침 단어집에 [12345] 라는 토큰으로 존재한다! 그럼 그대로 [12345]가 되는 것이다
하지만 batgirlz 라면?
그런 토큰단어는 위의 예시에 없기 때문에 (batgirl</w>은 있지만 batgirl이 없으므로)
bat와 girl 그리고 z 까지 해서 3토큰이 되어버린다. 꼴랑 z 하나로 1토큰이 3토큰화 되어버린 것이다
2️⃣ 임베딩 (embedding)
앞서 봤듯이 각 토큰은 컴퓨터가 알수 있는 언어인 숫자로 정의된다
즉, bat는 1이다. 하지만 우리가 단어를 외울때
[bat=우류량야얀] 이렇다면야 피눈물을 흘리며 달달외어야되지만
사실은 [bat=박쥐] 이렇게 우리가 알고 있는 '박쥐'라는 단어와 매칭시켜 해석한다
그리고 이정보는 대충 뇌 어느구석에 짱박혀(embed)되어 있다
컴퓨터도 마찬가지다 컴퓨터에게 1은 이미 박쥐라는 정보로 이미 학습되어있다
그리고 이 정보는 아래와 같은 고차원의 숫자벡터로 되어 있다
[0.1, 0.3, -0.2, ...]
이게 얘네들한테는 박쥐라는 정보
이와 같이 토큰을 알고 있는 정보(배열)로 떠올리는 것을
임베딩한다고 한다
3️⃣ 텐서 (PyTorch Tensor)
텐서 자체는 다차원 배열들의 분류상위의 개념? 즉, 인간은 포유류~ 뭐 이런느낌이지만
여기서의 의미로보면 위에서 만들어진 임베딩을 저장하는 데이터구조이다
즉, token으로 단어번역 -> 뇌에서 개념(임베딩)으로 변환 -> 노트에 정리(텐서)
이런 느낌으로 보면 된다
그래서 토큰을 번역하고 나면 마지막엔 텐서들이 남는다
이 텐서모음집을 AI에 전달하면 그 노트를 보고 이미지들을 생성하게 되는 것이다
그래서 누군가가 굉장한 이미지를 생성했는데 프롬프트를 몰라도 그 텐서를 입수했다면
그거 그대로 똑같은 모델에 넣으면 똑같은 이미지가 나오게 된다
그게 프롬프트를 최종정리한 결과물이니까..
'ComfyUI' 카테고리의 다른 글
CFG의 개념과 원리 (0) | 2025.02.17 |
---|---|
프롬프트의 기본 1 - CLIP 上 (0) | 2025.02.06 |
프롬프트 컨디션(Conditioning) 이란? (2) | 2025.02.02 |