본문 바로가기
AI_Explain

GPT-3은 얼마내고 써야할까요?

by Medeai 2021. 1. 10.

여러분 새해 복 많이 받으세요!!

저도 부디 올해는 더 많은 정보를 여러분께 전달해 드리도록 노력하겠습니다!

 

 

오늘 소개드릴 내용은 GPT-3 API의 비용이 대충 얼마나 들 지 예상해본 포스팅의 번역입니다!

 

재미있게 보시고 올해도 화이팅입니다 ㅎㅎ

 

원문 링크 (medium.com/modern-nlp/estimating-gpt3-api-cost-50282f869ab8)

 

--------------------------

 

여러분은 GPT-3의 API가 얼마일지 생각해보셨나요?

 

이번에 대강 계산해보니까 1달러에 790 request 정도가 가능할 것 같습니다.

 

GPT-3는 아시다시피 엄청나게 크고요(1750억 개의 parameters = 700GB),

 

그만큼 GPU inference도 많이 들겁니다.

 

 

GPT-3이 어디에 쓰일 것이다, 혹은 어디에 쓰면 좋다는 글은 많습니다.

 

하지만 GPT-3이 정작 얼마나 비싸고, 어떻게 ROI 계산에 포함시켜야 한다는 내용은 없습니다.

 

클라우드 가격에 기반해서 한 번 계산해보자고요.

 

NOTE : 오늘 계산하는 방법으로 다른 모델의 API cost를 계산해볼 수 있습니다.

 

많은 분들께서 AWS의 TCO(Total Cost of Ownership)을 이용해서 API cost를 계산하지만

 

이번에는 직접 해볼게요.

 

 

Step 0 - Use case

트랜스포머는 2차에 걸쳐서 연산을 합니다. 

 

그래서 GPT-3을 어디에 쓸지 정하는 것은 굉장히 중요한데요,

 

GPT-3의 사용처가 sequence length를 정하기 때문입니다.

 

GPT-3의 가장 적당한 사용처는 prompt(어떤 입력토큰)가 들어왔을 때, 텍스트를 생성하는 것입니다.

(Prompt에 대한 표현과 설명은 GPT-3 논문을 참고해주세요!
아니면 이 링크도 좋습니다.) 

 

 

prompt는 어떤 길이도 될 수 있지만, 128 length 정도면 적절한 것 같습니다.

 

사람들은 이전에 나눈 대화의 맥락을 연결해서 다음 텍스트를 이어나갑니다.(recursive하게)

 

GPT-3은 sequence length를 1024까지 처리할 수 있지만, 트랜스포머의 연산 때문에

 

inference가 더 비싸질 것입니다.

 

sequence length를 128로 먼저 계산하고 length 1024에 대한 cost를 예상해보겠습니다.

 

 

 

Step 1 - 시간당 GPT-2 inference

환경을 가정해보겠습니다.  

 

허깅페이스의 실험 sheet에 따르면,

 

batch size가 8이고 Tensorflow GPU + XLA 환경일 때 GPT-2의 인퍼런스 타임은 0.02초가 걸린다고 합니다.

 

그러면 8*3600/0.02, 즉 1시간에 1,440,000 inference를 수행할 수 있습니다.

 

 

Step 2 - 시간당 GPT-3 inference 

GPT-2의 파라미터는 15억 개 입니다.

 

그리고 GPT-3의 파라미터는 1750억 개 입니다 흐억

 

GPT-3은 GPU 한 대로 돌릴 수 없기 때문에 여러 대를 사용할겁니다.

 

단순하게 계산하기 위해서 선형적으로 추측해보겠습니다.

 

멀티 GPU를 사용할 때에는 GPU에서 GPU로 gradient가 흐르기 때문에

 

속도가 느려질 수 있습니다.

 

앞서 GPT-2의 환경과 같다고 가정할 때, GPT-2가 1시간에 144만 inference를 수행한다고 하면

 

파라미터 갯수에 비례해서

 

1440000*1.5/175

= ~12400

 

GPT-3은 1시간에 약 12400번의 inference를 수행할 수 있을 것입니다.

 

Step 3 - Inference 최적화

 

허깅페이스에 따르면 AMP(fp16)이 처리할 수 있는 연산을 1.5배까지 늘릴 수 있다고 합니다.

 

그러니까 위에서 계산한 1시간에 12400번에서 1.5를 곱한 18600번으로 가정해보겠습니다.

 

 

Step 4 - 풀로 땡겼을 때 1시간 당 비용

 

AWS EC2 P3.2x xlarge는 시간당 3.06달러입니다.

 

1년 약정으로 구매해서 이용한다면 36%까지 할인받을 수 있습니다.

 

할인된 가격 = 3.06 * 0.74 = 시간당 1.96 달러입니다.

 

(AZURE는 V100 1대에 1년 약정으로 시간당 1.72달러입니다.)

 

(##여기서 잠깐##
클라우드 비용에 대한 내용이라서 확인이 필요해서 찾아봤습니다.

실제로 aws EC2 인스턴스 페이지를 살펴봤을 때, 가격 테이블이 나와있습니다.
아래 가격표를 보면 1년 약정으로 이용했을 때의 1시간당 인스턴스 가격은 1.99달러입니다.
그리고 azure도 v100 한 대에 1시간 당 1.95달러로 나타나있습니다.

또한 클라우드의 이용은 국가나 지역에 따라서도 다릅니다.

원문이 미국 medium 포스팅인 점을 감안해주시면 좋겠습니다.

 

실제 가격과 별개로 번역만 진행해보겠습니다.)

aws ec2 p3 인스턴스 가격

 

azure 인스턴스 가격

 

 

Step 5 - 인퍼런스 당 비용

 

1시간을 기준으로 1.96달러를 18600번의 인퍼런스로 나눠보겠습니다.

 

1.96/18600 = $0.00010537634

 

GPT-3 API를 한 번 콜할 때마다 0.00010537634 달러 정도가 들어갑니다.

 

그러면 1달러로 GPT-3 API inference를 몇 번 할 수 있을까요?

 

1/0.00010537634 = 9,489.79628633904...

 

대략 1달러에 9490번의 인퍼런스를 할 수 있을 것 같습니다.

 

sequence length가 1024이면서 batch size가 8일 때의 GPT-2는 0.195초가 걸리는데요,

 

이는 seq length가 128일 때의 10배나 오래 걸리는 수치입니다.

 

그러니까, GPT-3은 1달러에 949번 수행할 수 있을 것 같습니다.

 

 

Conclusion

여러분의 비즈니스에 이 포스팅이 도움이 됐기를 바랍니다.

 

이번 계산에는 API cost에 대한 OpenAI의 마진도 포함이 되어있지는 않습니다.

 

대충 20%의 마진을 계산한다면 949/1.2 = 790,

 

1달러에 790번의 requests를 수행하겠네요.

 

 

여러분의 비즈니스에는 1달러에 790번의 requests가 적당한가요?

'AI_Explain' 카테고리의 다른 글

주저하는 기획자들을 위해(Feat.AI) - 1편  (2) 2021.07.25