AMD Radeon w6800 + Ollama + DeepSeek-R1:70B 사용하기

AI|2025. 2. 21. 11:51
반응형

[ 테스트 환경 ]

- OS : Ubuntu 24.04 LTS

- GPU : AMD Radeon w6800 * 4EA

- Memory : 64GB * 12EA = 768GB

- Disk : 1TB * 2EA

 

미리 결론부터 말하자면, 이 환경으로 DeepSeek-R1:70B 모델은 동작하지만 (2 GPU 가 사용됨), DeepSeek-R1:671B 모델은 실행되지 않습니다.

따라서 아래 내용은 DeepSeek-R1:70B 모델 사용을 예로 들었습니다.

 

 

1. AMD Radeon 드라이버 설치

 

GPU 카드 활용을 위해 우선 드라이버를 설치해야 합니다.

테스트 환경은 AMD Radeon w6800 이므로 AMD Radeon 드라이버 설치하는 방법을 설명드립니다.

 

[ 공식 Documents ] Ubuntu 24.04 환경에서 설치하기

https://rocm.docs.amd.com/projects/install-on-linux/en/latest/install/quick-start.html

 

# apt update && apt -y upgrade

# apt -y install "linux-headers-$(uname -r)" "linux-modules-extra-$(uname -r)"

# apt -y install python3-setuptools python3-wheel

# usermod -a -G render,video $LOGNAME

# wget https://repo.radeon.com/amdgpu-install/6.3.2/ubuntu/noble/amdgpu-install_6.3.60302-1_all.deb

# apt -y install ./amdgpu-install_6.3.60302-1_all.deb

# apt update

# apt -y install amdgpu-dkms rocm

 

모든 설정을 적용하려면 시스템을 재부팅해야 합니다.

# reboot

 

리부팅 후 아래 명령으로 설치 상태를 확인할 수 있습니다.

장치명이 출력되면 드라이버 설치가 잘 된 것으로 판단할 수 있습니다.

lspci 등으로 장치가 인식되었으나 아래 명령으로 장치명이 출력되지 않는다면, 드라이버 설치가 제대로 되지않은 것입니다.

# clinfo |grep 'Board name'

# rocminfo |grep 'Marketing Name'

# rocm-smi

 

 

2. Ollama 설치

 

Ollama 는 Llama 를 기반으로 개발자와 사용자들이 Llama 모델을 쉽게 사용하고 확장할 수 있도록 지원하는 도구입니다.

설치 스크립트를 다운로드 받아 실행하면 자동 설치됩니다.

# curl https://ollama.ai/install.sh | sh

 

데몬에서 서비스 대역을 모두 허용하고, 실제 제한은 iptables 로 하는 것이 편리합니다.

Ollama 서비스 환경을 아래와 같이 변경할 수 있습니다.

[Service] 섹션에 접근 HOST 를 정할 수 있으므로, 필요시 활용해 보세요.

또한, LLM 저장 디렉토리를 변경하려는 경우 디렉토리 생성 및 퍼미션 조정 후 Systemd 서비스 유닛 파일에 등록하면 됩니다.

# mkdir /data/models

# chown ollama:ollama /data/models

# vi /etc/systemd/system/ollama.service

...

[Service]

Environment="PATH=/usr/local/cuda-12.4/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
Environment="OLLAMA_HOST=0.0.0.0"

Environment="OLLAMA_MODELS=/data/models"

...

 

변경된 환경을 적용해주고, 부팅 설정과 동시에 데몬을 구동합니다.

# systemctl daemon-reload

# systemctl enable --now ollama

 

열려진 Ollama 포트를 확인합니다.

# apt -y install net-tools

# netstat -nltp |grep ollama

 

Ollama 에서 손쉽게 다운로드하고 사용 가능한 모델은 아래 URL 을 참고해주세요.

https://github.com/ollama/ollama#model-library

 

원하는 모델을 다운로드 합니다.

여기에서는 DeepSeek-R1:70B 모델로 다운로드 하겠습니다.

참고로 70B 는 "70 billion parameters" 라는 표현으로, 모델이 700억 개의 학습 가능한 파라미터를 가지고 있다는 것을 의미합니다.
# ollama pull deepseek-r1:70b

 

참고로 다운로드 명령 없이 바로 실행 (ollama run deepseek-r1:70b) 하게 되면, 다운로드 먼저하고 실행됩니다.

 

 

