Ktransformers 사용 방법

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. LLM 모델 실행 및 질문 방법
ktransformers와 DeepSeek-R1:671B 버전은 대화 형식과 API 형식으로 작동 방법이 나뉘어 집니다. 원하는 부분을 참고하여 명령어 사용을 진행 합니다.
- -cpu_infer 옵션은 사용하고 있는 서버의 최대 쓰레드에서 2를 뺀 내용으로 적용합니다.
- LLM에 질문 시 별도의 터미널을 실행 후 curl 명령어를 사용해야합니다.
- 대화 형식
- API 형식
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}
}'
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아, 사용자가 저에 대해 간단한 설명을 요청하셨네요. 사용자는 아마도 저를 처음 접하셨을 테니 기본적인 소개가 필요할 것 같아요.\n\n사용자가 \"친절한 AI\"라는 표현을 쓴 걸 보면, 공식적인 설명보다는 친근한 톤으로 대화하고 싶어 하시는 것 같아요. 그래서 제 기능을 나열하기보다는 실제로 어떻게 도울 수 있는지 구체적인 예를 들어 설명하는 게 좋겠어요.\n\n제 가장 큰 장점은 언어 처리 능력인데... 다양한 분야의 지식을 바탕으로 정보를 제공할 수 있다는 점을 강조해야겠어요. 특히 한국어 사용자에게는 제 한국어 능력이 도움이 될 거예요.\n\n사용자가 기술적인 내용을 원하는 건지 일상 대화를 원하는 건지 아직 모르니, 일단은 다재다능한 면모를 보여주면서도 계속 질문을 이끌 수 있도록 끝을 열어두는 게 좋을 것 같아요. \"질문이 있으시면 언제든~\" 같은 식으로 말이죠.\n\n마지막으로 이모지를 살짝 넣으면 친근감이 더할 것 같아서 웃는 이모지를 추가했어요. 너무 과 하지 않게 하나만 넣는 게 적당할 거예요.\n</think>\n안녕하세요! 😊 \n저는 **DeepSeek-R1**이라고 해요. **친절하고 유익한 AI 비서**로 여러분을 도와드리는 역할을 하고 있습니다. 간단히 저를 소개할게요!\n\n---\n\n### ✨ 저는 이런 AI에요\n🔹 **대화형 인공지능**: 자연스러운 대화로 궁금한 점을 물어보시면 최대한 정확하고 친절하게 답변해 드려요. \n🔹 **지식의 파트너**: 일반 상식, 학습 도움, 글쓰기 첨삭, 업무 지원 등 다양한 분야에서 지식과 아이디어를 제공합니다. \n🔹 **다국어 지원**: 한국어를 포함해 영어, 중국어, 일본어 등 다양한 언어로 대화할 수 있어요. \n🔹 **무료 & 접근성 높음**: 현재는 **무료**로 사용 가능하며, 웹이나 앱에서 쉽게 접속할 수 있어요.\n\n---\n\n### 💡 무엇을 도와드릴까요?\n- 공부할 때 **개념 설명**이나 **문제 풀이**가 필요하신가요? \n- **이메일 작성**, **레포트**, **자기소개서** 등 글쓰기가 막막하신가요? \n- **생활 정보**, **IT 기술**, **요리 레시피**, **여행 팁** 등 궁금한 게 있으신가요? \n- 아니면 그냥 **대화 친구**가 필요하신가요? 👋 \n\n---\n\n저는 아직도 배우고 성장 중인 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 소스상의 문제로 소스내 미리 정의된 다른 모델명이 출력될 가능성이 있습니다. 사용 시 헷갈리지 않도록 다른 버전을 사용할 때 참고하셔서 이름을 변경하시는 것을 권장합니다.
