본문으로 이동

Deepseek

lse
Hschoi2 (토론 | 기여)님의 2025년 2월 6일 (목) 06:58 판 (Open Webui)

DeepSeek-R1 설치 사용법

언어 모델을 오픈소스 프레임으로 설치 활용하는 방법

설치 사용법

Ollama 이용 참조

로컬에서 설치 사용법

1. Ollama 설치 2. LLM 모델 (DeepSeek-R1) 설치

Ollama 설치

Ollama 사이트에서 다운로드 설치

터미널에서 설치 확인

ollama -v


Ollama 실행 옵션

Ollama 실행 옵션

PS C:\Users\a> ollama
Usage:
  ollama [flags]
  ollama [command]

Available Commands:
  serve       Start ollama
  create      Create a model from a Modelfile
  show        Show information for a model
  run         Run a model
  stop        Stop a running model
  pull        Pull a model from a registry
  push        Push a model to a registry
  list        List models
  ps          List running models
  cp          Copy a model
  rm          Remove a model
  help        Help about any command

Flags:
  -h, --help      help for ollama
  -v, --version   Show version information

Use "ollama [command] --help" for more information about a command.

Ollama local 저장소

Ollama의 로컬 레지스트리는 운영 체제에 따라 다른 위치에 저장됩니다: 기본 저장 위치

macOS: ~/.ollama/models

Linux: /usr/share/ollama/.ollama/models

Windows: C:\Users\%username%\.ollama\models

이 디렉토리에는 다운로드한 모델 파일들이 저장됩니다. 주요 구성 요소는 다음과 같습니다:

Model blobs: 모델 파라미터와 데이터를 저장하는 대용량 파일들
Manifests: 모델의 메타데이터와 구성 정보를 포함하는 파일들

저장 위치 변경 기본 저장 위치를 변경하고 싶다면 OLLAMA_MODELS 환경 변수를 설정하면 됩니다. 예를 들어:

bash

export OLLAMA_MODELS="/path/to/your/custom/directory"

이 환경 변수를 설정하면 Ollama는 지정된 디렉토리에 모델을 저장하고 로드합니다

저장 위치 확인 현재 모델 파일의 위치를 확인하려면 다음 명령어를 사용할 수 있습니다:

bash

ollama show --modelfile

이 명령어는 현재 모델 파일의 위치를 표시해줍니다

Ollama의 로컬 레지스트리를 관리하고 모델 파일의 위치를 파악하는 것은 디스크 공간 관리와 모델 관리에 중요합니다. 특히 여러 모델을 사용하거나 대용량 모델을 다룰 때 유용합니다.

DeepSeek R1 설치

메모리 사이즈에 맞게 적당한 모델을 선택한다.

Ollama에서 Search로 찾는다. --> 이름 확인

모델 파일 설치

ollama run deepseek-r1:8b


설치 주의 사항: localhost(127.0.0.1) 접근성 조사
#Windows에서 httpd 관련
  • windows의 경우 IIS서비스가 기동 중인지 확인한다.
  • IIS가 아니면, apache 서비스 설치 필요

DeepSeek R1 실행

Ollama에서 기동할 때 화면

>>> /?

Available Commands:
/set Set session variables
/show Show model information
/load <model> Load a session or model
/save <model> Save your current session
/clear Clear session context
/bye Exit
/?, /help Help for a command
/? shortcuts Help for keyboard shortcuts

Use """ to begin a multi-line message.

Ollama 설명에 대한 내용입니다.

사용방법

  • 모델 실행하기

ollama run 명령어로 원하는 모델을 실행할 수 있습니다. 예를 들어 Llama 3 모델을 실행하려면:

ollama run llama3

만약 해당 모델이 설치되어 있지 않다면 자동으로 다운로드 후 실행됩니다.


  • 모델에서 나오기
Ctl + d 혹은
/bye

  • 대화하기

모델이 실행되면 프롬프트가 나타납니다. 여기에 질문을 입력하면 모델이 답변을 생성합니다.

>>> 하늘은 왜 파란가요? 하늘이 파랗게 보이는 이유는 빛의 산란 때문입니다. 태양 빛 중 파장이 짧은 푸른색 계열의 빛이 대기 중 입자에 의해 강하게 산란되어 우리 눈에 많이 들어오기 때문이죠. 반면 파장이 긴 빨간색 계열은 대기를 통과해 직진하는 경향이 있습니다. 이런 레일리 산란 현상 때문에 하늘은 푸르게 보이는 것입니다.


  • 멀티라인 입력

긴 문장을 입력하고 싶다면 """ 로 감싸면 됩니다.

>>> """ 
안녕하세요.
오늘도 좋은 하루 되세요!
"""
  • 이미지 입력

일부 멀티모달 모델은 이미지 입력도 지원합니다.

