728x90
반응형

Ollama란 무엇일까? 

  • Ollama는 대규모 언어 모델(LLM)을 로컬 환경에서 쉽게 실행·관리할 수 있도록 해주는 오픈소스 플랫폼이다. 
  • 본글에서는 Ollama를 설치 하고 실제 활용하는 방법에 대해 글을 정리해 보고자 한다. 

Ollama 설치 하기 

  • 설치하는 서비스 아키텍쳐 구성은 아래 그림과 같다. 
  • Ollama라는 LLM(대규모 언어 모델) 실행 엔진과, 이 Ollama를 웹 브라우저에서 편리하게 사용할 수 있도록 해주는 웹 인터페이스인 Open WebUI를 도커 컨테이너로 실행하여 서로 연결하는 구조를 설명 한 그림이다. 

상세 구성 요소 설명

  • ollama 서비스 (백엔드 AI 엔진)
    • 역할: 실제로 LLM 모델(예: Llama 3, Mistral 등)을 다운로드하고 관리하며, 추론(inference)을 실행하는 핵심 엔진으로 API 서버 역할을 담당한다.
    • 이미지: docker.io/ollama/ollama:latest (공식 Ollama 최신 이미지 사용)
    • 포트:
      • 컨테이너 내부 포트 11434를 호스트의 11434 포트와 연결합니다.
      • 이 포트를 통해 외부(또는 다른 컨테이너)에서 Ollama API에 접근할 수 있습니다.
    • 볼륨 (저장소):
      • 호스트의 ./data/ollama 디렉토리를 컨테이너의 /root/.ollama에 마운트합니다.
      • 목적: 다운로드한 거대한 LLM 모델 파일들을 컨테이너가 삭제되어도 호스트에 영구적으로 보관하기 위함입니다.
    • 기타:
      • # devices: - nvidia.com/gpu=all: 주석 처리되어 있지만, NVIDIA GPU를 사용하여 성능을 가속화하려면 이 부분의 주석을 해제하고 관련 설정(NVIDIA Container Toolkit 등)을 해야 합니다.
      • security_opt: - label=disable: SELinux 등의 보안 레이블링을 비활성화하여 권한 문제를 방지합니다.
      • restart: always: 컨테이너가 죽으면 자동으로 재시작합니다.
  • open-webui 서비스 (프론트엔드 웹 인터페이스)
    • 역할: 사용자가 웹 브라우저를 통해 Ollama와 쉽게 상호작용(채팅, 모델 관리 등)할 수 있도록 돕는 웹 애플리케이션입니다. ChatGPT와 유사한 UI를 서비스를 제공 합니다. 
    • 이미지: ghcr.io/open-webui/open-webui:main (Open WebUI 공식 메인 브랜치 이미지 사용)
    • 포트:
      • 컨테이너 내부의 웹 서버 포트 8080을 호스트의 3000 포트와 연결합니다.
      • 사용자는 브라우저에서 http://localhost:3000으로 접속하게 됩니다.
    • 환경 변수:
      • OLLAMA_BASE_URL=http://ollama:11434: 가장 중요한 연결 고리입니다. Open WebUI가 API 요청을 보낼 Ollama 서버의 주소를 지정합니다. 여기서 http://ollama는 도커 네트워크 내부에서 ollama 컨테이너를 가리키는 호스트 이름(서비스 이름)입니다.
    • 볼륨 (저장소):
      • 호스트의 ./data/webui를 컨테이너의 /app/backend/data에 마운트합니다.
      • 목적: 사용자의 채팅 기록, 설정, 로그인 정보 등을 영구적으로 저장합니다.
    • 의존성:
      • depends_on: - ollama: ollama 컨테이너가 먼저 실행된 후에 open-webui 컨테이너가 실행되도록 순서를 보장합니다.
  • Llama 3 
    • Llama 3는 메타(Meta)에서 개발한 최신 오픈소스 대규모 언어 모델(LLM) 이다. 
    • 이전 모델인 Llama 2보다 성능이 크게 향상되었으며, 다양한 크기의 모델로 제공되어 활용 범위가 넓다. 
    • 활용 분야 
      • 챗봇: 고객 서비스, 교육, 엔터테인먼트 등 다양한 분야에서 자연스러운 대화가 가능한 챗봇 개발에 활용될 수 있습니다.
      • 콘텐츠 생성: 기사 작성, 소설 창작, 코드 생성, 번역 등 다양한 종류의 콘텐츠를 생성하는 데 사용될 수 있습니다.
      • 검색 및 요약: 방대한 정보에서 필요한 정보를 빠르게 찾고 요약하는 데 활용될 수 있습니다.

