@자연지능님 자모음으로 분해해서 처리한다고 느려지는건 이해가 안가네요. 어차피 언어모델에서는 단어 단위로 Embedding을 생성해서 처리하기 때문에 "각난닫" 이나 "ㄱㅏㄱㄴㅏㄴㄷㅏㄷ" 둘 다 특정 Embedding tensor(vector)로 정의되고 결국은 같은 표현 범위내에서 다뤄질텐데 "ㄱㅏㄱㄴㅏㄴㄷㅏㄷ"와 "각난닫"를 서로 변환하는데 드는 시간이 많이 들지 않으면 저렇게 차이날 이유가 없을 것 같습니다. 그리고 변환하는데 시간이 많이 들어갈 이유가 전혀 없을 것 같아서 말입니다.
말씀하신 페북의 설명을 보고 싶네요.
범송귤하이쮸
IP 203.♡.210.77
03-21
2023-03-21 10:24:45
·
@raindraw님 대부분의 언어모형에서는 통계 기반의 sub-word tokenizer를 사용합니다. GPT에서는 Byte Piar Encoding을 사용하고 있고요.
아시다시피 GPT의 학습에 사용되는 데이터는 다국어 데이터이기는 하지만 거의 대부분 영어입니다. GPT3의 경우 언어별 단어빈도를 보면 영어가 전체의 92.64%, 한국어가 전체의 0.01697%입니다.
그러다보니 BPE를 하였을 때 영어는 거의 단어 단위의 token(sub-word)가 만들어지지만, 한국어는 자모 단위의 token이 만들어집니다. 따라서, 본문의 예에서 영어는 5개의 token, 한국어는 31개의 토큰입니다. GPT와 같은 생성모형은 기본적으로 이전 token으로 이후 token을 생성해가는 방식이기 때문에 자모 단위로 token을 생성하는 것이 단어 단위로 생성하는 것보다 더 늦어질 수 밖에 없습니다.
물론 실제로 token 단위의 차이 뿐만 아니라 언어별 학습량의 차이에서 기인하는 속도차이도 있습니다.
@raindraw님 더 정확한 설명은 대부분의 tokenizer는 BPE(Byte Pair Encoding)이라는 알고리즘을 기반으로 구축되는데요. 이 알고리즘은 character level 또는 byte level 등으로 모든 문자들을 확률 기반으로 하나의 토큰으로 묶어줍니다. 예를 들어 tokenizer 학습 초기에는 a b c ... z와 같은 모든 캐릭터가 각각 독립된 1개의 토큰으로 vocaburary에 들어가 있는 상태로 시작합니다. 그런데 수많은 텍스트를 학습하다보니 hello라는 캐릭터의 조합이 자주 등장하더라는거죠. 그러면 vocaburary에 hello라는 토큰을 추가합니다. 그러면 vocaburary에는 a b c ... z는 물론 hello도 포함되어 있겠죠. 기존의 a b c ... z만 있는 tokenizer는 "hello world"를 10개의 token으로 표현했다면, 이제는 hello를 1개의 token으로 표현 가능하기에 6개의 token이 되는거죠. 하지만 vocaburary의 크기를 과도하게 키울 경우 memory 문제도 있고, 오히려 성능이 하락하기도 하기 때문에 무작정 모든 단어들을 추가할 수는 없고, 등장 빈도가 높은 상위 몇만~몇십만 개의 조합만 추가합니다. 이런 방식이기 때문에 학습 데이터에 해당 언어의 비중이 낮을수록 해당 언어의 토큰들은 vocaburary에서 비중이 낮을 수밖에 없고, 이는 같은 길이의 텍스트를 표현하는데 훨씬 더 많은 토큰이 필요하다는 의미입니다. 대부분의 텍스트 생성 모델은 한 번의 추론(inference)에서 다음 1개의 token을 생성해냅니다. 이러한 이유로 ChatGPT를 비롯한 대부분의 텍스트 생성 모델 API는 토큰 당 가격을 측정하기에 한국어 생성은 소비자 입장에서 비용도 더 많이 들죠. 이런 이유 때문에 multilingual model은 소수 언어 입장에서 성능도 떨어지고, 비용도 많이 드는 선택지구요. 때문에 아무리 OpenAI Google Meta가 좋은 모델을 만들더라도, 국내 기업들이 이를 사용하는 것에 안주하지 않고 어떻게든 기를 쓰고 한국어 특화 모델을 만들려 하는 이유입니다. 여기에서는 네이버/카카오와 같은 국내 기업들이 많은 비판을 받고, 대부분이 매우 합리적인 비판이지만, 적어도 글로벌 기업에 주도권을 넘겨주고 현실에 안주하려는 기업들은 아니라는 점에서 충분히 지지받을 부분도 있습니다.
@범송귤하이쮸님 @한스의생각님 제가 알고 있던 과거 방식에서 다른 방식으로 vocaburary 처리를 하는 군요. 업무상 딥러닝 관련 비전 처리부분만 상대적으로 많이 알고 있었던지라 언어처리 쪽이나 다른 부분에 대한 부분을 업데이트해야 겠네요. 범송귤하이쮸님, 한스의생각님 감사합니다.
범송귤하이쮸
IP 203.♡.210.77
03-21
2023-03-21 11:18:13
·
@raindraw님 텍스트는 이미지와 다르게 픽셀이 입력되는 것이 아니라 representation 방식에서 조금 더 많은 고민이 있었습니다 ㅎ 그래도 컴퓨터비전과 자연어처리는 서로 융합되는 task가 많기 때문에 자연어처리도 쪽도 보시면 하시는 일에 도움이 되실 거에요 :)
낮잠자는강아지
IP 211.♡.141.126
03-21
2023-03-21 11:48:14
·
@raindraw님 Embedding tensor라는 매우 친숙한 단어가 나와 어쭤보는데요, 인어모델에서 Embedding tensor가 word vector의 의미로 쓰이나요? 전 supersymmetry에서 homomorphism constraint로 사용되는 정보로 Embedding tensor라는 말을 써왔거든요. 동일한 단어가 다른 분야에서 전혀 다른 의미로 쓰인다는 것이 흥미롭네요.
근데 이게 한글로도 거침없이 대답해줄때가 있더라구요. 당연히 번역이라는 연산으로 오래걸리겠거니 했는데 한글 답변과 영문을 비교한건 아니지만 거침없이 아주빠르게 될때도 있긴했어요 gpt본인? 에게 물어봐도 자신은 즉각적인 대답을 하도록 되어있고 언어에 따른 차이는 없다고 하더라구요. 문장의 구조에 따른 차이를 보일 수는 있지만 무의미한 차이정도일거라고... 하지만 테스트 영상은 확연히 차이가 나네요. 이녀석 거짓말도 하는군요 ㅋ
LEER
IP 220.♡.6.156
03-21
2023-03-21 09:32:31
·
3.5turbo 처럼 4도 개선이 되겠지요.
팩토리플레이스
IP 203.♡.1.73
03-21
2023-03-21 10:09:12
·
GTA 로 알고 잘못 들어온 1인
솔라
IP 118.♡.14.63
03-21
2023-03-21 10:30:33
·
한글 답변이 느린 가장 큰 이유는 처리 단위의 차이 때문입니다. gpt에서는 단어를 byte level bpe 라는 기술을 이용하여 나누는데 영어 알파벳과 한글 1글자의 저장방식이 최소 3배 차이가 나죠. 더구나 영어 데이터가 많으니 유닛 구성할 때 웬만한 영어 단어는 1개 단위로 처리되는 반면 한글은 단어는 커녕 한글자도 3개로 많이 쪼개집니다. 최근은 많은 것을 공개하지 않아서 100%확신할수는 없습니다. 요즘 OpenAI가 아니라 lockedAI죠
솔라
IP 118.♡.14.63
03-21
2023-03-21 10:38:51
·
한글이 영어에 비해 나쁘다는 얘기는 아니고 컴퓨터 개발 역사의 문제와 LM을 만든 주체가 누구냐에 따라 달라질 수 있는 문제입니다. 우리 나라 기업들도 투자가 획기적으로 늘어야죠
데용
IP 183.♡.227.116
03-21
2023-03-21 20:44:11
·
ㅋㅋㅋ영어를 배워야하나...
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg 지나치게 큰 이미지의 크기는 조정될 수 있습니다.
결국 번역을 다시 해야하지만...
자모단위로 분해해서 학습 및 처리를 하기 때문이라고 하더군요.
그래서 토큰도 한국어로 하면 영어에 비해 3배 가량 쓴다고 해요.
그리고 ChatGPT의 이런 문제 때문에
국내 기업들이 한국어에서 경쟁력을 갖을 수 있다고 생각하더군요.
어차피 언어모델에서는 단어 단위로 Embedding을 생성해서 처리하기 때문에
"각난닫" 이나 "ㄱㅏㄱㄴㅏㄴㄷㅏㄷ" 둘 다 특정 Embedding tensor(vector)로 정의되고
결국은 같은 표현 범위내에서 다뤄질텐데 "ㄱㅏㄱㄴㅏㄴㄷㅏㄷ"와 "각난닫"를 서로 변환하는데
드는 시간이 많이 들지 않으면 저렇게 차이날 이유가 없을 것 같습니다.
그리고 변환하는데 시간이 많이 들어갈 이유가 전혀 없을 것 같아서 말입니다.
말씀하신 페북의 설명을 보고 싶네요.
아시다시피 GPT의 학습에 사용되는 데이터는 다국어 데이터이기는 하지만 거의 대부분 영어입니다. GPT3의 경우 언어별 단어빈도를 보면 영어가 전체의 92.64%, 한국어가 전체의 0.01697%입니다.
그러다보니 BPE를 하였을 때 영어는 거의 단어 단위의 token(sub-word)가 만들어지지만, 한국어는 자모 단위의 token이 만들어집니다. 따라서, 본문의 예에서 영어는 5개의 token, 한국어는 31개의 토큰입니다. GPT와 같은 생성모형은 기본적으로 이전 token으로 이후 token을 생성해가는 방식이기 때문에 자모 단위로 token을 생성하는 것이 단어 단위로 생성하는 것보다 더 늦어질 수 밖에 없습니다.
물론 실제로 token 단위의 차이 뿐만 아니라 언어별 학습량의 차이에서 기인하는 속도차이도 있습니다.
아래 사이트에서는 GPT3의 Tokenizer를 사용해볼 수 있습니다.
https://platform.openai.com/tokenizer
더 정확한 설명은 대부분의 tokenizer는 BPE(Byte Pair Encoding)이라는 알고리즘을 기반으로 구축되는데요. 이 알고리즘은 character level 또는 byte level 등으로 모든 문자들을 확률 기반으로 하나의 토큰으로 묶어줍니다. 예를 들어 tokenizer 학습 초기에는 a b c ... z와 같은 모든 캐릭터가 각각 독립된 1개의 토큰으로 vocaburary에 들어가 있는 상태로 시작합니다. 그런데 수많은 텍스트를 학습하다보니 hello라는 캐릭터의 조합이 자주 등장하더라는거죠. 그러면 vocaburary에 hello라는 토큰을 추가합니다. 그러면 vocaburary에는 a b c ... z는 물론 hello도 포함되어 있겠죠. 기존의 a b c ... z만 있는 tokenizer는 "hello world"를 10개의 token으로 표현했다면, 이제는 hello를 1개의 token으로 표현 가능하기에 6개의 token이 되는거죠.
하지만 vocaburary의 크기를 과도하게 키울 경우 memory 문제도 있고, 오히려 성능이 하락하기도 하기 때문에 무작정 모든 단어들을 추가할 수는 없고, 등장 빈도가 높은 상위 몇만~몇십만 개의 조합만 추가합니다.
이런 방식이기 때문에 학습 데이터에 해당 언어의 비중이 낮을수록 해당 언어의 토큰들은 vocaburary에서 비중이 낮을 수밖에 없고, 이는 같은 길이의 텍스트를 표현하는데 훨씬 더 많은 토큰이 필요하다는 의미입니다.
대부분의 텍스트 생성 모델은 한 번의 추론(inference)에서 다음 1개의 token을 생성해냅니다. 이러한 이유로 ChatGPT를 비롯한 대부분의 텍스트 생성 모델 API는 토큰 당 가격을 측정하기에 한국어 생성은 소비자 입장에서 비용도 더 많이 들죠.
이런 이유 때문에 multilingual model은 소수 언어 입장에서 성능도 떨어지고, 비용도 많이 드는 선택지구요. 때문에 아무리 OpenAI Google Meta가 좋은 모델을 만들더라도, 국내 기업들이 이를 사용하는 것에 안주하지 않고 어떻게든 기를 쓰고 한국어 특화 모델을 만들려 하는 이유입니다. 여기에서는 네이버/카카오와 같은 국내 기업들이 많은 비판을 받고, 대부분이 매우 합리적인 비판이지만, 적어도 글로벌 기업에 주도권을 넘겨주고 현실에 안주하려는 기업들은 아니라는 점에서 충분히 지지받을 부분도 있습니다.
제가 알고 있던 과거 방식에서 다른 방식으로 vocaburary 처리를 하는 군요.
업무상 딥러닝 관련 비전 처리부분만 상대적으로 많이 알고 있었던지라 언어처리 쪽이나 다른 부분에 대한 부분을 업데이트해야 겠네요.
범송귤하이쮸님, 한스의생각님 감사합니다.
텔 미 쓰리 캣 브리즈...
당연히 번역이라는 연산으로 오래걸리겠거니 했는데
한글 답변과 영문을 비교한건 아니지만 거침없이 아주빠르게 될때도 있긴했어요
gpt본인? 에게 물어봐도 자신은 즉각적인 대답을 하도록 되어있고 언어에 따른 차이는 없다고 하더라구요.
문장의 구조에 따른 차이를 보일 수는 있지만 무의미한 차이정도일거라고...
하지만 테스트 영상은 확연히 차이가 나네요. 이녀석 거짓말도 하는군요 ㅋ