beomi/KoAlpaca-Polyglot-12.8B 로 inference를 진행하기 위해서는 48GB의 VRAM이 필요한가요?
Closed this issue · 3 comments
현재 chatKoAlpaca 서비스는 beomi/KoAlpaca-Polyglot-12.8B 모델을 사용 중이고
A5000 vram 24 GB 2대로 운영 중인 것으로 알고 있습니다.
huggingface의 Hosted Inference API에서 해당 모델을 테스트 해 보려 했는데
this model is too large to be loaded automatically (25GB > 10GB) 라는 에러가 뜨면서 실행이 되지 않길래,
Google Colab Pro plus에서 사용 가능한 A100 VRAM 40GB 환경에서는 inference 테스트가 진행이 가능하다 판단하였지만
모델 load 중에 Cuda Out of memory 에러가 발생하였습니다.
fine tuning 없이 baseline 모델 그대로 질의응답/텍스트 요약/텍스트에서 키워드 추출 등의 task를 진행하려 하는데
Google Colab에서 제공하는 가장 큰 VRAM인 40GB로는 baseline 모델 load가 어려운지 알고 싶습니다.
++ chatKoAlpaca web 서비스에서는 신문 기사 같은 텍스트 요약을 잘 수행 하는 것을 확인 했는데
beomi/KoAlpaca-Polyglot-12.8B 모델을 google colab 혹은 충분한 VRAM을 갖춘 local gpu 데스크탑에서도
동일한 문서 요약 task를 수행할 수 있을 지 알고 싶습니다.
beomi/KoAlpaca-Polyglot-12.8B 모델을 fp16으로 올릴 경우 제 경우에는 약 25.3GB의 vram을 차지했습니다. 그리고 추론 중에는 대략 30GB 정도 까지 올라가는 것을 확인했어요. 40GB vram에는 충분히 올라갈 것으로 보여요.
@shell11708 혹시 beomi/KoAlpaca-Polyglot-12.8B 모델을 fp16으로 추론 & 질의응답 task 진행하셨을 때의 코드를 공유해 주실 수 있으실까요?
저는 google colab pro plus 환경에서 진행중입니다.
import torch
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer, GenerationConfig
MODEL = '../local_KoAlpaca-Polyglot-12.8B'
model = AutoModelForCausalLM.from_pretrained(
MODEL,
torch_dtype=torch.float16,
device_map='auto'
)
model.generation_config = GenerationConfig(
max_new_tokens=512,
temperature=0.7,
top_p=0.9,
return_full_text=False,
eos_token_id=2,
)
tokenizer = AutoTokenizer.from_pretrained(MODEL)
pipe = pipeline('text-generation', model=model, tokenizer=tokenizer, device_map='auto')
def make_question(x, context=''):
return f"### 질문: {x}\n\n### 맥락: {context}\n\n### 답변:" \
if context else f"### 질문: {x}\n\n### 답변:"
question = '임베딩이 무엇인가요?'
ans = pipe(make_question(question))[0]['generated_text']
print(ans)
제가 처음에 테스트해봤던 pipeline parallel로 4090 두 대에 올려 추론하는 코드입니다.
이 레포 readme에 있는 KoAlpaca 모델 실행 예시 코드를 참조해 multi gpu에서 추론하도록 살짝 변경했습니다.
4090 vram이 24GB라 하나에 안 올라가서 이렇게 했는데 40GB vram인 환경에서는 KoAlpaca 모델 실행 예시 코드에서 모델만 12.8B로 변경해서 실행해보시면 될 것 같습니다.