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 前置工作

  1. 安裝NVidia繪圖卡驅動程式(根據型號)
    • CUDA (Compute Unified Device Architecture)
    • GPU的Compute Capability數值7以上
    • nvcc: Nvidia CUDA Compiler

vLLM on WSL2 前置工作

vLLM on WSL2 前置工作

2. 安裝WSL Version 2 with Linux

wsl --install
  • 開啟安裝好之Ubuntu圖示,設定管理員的帳號密碼
sudo apt update && sudo apt upgrade
  • 在ubuntu內更新和升級套件

vLLM on WSL2 前置工作

3. 安裝CUDA Toolkit for WSL2(ubuntu)

https://developer.nvidia.com/cuda-toolkit

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