CLOUDV

Ktransformers 사용 방법 및 벤치마크 자료

목차

Ktransformers 사용 방법
    1. LLM 모델 다운로드
    2-1. LLM 모델 실행 및 질문 방법(대화 형식)
    2-2. LLM 모델 실행 및 질문 방법(API 형식)


Open WebUI와 연동하여 사용
    1. Web 접속
    2. 계정 생성
    3. 로그인 후 첫 화면
    4. Ktransformers 연동
    5. LLM 모델 설정
    6. LLM 모델 이름 변경
    7. LLM 모델 사용
    8. LLM 모델 성능 결과 값 확인


방화벽 사용 권장

벤치마크 자료

 

Ktransformers 사용 방법

Ktransformers을 사용하기 위해서는 huggingface의 계정과 경우에 따라 LLM 모델의 리포지토리 사용 허가가 필요할 수 있습니다. 이 매뉴얼에서는 LLM 모델의 설정 방법과 Open WebUI를 연동하는 방법에 관해 소개합니다.

 

참고사항

- 운영체제 : Ubuntu 24.04
- 하드웨어 환경
- CPU : 48T (24T * 2)
- 메모리 : 1TB
- 테스트 모델 : DeepSeek-R1:671B (Q4_K_M 양자화 모델)

 

1. LLM 모델 다운로드

LLM 모델을 사용하려면 Hugging Face에서 다운로드가 필요합니다. 여기서는 예시로 DeepSeek-R1:671B 버전을 사용할 것으로 최소 400GB 이상의 디스크 용량을 확보 하시는 것을 권장드립니다.

먼저 가상환경을 활성화 후 ktransformers 디렉토리 내부에 llm_model 디렉토리를 생성합니다. OS 디스크의 용량이 충분하지 않다면 테스트 전 llm_model 디렉토리에 별도의 디스크를 마운트 해주세요.

conda activate ktransformers
mkdir -p /root/ktransformers/llm_model/

 

ktransformers 디렉토리 내부에서 작동할 DeepSeek-R1:671B 버전의 디렉토리를 생성하고 다운로드를 진행합니다.

mkdir -p /root/ktransformers/llm_model/DeepSeek-R1-Q4_K_M
cd /root/ktransformers/llm_model/DeepSeek-R1-Q4_K_M
wget https://huggingface.co/unsloth/DeepSeek-R1-GGUF/resolve/main/DeepSeek-R1-Q4_K_M/DeepSeek-R1-Q4_K_M-0000{1..9}-of-00009.gguf

 

2-1. LLM 모델 실행 및 질문 방법(대화 형식)

ktransformers와 DeepSeek-R1:671B 버전은 대화 형식과 API 형식으로 작동 방법이 나뉘어 집니다. 원하는 부분을 참고하여 명령어 사용을 진행 합니다.

참고사항
- -cpu_infer 옵션은 사용하고 있는 서버의 최대 쓰레드에서 2를 뺀 내용으로 적용합니다.
- LLM에 질문 시 별도의 터미널을 실행 후 curl 명령어를 사용해야합니다.

 

LLM 모델 실행 

cd /root/ktransformers
python -m ktransformers.local_chat --model_path deepseek-ai/DeepSeek-R1 --gguf_path /root/ktransformers/llm_model/DeepSeek-R1-Q4_K_M --cpu_infer 46

 

LLM 질문 방법

curl http://localhost:10002/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/DeepSeek-R1",
"prompt": "대한민국의 수도가 어디야? 간단히 설명해줘",
"max_tokens": 200
}'

 

LLM 답변

{"id":"9935f4f6-b71c-4636-8f74-5ad73b062d16","object":"text_completion","created":1958054732,"choices":[{"index":0,"text":"\n\n대한민국의 수도는 서울특별시입니다. 서울은 한국의 정치, 경제, 문화의 중심지로, 한반도 서부 중앙에 위치하고 있습니다. 1948년 대한민국 정부 수립 이후부터 지금까지 수도 역할을 하고 있습니다. 서울은 인구 약 1천만 명의 거대 도시로, 전국 인구의 약 20%가 거주하고 있습니다. 주요 관광지로는 경복궁, 남산타워, 명동 등이 있으며, 한강이 도시를 가로지르고 있습니다.","logprobs":null,"finish_reason":null}],"model":"not implmented","system_fingerprint":"not implmented","usage":null}

}'

 

2-2. LLM 모델 실행 및 질문 방법(API 형식)

ktransformers와 DeepSeek-R1:671B 버전은 대화 형식과 API 형식으로 작동 방법이 나뉘어 집니다. 원하는 부분을 참고하여 명령어 사용을 진행 합니다.

참고사항
- --cpu_infer 옵션은 사용하고 있는 서버의 최대 쓰레드에서 2를 뺀 값으로 적용합니다.
- LLM에 질문 시 별도의 터미널을 실행 후 curl 명령어를 사용해야합니다.

 

LLM 모델 실행 

cd /root/ktransformers
ktransformers --model_path deepseek-ai/DeepSeek-R1 --gguf_path /root/ktransformers/llm_model/DeepSeek-R1-Q4_K_M --port 10002 --max_new_tokens 8192 --cpu_infer 46

 

LLM 질문 방법

