RTX 8000를 사용해 LLM을 찍먹해보았습니다.

2024. 1. 27. 23:08인공지능


안녕하세요. 쿠루가이입니다.
오늘은 RTX 8000 언박싱 및 설치기...그리고 간단히 성능 테스트를 해보도록 하겠습니다.
 

구입 동기

LLM이라는것을 안지 거의 1년이 다 되어 갑니다. 3년전에 나름 고사양PC로 샀었는데 LLM을 알고 나서는 완전 저사양 취급을 당합니다.ㅠㅠ
그것은 바로 그래픽 카드때문인데요. LLM을 구동하기 위해서는 VRAM이라는 메모리가 매우~~~ 커야합니다. 구동할 수 있는 LLM은 파라미터수에 따라 다른데요. 제가 가진 카드는 VRAM이 8GB이므로 기껏해봐야 6B 정도 LLM 구동하는게 전부입니다. 이것도 4비트 양자화 해야 겨우 돌릴수 있습니다.

13B, 30B, 65B 같은 파라미터가 훨씬 많은 모델들은 도대체 어떤 성능을 가지고 있는지 궁금해하고 있었습니다. 아마 이런것들을 원활히 돌릴려면 48GB 정도는 있어야겠다 싶어서 여러 후보들을 탐색했습니다.
처음에는 A6000 이라는 제품...3~4년전 모델로 RTX 3000 시리즈의 워크스테이션 버전입니다. 약 600~700만원 정도 합니다. 중고나라에서 몇년전에 400만원 정도에 올라온 기록들도 있는데 LLM이 대중화(?)되고 나서는 이마저도 씨가 말랐습니다.
그 다음에 본 제품은 이 후속버전이 A6000 ada라는 모델입니다. RTX 4000 시리즈의 워크스테이션 버전입니다. 약 1100~1300만원 정도합니다.
이것보다 더 상위 모델(A100, H100)은 적게는 2천만원에서 많게는 5000만원 정도합니다. 한마디로...기업에서 연구 차원에서 사지 않은 이상 못삽니다.ㅎㅎ;;
 

가성비 제품인 RTX 8000을 사다!

이렇듯 VRAM이 많이 들어 있는 그래픽카드는 가격이 비쌉니다. LLM 입문은 개인이 어느정도 투자하지 않은 이상 진입 조차 할 수 없습니다. 그래도 실제로 찍먹해보고 싶은 욕구가 커져서 이리저리 인터넷 검색하던도중 A6000 이전 모델인 RTX 8000을 알게됩니다. RTX 8000은 RTX2000시리즈때 나온 워스크테이션용 그래픽카드로 출시당시 이것도 600~700만원 했던 제품입니다. VRAM은 48GB로 제가 원하는 용량을 가지고 있습니다. 

24년 1월 가격은 쿠팡에서 약 250만원입니다. 이것도 매일 매일 할인 가격이 변동되어서 몇달을 매일 매일 모니터링해보고 나온 가격입니다. 아무튼 250만원에 48GB를 얻을 수 있는 유일한 가성비 제품이지요. 

250만원 정도 됐을때를 기다렸다!!

출시 된지 좀 된 모델이여서 CUDA 숫자가 4,608개로 A6000 ada(CUDA:18,176)보다 약 1/4 정도밖에 되지 않습니다. CUDA 숫자가 적은만큼 속도는 매우 느릴것으로 생각이 됩니다.
250만원인점...그리고 제가 돈은 없지만 시간은 많다는 점(!?), 3년 무상 AS인 점으로 인해서 RTX 8000으로 낙점했습니다.
 

RTX 8000 언박싱 & 장착

아내에게 LLM 좀 공부해보고싶다라고 부탁을 한 후, 허락을 받자마자 바로 주문을 했습니다. PC를 항상 내장 그래픽이나 완제품을 사서 그래픽 카드를 따로 이렇게 사는건 처음인데 엄청 비싼걸 사버렸네요. 주문하고 다음날 바로 도착했습니다. 작은 하얀색 박스 달랑 한개 왔습니다. 

작은 하얀색 박스에 들어있는 RTX 8000

정전기 방지용 비닐에 쌓여 있네요. QUADRO 지난 몇달동안 쿠팡 이미지로서만 보던 놈을 이렇게 실물로 보니 아주 눈물이 날 지경이였습니다. 날이 추워서 그래픽 카드가 차갑더군요.

