AI, 이것만 알면 됩니다 ④ - 효율성

2023. 4. 15. 03:00AI • 빅데이터 인사이트

AI, 이것만 알면 됩니다 ④ - 효율성

무서운 속도로 발전해가는 AI를 이해하기 위해 필요한 지식을 쉽게 풀어 썼습니다.

챗GPT로 인해 본격적으로 시작된 AI 시대, 이것만은 꼭 알아가세요!

 

목차

챗GPT의 가장 큰 약점

Meta의 반격

AI 전쟁의 접전지: 계산 효율성(Computational Efficiency)


누가 생성형 AI 생태계의 주도권을 잡게 될까요?

 

챗GPT의 가장 큰 약점

챗GPT의 가장 큰 약점으로 지적되는 것은 바로 ‘비효율성’입니다.

GPT-4 모델의 파라미터 수는 공개되지 않았지만, GPT-3의 파라미터는 1,750억 개라고 합니다.

 

파라미터의 수가 많으면 성능이 좋다고 확신할 수 있을까요?

챗GPT로 반복되는 업무를 효율적으로 처리할 수 있다고 반기는 입장도 있지만, 한편에서는 “배보다 배꼽이 더 큰 상황”이라고 지적합니다.

 

사용되는 자원을 고려했을 때는 기술적인 비효율성이 크기 때문입니다.

 

 

파라미터란?

잠깐 파라미터(매개변수)가 무엇인지 짚고 넘어가자면, 모델의 가중치라고 할 수 있습니다.

출처=Artificial Neural Network by McCulloh-Pitts (1943)

 

 

쉽게 말하면 위 함수 식에서 w1, w2 같은 변수에 곱해지는 ‘계수’를 의미합니다. 근데 위의 단순한 식을 여러 개의 층(Layer)으로 합성하면 어떻게 될까요?

 

층이 두꺼워질 수록 가중치의 개수는 많아지게 됩니다.

 

‘(AI 모델이) 학습한다’는 것은 모든 층에 있는 가중치 값을 찾는 것이며, 가중치 (개수가 아닌) 값에 따라서 모델의 정확성이 달라지게 됩니다.

 

‘(AI 모델이) 학습한다’는 것은
모든 층에 있는 가중치 값을 찾는 것이며, 

가중치 값에 따라서
 모델의 정확성이 달라지게 됩니다.

 

<AI, 이것만 ① - 프롬프트>편에서 “가중치를 업데이트 하지 않고도” 원하는 답을 찾기 위해 좋은 프롬프트가 필요하다고 적었습니다.

파라미터의 개수가 많으면 많을수록 업데이트하기 위해서는 많은 시간과 비용이 들기 때문에, 비용을 아껴주는 프롬프트가 좋은 것이죠.

 

파라미터의 개수가 1,750억 개 이상일 것으로 예상되는 GPT-4가 2021년까지의 정보만 제공하는 이유도 여기에 있을 것으로 보입니다.

 

최근 정보를 정확성이 높게 제공하기 위해선 파라미터 업데이트가 필요한데, 어마어마한 수의 파라미터를 자주 업데이트하는 건 아무래도 무리일 테니까요.

 

 

Meta의 반격

메타는 작년 한 해 주가가 곤두박질치며 큰 손해를 봤지만, 올해는 좀 다릅니다.

출처=구글검색'메타 주가'

 

개인적으로 주가 반등의 가장 큰 공신은 바로 LLaMA 모델의 유출로 인한 화제성이라고 생각합니다.

 

챗GPT의 대항마, LLaMA는 어떤 게 다를까요?

 

LLaMA의 파라미터 개수는 모델별로 다양합니다.

기본형인 LLaMA-66B는 650억개, 13B는 130억개, 가장 작은 모델인 LLaMA-7B는 70억개입니다. 7B 기준 GPT-3의 25분의 1 수준이지만 비슷한 성능을 가지는 이유는 토큰의 양을 늘려서 훈련을 시켰기 때문이라고 합니다.⁽¹⁾

 

도대체 토큰이 뭐길래 파라미터 만큼 중요한 역할을 하는 걸까요?

 

 

토큰이란?

GPT-4의 API 사용 가격은 토큰으로 매겨지는데, $0.002/1K 프롬프트 토큰 및 $0.06/1K 완료 토큰으로 부과됩니다.

입력 혹은 출력하는데 사용되는 텍스트 데이터 내 ‘의미를 가진 최소 말의 단위(형태소)’가 토큰이며, 이를 기준으로 LLM이 작동한다고 볼 수 있습니다.

 

디지몬 어드벤처 세대라면 모두 알겠지만(!), 디지털 세상은 0과 1로 이루어져 있기 때문에

컴퓨터는 사람의 말(자연어)을 그대로 이해할 수 없습니다.

 

따라서 입력된 텍스트를 토큰으로 분할하고 이를 숫자로 표현되는 벡터 형식으로 변환해야 합니다.

텍스트(말뭉치) → 토큰 단위로 분할 → 벡터로 변환 

