Cyberbase-13B 모델을 아무리 시도해보아도...
prompt를 아무리 수정해보아도 영어 답변에도 막 스펠링 에러가 있고 말도 안되는 일들이 계속해서 나타나고, 무엇보다 나는 지금 답변이 형식화 되어서 출력이 되어야 하는데 막 나중에는 괴상한 답변들만 내놓는 문제들이 계속해서 발생했다.
그래서 이 모델을 소개하고 있는 허깅페이스 페이지에 다시 들어가봤더니
웹으로 채팅을 할 수 있는 fastchat을 지원하는 것을 알게 되었다.
하지만~!
나는 지금 8bit quantization을 해야하는 상황이고,
model을 load할 때 model.to(device)부분과 관련하여 계속 에러가 발생하여 fastchat을 실행할 수 가 없었다.
그래서 모델을 로드할 때 양자화를 하는 경우 model.to(device)를 하지 않도록 설정을 해야만 했다.. 다른 방법은 모두 실패하였기에!ㅎ (슈..베릅)
🔻 우선, model_adapter.py의 위치를 확인한다
find /opt/conda/ -name "model_adapter.py"
🔻 model_adapter.py를 편집한다
vi /경로어쩌구/model_adapter.py
'i'를 누르면 insert 모드로 될 것이고 저장한 뒤
esc + :wq 를 누르면 나가기가 될 것이다.
그리고
load_8bit: bool = True,
이렇게 수정을 해주었다.
하지만 당연하게도 해결이 되지 않았고 계속해서 "8-bit에서 .to(device)를 지원하지 않는다"는 에러가 나왔다. 그래서...
🔻 model.to(device)가 어디에 등장하는지 확인한다
grep -rnw '/opt/conda/lib/python3.10/site-packages/fastchat/' -e 'model.to(device)'
나는 model_adapter.py와 compression.py에 등장을 했고 제시해준 라인을 찾아 일일이 수정했다..ㅎ
🔻 8-bit 모델이 아닌 경우에만 model.to(device)가 되도록한다
if not getattr(model, "is_8bit", False): # 8-bit 모델이 아닌 경우
model.to(device)
문제 해결 여부는 다음 세 command line을 실행해보면 알 수 있다
python3 -m fastchat.serve.controller &
python3 -m fastchat.serve.model_worker --model-path CyberNative/CyberBase-13b --load-8bit &
python3 -m fastchat.serve.gradio_web_server &
이 명령어들은 별도의 터미널에서 실행해야함을 주의하자!