프로젝트/local LLM deploy

local llm 배포하기 - vllm & hugging face

ryanhearts 2025. 2. 21.

목차

0. wsl 설치 (window 한정)

1. git lfs 설치

2. llm 모델 선정 후 다운로드

3. vllm 설치

4. run


0. wsl 설치

vllm이 윈도우를 지원하지 않는 관계로 wsl 설치하여 ubuntu환경 세팅 필요

powershell 관리자 권한 실행

wsl --install

 

여기서 안 넘어가진다.

재부팅 후 다시 powershell을 켜고 wsl --install

설치 완료후 powershell ~ wsl 입력하면 ubuntu 환경으로 들어가진다.

 

wsl 최초 접속시 계정 비밀번호를 설정하는데 나중에 git lfs 설치할때 필요하니 메모

 

참조1: https://learn.microsoft.com/ko-kr/windows/wsl/install


1. git lfs 설치

git clone 명령어로 model을 받으면 용량이 큰 safetensor를 제대로 못 받아오는 경우가 있다. 이를 방지하기위해

step 1. git clone > safetensor를 제외하고 받은 뒤 

step 2. git lfs pull > safetensor를 따로 받는다

 

따라서 git lfs를 사전에 설치.

wsl 내부에서 아래 커맨드 순서대로 실행 (sudo 권한이 필요하기때문에 앞서 설정한 계정 비밀번호 입력)

# 패키지 저장소 연결
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash

# 패키지 설치
sudo apt-get install git-lfs

이후 git lfs 입력하여 버전과 사용법 등이 뜨면 설치 완료.

 

참조2: https://github.com/git-lfs/git-lfs/blob/main/INSTALLING.md


2. llm 모델 선정 후 다운로드

사용 목적, 로컬PC 사양(주로 gpu vram) 고려하여 llm 선정

 

여기선 포스팅 목적, 8gb vram을 고려해 1.5B 모델

한동안 이슈였던 DeepSeek R1의 1.5B distillation

deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B

clone repository 클릭

 

다운로드 받을 디렉토리에서 커맨드 입력 (wsl 내부 디렉토리에 받는걸 추천)

아래와 같이 git clone 수행하면서 대용량 파일 제외하고 받는 커맨드 사용

# If you want to clone without large files ....
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B

 

클론한 디렉토리를 확인해보면 weight에 해당하는 .safetensors 파일 크기가 1kb

껍데기

모델 디렉토리 내로 들어간 뒤 git lfs pull을 통해 model weight를 다시 받아줘야 한다.

clone한 디렉토리 내부에서 git lfs pull

이렇게 safetensor까지 받아주면 모델 준비 완료


3. vllm 설치

vllm에 대해 작성한 별도 포스트 참고

vllm 알아보기


4. run

OpenAI-Compatible API Server 띄우기

일반적으로 사용하는 방식. 레퍼런스 자료들이 많은 OpenAI api와 호환도 가능.

[3. vllm 설치] 에서 세팅한 가상환경 내에서 커맨드 실행

python -m vllm.entrypoints.openai.api_server --model /home/jhjun/models/DeepSeek-R1-Distill-Qwen-1.5B/ --port 8008 --max-model-len 1024 --tensor-parallel-size 1

 

위 입력의 의미는

--model /home/jhjun/models/DeepSeek-R1-Distill-Qwen-1.5B/ : Deepseek distill 1.5B 모델의 경로

--port 8008 : 8008번 포트로 서빙

--max-model-len 1024 : 입력 토큰 1024로 제한

--tensor-parallel-size 1 : gpu 1개

커맨드 실행 결과

잘 올라갔으니 8008번 포트로 request

from openai import OpenAI

llm = OpenAI(
    api_key="EMPTY",
    base_url="http://localhost:8008/v1",
)

chat_response = llm.chat.completions.create(
    model="/home/jhjun/models/DeepSeek-R1-Distill-Qwen-1.5B/",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "who are you?"},
    ],
    temperature=0.
)

print(chat_response.choices[0].message.content)

출력

 

참조3: https://docs.vllm.ai/en/stable/getting_started/quickstart.html#quickstart-online

'프로젝트 > local LLM deploy' 카테고리의 다른 글

vllm 설치하기  (0) 2025.02.23