본문 바로가기

Tech

LLM 개발자라면 알아야 할 숫자들

LLM(Large Language Model) 개발자들이 알고 있으면 좋은 숫자들이 있어서 공유해보려고 한다. 비용 예측을 해보거나 시스템 규모를 산정해 보기 위해 간단히 계산할 때 알고 있으면 유용할 것 같다.

프롬프트

40-90% : "Be concise"를 프롬프트에 추가해서 절감할 수 있는 비용

LLM 모델을 사용할 때 응답의 토큰 양에 따라 비용을 지불하기 때문에 응답을 간결하게 받을 수 있다면(be concise) 돈을 많이 아낄 수 있다.

1.3:1 - 단어 당 평균 토큰 수

영어 단어에 한정해서 1 단어당 평균 1.3 토큰이 된다고 한다. 토큰 수는 비용 지불 단위이기도 하고 LLM의 콘텍스트 윈도우 사이즈도 토큰으로 정의하기 때문에 알아두는 게 좋다.

비용

~50:1 - GPT-4와 GPT-3.5 Turbo 비용 비율

GPT-4와 GPT-3.5 Turbo의 비용 차이가 50배나 나기 때문에 잘못 사용한다면 비용 폭탄을 맞을 수 있을 것 같다. 그래서 일회성 작업이나 정말 높은 수준의 답변 생성이 필요한 경우에 대해서만 GPT-4를 사용해야 하고, GPT-3.5를 통해서 얼마나 많이/좋은 결과를 뽑아낼 수 있는지 체크해봐야 한다.

5:1 - GPT-3.5 Turbo의 텍스트 생성과 OpenAI 임베딩 비용 비율

벡터 스토어에서 무언가를 찾는 것이 LLM에 답변을 생성하도록 요청하는 것보다 더 저렴하다는 뜻인듯하다.

10:1 - OpenAI 임베딩과 셀프 호스트 임베딩의 비용 비율

본문에서는 AWS에서 g4dn.4xlarge(시간당 $1.20) 인스턴스에 Hugging Face의 SentenceTransformer를 사용해 임베딩을 하는 것이 OpenAI의 임베딩보다 더 비용 효율적이라고 설명하고 있다.

6:1 - OpenAI 파인 튜닝과 베이스 모델 쿼리의 비용 비율

파인 튜닝하는 경우 비용이 6배나 더 크다고 한다. 비용 효율적으로 LLM을 사용하려면 프롬프트를 조절해 보는 게 더 좋을 수도 있다. 그래서 프롬프트 엔지니어링의 중요성이 더 부각되고 있는가 보다.

1:1 - 셀프 호스트 베이스 모델과 셀프 호스트 파인 튜닝 모델 쿼리의 비용 비율

셀프 호스트 인스턴스에서는 베이스 모델이나 파인 튜닝 모델이나 쿼리 비용의 차이가 나지 않는다.

트레이닝 & 파인 튜닝

~$1M : 1.4T(1조 4천억) 토큰에 대해 130억 개 파라미터 모델을 학습하는데 드는 비용 (약 13억 원)

LLaMa 페이퍼에 의하면 A100 80GB GPU를 2048개 이용해서 트레이닝했고, 21일이 걸렸다고 한다. 그리고 이 기간은 모든 것이 잘 동작했을 때 - 에러 발생하지 않고, 크러쉬 발생하는 머신이 없고, 계산이 성공했을 때 - 걸린 시간이다. 😳

< 0.001 : 파인 튜닝 할 때와 처음부터 트레이닝할 때의 비용 비율

파인 튜닝을 할 때는 말도 안 되게 비용이 조금 드는데 60억 개 파라미터 모델을 파인 튜닝하는데 고작 7$라고 한다.

GPU 메모리

V100: 16GB, A10: 24GB, A100: 40/80GB : GPU 메모리 용량

서빙할 모델에 따라서 인스턴스를 선택하는데 필요. 각 인스턴스 사용 시 비용도 고려해야 한다.

2 x parameter 크기 : LLM 서빙을 위해 통상적으로 필요한 GPU 메모리 요구사항

파라미터 하나당 보통 2 바이트기 때문에 모델 크기 * 2배의 메모리가 필요하다는 설명. 예시로 파라미터가 70억 개인 모델이 있다면 GPU는 14GB의 메모리가 필요하다.

~1GB : 임베딩 모델의 통상적인 GPU 메모리 요구사항

임베딩 모델의 경우 메모리를 많이 사용하지 않는다. 

>10x : LLM 요청을 배치 처리하여 얻을 수 있는 쓰루풋 향상

작업을 묶어서 실행하면 처리량을 높일 수 있다.

~1MB : 130억 파라미터 모델을 이용하여 1 토큰의 출력하기 위해 필요한 GPU 메모리

필요한 GPU 메모리 크기는 생성하고 싶은 최대 토큰의 수에 비례한다. 예를 들어 최대 512 토큰(512/1.3 = 약 393 단어)를 생성하고 싶다면 512MB의 메모리가 필요하다. 그런데 큰 배치를 돌리려고 한다면, 예를 들어 16개 배치를 수행하려면 8GB의 공간이 필요하다. 이 문제를 극복하는 몇 가지 기술이 개발되고 있지만 여전히 문제로 남아있다.

치트 시트

LLM 개발자라면 알아야할 숫자들

페이지를 읽으면서 나름대로 간단히 정리를 했는데 원문은 아래 링크에서 참조할 수 있다.

 

출처: ray-project/llm-numbers

 

GitHub - ray-project/llm-numbers: Numbers every LLM developer should know

Numbers every LLM developer should know. Contribute to ray-project/llm-numbers development by creating an account on GitHub.

github.com