>>> 이 이미지에 무엇이 있나요? /path/to/image.png
이미지에는 푸른 하늘을 배경으로 한 해바라기 꽃이 클로즈업되어 있습니다. 노란 꽃잎이 선명하게 보이고, 가운데 꽃술도 잘 보이네요. 매우 생동감 있는 사진입니다.
  • 명시적 사용

prompt: 라고 명시적 단어를 사용하여 입력 가능하다.

프롬프트 입력 명령 예 - DeepSeek R1

prompt: <<내용 넣기>>


  • 모델 커스터마이징

Ollama 라이브러리의 모델은 프롬프트로 커스터마이징할 수 있습니다. 예를 들어 llama3 모델을 수정하려면:

1. 모델 다운로드

ollama pull llama3

2. Modelfile 생성

FROM llama3
# 온도 설정 (높을수록 창의적, 낮을수록 정확함)  
PARAMETER temperature 1

# 시스템 메시지 설정
SYSTEM """
당신은 슈퍼마리오입니다. 마리오처럼 대답해주세요.
"""

3. 모델 생성 및 실행

ollama create mario -f ./Modelfile
ollama run mario
  • API로 접근

Ollama는 모델 실행과 관리를 위한 REST API도 제공합니다.

응답 생성

curl http://localhost:11434/api/generate -d '{
  "model": "llama3", 
  "prompt": "하늘은 왜 파란가요?"
}'

채팅

curl http://localhost:11434/api/chat -d '{
  "model": "llama3",
  "messages": [
    {"role": "user", "content": "하늘은 왜 파란가요?"}
  ]  
}'

참고: curl 사용

curl은 다양한 프로토콜을 사용하여 데이터를 전송하기 위한 명령줄 도구 및 라이브러리입니다. 주요 특징은 다음과 같습니다:

기본 개념

  • "Client URL"의 약자로, URL을 통해 데이터를 주고받는 클라이언트 도구입니다.
  • 웹 서버와 통신하여 데이터를 전송하고 받을 수 있습니다3.
  • 명령줄에서 사용할 수 있는 도구이자 라이브러리 형태로도 제공됩니다18.

지원 프로토콜 curl은 다음과 같은 다양한 프로토콜을 지원합니다.

  • HTTP/HTTPS
  • FTP/SFTP
  • SMTP
  • POP3
  • SCP
  • 기타 여러 프로토콜

주요 기능

  • 웹 페이지 내용 가져오기
  • API 요청 보내기
  • 파일 다운로드/업로드
  • 인증 및 쿠키 처리
  • 커스텀 HTTP 헤더 설정
  • POST 데이터 전송

사용 예시 기본적인 사용법은 다음과 같습니다:

curl [옵션] [URL]

예를 들어 웹 페이지 내용을 가져오려면:

 curl https://example.com 

예시:

  • 웹페이지 내용 가져오기: curl https://example.com
  • HTTP 헤더만 보기: curl -I https://example.com
  • POST 요청 보내기: curl -X "POST" "http://example.com/api" -d "param1=value1&param2=value2"

장점

  • 다양한 프로토콜 지원
  • 스크립트 작성 및 자동화에 용이
  • 디버깅 및 API 테스트에 유용
  • 크로스 플랫폼 지원

curl은 개발자들이 웹 서비스와 상호작용하고 네트워크 요청을 테스트하는 데 널리 사용되는 강력하고 유연한 도구입니다.

API 호출 예시 curl을 사용하여 API 요청을 보내는 몇 가지 예시를 소개해 드리겠습니다:

  • GET 요청

기본적인 GET 요청:

curl https://api.example.com/users

헤더를 포함한 GET 요청:

curl -H "Authorization: Bearer token123" https://api.example.com/users
  • POST 요청

JSON 데이터를 포함한 POST 요청:

curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "John Doe", "email": "john@example.com"}'
  • PUT 요청

리소스를 업데이트하는 PUT 요청:

curl -X PUT https://api.example.com/users/123 \
-H "Content-Type: application/json" \
-d '{"name": "John Smith", "email": "johnsmith@example.com"}'
  • DELETE 요청

리소스를 삭제하는 DELETE 요청:

curl -X DELETE https://api.example.com/users/123
  • 응답 저장하기

응답을 파일로 저장:

curl -o response.json https://api.example.com/users

이러한 예시들은 curl을 사용하여 다양한 HTTP 메소드로 API 요청을 보내는 방법을 보여줍니다. 실제 사용 시에는 API 문서를 참조하여 정확한 엔드포인트, 헤더, 데이터 형식을 확인해야 합니다.


Web으로 서비스 연결하기

Ollama는 기본적으로 text 베이스의 프롬프트로 동작을 확인한다.

