Practical Applications of Chatbot
Running LLM Model Locally, Part 2- vLLM
Frameworks for local LLM

Frameworks
GPT4All
LM Studio
Jan
llamafile
llama.cpp
ollama
NextChat
and more...

框架 | 主要用途 | 使用難度 | 模型格式 | GPU | 最佳化技術 | API支援 | GUI |
---|---|---|---|---|---|---|---|
Ollama | 簡單易用的 LLM 運行框架 | ⭐️⭐️⭐️⭐️⭐️ 最簡單 |
GGUF |
✅ 自動選擇最佳資源 | GGUF 內建最佳化 |
✅ REST API & Python API | ❌ |
LLama.cpp | 高效能 LLM 推理 | ⭐️⭐️⭐️ 需手動調整 |
GGUF | ✅ 需手動設置 | GGUF Metal/ROCM 支援 | ❌ (無內建 API,但可手動添加) | ❌ |
Nextchat | LLM 桌面端 GUI | ⭐️⭐️⭐️⭐️ (簡單) | GGUF | ✅ | GGUF | ❌ | ✅ |
vLLM | 高吞吐量的伺服器級推理 | ⭐️⭐️ (較難) | Hugging Face Transformers (HF) | ✅ 強大 GPU 支援 | PagedAttention、FlashAttention | ✅ (REST API) | ❌ |
LM Studio | GUI 工具,類似 Ollama 但有 UI | ⭐️⭐️⭐️⭐️ (簡單) | GGUF | ✅ | GGUF | ✅ (API 支援) | ✅ |
Jan | LLM 伺服器,適合微調 | ⭐️⭐️ (需安裝設定) | GGUF, HF | ✅ | 量化、微調功能 | ✅ (REST API) | ❌ |
Llamafile | 單一二進位文件運行 LLM | ⭐️⭐️ (需安裝設定) | GGUF | ✅ | GGUF | ❌ | ❌ |
GPT4All | GUI 本地 LLM 運行工具 | ⭐️⭐️⭐️⭐️⭐️ 最簡單 |
GGUF, GPTQ | ✅ | GGUF、GPTQ | ✅ (REST API) | ✅ |
來源:GPT-4-turbo 2024/06版本
vLLM Installation
Windows 11 WSL2
vLLM on WSL2 前置工作

Windows Subsystem for Linux
安裝和執行各種 Linux 發行版
使用GNU/Linux套件管理員安裝軟體
Unix-like命令列界面
使用GPU加速AI工作負載
vLLM on WSL2 前置工作

vLLM on WSL2 前置工作

vLLM on WSL2 前置工作
2. 安裝WSL Version 2 with Linux
- 安裝PowerShell (if necessary)
- 安裝WSL(預設安裝ubuntu)
wsl --install
- 開啟安裝好之Ubuntu圖示,設定管理員的帳號密碼
sudo apt update && sudo apt upgrade

- 在ubuntu內更新和升級套件
vLLM on WSL2 前置工作
3. 安裝CUDA Toolkit for WSL2(ubuntu)
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-8

隨選項不同產生不同指令
參考範例:選擇wsl-ubuntu的情形
vLLM on WSL2 前置工作
4. 確認nvcc路徑
nvcc --version
- 找不到nvcc? ('/usr/local/cuda-12.8換成實際安裝路徑)
export PATH="/usr/local/cuda-12.8/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH"
source ~/.bashrc
nvcc --version
nvidia-smi.exe
- 再次檢查路徑是否正確?
可將此兩行加入~/.bashrc檔內
vLLM on WSL2 前置工作
5. 建立Python環境(先在Windows內安裝python, vs code及其WSL套件)
python3 --version # copy the version
conda create -n myenv python=3.10 -y #填入你的python安裝版本
- 找不到conda?
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh
source ~/miniconda3/bin/activate
conda create -n myenv python=3.10 -y #填入你的python安裝版本
code .
在ubuntu內啟動vs code
vLLM on WSL2 安裝vLLM
conda activate myenv
- 安裝vllm & 啟動local server: facebook/opt-125m
pip install vllm
vllm serve facebook/opt-125m
- 啟用myenv虛擬環境(之後每次啟動都需進入虛擬環境)

視需要在ubuntu內或vs code切換虛擬環境
vLLM on WSL2 執行推論
- 從VS Code進入myenv虛擬環境(之後每次啟動都需進入虛擬環境)

vLLM on WSL2 執行推論
from vllm import LLM, SamplingParams
prompts = [
"Hello, my name is",
"The president of the United States is",
"The capital of France is",
"The future of AI is",
]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
llm = LLM(model="facebook/opt-125m")
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
prompt = output.prompt
generate_text = output.outputs[0].text
print(f'指令: {prompt!r}, 答案: {generate_text!r}')

vLLM on WSL2 執行推論
輸出訊息:

Examples
選用模型
python -m vllm.entrypoints.openai.api_server --model=模型名稱
部分模型需要token: 先註冊HuggingFace帳號
可用模型

選用模型

選用模型
建立新token,注意開啟inference權限

選用模型
取名

建立token後,複製到剪貼簿供後續使用
選用模型
Llama-3.2-1B-Instruct

選用模型 以llama-3.2-1B為例
登入後申請agreement
選用模型 以llama-3.2-1B為例

選用模型 以llama-3.2-1B為例
python -m vllm.entrypoints.openai.api_server --model=meta-llama/Llama-3.2-1B-Instruct --max_model_len 4096
huggingface-cli login
於提示列貼上token
export HF_TOKEN=貼上TOKEN

選用模型 以llama-3.2-1B為例
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "meta-llama/Llama-3.2-1B-Instruct",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'
成功啟動於localhost:8000
測試問題
選用模型 以llama-3.2-1B為例
測試結果

Gemma-2-2b
選用模型 以gemma-2-2b為例
python -m vllm.entrypoints.openai.api_server --model=模型名稱
python -m vllm.entrypoints.openai.api_server --model=google/gemma-2-2b
但需要token: 先註冊HuggingFace帳號
選用模型 以gemma-2-2b為例

選用模型 以gemma-2-2b為例
python -m vllm.entrypoints.openai.api_server --model=google/gemma-2-2b
huggingface-cli login
於提示列貼上token
export HF_TOKEN=貼上TOKEN
Error: Out-of-Memeory
Running LLM Locally: Part 2-vLLM
By Leuo-Hong Wang
Running LLM Locally: Part 2-vLLM
- 83