토큰화하는 방식에는 여러가지가 있으며, 이것이 토크나이저(Tokenizer)가 하는 역할입니다.⁽³⁾

 

영영사전을 보면 기본 단어로 다른 단어들을 설명해 놓은 것을 볼 수 있습니다. 기본 단어가 많으면 많을 수록 더 섬세하고 정확하게 다른 단어들을 설명할 수 있겠죠.

 

마찬가지로 복잡한 신경망을 구성하는 대신 파라미터 수가 적더라도 더 많은 토큰을 가지고 학습된 LLaMA가 GPT-3와 비슷한 혹은 더 나은 성능을 가질 수 있는 것입니다.

 

이로 인한 가장 큰 혁명은 LLaMA-7B 모델은 노트북에서도 실행할 수 있다는 점입니다.

 

 

LLaMA의 무서운 진화

하지만 LLaMA의 진화는 계속되고 있습니다.

오픈소스로 공개한 덕분에 누구나 사용할 수 있기 때문입니다.

 

깃허브에 C++ 소스 코드로 업데이트된 LLaMA-13B 모델이 올라왔습니다.⁽⁴⁾

이로 인해 속도는 100배 빨라지고, 필요한 메모리는 30GB에서 5.8GB로 대폭 줄었습니다.⁽

 

속도 및 메모리 개선이 가능했던 이유는,

기존 LLaMA를 작성한 파이썬(Python)은 인터프리터 언어이고, 업데이트된 C++은 컴파일 언어이기 때문입니다.

 

프로그래밍 언어의 종류에 따라 소스코드를 실행할 수 있는 상태로 변환하는 ‘빌드 과정’이 달라지게 되는데,

인터프리터 언어인 파이썬은 소스 코드를 인터프리터(번역기)에 전달하여 기계어로 번역해서 실행하게 됩니다.

‘번역 실행  그 다음 코드 번역  실행   … ’을 반복하게 되므로 실행에 더 많은 메모리와 시간이 필요합니다.

 

대조적으로 C++과 같은 컴파일 언어는 기계어에 가깝기 때문에 이 빌드 과정이 훨씬 단순하고,

이로 인해 C++ 언어로 업데이트된 LLaMA.cpp가 상대적으로 실행 속도가 빨라진 것입니다.

 

덕분에 GPT-3 모델과 동일한 성능을 가진 LLaMA-13B를 노트북에서도 사용할 수 있게 됐습니다.

 

 

AI 전쟁의 접전지: 계산 효율성(Computational Efficiency)

치열한 AI 전쟁의 승패를 가르는 주요 포인트는 정확성에서 효율성으로 옮겨가는 것처럼 보입니다.

이 때 사용되는 개념이 바로 계산 효율성(Computational Efficiency)입니다.

 

모델의 성능을 측정하는 지표를 예측한 결과의 정확성만으로 평가하는 대신, 소요된 비용 대비 정확성으로 따져보는 것입니다.

 

계산 효율성이란,
소요된 비용 대비 예측 결과의 정확성을
의미하는 성능 지표

 

 

OpenAI는 최적의 파라미터 설정을 찾는 등 알고리즘 최적화를 통해 계산 효율성을 높이기 위한 노력을 하고 있습니다.

과연 ‘효율’이라는 측면에서 OpenAI가 판을 뒤집는 게 가능할까요?

 

 

효율적인 ‘하드웨어’: NPU

소프트웨어가 효율적이지 않다면 하드웨어를 효율적으로 만들면 어떨까요?

계산 비용이 줄어든다면 계산 효율성은 높아질 수 밖에 없습니다.

 

1999년 컴퓨터에서 게임 그래픽을 처리하기 위해서 GPU(Grapics Processing Unit)이 개발되었습니다. GPU 덕분에 정밀한 3D 그래픽을 끊김 없이 구현할 수 있게 됐습니다.

출처=게임 &rsquo;로스트아크&rsquo;

 

이제는 AI 모델에 필요한 연산을 처리하기 위해서 전용 칩이 개발되고 있습니다.

바로 NPU(Neural Processing Unit)입니다.

 

현재 상용화된 NPU에는 USB타입으로, 기계학습 연산 속도를 더욱 빠르게 할 수 있도록 도와줍니다.

‘가속기’의 역할을 하는 것이죠.

 

구글에서는 NPU를 모아 놓은 TPU를 이용하여 AI 모델을 구현하고 있다고 합니다.

TPU의 속도는 GPU의 10배 이상이라고 하니 계산 비용에 대한 걱정이 무색해 보이기도 합니다. ⁽⁶⁾

 

 

Reference

(1) Hugging Face, LLaMA: https://huggingface.co/docs/transformers/main/model_doc/llama

(2) OpenAI: https://openai.com/pricing

(3) Wikidocs 최성필: https://wikidocs.net/166796

(4) 깃허브 ggerganov: https://github.com/ggerganov/llama.cpp/pull/613

(5) 뉴스 테크레시피: https://techrecipe.co.kr/posts/52643

(6) https://arxiv.org/abs/1609.08144v1