티스토리 뷰

개요

인터넷에서 본 링크와 이미지가 의미있다 생각할 때에는 단순히 공유만 하는 것이 아니라 읽고 이해하고 나름의 정리를 해두려 한다. 공유만으로는 내 것이 되지 않으니까.

LLM에 흥미를 느끼고 둘러보는 요즘이기에 LLM과 관련한 숫자들을 훑어보는 것은 의미가 있겠다.

관련 링크

링크: https://github.com/ray-project/llm-numbers

개인적으로 인상적이었던 부분들 정리

  • 처음부터 학습하는 것은 왠만한 회사에서는 감당할 수 없다. 파인튜닝이 그나마 대안이다.
  • 서비스를 운영한다면 GPT-3.5-Turbo 만으로 충분한 태스크를 잘 선별하여 사용하여 비용을 절감하자.
    • 임베딩(과 벡터DB)으로 감당할 수 있는 태스크인지도 선별하여 사용하면 더욱 비용 절감을 할 수 있다.
  • GPU 메모리 크기는 잘 외워두자.
    • 파라미터 개수의 두 배만큼 메모리가 필요하다고 생각하자. 7B 파라미터 → 14GB 메모리
    • V100 16GB, A10G 24GB, A100 → 40GB 또는 80GB
  • 임베딩에 필요한 메모리는 1GB 정도 밖에 안드니 무시하자
  • LLM 추론에 배치를 사용하면 처리량이 10배 이상 개선되지만, 배치크기는 GPU 메모리의 제약을 받는 것을 잊지 말자.

정리

프롬프트

40-90%: 프롬프트에 “be concise” 를 넣어서 돈을 아껴라

토큰은 돈이다.

  • “be concise”만 넣어도 응답 토큰의 양이 확 줄어든다.
  • GPT-4를 쓴다면 10개의 대안 대신 5개만 회신달라고 하자.

1.3:1: 영단어 1개는 평균 1.3개의 토큰이다

  • 문서의 영단어가 750개라면 토큰은 대략 1000개 쯤이겠구나 하면 된다.
  • 영어가 아닌 경우는 좀 더 많은 토큰이 필요하다.

가격

LLM 서비스를 운영한다면 챙겨야 할 부분이다.

가격은 수시로 바뀔 수 있는 것은 염두에 두자.

~50:1: GPT-4 가격은 GPT-3.5-Turbo3의 50배 정도 비싸다

물론 GPT-4가 좋지만 가격이 50배 정도나 차이가 난다.

따라서 단순 요약과 같은, GPT-3.5-Turbo로도 충분한 경우를 잘 따져 보아서 구분하여 사용하여야 한다.

5:1: GPT-3.5-Turbo로 생성하는 비용은 OpenAI 임베딩보다 5배 비싸다

요구사항을 만족할 수 있다면 데이터를 임베딩으로 벡터DB에 넣어두는 것이 1/5로 저렴하다는 말이다.

GPT-4와 비교한다면 1/250이 된다.

10:1: OpenAI 임베딩은 자체 호스팅 임베딩보다 10배 비싸다

주의: 여러 조건에 따라 달라질 수 있으니 참고만 하세요.

다음과 같은 조건에서 1/10 비용이 들었음

  • 아마존 EC2 g4dn.4xlarge 온디멘드: $1.20/hour
    • 온디멘드 요금이란 장기약정 없이 컴퓨팅 파워에 대해 시간당 비용이 청구되는 것을 말한다.
  • 임베딩: 허깅페이스 SentenceTransformers
    • OpenAI 임베딩(text-embedding-ada-002 를 말하는 것이겠지?) 만큼 성능이 좋다 한다.
  • 참고로 인그래스, 이그래스 비용은 고려하지 않았음

6:1: OpenAI 파인튜닝 모델이 베이스 모델보다 6배 비싸다

베이스 모델은 멀티 테넌시일 수 있으니 파인튜닝 모델이 비싼것이 이해가 가기는 한다.

다만 비용 측면에서는 베이스 모델이 훨씬 저렴하니 커스텀 모델로 파인튜닝하는 것보다 베이스 모델에 프롬프트를 잘 짜서 사용하는 것이 나을 수 있다.

