Ollama를 왜 사용하냐?

그냥 너도 나도 LLM 모델을 Ollama에 올리길래
Hugging Face 말고 Ollama 써봐야지 하고 환경 세팅을 해봤다
Ollama의 장점은
- 오프라인 LLM 이 가능하다는 것이다 (인터넷없이 개인 PC에서 사용)
- cmd 가 직관적임. ollama pull, run, ps, start, stop
- Rest API : 11434 포트를 기본으로 /api/generate 등 엔드포인트를 제공
- 모델 라이프사이클 관리 가 쉽다는 장점이 있다
명령어 들은 아래 링크를 통해 알 수 있다
CLI Reference - Ollama
docs.ollama.com
1. Ollama 다운로드 (Container)
먼저 추후에 Open-Webui까지 사용할 생각이 있다면
https://sy34.net/ollamawa-open-webuireul-iyonghaeseo-opeunsoseu-llmeul-sayonghaeboja-seolcipyeon/
Ollama와 Open-WebUI를 이용해서 오픈소스 LLM을 사용해보자 (설치편)
요즘엔 많은 기존 LLM 서비스들이 무료로 많이 풀리고 있다. 특히 채팅 모델은 여러 업체에서 무료로 제공하고 있고 성능과 속도도 일반적인 사용자에게는 충분한 것들이 많다. 다만 기존 서비스
sy34.net
이거대로 다운로드를 하자 (Docker Container에 docker-compose를 이용해서 설치)
https://sseozytank.tistory.com/86
[Linux] 도커 컴포즈 (Docker Compose) 기초 개념과 설치부터 실행까지
저번 글을 통해 Docker 에 대해서 알아봤다.나는 개발자가 아니기 때문에 요 포스팅을 끝으로 도커는 마무리하려고 한다. [Linux] 뉴비를 위한 Docker 기초 개념 및 명령어, 설치부터 예제까지Docker
sseozytank.tistory.com
먼저 나의 경우는 다음과 같이 다운로드 받았다
#기존에 다운로드 받았던게 잘 안되서 삭제
sudo rm /usr/bin/docker-compose
# 최근 배포버전으로 다운
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose
#설치 제대로 되었는지 확인
docker-compose --version
근데 docker-compose version 결과가 다음과 같이 나와서
-bash: /usr/bin/docker-compose: No such file or directory
딱 봐도 환경변수 문제
(docker-compose를 새로 /usr/local/bin에 설치했는데, 여전히 /usr/bin/docker-compose를 찾으려고 해서 오류가 나는 상황)
여서
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
새로 설치한 바이너리를 연결하여서 해결
그 다음 작업환경에 git clone을 해주고 (https://github.com/open-webui/open-webui/tree/main)
git clone https://github.com/open-webui/open-webui.git
cd open-webui
docker-compose.yaml 을 이용해줘서 다운 진행
근데 여기서 그대로 넣으면 GPU 사용도 안되고 외부 Port 바인딩도 안된다
개열받는게 얘네는 언급을 안해줘서 몰랐는데

이렇게 옆에 필요하면 가져다 써라 라고 만들어 놨다
(어쩐지 왜 docker-compose 파일이 많은지 이상했었는데)
docker-compose.yaml을 다음과 같이 바꿔주자
(GPU 사용, 외부 port 사용이 필요한 경우)
services:
ollama:
# GPU support
deploy:
resources:
reservations:
devices:
- driver: ${OLLAMA_GPU_DRIVER-nvidia}
count: ${OLLAMA_GPU_COUNT-1}
capabilities:
- gpu
volumes:
- ollama:/root/.ollama
container_name: ollama
pull_policy: always
tty: true
restart: unless-stopped
image: ollama/ollama:${OLLAMA_DOCKER_TAG-latest}
# Expose Ollama API outside the container stack
ports:
- ${OLLAMA_WEBAPI_PORT-11434}:11434
open-webui:
build:
context: .
args:
OLLAMA_BASE_URL: '/ollama'
dockerfile: Dockerfile
image: ghcr.io/open-webui/open-webui:${WEBUI_DOCKER_TAG-main}
container_name: open-webui
volumes:
- open-webui:/app/backend/data
depends_on:
- ollama
ports:
- ${OPEN_WEBUI_PORT-3000}:8080
environment:
- 'OLLAMA_BASE_URL=http://ollama:11434'
- 'WEBUI_SECRET_KEY='
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped
volumes:
ollama: {}
open-webui: {}
docker-compose up -d

기다려 줍니다

본인 같은 경우는 기존에 다운 받았던 open-webui container랑 충돌이 나서 삭제 후 다시 진행
근데 돌리다가 다음과 같은 오류가 나오면
docker: Error response from daemon: could not select device driver with capabilities: [[gpu]]
이건 nvidia-container-toolkit 가 안 깔려 있어서 생기는 문제이다
나 같은 경우는 다음과 같이 해결하였다 (참고로 Window환경에서 WSL로 Linux를 사용하고 있다)
(Toolkit 관련 이것저것 삽질한 이력이 있다면 1번 부터 아니면 2번 부터)
# 1. 잘못된 저장소 파일 삭제
sudo rm /etc/apt/sources.list.d/libnvidia-container.list
sudo rm /etc/apt/sources.list.d/*nvidia*.list
# 2. 아키텍처 변수 설정
ARCH=$(dpkg --print-architecture)
# 3. GPG 키 등록
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
# 4. generic deb 저장소 등록 (배포판 이름 없이)
echo "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] \
https://nvidia.github.io/libnvidia-container/stable/deb/${ARCH} /" | \
sudo tee /etc/apt/sources.list.d/libnvidia-container.list
# 5. 업데이트 및 설치
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# 6. Docker 재시작
sudo systemctl restart docker
근데 만약에 이렇게 다운 받았더라면
Container에서 ollama가 도는 것이기 때문에
밑에 local 환경이랑은 아예 독립환경이다
즉 ollama puill <모델명> 으로 모델을 받아서는 안되고
docker exec -it <컨테이너명> ollama pull <모델명>
컨테이너를 실행시킨 후에 그 안에서 커멘드를 실행시켜야 한다
대표적으로 local 환경에는 gpt-oss-20b가 있지만
실제 web-ui에는

모델 선택이 안된다
나의 경우

ollama라는 컨테이너 명이여서
docker exec -it ollama ollama pull gpt-oss:20b
1-2. Ollama 다운로드 (local)
느낌상으로 Git cmd를 사용하려면 Git 을 다운받듯이 (git pull)
ollama를 사용하여 서버를 열거나 모델을 다운 받기 위해선 ollama를 다운 받아야 한다.
https://ollama.com/download/windows
Download Ollama on Windows
Download Ollama for Windows
ollama.com
여기에서 본인에게 맞는 OS를 다운받으면 된다.
(본인은 Window)
각 OS 별 cmd나 다운로드 방법은 아래 포스팅이 잘 정리해 두었다
로컬 환경에서 API 호스팅을 위한 Ollama 설정 종합 가이드
1 | Ollama란?오프라인 LLM : 인터넷 없이 개인 PC에서 대규모 언어 모델 실행간편 CLI : ollama pull·run·ps·stop 등 직관적 명령어REST API : 11434 포트 기본, /api/generate·chat 등 엔드포인트 제공CPU·GPU 자동 가
memoryhub.tistory.com

이거 생기면 성공
앱이기 때문에 로그인하고 원하는 모델 다운 받아서 사용이 가능하다

Linux나 서버 단이여서 GUI 환경이 제공이 안된다면
ollama

다음 cmd를 쳤을 때 위와 같은 화면이 나오면 성공이다
2. Ollama 모델 다운로드
ollama에서 모델 다운로드 하는 것은 github에서 가져오는 것이랑 유사하다
내가 다운 받은 모델은 gpt-oss-20b 이다
https://huggingface.co/openai/gpt-oss-20b/blob/main/README.md
README.md · openai/gpt-oss-20b at main
metadata license: apache-2.0 pipeline_tag: text-generation library_name: transformers tags: - vllm Try gpt-oss · Guides · Model card · OpenAI blog Welcome to the gpt-oss series, OpenAI’s open-weight models designed for powerful reasoning, agentic task
huggingface.co
해당 Hugging Face에 들어가면 ollama로 받는 설명이 나온다

(ollama 받고 아래 코드 실행 시켜라)
# gpt-oss-20b
ollama pull gpt-oss:20b
ollama run gpt-oss:20b
그리고 자세한 가이드는 아래 URL을 참고하라고 한다
https://cookbook.openai.com/articles/gpt-oss/run-locally-ollama
How to run gpt-oss locally with Ollama | OpenAI Cookbook
Want to get OpenAI gpt-oss running on your own hardware? This guide will walk you through how to use Ollama to set up gpt-oss-20b or gpt-...
cookbook.openai.com
다운로드 받고 아래 cmd를 치면
ollama list

다운 받은 모델을 확인할 수 있다
모델을 다운 받았으면 다음 cmd로 실행이 가능하다
ollama run gpt-oss:20b
CLI 환경으로 실행된다

그리고 지금 돌고 있기 때문에
ollama ps
를 치면

실행되고 있는 process를 확인할 수 있다
만약 끄고 싶은 경우는 아래를 참고
- 터미널에서 ollama run 명령으로 실행한 경우, 해당 터미널에서 Ctrl + C를 누르면 Ollama가 종료됩니다.
- 모델과 대화 중일 때는 /bye를 입력하여 대화를 종료할 수도 있습니다.
근데 이 글을 들어왔다는 것은 이걸 로컬 서버에 올리고
다른 PC로 API를 불러 쓰고 싶어서 들어왔기 때문에 로컬 서버에 올려보자
3. Ollama 로컬 서버 세팅
다운로드는 그냥 똑같이 해주면 된다.
다만 ollama는 다른 설정을 직접 바꾸지 않는 이상 기본적으로 11434 Port를 사용하고 있는데
여기에 대한 방화벽을 열어줘야 한다
- 방화벽 설정 (Window)
아래에도 언급했다시피 나는 인바운드 아웃바운드 둘다 설정해 주었다
Windows Defender 방화벽 → 고급 설정 → 인바운드 규칙 → 새 규칙 → 포트 선택TCP 11434 허용 규칙 추가


규칙이름은 그렇게 중요하지는 않다.
- 방화벽이란
네트워크 단계의 인터넷 보안 시스템 가운데 가장 널리 쓰이는 방법
(외부로 부터 친입을 막는 벽)

설정을 하려면 인바운드 / 아웃바운드에 관해 알아야 하는데

이게 맞는지는 모르겠지만
나는 LLM 서버에 들어오고 결과를 들고 나가야한다고 생각해서
인바운드, 아웃바운드 둘다 설정을 해주었다
이렇게 설정을 맞췄으면 ollama를 아래와 같이 열어주자
4. Ollama 서버 열기
가장 기본적인 명령어로
ollama serve
로 열어 주면 된다
그리고 나서 인터넷에
http://127.0.0.1:11434/
혹은
http://localhost:11434/
를 친다면

이렇게 실행되고 있다는 것을 알수 있다
Error Shooting
Error: listen tcp 127.0.0.1:11434: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
이 에러가 뜬다면 이미 ollama가 실행되고 있어서 생기는 문제로
실행되고 있는 앱을 끄거나
아래 cmd를 실행
netstat -a -o
여기에서 해당 IP Port를 사용하고 있는 PID를 찾은 다음 (예시: PID = 12345)
taskkill /f /pid 12345
강제 종료 시켜주면 정상 동작하게 된다
원격 노출시키기
하지만
ollama serve
로 실행한 환경은 기본적으로 http://127.0.0.1:11434 에 바인딩 되기 때문에
내 서버 PC IP 가 10.0.0.9 라고 가정하면
http://10.0.0.9:11434 를 인터넷에 치면 연결이 되지 않는다
실제 출력을 보면
OLLAMA_HOST:http://127.0.0.1:11434
이렇게 바인딩되어 있다
하지만 우리가 원하는 꼴은
<원격 서버 IP>:<포트> 를 통해 외부 PC에서 해당 API를 사용하는 것이므로
OLLAMA_HOST:http://0.0.0.0:11434
이렇게 출력이 나와야 한다
이를 위해 두 가지 방법이 있다
1. serve 명령어에 추가
# 모든 인터페이스 + 기본 포트
OLLAMA_HOST=0.0.0.0 ollama serve
# 호스트+포트 동시 지정
OLLAMA_HOST=0.0.0.0:8000 ollama serve
2. Powershell을 통해 환경변수 설정
Powershell을 열어서
setx OLLAMA_HOST "0.0.0.0:11434"
를 입력해주고
Powershell을 닫았다가 다시 열어준다음
ollama serve
해주면 해결 된다.
쉽게 말하면

이걸 바꿔주는 것이다
5. 외부 PC에서 접속
이제 serve 까지 해주었으면 다른 PC에서 python editor를 실행시킨다음
다음 코드를 실행시켜 연결을 확인해 준다
(인터넷을 열어 http://<server_ip>:11434 로 확인도 가능하다 ex) https://10.0.0.9:11434)
from openai import OpenAI
client = OpenAI(
base_url= "http://10.0.0.12:11434/v1", #서버 주소
api_key= "ollama" #인증 필요 없으므로 더미값 입력
)
#Chat completion : 언어모델이 사용자가 입력한 텍스트에 대화형식으로 응답을 생성
response = client.chat.completions.create(
model="gpt-oss:20b",
#model="/model", #"gpt-4o"
messages=[
{"role": "system", "content": "너는 백설공주 이야기 속의 거울이야. 그 이야기 속의 마법 거울의 캐릭터에 부합하게 답변해줘."}, #system prompt 설정
{"role": "user", "content": "세상에서 누가 제일 아름답니?"},
],
max_tokens=256, #기본 256, 최대 2048
temperature=0.7,
)
print(response)
'AI Study > AI Agent' 카테고리의 다른 글
| [AI Agent] ollama 외부 연결 Setting(Container + local) (0) | 2025.10.30 |
|---|---|
| [AI Agent] ollama 모델 Open Web ui 연동(Docker) (0) | 2025.10.29 |
| [AI Agent] Langchain의 기초 (0) | 2025.10.23 |
| [AI Agent] OPEN AI의 세가지 API (0) | 2025.10.23 |
| [AI Agent] OpenAI API 사용 방법 및 기초 코드 (0) | 2025.09.25 |