본문으로 건너뛰기

Ktransformers 설치 및 설정

Ktransformers 가이드 - 설치 및 설정

Ktransformers란

Ktransformers는 다용량의 메모리를 활용하여 고성능의 GPU를 사용하지 않더라도 특정 모델을 작동시키는데 사용이 가능한 프레임워크입니다.

설치 및 설정 방법

이 가이드에서는 KtransformersOpen WebUI의 설치 및 설정 방법에 대해 설명하며 설치 스크립트는 하단의 내용을 참고 해주시기 바랍니다.

테스트 서버 정보
  • 운영체제 : Ubuntu 24.04
  • 하드웨어 환경
    • CPU : 48T (24T * 2)
    • 메모리 : 1TB
주의 사항

1. Anaconda 설치 및 가상환경 생성

파이썬의 가상환경을 사용 하기 위해 Anaconda를 설치합니다.

apt update
apt -y upgrade
apt -y install build-essential cmake ninja-build libtbb-dev

wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
sh Anaconda3-2024.10-1-Linux-x86_64.sh

Anaconda 설치 스크립트를 작동 시 아래와 같은 부분을 확인 후 설치를 완료합니다.

라이선스 동의 → yes
설치 경로 지정 → 기본값 (Enter)
설치 완료 후 conda init 실행 여부 → yes

설치가 완료된 후 환경 변수를 적용 합니다.

source ~/.bashrc

Ktransformers는 파이썬 3.11의 버전과 호환성이 좋기에 해당 버전으로 환경설정을 진행 해보겠습니다.

conda create --name ktransformers python=3.11
conda activate ktransformers
conda install -c conda-forge libstdcxx-ng
pip install packaging ninja cpufeature numpy

파이토치를 설치합니다. CUDA의 버전에 따라 선택해야하는 명령어가 다르며 탭을 선택 후 복사하여 설치를 진행합니다.

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

2. Ktransformers 설치

Ktransformers의 경우 최신 버전을 설치 시 에러가 발생할 확률이 높습니다. 탭의 내용을 확인하여 CUDA의 버전에 따라 설정을 진행합니다.

git clone --branch v0.2.3 https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
sed -i '401s/^/#/' ktransformers/models/modeling_deepseek_v3.py
git submodule update --init --recursive

설정이 완료되면 스크립트를 통해 설치를 진행합니다.

apt -y install libnuma-dev libaio-dev
bash install.sh

만약 CPU를 2개 이상 사용할 경우 아래의 방법으로 설치를 진행합니다.

apt -y install libnuma-dev libaio-dev
export USE_BALANCE_SERVE=1
export USE_NUMA=1
bash install.sh

3. Open WebUI 설치

Open WebUI를 설치합니다.

pip install open-webui

4. Open WebUI 설정

Open WebUI는 service, systemctl을 통한 서비스 데몬 실행이 제공되지 않으며 아래의 명령어를 통해 http://xxx.xxx.xxx.xxx:8080으로 접근이 가능합니다. 실행 중 터미널에서 Ctrl + C를 사용하거나 로그아웃 시 프로세스의 종료가 진행 됩니다.

open-webui serve

편리하게 사용하기 위해 서비스 데몬을 생성해보겠습니다.

vi /etc/systemd/system/openwebui.service
[Unit]
Description=Open WebUI Service
After=network.target

[Service]
Type=simple
ExecStart=/iwinv_venv/bin/open-webui serve
ExecStop=/bin/kill -HUP $MAINPID
User=root
Group=root

# 로그 파일 별도 생성
StandardOutput=append:/var/log/openwebui/openwebui.log
StandardError=append:/var/log/openwebui/openwebui_error.log

[Install]
WantedBy=multi-user.target

로그 파일이 별도로 저장될 수 있도록 서비스 데몬에 설정한 위치에 디렉토리를 생성합니다.

mkdir /var/log/openwebui

서버의 리부팅 시 서비스가 동작하도록 설정 후 재시작합니다.

systemctl daemon-reload
systemctl enable openwebui.service
systemctl start openwebui.service