3. 테스트

 

1) 로컬에서 실행하기

설치했던 모델로 실행을 하고 간단한 질문을 해봅니다.

본 모델은 한글을 지원하지 않으므로 잘 동작하는지 테스트만 진행해 보겠습니다.

# ollama run deepseek-r1:70b
>>> Hello? Who are you?
<think>

</think>

Hello! I'm DeepSeek-R1, an artificial intelligence assistant created by DeepSeek. I'm at your service and would be delighted to assist you with any inquiries or tasks you may have.

>>> /bye

 

모델과 질문을 붙여서 실행하면 명령 대기 프롬프트 없이 간단히 사용할 수 있습니다.

# ollama run deepseek-r1:70b "How old are you?"
<think>

</think>

I'm an AI assistant created by DeepSeek, so I don't have an age. I'm here to help you with information and tasks! Let me know how I can assist you.

 

또는, 긴 내용의 텍스트를 직접 복사, 붙여넣지 않고 파일로 되어있는 상태 그대로 LLM 에게 작업을 요청할 수 있습니다.

# ollama run deepseek-r1:70b "Summarize the content of this file in 50 words." < input.txt

 

출력 결과를 파일로 저장할 수도 있습니다.

# ollama run deepseek-r1:70b "Tell me about renewable energy." > output.txt


2) 외부에서 API 로 실행하기

다른 PC 또는 서버에서 아래와 같이 API 로 접근하여 서비스 이용이 가능합니다. 

예제를 실행하는 김에 json 형식으로 예쁘게 출력하기 위해 jq 패키지를 미리 설치합니다.

# apt -y install jq

# curl http://localhost:11434/api/chat -d '{
  "model": "deepseek-r1:70b",
  "stream": false,
  "messages": [
    { "role": "user", "content": "Hello? Who are you?" }
  ]
}' | jq

 

(결과)

{
  "model": "deepseek-r1:70b",
  "created_at": "2025-02-27T00:00:46.737167483Z",
  "message": {
    "role": "assistant",
    "content": "<think>\n\n</think>\n\nHello! I'm DeepSeek-R1, an artificial intelligence assistant created by DeepSeek. I'm at your service and would be delighted to assist you with any inquiries or tasks you may have."
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 7971527920,
  "load_duration": 63402422,
  "prompt_eval_count": 9,
  "prompt_eval_duration": 140000000,
  "eval_count": 44,
  "eval_duration": 7766000000
}

 

위 출력된 내용을 기반으로 토큰 출력 속도를 계산해봅니다.

"eval_count": 44
"eval_duration": 7742000000  # (단위: 나노초)

 

tokens_per_sec = 44 / 7.742 = 5.68 tokens/sec

 

GPU 연산 속도도 확인할 수 있습니다.

이는 동일한 질문으로 GPU 간의 성능 비교에 사용할 수 있습니다.

"eval_duration": 7742000000  # (단위: 나노초)

 

eval_time_sec = 7742000000 / 1000000000 = 7.742 sec

 

 

==================== 참고 ====================

※ 토큰 속도 및 소요시간만 출력

질문, 답변에 상관없이 출력토큰을 테스트 해보기 위해서는 아래와 같이 실행하면 토큰 속도만 출력됩니다.

(다른 모델로 테스트 해보았으나 방법이 다르지 않습니다)

# apt -y install jq

# curl -s http://localhost:11434/api/chat -d '{
  "model": "gemma3:27b",
  "stream": false,
  "messages": [
    { "role": "user", "content": "대한민국의 수도는?" }
  ]
}' | tee /tmp/api_response.json | jq '{
  tokens_per_sec: (.eval_count / (.eval_duration / 1000000000)),
  eval_time_sec: (.eval_duration / 1000000000)
}'

 

(결과)
{
  "tokens_per_sec": 42.55319148936171,
  "eval_time_sec": 0.282
}

 

※ 답변과 토큰 속도 및 소요시간 출력

이번에는 답변과 토큰속도, 소요시간을 같이 출력해 봅니다.

jq 에 . + 만 포함하였습니다.

# curl -s http://localhost:11434/api/chat -d '{
  "model": "gemma3:27b",
  "stream": false,
  "messages": [
    { "role": "user", "content": "대한민국의 수도는?" }
  ]
}' | tee /tmp/api_response.json | jq '. + {
  tokens_per_sec: (.eval_count / (.eval_duration / 1000000000)),
  eval_time_sec: (.eval_duration / 1000000000)
}'

 

