Running LLM Model Locally, Part 2- vLLM
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版本
Windows 11 WSL2
Windows Subsystem for Linux
安裝和執行各種 Linux 發行版
使用GNU/Linux套件管理員安裝軟體
Unix-like命令列界面
使用GPU加速AI工作負載
2. 安裝WSL Version 2 with Linux
wsl --installsudo apt update && sudo apt upgrade3. 安裝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的情形
4. 確認nvcc路徑
nvcc --versionexport 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檔內
5. 建立Python環境(先在Windows內安裝python, vs code及其WSL套件)
python3 --version # copy the version
conda create -n myenv python=3.10 -y #填入你的python安裝版本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
conda activate myenvpip install vllm
vllm serve facebook/opt-125m視需要在ubuntu內或vs code切換虛擬環境
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}')輸出訊息:
python -m vllm.entrypoints.openai.api_server --model=模型名稱部分模型需要token: 先註冊HuggingFace帳號
可用模型
建立新token,注意開啟inference權限
取名
建立token後,複製到剪貼簿供後續使用
登入後申請agreement
python -m vllm.entrypoints.openai.api_server --model=meta-llama/Llama-3.2-1B-Instruct --max_model_len 4096pip install -U "huggingface_hub[cli]"
huggingface-cli loginexport HF_TOKEN=貼上TOKEN於提示列貼上token
token貼於此
n
token合法
或是設定HF_TOKEN環境變數
 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
測試問題
測試結果
python -m vllm.entrypoints.openai.api_server --model=模型名稱python -m vllm.entrypoints.openai.api_server --model=google/gemma-2-2b但需要token: 先註冊HuggingFace帳號
python -m vllm.entrypoints.openai.api_server --model=google/gemma-2-2bhuggingface-cli login於提示列貼上token
export HF_TOKEN=貼上TOKENError: Out-of-Memeory