이것을 웹브라우저를 통해서 서비스하는 방법은 다른 어플리케이션을 이용한다.


  • 설치 순서
  1. Docker Desktop 설치 - web ui 설치의 경우, docker container 자동 생성을 위해서 미리 설치
  2. Open Webui 설치 - local/Remote 및 GPU 설치 선택
  3. Docker Desktop에서 실행


Docker desktop 설치

OS에 맞는 Docker Desktop를 선택하여 설치한다.

  • 설치 과정 중에 에러

Ollama 설치 과정에서처럼 IIS 설정 (포트) 부분 에러 날 수 있다.

특히, hosts 파일을 docker desktop이 수정하므로 해당 파일 수정으로 인한 IIS 서비스가 먼저 기동될 수 있다.

hosts 파일 수정된 부분

위치: C:\Windows\System32\drivers\etc\hosts

# localhost name resolution is handled within DNS itself.
        127.0.0.1       localhost
        ::1             localhost
# Added by Docker Desktop
10.13.169.221 host.docker.internal
10.13.169.221 gateway.docker.internal
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section
에러의 경우, 127.0.0.1 부분을 마스킹 해준다 apache를 사용하는 경우 (특히 xampp 사용하는 경우)
재부팅시, 다시 에러 나올 수 있음 - IIS 서비스가 먼저 기동

Open Webui

open webui로 접속해서, 설치 방법 확인

  • 설치시 구분해야 하는 것
  1. ) Ollama가 local에 설치 되어 있는 것
  2. ) Ollama가 Remote에 설치 되어 있는 것
  3. ) GPU 사용 여부
  • Ollama가 local에 설치되어 있는 경우
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
  • Ollama가 Remote에 설치되어 있는 경우

OLLAMA_BASE_URL에 Remote의 주소를 부여한다.

docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
  • GPU를 사용하는 경우: CUDA
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda
  • 기타

Single container image that bundles Open WebUI with Ollama, Utilize GPU resources by running the following command

docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama

참고: 설지 관련 사항

설치 관련 기타 사항에 대한 설명

Windows에서 httpd 관련

윈도우에서 기본으로 제공되는 것은 IIS 서버이다. 이것은 apache와 충돌이 되는데, 설치시 주의한다.


IIS 서버 관련

apache를 사용하던지, IIS를 사용하던지 1개만 사용해야 한다. 혹시 다른 어플리케이션에서 나도 모르게 IIS를 사용하는 경우에는 IIS를 내리고, apache를 변경하던지 해야 한다. 대부분의 linux machine은 apache를 사용하므로 주의.

hosts 파일

특히, C:\Windows\System32\drivers\etc의 hosts 파일에서

# localhost name resolution is handled within DNS itself.
	127.0.0.1       localhost
	::1             localhost

으로, 127.0.0.1 (localhost)가 열려 있는 경우, 윈도우 부팅 중에 자동으로 IIS 서비스가 기동 되므로 이를 주석처리 한다. (default는 주석처리 된 것)

  • default 상태
# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost

강제 기동 정지

  • 명령 프롬프트 사용
관리자 권한으로 명령 프롬프트를 실행합니다.

IIS 시작:

net start w3svc

IIS 중지:

net stop w3svc

IIS 관리자 사용

'Windows 키 + R'을 눌러 실행 창을 엽니다.
'inetmgr'을 입력하여 IIS 관리자를 실행합니다.
좌측의 '사이트'를 선택한 후, 우측의 '시작' 또는 '중지' 버튼을 클릭합니다.
  • PowerShell 사용

PowerShell을 관리자 권한으로 실행한 후 다음 명령어를 사용합니다:

IIS 시작:

powershell

Start-Service W3SVC

IIS 중지:

powershell

Stop-Service W3SVC
  • iisreset 명령어 사용

IIS reset 명령어를 통해서, 관련 서비스를 모두 중지 시킬 수 있다.

iisreset /stop

명령어 설명


  • 서비스 관리 콘솔 사용
'Windows 키 + R'을 누르고 'services.msc'를 입력하여 서비스 관리 콘솔을 엽니다.
'World Wide Web Publishing Service'를 찾아 우클릭 후 '시작' 또는 '중지'를 선택합니다.

netstat 점검 명령어

netstat -an

포트번호 순서로 기동 중인지 확인 가능

  • netstat 옵션확인, netstat -?
프로토콜 통계와 현재 TCP/IP 네트워크 연결을 표시합니다.