1:1: 자체 호스팅을 하는 경우, 베이스 모델과 파인튜닝 모델의 비용은 같다

어짜피 베이스 모델과 파인튜닝 모델의 파라미터는 같다.

트레이닝과 파인튜닝

~$1 million: 13 billion(130억) 파라미터 모델을 1.4trillion(1.4조)개의 토큰으로 훈련하는 데 드는 비용은 백만달러(현 시점 대략 13억원)이다

LLaMa 논문에서는 트레이닝에 21일, 2048개의 A100 80GB GPU가 사용되었다고 한다. 이를 필자 자체의 모델에 Red Pajama 트레이닝 셋으로 훈련한다고 가정하여 대략 계산해본 것임. 물론 충돌이나 재시도가 필요없는 이상적인 경우를 가정했을 때이다.

한줄 요약: 자체 LLM을 학습시킬수는 있지만 돈과 시간이 많이 든다.

< 0.001: 파인 튜닝의 비용은 처음부터 학습하는 것보다 훨씬 싸다

  • 6B 파라미터의 모델을 $7에 파인튜닝 한 것을 보여준 적이 있다.
  • OpenAI에서 가장 비싼 Davinci 모델을 파인튜닝한다고 해도 1000토큰에 3센트이다.
    • 백만 단어정도 되는 세익스피어의 모든 작품을 파인튜닝하는데 $405 정도 드는 셈이다.
  • 물론 파인튜닝과 처음부터 학습하는 건 다른 이야기이기는 하다.

GPU 메모리

모델을 자체 호스팅한다면 GPU 메모리가 매우 중요하다. LLM이 이를 극한까지 사용하기 때문이다.

아래 내용은 추론만을 고려한 것이며, 학습이나 파인튜닝에는 메모리가 더 필요하다고 보면 된다.

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

그래픽카드들의 메모리 크기를 알아두는 것은 중요하다. LLM 모델의 파라미터의 크기를 제한하기 때문이다.

  • 필자는 A10Gs를 좋아한다. AWS 온디멘드에서 시간당 $1.5~$2이며 24GB의 메모리를 가진다.
    • A100s는 $5 정도이다.

2x number of parameters: LLM 서빙을 하는데 GPU 메모리는 모델 파라미터의 두 배이다

  • 7b(70억) 파라미터를 가진 모델이라면 GPU 메모리 14GB가 필요하다.
    • 보통은 파라미터당 16-bit float(또는 2 bytes)가 필요하다.
    • 이보다 더 정교할 필요는 없고, 이보다 낮아지면(예를 들어 8-bit accurary) 성능이 떨어지기 시작한다.
      • 물론 성능이 떨어지는 걸 감수할 수 있는 경우도 있다.
  • 물론 이를 해결하려는 시도들이 있다. llama.cpp는 13b(130억) 파라미터 모델을 GPU 메모리 6GB에서 실행할 수 있다. 4비트 양자화(또는 큰 영향을 주지않는 8비트 양자화)를 한 경우인데 일반적이지는 않다.

~1GB: 임베딩 모델은 대략 GPU 메모리 1GB가 필요하다

임베딩에서는 메모리 용량 걱정은 안해도 된다.

>10x: 배치 프로세싱만 해도 처리량이 10배 늘어난다

  • LLM이 요청 하나를 처리하는데 5초가 걸린다. 초당 0.2개의 요청을 처리하는 셈이다.
  • 재미있는건 요청 두 개를 동시에 돌리면 5.2초가 걸린다.
  • 따라서, 25개를 동시에 돌린다면 10초가 걸린다. 초당 2.5개의 요청을 처리하는 것이다.

다만 다음의 항목의 주의점을 챙겨보자.

~1 MB: 13b(130억 파라미터) 모델에서는 1토큰당 GPU 메모리 1 MB가 필요하다

생성가능한 최대 토큰의 개수는 필요한 GPU 메모리와 비례한다.

  • 512토큰(=영단어 380 정도)를 생성하려면 512MB가 필요하다.
  • A10G라면 24GB이니 별 문제 아니라 생각할 수 있겠지만 위에서 언급한 배치의 경우에는 문제가 된다.
    • 요청 16개를 배치 처리 하려면 8GB가 필요하게 된다.
반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함