ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #2 vLLM 과 LoRA 기반 Fine-tuning
    LLM 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
Designed by Tistory.