
Spyre를 사용하여 LLM 구동해 보기
요약
IBM Spyre 가속기를 사용하여 LLM을 구동하는 방법을 설명합니다. Red Hat AI Inference(RHAII)를 활용해 Kubernetes 없이 Podman만으로 vLLM 기반의 추론 서버를 간편하게 구축할 수 있습니다.
핵심 포인트
- IBM Spyre 가속기 기반의 LLM 추론 환경 구축 방법 안내
- Red Hat AI Inference(RHAII)를 통한 vLLM 서버 실행
- Podman을 활용한 간편한 컨테이너 기반 테스트 환경 제공
- PCIe ID 확인 및 환경 변수 설정을 통한 디바이스 제어
IBM Power 및 IBM Z용으로 제공되는 IBM Spyre를 사용하여 LLM을 구동해 보겠습니다.
현재, IBM Spyre for Power용으로는 Red Hat AI Inference (RHAII)가 제공되고 있습니다.
RHAII는 Red Hat이 제공하는 vLLM 기반의 추론용 서버입니다.
Kubernetes 등의 오케스트레이터 (Orchestrator) 환경을 사용하지 않고, podman run만으로 간편하게 테스트할 수 있는 방법입니다.
Spyre for Power의 기본적인 사용법인 ai-services를 사용하는 방법은 아래 기사에 정리해 두었습니다.
-
서버 : IBM Power (Spyre 가속기 탑재)
-
OS : RHEL 9.6
-
컨테이너 런타임 (Container Runtime) : Podman
-
컨테이너 이미지 (Container Image) :
registry.redhat.io/rhaii/vllm-spyre-rhel9:3.4.0 -
모델 :
ibm-granite/granite-3.3-8b-instruct
먼저, 탑재되어 있는 Spyre (IBM AIU)의 PCIe ID를 확인합니다.
1014:06a7
이 Spyre의 디바이스 ID이므로, -d로 Spyre만 표시할 수 있습니다.
lspci -d 1014:06a7
실행 예시:
# lspci -d 1014:06a7
0381:50:00.0 Processing accelerators: IBM Spyre Accelerator (rev 02)
0382:60:00.0 Processing accelerators: IBM Spyre Accelerator (rev 02)
...
컨테이너 기동 시 PCIe ID가 필요합니다.
복사하기 쉽도록 한 줄로 표시할 수 있는 명령어는 다음과 같습니다.
lspci -d 1014:06a7 | awk '{print $1}' | paste -sd" " -
실행 예시:
0381:50:00.0 0382:60:00.0 0383:70:00.0 0384:80:00.0
다음 환경 변수를 설정한 후 podman run을 실행합니다.
AIU_IDS는 사용할 카드를 제한하고 싶은 경우 수동으로 지정해 주세요.
export AIU_IDS="$(lspci -d 1014:06a7 | awk '{print $1}' | paste -sd" " -)"
export HOST_MODELS_DIR=/var/lib/ai-services/models
export VLLM_MODEL_PATH=/models/ibm-granite/granite-3.3-8b-instruct
...
주요 옵션 설명:
| 옵션 | 내용 |
|---|---|
--device=/dev/vfio | Spyre 디바이스를 컨테이너에 전달 |
-v "${HOST_MODELS_DIR}:/models" | 호스트 상의 모델 디렉토리를 마운트 |
AIU_PCIE_IDS | 사용하는 Spyre 카드의 PCIe ID |
VLLM_SPYRE_USE_CB | Continuous Batching을 활성화 (1로 설정 시 ON) |
--memory=100G | 컨테이너의 메모리 상한 |
-p 8000:8000 | API 서버를 호스트 측으로 포트 포워딩 (Port Forwarding) |
-tp | Tensor Parallel 사이즈 ※사용하는 Spyre 카드 매수를 지정 |
--enable-prefix-caching | 프리픽스 캐싱 (Prefix Caching)을 활성화 |
기동 후에는 웜업 (Warm-up) 처리가 진행됩니다. 첫 기동 시에는 모델 컴파일을 수행하기 때문에 완료까지 수 분이 소요됩니다.
---- IBM AIU Device Discovery...
---- --> Detecting PCIe devices...
---- --> Detected: 5 AIU PFs, 0 AIU VFs, 0 NICs, 1 NVMEs
...
Application startup complete.가 표시되면 API 서버 기동이 완료된 것입니다.
웜업에는 이번 환경에서 약 2분 45초가 소요되었습니다 (컴파일 캐시가 활성화된 경우).
보충: 로그에 [PRECOMPILED_WARN]
가 나타날 수 있습니다. 이는 컴파일된 캐시 (Compiled Cache)의 버전이나 모델 경로가 다를 때 발생하는 경고이며, 동작에는 영향을 미치지 않습니다.
API 서버가 시작되면, curl을 사용하여 요청을 보내 확인해 보겠습니다.
curl -X POST -H "Content-Type: application/json" -d '{
"model": "/models/granite-3.3-8b-instruct",
"prompt": "日本の首都はどこですか?端的に教えてください。",
...
응답 예시:
{
"id": "cmpl-9fc82009a691cbb9",
"object": "text_completion",
...
정상적으로 답변이 돌아왔습니다.
기왕 하는 김에, 브라우저에서 사용할 수 있는 채팅 UI (Chat UI)도 시도해 보겠습니다.
Mac 상에서 OpenWebUI를 Podman으로 실행하고, 방금 실행한 vLLM API에 연결합니다.
podman run -d \
-p 7860:8080 \
-v open-webui:/app/backend/data \
...
http://localhost:7860/에 접속하면 OpenWebUI 화면이 표시됩니다.
OpenAI API의 연결 관리 설정에 실행 중인 서버의 연결 정보를 입력합니다.
API 키는 설정하지 않았으므로 임의의 값(예: vllm)을 입력합니다.
연결 대상으로 vLLM의 API 엔드포인트 (Endpoint)를 지정함으로써, Granite 모델과 브라우저를 통해 채팅할 수 있게 됩니다.
RHAII 컨테이너를 사용함으로써, IBM Spyre 가속기 (Accelerator) 상에서의 LLM 추론을 간단한 podman run 명령만으로 테스트할 수 있음을 확인했습니다.
- Spyre 카드의 PCIe ID를 환경 변수에 설정하여 전달하는 것만으로 디바이스가 인식됨
- 웜업 (Warm-up)을 포함하여 수 분 이내에 OpenAI 호환 API 서버가 시작됨
- OpenWebUI 등 기존의 UI 도구와 그대로 연동 가능
간편하게 시도할 수 있는 구성이므로, 우선 동작 확인이나 벤치마크 (Benchmark)의 출발점으로 추천합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기