정전기 방지 비닐에 쌓여 있다

비닐을 벗기자 고급 세단 왁스질한것처럼 그래픽 카드가 번쩍 번쩍 빛나고 있었습니다. 

광택이 죽인다

기존 RTX 3070을 떼어내고 RTX 8000을 장착했습니다. 케이스가 안맞으면 어쩌지...그리고 전원 포트가 안 맞으면 어떡하지...별에 별 걱정을 다했는데 다행히 장착하는데 아무 문제가 없었습니다.
다만 좀 거슬리는건....올블랙 깔맞춤 되어 있는 PC인데 어디서 저런 언밸런스한 컬러가 자리를 잡고 있다니...좀 거시기 하네요.ㅎㅎ;; 일단 저거 쳐다보면서 컴퓨터 하는건 아니니 그러려니 하려고요.

다행히 어떤한 간섭없이 장착할 수 있었다. 하지만 깔맞춤에는 실패했다.

 

RTX 8000 드라이버 설치

드라이버는 NVIDIA 홈페이지 > 드라이버 메뉴에 진입하면 받을 수 있습니다. (https://www.nvidia.co.kr/Download/index.aspx?lang=kr)

몇년전 모델이지만 드라이버는 계속 제공해준다

나중에 혹시 모르니 NAS에 고이 백업해두는게 좋겠네요!
다운로드 받은걸 설치하면 한번 재기동하라고 하는데 재기동을 해줍니다. 그리고 장치관리자에 들어가보면 RTX 8000이 정상적으로 설치된것 확인할 수 있습니다.

제가 제일 관심있게 봤던 VRAM은 어느정도일까? 확인하는 방법은 작업 관리자 실행해서 [성능] 탭을 선택하고 GPU 0을 선택하면 확인할 수 있습니다. 전용 GPU 메모리에 48GB 라고 아주 당당히 표시되어 있네요. 저것만 봐도 배가 부릅니다.ㅠㅠ

 

LLM 기동 및 추론 테스트

테스트에 사용할 모델은 2개입니다.
하나는 야놀자에서 업스테이지 솔라 10.7B 모델을 기반으로 만든 KoSOLAR-10.7B 입니다. 이 모델은 베이스 모델이 한국어를 모르는 녀석인데 한국어 데이터셋을 먹인 녀석입니다. 이걸 양자화 없이 로딩이 해보고 추론을 시켜보겠습니다. 먼저 로딩에만 21.5GB를 사용해버렸네요.ㅋㅋ

테스트에 사용된 내용은 아래와 같습니다.

Below is an instruction that describes a task. Write a response that appropriately completes the request.

###Instruction: 나는 이홍에게 이렇게 말했다. “너는 잊는 것이 병이라고 생각하느냐? 잊는 것은 병이 아니다. 너는 잊지 않기를 바라느냐? 잊지 않는 것이 병이 아닌 것은 아니다. 그렇다면 잊지 않는 것이 병이 되고, 잊는 것이 도리어 병이 아니라는 말은 무슨 근거로 할까? 잊어도 좋을 것을 잊지 못하는 데서 연유한다. 잊어도 좋을 것을 잊지 못하는 사람에게는 잊는 것이 병이라고 치자. 그렇다면 잊어서는 안 되는 것을 잊는 사람에게는 잊는 것이 병이 아니라고 말할 수 있다. 그 말이 옳을까? 천하의 걱정거리는 어디에서 나오겠느냐? 잊어도 좋을 것은 잊지 못하고 잊어서는 안 될 것은 잊는 데서 나온다. 눈은 아름다움을 잊지 못하고, 귀는 좋은 소리를 잊지 못하며, 입은 맛난 음식을 잊지 못하고, 사는 곳은 크고 화려한 집을 잊지 못한다. 천한 신분인데도 큰 세력을 얻으려는 생각을 잊지 못하고, 집안이 가난하건만 재물을 잊지 못하며, 고귀한데도 교만한 짓을 잊지 못하고, 부유한데도 인색한 짓을 잊지 못한다. 의롭지 않은 물건을 취하려는 마음을 잊지 못하고, 실상과 어긋난 이름을 얻으려는 마음을 잊지 못한다. 그래서 잊어서는 안 될 것을 잊는 자가 되면, 어버이에게는 효심을 잊어버리고, 임금에게는 충성심을 잊어버리며, 부모를 잃고서는 슬픔을 잊어버리고, 제사를 지내면서 정성스러운 마음을 잊어버린다. 물건을 주고받을 때 의로움을 잊고, 나아가고 물러날 때 예의를 잊으며, 낮은 지위에 있으면서 제 분수를 잊고, 이해의 갈림길에서 지켜야 할 도리를 잊는다. 먼 것을 보고 나면 가까운 것을 잊고, 새것을 보고 나면 옛것을 잊는다. 입에서 말이 나올 때 가릴 줄을 잊고, 몸에서 행동이 나올 때 본받을 것을 잊는다. 내적인 것을 잊기 때문에 외적인 것을 잊을 수 없게 되고, 외적인 것을 잊을 수 없기 때문에 내적인 것을 더더욱 잊는다. 그렇기 때문에 하늘이 잊지 못해 벌을 내리기도 하고, 남들이 잊지 못해 질시의 눈길을 보내며, 귀신이 잊지 못해 재앙을 내린다. 그러므로 잊어도 좋을 것이 무엇인지를 알고 잊어서는 안 되는 것이 무엇인지를 아는 사람은 내적인 것과 외적인 것을 서로 바꿀 능력이 있다. 내적인 것과 외적인 것을 서로 바꾸는 사람은, 다른 사람의 잊어도 좋을 것은 잊고 자신의 잊어서는 안 될 것은 잊지 않는다.” - 유한준, 잊음을 논함 -

위 글에서 저자가 말하고자 하는게 무엇일까?

### Response:

모델을 로딩하는데 11.96초가 소요되었고, 문장을 읽고 문장을 생성하는데 15.54 토큰/초 정도 걸립니다. 혼자서 사용하는데 전혀 문제가 없는 수준인듯합니다.

토큰 생성 속도가 생각보다 빠르다

 
다음은 maywell님의 Synatra-Mixtral-8x7B-exl2의 4bit 양자화 버전입니다. context길이가 32K나 되는 큰놈여서 로딩을 완료하는데 30초 걸렸고 VRAM 27.8GB를 사용해버리네요.ㅋㅋ 이걸보면...48GB는 선택이 아니라 필수인듯합니다.

아까와 똑같은 방법으로 3회 정도 생성해보겠습니다. 토큰 생성 속도가 약 26토큰/초 정도로 모델이 큰데도 더 빨리 생성됩니다. exl2 포맷 좋네요!

exl2 포맷으로 하면 좀 더 빨리 생성되는것 같다

 
이번엔 좀 더 큰 70B 모델의 3.5bit 양자화 버전으로 해보겠습니다. 모델은 'LoneStriker_miqu-1-70b-sf-3.5bpw-h6-exl2' 입니다. 따로 훈련을 시키지 않았는데 한국말도 잘 합니다. 모델을 로딩하는데 40.6GB를 사용하고요.ㅋㅋ 총 39.11초 걸렸습니다.

토큰 생성 속도는 확실히 줄어든 7~9토큰/초 입니다. 약간 느리다는 느낌이 강하게 들더라고요.

이정도 속도면 실사용은 무리인듯 하다

 
아무튼 70B 모델을 제외하고 나머지 낮은 모델은 개인이 모델 추론하는데는 전혀 문제 없어 보이네요. 기존 3070 8GB로는 절대 상상도 할 수 없었던것이 가능해졌습니다.
 

LLM 파인튜닝 속도

GPU : RTX 8000
Afterburner Power limite : 60%
Model : yanolja/KoSOLAR-10.7B-v0.2

dataset : https://github.com/Kent0n-Li/ChatDoctor/blob/main/alpaca_data.json

Lora   : [ 21/3250 11:55 < 33:47:56, 0.03 it/s, Epoch 0.01/1]
Qlora : [ 21/3250 10:35 < 30:00:54, 0.03 it/s, Epoch 0.01/1]

애프터버너

애프터버너로 전력제한을 60%(팬 계속 쎄게 돌면 망가질까봐..^^;;) 하고 Lora와 QLora를 돌려보았습니다. 집에서 돌리기엔 부담스러운 소요시간인데요. 신기한것은 Lora랑 QLora랑 그렇게 속도차이가 많이 나진 않았습니다. 이럴꺼면 Lora로 돌리는게 나아보이네요^^;;
RTX A6000 ada는 이거보다 훨씬 빠르겠죠? 하지만 돈은 4.8배 비쌉니다. 전 여기서 만족하면서 살렵니다. 추론용으로만 써야겠네요! FIN.