
Spyre로 LLM을 이용할 때의 환경 설정
요약
Spyre 카드를 사용하여 RHAII의 vLLM 컨테이너를 실행하기 위한 환경 설정 방법을 설명합니다. Podman의 rootless 구성을 전제로 하며, IBM Power 서버 환경에서의 패키지 설치 및 사용자 권한 설정 절차를 다룹니다.
핵심 포인트
- Spyre 카드 기반 vLLM 컨테이너 실행을 위한 사전 셋업 가이드
- Podman rootless 구성을 위한 비 root 사용자 생성 및 권한 설정
- servicereport를 활용한 VFIO 바인딩 및 udev 규칙 자동 설정
- RHEL9/10 환경에 맞는 필수 패키지 및 라이브러리 설치 방법
이전 기사에서 Spyre를 사용한 LLM의 기동 방법에 대해 작성했습니다.
이 기사에서는 사전 셋업(Setup) 정보까지는 기재하지 않았습니다.
또한, 공식 문서에서는 비 root(non-root) 사용자를 권장하고 있으므로, 문서에 따른 방법을 다시 기재합니다.
Spyre 카드를 사용하여, RHAII (Red Hat AI Inference)의 vLLM 컨테이너를 실행하기 위한 환경 설정 절차를 정리합니다.
Podman의 rootless 구성을 전제로 하고 있으며, root 작업과 비 root 작업이 나누어져 있습니다.
- 서버: IBM Power (Spyre 카드 탑재)
- OS: RHEL9 또는 RHEL10
- 컨테이너 런타임 (Container Runtime): Podman (rootless)
- 호스트 메모리 (Host Memory): 카드 구성에 맞춰 100GB~200GB 이상 권장
먼저 기본적인 패키지를 설치해 둡니다.
dnf -y install container-tools git git-lfs wget
container-tools에는 Podman이 포함되어 있습니다.
git-lfs는 나중에 Hugging Face에서 모델을 클론(Clone)할 때 필요합니다.
Spyre 카드 설정을 자동으로 수행하는 servicereport 명령어를 사용할 수 있도록 합니다.
아래의 IBM 지원 페이지에서 RPM을 입수합니다.
페이지 내에 ibm-power-repo 패키지의 다운로드 링크가 있으므로, 거기서 RPM 파일을 취득합니다.
다운로드한 RPM을 설치합니다.
rpm -ivh ibm-power-repo-latest.noarch.rpm
다음으로 configure를 실행합니다. 라이선스 화면이 표시되면 q → y → Enter로 동의합니다.
/opt/ibm/lop/configure
OS 버전에 맞춰 설치 명령어를 구분하여 사용합니다.
RMC 접속용 패키지가 OS 버전에 대응하는 것이 제공됩니다.
RHEL9의 경우:
dnf -y install ServiceReport ibm-power-managed-rhel9
RHEL10의 경우:
dnf -y install ServiceReport ibm-power-managed-rhel10
Podman을 rootless로 구동하기 위한 전용 사용자를 생성합니다.
여기서는 senuser라는 이름으로 생성하고 있지만, 임의의 이름으로 변경해도 문제없습니다.
이후의 절차에서도 동일한 이름을 계속 사용해 주세요.
adduser senuser
passwd senuser
servicereport -v -p spyre
초기 상태에서는 많은 항목이 FAIL이 될 수 있지만, 이는 정상입니다.
servicereport -r -p spyre
다음 내용이 자동 설정됩니다.
- VFIO 바인딩 (Binding)
- udev 규칙 (Rule)
- sentient 그룹
- memlock
- VFIO 모듈 삽입
usermod -aG sentient senuser
Spyre 컨테이너에서 모델을 참조하기 위한 디렉토리를 생성합니다.
sentient 그룹이 액세스할 수 있도록 권한을 설정합니다.
install -d -m 0775 -o root -g sentient /opt/ibm/spyre/models/src
senuser로 로그인하지 않은 상태에서도 Quadlet (systemd로 관리하는 Podman 컨테이너)가 자동 기동되도록 설정합니다.
※ Quadlet 이용 방법은 별도의 기사에서 작성하도록 하겠습니다.
loginctl enable-linger senuser
-m 2755는 디렉토리에 setgid 비트를 설정하여, 그룹이 systemd-journal로 통일됩니다.
install -d -m 2755 -o root -g systemd-journal /var/log/journal
sed -ri 's/^#?Storage=.*/Storage=persistent/' /etc/systemd/journald.conf
systemctl restart systemd-journald
CPU, 메모리 등의 리소스를 senuser의 사용자 유닛 (user unit)에 위임할 수 있도록 합니다.
install -d -m 0755 -o root -g root /etc/systemd/system/user@.service.d
cat << EOF > /etc/systemd/system/user@.service.d/delegate.conf
[Service]
...
커널 모듈 (kernel module) 삽입이나 udev 규칙을 확실히 반영하기 위해 재부팅합니다.
reboot
중요: root로 로그인한 후 sudo su senuser로 전환하는 것은 NG입니다.
이 방법으로는 XDG_RUNTIME_DIR이나 D-Bus 세션이 올바르게 초기화되지 않아, Podman의 rootless 환경이 정상적으로 동작하지 않습니다.
반드시 senuser로서 직접 로그인하십시오.
mkdir -p ~/.config/containers/systemd
Hugging Face에는 다음이 필요합니다:
- 활성 계정
- 설치 및 인증된 커맨드 라인 인터페이스 (CLI) 클라이언트가 필요합니다. 설치 및 인증 절차에 대해서는 커맨드 라인 인터페이스 (CLI) 문서를 참조하십시오.
git lfs install
cd /opt/ibm/spyre/models/src
# 필수 모델
...
컨테이너 기동 시 Spyre 카드의 PCIe ID를 지정해야 합니다.
다음 명령으로 확인할 수 있습니다.
lspci -d 1014:06a7
출력 예시:
0001:00:00.0 Processing accelerators: IBM Device 06a7 (rev 02)
0002:00:00.0 Processing accelerators: IBM Device 06a7 (rev 02)
0001:00:00.0 또는 0002:00:00.0이 카드 ID입니다. 컨테이너 기동 시 공백으로 구분하여 지정합니다.
예: AIU_IDS="0001:00:00.0 0002:00:00.0 0003:00:00.0 0004:00:00.0"
granite-4.1-8b-fp8을 사용하여 엔티티 추출 (entity extraction)을 수행하는 구성입니다.
fp8 양자화 (quantization) 모델이므로, 카드 1장·100GB 메모리로 동작합니다.
export AIU_IDS="0001:00:00.0" # lspci로 확인한 카드 ID로 변경하십시오
export HOST_MODELS_DIR=/opt/ibm/spyre/models/src
export VLLM_MODEL_PATH=/models/granite-4.1-8b-fp8
...
더 큰 컨텍스트 길이 (context length, 32k)를 설정한 instruct 구성입니다.
카드 4장·200GB 메모리를 사용합니다.
export AIU_IDS="0001:00:00.0 0002:00:00.0 0003:00:00.0 0004:00:00.0" # 카드 ID로 변경하십시오
export HOST_MODELS_DIR=/opt/ibm/spyre/models/src
export VLLM_MODEL_PATH=/models/granite-4.1-8b-fp8
...
컨테이너 이미지 버전은 Early Access이므로 업데이트될 수 있습니다. 최신 태그는 RHAII의 릴리스 정보를 확인하십시오.
-p 127.0.0.1:8000:8000과 같이 localhost 바인딩 (bind)을 하고 있으므로, 외부에서의 직접 액세스는 불가능합니다.
외부에서 액세스하고 싶은 경우 리버스 프록시 (reverse proxy) 등을 경유하십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기