-
#2 vLLM 과 LoRA 기반 Fine-tuningLLM 2025. 3. 17. 22:40
1. vLLM이란?
vLLM은 대규모 언어 모델(LLM)의 추론 및 서빙을 효율적으로 수행하기 위한 오픈 소스 라이브러리입니다. PagedAttention 기법을 활용하여 메모리 사용을 최적화하며, 기존 🤗 Transformers 대비 최대 24배 빠른 추론 속도를 제공합니다.
이 글에서는 vLLM을 활용한 모델 로드, API 서버 배포, 그리고 LoRA 기반의 Fine-tuning 방법까지 자세히 설명하겠습니다.
2. vLLM 설치 방법
vLLM은
pip
을 통해 간단하게 설치할 수 있습니다.pip install vllm
vLLM은 PyTorch 및 Transformers 라이브러리와 호환되므로, 해당 라이브러리들이 설치되어 있어야 합니다. 필요 시 아래 명령어로 추가 패키지를 설치하세요.
pip install torch transformers
3. 모델 로드 및 사용
vLLM을 사용하여 로컬 모델을 로드하고 추론을 수행할 수 있습니다.
기본 모델 로드 및 텍스트 생성
from vllm import LLM, SamplingParams # 모델 초기화\llm = LLM(model="gpt-4o") # 프롬프트 설정 prompt = "로봇이 그림 그리기를 배우는 짧은 이야기를 들려주세요:" # 샘플링 파라미터 설정 sampling_params = SamplingParams(temperature=0.8, top_p=0.95, max_tokens=100) # 출력 생성 outputs = llm.generate(prompt, sampling_params) print(outputs[0].outputs[0].text)
이 코드에서는
gpt4o
모델을 사용하여 주어진 프롬프트에 대한 텍스트를 생성합니다.
4. vLLM API 서버 배포
vLLM은 FastAPI를 활용하여 API 서버 형태로 모델을 배포할 수 있습니다.
python -m vllm.entrypoints.api_server \ --model /path/to/your/model \ --max-model-len=2048 \ --tensor-parallel-size 2
이 명령어를 실행하면 FastAPI 기반의 서버가 실행되며, HTTP 요청을 통해 모델 추론을 수행할 수 있습니다.
API 요청 예제 (Python)
import requests url = "http://localhost:8000/generate" data = {"prompt": "안녕하세요!", "max_tokens": 100} response = requests.post(url, json=data) print(response.json())
이렇게 하면 로컬 서버를 통해 LLM 응답을 받을 수 있습니다.
5. LoRA 어댑터를 활용한 Fine-tuning
LoRA 기반 Fine-tuning 준비
Fine-tuning(미세 조정)을 수행하기 위해 LoRA 어댑터를 적용할 수 있습니다.
필요 패키지 설치
pip install peft datasets
모델 및 데이터셋 준비
from datasets import load_dataset # 학습 데이터 로드 dataset = load_dataset("your_dataset")
LoRA 적용하여 Fine-tuning 수행
from vllm import LLM, SamplingParams from vllm.lora.request import LoRARequest # 모델 및 어댑터 경로 설정 model_path = "mymodel/mymodel" adapter_path = "mymodel/adapter" # 모델 초기화 llm = LLM( model=model_path, dtype=torch.float16, enable_lora=True, max_lora_rank=64, ) # 프롬프트 및 샘플링 파라미터 설정 prompt = "안녕?. 나는 건호야. 너는 누구니?" sampling_params = SamplingParams(temperature=0.7, max_tokens=100) # LoRA 어댑터 적용하여 출력 생성 output = llm.generate( prompt, sampling_params, lora_request=LoRARequest("adapter", 1, adapter_path), ) print(output[0].outputs[0].text)
이렇게 하면 LoRA 어댑터를 적용한 모델을 통해 추론을 수행할 수 있습니다.
'LLM' 카테고리의 다른 글
#1 Llama 3.3 (Ollama) 사용법 + 간단한 FineTuning까지 (0) 2025.03.17