NETSTAT [-a] [-b] [-e] [-f] [-i] [-n] [-o] [-p proto] [-r] [-s] [-t] [-x] [-y] [interval]

  -a            모든 연결 및 수신 대기 포트를 표시합니다.
  -b            각 연결 또는 수신 대기 포트 생성과 관련된 실행 파일을
                표시합니다. 잘 알려진 실행 파일이 여러 독립 구성 요소를
                호스팅할 경우 연결 또는 수신 대기 포트 생성과 관련된
                구성 요소의 시퀀스가 표시됩니다.
                이러한 경우에는 실행 파일 이름이 아래 [] 안에
                표시되고 위에는 TCP/IP에 도달할 때까지
                호출된 구성 요소가 표시됩니다. 이 옵션은 시간이
                오래 걸릴 수 있으며 사용 권한이 없으면
                실패합니다.
  -e            이더넷 통계를 표시합니다. 이 옵션은 -s 옵션과 함께 사용할 수
                있습니다.
  -f            외부 주소의 FQDN(정규화된 도메인 이름)을
 표시합니다.
  -i            TCP 연결이 현재 상태로 지속된 시간을 표시합니다.
  -n            주소 및 포트 번호를 숫자 형식으로 표시합니다.
  -o            각 연결의 소유자 프로세스 ID를 표시합니다.
  -p proto      proto로 지정한 프로토콜의 연결을 표시합니다. proto는
                TCP, UDP, TCPv6 또는 UDPv6 중 하나입니다. -s 옵션과 함께
                사용하여 프로토콜별 통계를 표시할 경우 proto는 IP, IPv6, ICMP,
                ICMPv6, TCP, TCPv6, UDP 또는 UDPv6 중 하나입니다.
  -q            모든 연결, 수신 대기 포트 및 바인딩된 비수신 대기 TCP
                포트를 표시합니다. 바인딩된 비수신 대기 포트는 활성 연결과 연결되거나
                연결되지 않을 수도 있습니다.
  -r            라우팅 테이블을 표시합니다.
  -s            프로토콜별 통계를 표시합니다. 기본적으로 IP, IPv6, ICMP,
                ICMPv6, TCP, TCPv6, UDP 및 UDPv6에 대한 통계를 표시합니다.
                -p 옵션을 사용하여 기본값의 일부 집합에 대한 통계만 지정할 수 있습니다.
  -t            현재 연결 오프로드 상태를 표시합니다.
  -x            NetworkDirect 연결, 수신기 및 공유 끝점을
                표시합니다.
  -y            모든 연결에 대한 TCP 연결 템플릿을 표시합니다.
                다른 옵션과 함께 사용할 수 없습니다.
  interval      다음 화면으로 이동하기 전에 지정한 시간(초) 동안 선택한 통계를 다시 표시합니다.
                통계 다시 표시를 중지하려면 CTRL+C를 누르세요.
                이 값을 생략하면 현재 구성 정보가
                 한 번만 출력됩니다.

GPU 사용율 관련

Ollama에서 GPU 사용 여부를 확인하고 GPU를 활용하도록 설정하는 방법은 다음과 같습니다:

  • GPU 사용 여부 확인
ollama ps 명령어 사용

ollama ps 명령어를 실행하면 현재 실행 중인 모델의 프로세서 사용 정보를 확인할 수 있습니다1. 예를 들어:

$ ollama ps
NAME            ID           SIZE  PROCESSOR  UNTIL
gemma2:2b       8ccf136fdd52 3.6 GB 100% GPU  4 minutes from now

이 출력에서 "PROCESSOR" 열에 GPU 사용 비율이 표시됩니다1.

실제 콘솔화면

  • nvidia-smi 명령어 사용

NVIDIA GPU를 사용하는 경우, nvidia-smi 명령어를 실행하여 GPU 사용 상태를 확인할 수 있습니다1. Ollama 실행 중 다른 터미널에서 이 명령어를 실행하면 ollama_server.exe 프로세스가 GPU를 사용하고 있는지 확인할 수 있습니다.

  • GPU 사용 설정 방법

CUDA 드라이버 설치

NVIDIA GPU를 사용하는 경우, CUDA 드라이버를 설치해야 합니다20. NVIDIA 공식 웹사이트에서 운영 체제에 맞는 CUDA Toolkit을 다운로드하여 설치하세요.

  • 환경 변수 설정

OLLAMA_CUDA=1 환경 변수를 설정하여 GPU 가속을 활성화할 수 있습니다4. 터미널에서 다음 명령어를 실행하세요:

export OLLAMA_CUDA=1

적절한 하드웨어 사용 GPU 사용을 위해서는 충분한 VRAM이 필요합니다. 예를 들어, 작은 모델에는 최소 8GB의 VRAM이, 큰 모델에는 16GB 이상의 VRAM이 필요할 수 있습니다.

  • 모델 실행 시 자동 감지

Ollama는 일반적으로 사용 가능한 GPU를 자동으로 감지하고 사용합니다. 모델을 실행할 때 별도의 설정 없이 GPU를 활용할 수 있습니다.

GPU를 사용할 수 없는 경우, Ollama는 자동으로 CPU를 사용하여 모델을 실행합니다. 그러나 CPU만으로 실행할 경우 처리 속도가 현저히 느려질 수 있으므로, 가능하다면 GPU 사용을 권장합니다.