(결과)
{
  "model": "gemma3:27b",
  "created_at": "2025-03-18T01:24:13.520260831Z",
  "message": {
    "role": "assistant",
    "content": "대한민국의 수도는 **서울특별시**입니다.\n"
  },
  "done_reason": "stop",
  "done": true,
  "total_duration": 423673487,
  "load_duration": 106440511,
  "prompt_eval_count": 15,
  "prompt_eval_duration": 38000000,
  "eval_count": 12,
  "eval_duration": 276000000,
  "tokens_per_sec": 43.47826086956521,
  "eval_time_sec": 0.276
}

============================================

 

 

4. 웹 UI 도구 설치하기

 

시스템에 원격접속하여 사용이 가능하지만, 좀더 편리하게 웹 UI 도구를 이용할 수 있습니다.

현재 나와있는 Ollama 웹 UI 는 여러개지만, 여기에서는 제일 인기있는 도구 Open WebUI 를 사용해 보겠습니다.

 

Open WebUI 는 가장 인기가 많은 chatGPT 스타일의 웹 인터페이스이며, 한글 인터페이스도 지원하는 오픈소스 입니다.

- URL : https://github.com/open-webui/open-webui

 

패키지 관리도구 pip 와 가상환경 기능을 사용하기 위해 venv 를 설치합니다.

# apt -y install python3-pip python3.12-venv

 

가상환경 myenv 를 생성하고 활성화 합니다.

# python3 -m venv myenv

# source myenv/bin/activate

 

가상환경에서 Open WebUI 를 설치하고 가동합니다.

(myenv) root@sysdocu:~# pip install open-webui

(myenv) root@sysdocu:~# open-webui serve

 

설치 및 가동이 완료되면 로컬에 8080 포트가 열려집니다.

작업자 PC 또는 서버의 브라우저에서 아래와 같이 접속이 가능합니다.

http://{서버 IP}:8080

 

Open WebUI 에서는 ChatGPT 와 유사한 인터페이스를 보여줍니다.

여기에서 모델은 선택 후, 간단한 질의를 하여 답변을 얻을 수 있습니다.

여기에서는 워크 스페이스 메뉴를 통해 챗봇을 만들어 보겠습니다.
순서는 지식 파일 생성 > 지식 생성 > 모델 (챗봇) 생성 순 입니다.

 

(메모장으로 지식 파일 만들기)
파일명 : nickname.txt
내용 : Donghoon Cha's nickname is Chacha.

 

(지식 추가)
워크 스페이스 > 지식 기반 > (화면 우측 + 버튼)
이름 : nickname
설명 : test
컬렉션 검색 : (파일 업로드) nickname.txt
[지식 생성] 버튼

(모델 추가)

워크 스페이스 > 모델 > (화면 우측 + 버튼)
이름 : testbot
기본 모델 : deepseek-r1:70b
모델 파라미터 : When I enter a number, multiply it by 10 and output it.
지식 기반 : (위에서 만든) nickname
[저장 및 생성] 버튼

만들어지면, 바로 보이는 봇을 선택하여 대화를 시작할 수 있습니다.

테스트1) 10
테스트2) What is Donghoon Cha's nickname?

 

반응형

댓글()

vLLM 설치 및 모델들 사용하기 (NVIDIA GPU 전용)

AI|2025. 2. 20. 08:19
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

Ubuntu 24.04 APT 저장소 및 키 초기화 하기

리눅스/OS 일반|2025. 2. 19. 10:31
반응형

모든 추가 저장소 삭제
# rm -f /etc/apt/sources.list.d/*.list

모든 GPG 키 삭제
# rm -f /etc/apt/keyrings/*.gpg

기본 APT 저장소 복구 (Ubuntu 24.04 Noble 기준)
# tee /etc/apt/sources.list <<EOF
deb http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu noble-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu noble-security main restricted universe multiverse
EOF

APT 캐시 및 설정 초기화
# apt clean
# apt autoclean
# apt -y autoremove --purge
r# m -rf /var/lib/apt/lists/*

저장소 업데이트 및 확인
# apt -y update && apt -y upgrade

 

반응형

댓글()