배경 : 도커허브에 ollama 공식 이미지를 제공해 주길래 시도. 혹시라도 내가 만들 서비스가 규모가 커져서, 쿠버네티스로 실행해야하는 상황이 올수도 있지 않을까.. ㅋ
실습환경 : 윈도우 내 리눅스 환경인 우분투에서 진행
과정
- 공식 도커 이미지 다운
$ docker pull ollama/ollama - 내가 가지고 있는 Nvidia GPU 기반으로 실행하기 위해 환경설정
공개 GPG 키를 다운로드하고 시스템에 설치
$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
1줄: 주어진 URL에서 NVIDIA Container Toolkit의 패키지 저장소 목록을 다운
2줄 : sed 명령어는 텍스트를 변환. 다운로드 받은 저장소 목록 내의 모든 deb https://를 deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://로 변경하여, 저장소의 패키지들이 지정된 GPG 키에 의해 서명되었음을 명시
3줄 : 변형된 저장소 목록을 시스템의 소프트웨어 소스 목록 디렉토리에 파일로 저장. 이 과정을 통해 apt 패키지 매니저가 NVIDIA Container Toolkit 관련 패키지를 찾고 설치할 수 있도록 설정 파일을 추가합니다. sudo tee를 사용함으로써 관리자 권한으로 파일을 안전하게 생성하고, 필요한 저장소 정보를 시스템에 등록하게 됩니다. 이는 나중에 apt-get update와 apt-get install 명령을 통해 NVIDIA의 도구들을 설치할 때 필요한 기반을 마련.
$ curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
시스템에 등록된 모든 패키지 저장소에서 최신 패키지 목록을 다운로드
$ sudo apt-get update - 도커 재시작
$ sudo service docker stop
$ sudo service docker start - 경로 확인후 도커를 GPU기반으로 실행
현재경로 확인
$ pwd
현재경로
현재경로 넣고 실행
(최강 엔비디아 GPU일때)
$ docker run -d --gpus=all -v 현재경로:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
ab53fe025fe8fbeaebf501c6232177e96051662c821045605a0b3d9b8ce80da1
(유사제품 장난감 AMD GPU 일때)
$ docker run -d --device /dev/kfd --device /dev/dri -v 현재경로:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:rocm - ollama 실행 중인지 확인
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d4f63e9a9bb ollama/ollama "/bin/ollama serve" 13 seconds ago Up 12 seconds 0.0.0.0:11434->11434/tcp, :::11434->11434/tcp ollama - ollama는 로컬기반 llm을 쓸수있는 플랫폼이고, 이제 언어모델을 받아서 테스트 해봐야한다.
여러 언어모델 중 llama3 다운
$ docker exec -it ollama ollama run llama3
>>> 이 블로그 주인의 외모는 어떻습니까?
차은우와 유사합니다.
'로컬 LLM으로 공고 요약 전송 봇 만들기' 카테고리의 다른 글
로컬 llm으로 좋은 결과를 뽑아내기 위한 사투 (0) | 2024.08.15 |
---|---|
poetry 환경에서 GPU(CUDA) 사용 가능하게 하기 (0) | 2024.06.30 |
ollama 활용해 PDF rag 시스템 만들기 1 (0) | 2024.06.17 |
(window) HuggingFace의 모델(gguf) Ollama에서 쓰기 (0) | 2024.06.08 |