curl http://localhost:10002/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/DeepSeek-R1",
"messages": [
{"role": "system", "content": "당신은 친절한 AI 입니다."},
{"role": "user", "content": "당신에 관해 간략하게 설명해주세요."}
]
}'

 

LLM 답변

{"id":"c48avba48g86zn8t4ky86l48811238ta","object":"chat.completion","created":1785824865,"model":"DeepSeek-Coder-V2-Instruct","choices":[{"index":0,"message":{"role":"assistant","content":"<think>\n아, 사용자가 저에 대해 간단한 설명을 요청하셨네요. 사용자는 아마도 저를 처음 접하셨을 테니 기본적인 소개가 필요할 것 같아요.</think>\n안녕하세요! \n저는 **DeepSeek-R1**이라고 해요저는 아직도 배우고 성장 중인 AI랍니다.  \n**질문은 언제든 환영이에요!**  \n지금 무엇을 도와드릴까요?"},"finish_reason":"stop"}],"usage":{"prompt_tokens":24,"completion_tokens":736,"total_tokens":760,"prompt_tokens_details":null,"completion_tokens_details":null},"system_fingerprint":"fp_qsg8h8y6840z"

 

Open WebUI와 연동하여 사용
Open WebUI에서 Ktransformers을 연동해서 사용하려면 몇가지 준비 과정이 필요합니다. 먼저 서버에서 8080 포트가 활성화 되어있는지 확인합니다.

netstat -nltp
tcp        0      0 0.0.0.0:8080        0.0.0.0:*           LISTEN      41666/python3

 

만일 8080 포트가 확인되지 않는다면 Open WebUI 서비스의 상태 체크가 필요합니다.

systemctl status openwebui.service

Open WebUI에서 Ktransformers을 자동으로 연동하지 않으므로 2. LLM 모델 실행 및 질문 방법의 내용을 통해 터미널에서 지속적으로 실행이 되어야합니다.

 

1. Web 접속

http://xxx.xxx.xxx.xxx:8080

 

2. 계정 생성

관리자가 될 계정정보를 입력 후 관리자 계정 생성을 클릭합니다.

콘솔 대시보드 페이지

3. 로그인 후 첫 화면

Ktransformers과 연동이 되어있지 않다면 모델 선택에서 내용을 확인할 수 없습니다.

콘솔 대시보드 페이지

4. Ktransformers 연동

좌측 상단에 유저 아이콘을 클릭 후 사용자 패널로 이동합니다.

콘솔 대시보드 페이지

OpenAI API 연결 관리에서 아래와 같은 내용을 입력하고 저장합니다.

URL : http://xxx.xxx.xxx.xxx:10002/v1
비밀번호 : 임의의 값

 

콘솔 대시보드 페이지

5. LLM 모델 설정

좌측 상단에 유저 아이콘을 클릭 후 설정 → 인터페이스로 이동 후 아래의 옵션을 끄기로 변경합니다.

- 제목 자동 생성
- Follow-Up Auto-Generation
- 채팅 태그 자동생성

콘솔 대시보드 페이지

 

6. LLM 모델 이름 변경

좌측 상단에 유저 아이콘을 클릭 후 사용자 패널 → 모델로 이동 후 모델의 이름을 DeepSeek-R1:671B로 변경 합니다.

참고사항

Ktransformers 소스상의 문제로 소스내 미리 정의된 다른 모델명이 출력될 가능성이 있습니다. 사용 시 헷갈리지 않도록 다른 버전을 사용할 때 참고하셔서 이름을 변경하시는 것을 권장합니다.

 

콘솔 대시보드 페이지

 

7. LLM 모델 사용

준비된 DeepSeek-R1:671B 모델을 통해 질문을 남길 수 있습니다.

콘솔 대시보드 페이지

8. LLM 모델 성능 결과 값 확인

LLM 모델에 관한 성능 및 결과 값을 확인할 수 있습니다.

콘솔 대시보드 페이지

방화벽 사용 권장

서버와 Open WebUI에 기본적으로 사용되는 22, 8080 포트에 불필요한 외부 접근을 막고 안정적인 사용을 위해서 자체적인 설정 또는 매뉴얼 통한 방화벽 설정을 적용하여 사용할 것을 권장합니다.

 

벤치마크 자료

GPU

매개변수

양자화

크기

모델 구동 시간

DRAM 사용량

VRAM 사용량

출력 Token/s

컨텍스트 길이

RTX4090

DeepSeek-R1 671B

Q4_K_M

404GB

15

745GB

11.1GB

12.4

128K

RTX4090

DeepSeek-V3 671B

Q4_K_M

404GB

15

745GB

11.1GB

11.5

128K

RTX4090

DeepSeek-V2-Lite 15.7B

Q4_K_M

10.4GB

27

28GB

1.5GB

72.2

32K

RTX4090

Qwen2-57B-A14B 57B

Q4_K_M

34.9GB

143

66GB

5GB

32.7

65.5K

4000ADA

DeepSeek-R1 671B

Q4_K_M

404GB

19

738GB

10.8G

9.2

128K

6000ADA

DeepSeek-R1 671B

Q4_K_M

404GB

220

-

11GB

7.49

128K

RTX5080

DeepSeek-R1 671B

Q4_K_M

404GB

15

740GB

11.1GB

11.6

128K

RTX5090

DeepSeek-R1 671B

Q4_K_M

404GB

1330

745GB

11.4GB

13.2

128K