GPU 가상머신에서 LLM 추론 실행하기
목표
이 튜토리얼을 완료하면:
- PyTorch 사전 설치 이미지로 GPU 가상머신 생성
- vLLM으로 Hugging Face LLM 모델 실행
- OpenAI 호환 API 엔드포인트로 모델 쿼리
사전 준비
- H100 또는 A100 인스턴스 (최소 40GB VRAM)
- Hugging Face 계정 및 토큰 (gated 모델 사용 시)
- 공인 IP
1단계: 가상머신 생성
| 항목 | 권장값 |
|---|---|
| 이미지 | CUDA·PyTorch 사전 설치 Ubuntu 이미지 |
| 인스턴스 타입 | G-NHHS-80 (H100 80GB SXM × 1) 또는 상위 |
| 블록 스토리지 | 500 GiB 이상 (모델 저장 공간) |
| 공인 IP | 새로 생성 |
2단계: vLLM 설치
pip install vllm
PyTorch 사전 설치 이미지 사용 시
CUDA, cuDNN, PyTorch가 이미 설치되어 있으므로 vLLM만 추가하면 됩니다.
3단계: 모델 실행
# Mistral 7B 실행 예시
python -m vllm.entrypoints.openai.api_server \
--model mistralai/Mistral-7B-Instruct-v0.2 \
--port 8000 \
--host 0.0.0.0
Hugging Face gated 모델(예: Llama)은 토큰이 필요합니다.
export HUGGING_FACE_HUB_TOKEN="hf_your_token"
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct \
--port 8000 \
--host 0.0.0.0
4단계: 방화벽 설정
방화벽 규칙은 가상 네트워크 단위로 설정합니다. 가상머신이 속한 가상 네트워크의 상세 페이지로 이동해 인바운드 TCP 8000을 허용하세요.
-
네트워크 > 가상 네트워크 목록에서 대상 가상 네트워크를 선택합니다.
-
상세 페이지의 방화벽 규칙 섹션에서 규칙 추가(또는 첫 번째 규칙 추가)를 클릭합니다.
-
다음 값으로 규칙을 추가합니다.
항목 값 프로토콜 TCP소스 <관리자-IP>/32(또는0.0.0.0/0)대상 가상머신 또는 서브넷 CIDR 시작 포트 8000액션 ACCEPT
변경 사항은 최대 1분 이내에 적용됩니다.
5단계: API 쿼리
# 모델 목록 확인
curl http://<PUBLIC_IP>:8000/v1/models
# 텍스트 생성
curl http://<PUBLIC_IP>:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mistral-7B-Instruct-v0.2",
"prompt": "ECI는 무엇인가요?",
"max_tokens": 200
}'
Python 클라이언트:
from openai import OpenAI
client = OpenAI(
base_url="http://<PUBLIC_IP>:8000/v1",
api_key="not-needed"
)
response = client.chat.completions.create(
model="mistralai/Mistral-7B-Instruct-v0.2",
messages=[{"role": "user", "content": "안녕하세요!"}]
)
print(response.choices[0].message.content)
다음 단계
- FastAPI로 API 서 버 배포: 모델을 REST API로 노출
- InfiniBand 벤치마크: 멀티 GPU 분산 추론 시 통신 성능 검증