프로젝트 소개
ChatGLM3는 Zhipu AI와 Tsinghua University KEG 연구소가 공동으로 출시한 대화형 사전 훈련 모델입니다. ChatGLM3-6B는 이 시리즈의 오픈소스 버전으로, 이전 세대의 원활한 대화와 낮은 배포 임계값 등의 장점을 유지하면서 새로운 기능들을 추가했습니다.
- 강화된 기본 모델: ChatGLM3-6B는 다양한 훈련 데이터와 더 효율적인 전략을 사용하여 개선되었습니다. 이를 통해 10B 미만의 모델 중 가장 뛰어난 성능을 보여줍니다.
- 다양한 기능 지원: 새로운 프롬프트 형식을 도입했으며, 도구 호출(Function Call), 코드 실행(Code Interpreter) 등을 지원합니다.
환경 설정
먼저 필요한 Python과 Conda 환경을 설치해야 합니다.
Python
최소 Python 3.10 이상이 필요하며, 설치 후 아래 명령어로 확인합니다.
python -V
Conda
Miniconda를 권장합니다. 공식 문서를 참고해 설치하고, 아래 명령어로 설치 여부를 확인하세요.
conda --version
배포 과정
먼저 GitHub 리포지토리를 클론합니다.
git clone https://github.com/THUDM/ChatGLM3.git
의존성 패키지를 설치합니다.
cd ChatGLM3
pip install -r requirements.txt
스트림릿 애플리케이션을 실행합니다.
streamlit run web_demo_streamlit.py
처음 실행 시 큰 크기의 모델 파일(약 11GB)을 다운로드하므로, 해외 서버를 이용하는 것이 권장됩니다.
CPU에서의 문제 해결
아래 경고 메시지가 표시된다면 CPU로 동작 중임을 나타냅니다.
WARNING:root:Some parameters are on the meta device because they were offloaded to the CPU and disk.
코드를 수정하여 GPU를 사용하도록 변경합니다.
def load_model():
tokenizer = AutoTokenizer.from_pretrained(TOKENIZER_PATH, trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).quantize(4).to("cuda")
return tokenizer, model
PyTorch 및 CUDA 설치
GPU를 사용하려면 올바른 PyTorch와 CUDA 버전이 필요합니다.
현재 설치된 PyTorch 버전을 확인합니다.
import torch as t
print(t.cuda.is_available())
print(t.__version__)
CUDA 버전도 확인해야 합니다.
nvidia-smi
공식 사이트에서 맞는 버전을 설치하세요.
테스트
설치가 완료되면 아래 코드로 CUDA 사용 가능 여부를 확인합니다.
import torch
print(torch.cuda.is_available())
결론
배포 과정에서 몇 가지 문제를 겪었지만, 올바른 PyTorch와 CUDA 버전을 사용하면 GPU를 통해 성능을 크게 향상시킬 수 있습니다. 다만 현지 GPU 성능에 따라 여전히 느릴 수 있으니, 필요하다면 클라우드 서버를 고려하세요.