Podman Compose로 Ollama 설치 하기 

사전 준비 사항 

  • podman 과 podman compose 가 설치 되어 있지 않다면 별도로 설치 한다. 
  • Rocky 에서는 기본 설치가 되어있다. 
  • 설치 환경 구성 

 

[root@rocky9:~]$ podman --version
podman version 5.4.0
[root@rocky9:~]$ podman compose --version
>>>> Executing external compose provider "/usr/local/bin/podman-compose". Please see podman-compose(1) for how to disable this message. <<<<
 
podman-compose version 1.5.0
podman version 5.4.0
[root@rocky9:~]$ cat /etc/redhat-release
Rocky Linux release 9.6 (Blue Onyx)

 

 

Ollama 설치 계정 생성 및 docker-compose.yml 작성 

  • 설치할 계정 및 디렉토리 생성 
adduser -d /nvme/ollama ollama
su - ollama 
mkdir ai-ollama
cd ai-ollama/

 

[root@rocky9:~]$ adduser -d /nvme/ollama-docker ollama
[root@rocky9:~]$ passwd ollama
Changing password for user ollama.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@rocky9:~]$ su - ollama
[ollama@rocky9:~]$ mkdir ai-ollama
[ollama@rocky9:~]$ cd ai-ollama/
[ollama@rocky9:~/ai-ollama]$

 

  • docker-compose.yml 
version: '3.8'

services:
  # [Backend] Ollama 서비스
  ollama:
    image: docker.io/ollama/ollama:latest
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ./data/ollama:/root/.ollama  # 모델 데이터 영구 저장
    # GPU 사용 시 아래 devices 주석 해제 (CDI 설정 필수)
    # devices:
    #   - nvidia.com/gpu=all
    security_opt:
      - label=disable  # SELinux 권한 문제 방지
    restart: always

  # [Frontend] Open WebUI (ChatGPT 유사 화면)
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3000:8080"  # 3000번 포트로 접속
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    volumes:
      - ./data/webui:/app/backend/data
    depends_on:
      - ollama
    security_opt:
      - label=disable
    restart: always

 

Ollama 설치 

  • podman 으로 설치 하기 
podman compose up -d
  • Open WebUI 접속 
  • http://IP:3000/
    • 접속 해서 관리자 계정을 생성한다. 

 

 

  • 설치 하고 웹에 접속 하면 바로 사용을 할수가 없다 . 
  • llama3 모델을 설치 해야 비로소 사용이 가능 하다. 
# ollama 컨테이너 안에 명령을 내려서 'llama3' 모델을 다운로드
podman exec -it ollama ollama run llama3
  • llama3 를 설치 하고 난후 설치한 모델을 선택하면 GPT 처럼 채팅이 가능 하다
  • 테스트로  BTS 에 대해 질문을 해보았다... 

  • 한글로 번역해달라고 해봤습니다... ㅎ

 

다른 모델도 사용 할수 있다고하니... 이것도 해봐야 겠습니다. 

 

  • Google Gemma (젬마): 구글이 만든 오픈 모델 (Apache 2.0)
  • Mistral (미스트랄): 프랑스 기업이 만든 고성능 모델 (Apache 2.0)

 

728x90
반응형

+ Recent posts