미니PC에 gpu 연결해서 LLM 운영하기

2024. 9. 3. 20:16인공지능

안녕하세요. 쿠루가이입니다.

지난영상에서 미니PC에 egpu를 연결하여 게임하는것을 보여드렸는데요. 이번에는 AI 모델 구동하는 모습을 보여드리겠습니다. 지난번에는 RTX 3070을 연결했었는데 AI모델을 구동하기엔 VRAM이 너무 적어서 48GB VRAM을 가진 RTX 8000 모델로 교체해서 LLM을 구동하는것을 보여드리겠습니다. AI 공부하실 때 이렇게도 구성할 수 있구나 하는 정도로만 보시면 될것 같습니다.

미니PC와 EGPU 설치 및 구동에 대해서 궁금하시면 오른쪽 상단의 토스 메시지를 클릭해주세요.

 

도커(Docker) 설치하기

1. 도커를 설치하기 위해서 구글에 접속합니다. 그리고 'docker desktop'라고 검색합니다. 그럼 첫번째로 뜨는 링크를 클릭합니다.
2. 운영체제에 맞게 설치 프로그램을 다운로드합니다. 저는 윈도우를 선택했습니다.
3. 실행을 하면 configuration 창에서 뭐 체크하라고 나오는데 모두 체크하고 [OK]를 누릅니다.
4. 설치가 완료되면 재기동합니다.

 

도커 첫실행

1. 뭐 동의하겠냐고 나오는데 [Accept]를 클릭합니다.
2. 첫번째 권장 세팅 사용을 선택하고 [Finish]를 클릭합니다.
3. 도커 계정을 가지고 계신분은 'Sign in'을 클릭해서 로그인하고, 없으신분은 'Sign Up'을 눌러서 회원 가입후 로그인하시기 바랍니다.
4. 간단하게 skip 해주십시오.
5. 알아서 설정되면 좌측 메뉴에 컨테이너, 이미지 이런게 표시된다면 잘 실행 된것입니다.

 

nvidia 이미지로 도커 다운로드 받기

아래 명령어를 이용하면 도커 이미지를 다운로드 받을 수 있습니다. 특히 nvidia에서 만든 cuda 라이브러리가 이미 설치된 이미지를 받아야 바로 gpu를 사용할 수 있기 때문에 번거러움을 줄일 수 있습니다. 

docker run --gpus=all -it --name llama-cpp-python -p 5000:5000 --gpus=all nvidia/cuda:11.8.0-devel-ubuntu22.04

 

필수 프로그램 설치하기

기존에 깔려 있던 프로그램을 모두 업데이트 하고 나서 파이썬이랑 gcc 등을 설치해줍니다.

apt-get update && apt-get upgrade
apt-get install -y python3 gcc pip git

 

LLAMA-CPP-PYTHON 설치

OPENAI-LIKE로 동작하기 위해서는 LLAMA-CPP-PYTHON를 설치해야합니다. GPU없이 CPU만으로 구동 시킬수 있지만 너무 느리기 때문에 CUDA로 동작하기위해서는 CMAKE-ARGS값을 '-DLLAMA_CUBLAS=ON'으로 설정해준다음 llama-cpp-python을 설치합니다.

export CMAKE_ARGS="-DLLAMA_CUBLAS=ON"
pip install llama-cpp-python
pip install langchain langchain_community gradio uvicorn anyio starlette fastapi sse_starlette starlette_context pydantic_settings

 

LLM 구동하기 위한 GGUF 파일 다운로드

허깅페이스에서 구동하고 싶은 GGUF 모델을 찾아서 다운로드 합니다. 전용 명령어가 있을텐데 저는 그냥...익숙한 wget으로 다운로드했습니다.

wget https://huggingface.co/andreass123/EEVE-Korean-Instruct-2.8B-v1.0-Q4_K_M-GGUF/blob/main/eeve-korean-instruct-2.8b-v1.0.Q4_K_M.gguf

 

GGUF 구동하기

다음 명령어를 통해서 GGUF를 구동할 수 있습니다. 

python3 -m llama_cpp.server --n_gpu_layers 40 --host 0.0.0.0 --port 5000 --n_ctx 4096 --model ggml-model-Q4_K_M.gguf

 

마무리

오늘은 간단히 미니PC + egpu + 도커 조합으로 LLM을 구동하는 방법에 대해서 알아보았습니다.