一文搞懂大模型的部署(Ollama 和 vLLM)
Ollama 是一款專注於簡化大型語言模型本地部署和運行的開源框架,基於 Go 語言實現,支持跨平臺運行,並以 “開箱即用” 爲核心理念,適合個人開發者和輕量化場景。
而 vLLM 是一個高效的大模型推理與服務引擎,基於 PyTorch 構建,創新性地引入了 PagedAttention 技術,旨在解決大模型服務中的顯存效率與吞吐量瓶頸,支持張量並行和流水線並行,可橫向擴展至多機多卡集羣。
一、Ollama
****Ollama 是什麼?****Ollama 是一個專注於本地運行大型語言模型(LLM)的工具,支持 macOS/Linux/Windows,ARM 架構設備友好,提供簡潔的命令行接口,適合個人開發者和研究者快速體驗模型。
Ollama 以 “開箱即用” 爲核心理念,專爲個人開發者和輕量化場景設計。
Ollama 基於 Go 語言實現,通過模塊化封裝將模型權重、依賴庫和運行環境整合爲統一容器。這種設計使得用戶無需關注底層依賴,僅需一條命令行即可啓動模型服務。
Ollama 的優勢在於開發友好性,但生產部署時面臨性能、穩定性和運維能力的全方位挑戰。對於關鍵業務系統,建議僅將其作爲實驗階段的驗證環節,而非最終部署方案。
# Linux/macOS 一鍵安裝腳本
curl -fsSL https://ollama.com/install.sh | sh
# 拉取 DeepSeek-R1 模型
ollama pull DeepSeek-R1
# 啓動 DeepSeek-R1 模型
ollama run DeepSeek-R1 # 啓動交互式對話
# 通過 API 調用 DeepSeek-R1 模型
curl http://localhost:11434/api/generate -d '{
"model": "DeepSeek-R1",
"prompt": "爲什麼天空是藍色的?"
}'
二、vLLM
******vLLM(Vectorized Large Language Model Serving System)是什麼?******vLLM 是一個高效的大模型推理與服務引擎,旨在解決大模型服務中的顯存效率與吞吐量瓶頸,適合生產環境部署。
# 安裝 vLLM
pip install vllm # 需要 Python 3.8+ 和 CUDA 11.8+
#啓動 vLLM 推理服務,並使用 DeepSeek-R1 模型
# 單卡啓動 DeepSeek-R1
python -m vLLM.entrypoints.api_server \
--model deepseek/DeepSeek-R1 \
--tensor-parallel-size 1
# 使用 curl 命令調用 DeepSeek-R1 模型的推理服務
curl http://localhost:8000/generate \
-H "Content-Type: application/json" \
-d '{"prompt": "解釋量子糾纏", "max_tokens": 200}'
# 使用 vLLM 的 Python SDK 調用 DeepSeek-R1 模型
from vllm import LLM
llm = LLM("deepseek/DeepSeek-R1")
outputs = llm.generate(["AI 的未來發展方向是"])
print(outputs)
分頁注意力機制(PagedAttention)是什麼?分頁注意力機制借鑑了計算機操作系統中的內存分頁管理,通過動態分配和複用顯存空間,顯著提升大模型推理的效率和吞吐量。
在傳統的大模型推理中,注意力機制(Transformer 的自注意力層)需要爲每個請求的序列分配連續的顯存塊,存儲以下數據:
(1)鍵值緩存(Key-Value Cache,KV Cache):存儲歷史 token 的鍵值對,用於生成後續 token。
(2)中間激活值:計算注意力權重時的中間結果。
vLLM 基於 PyTorch 構建,創新性地引入了 PagedAttention 技術。該技術借鑑操作系統的虛擬內存分頁機制,將注意力鍵值對(KV Cache)存儲在非連續顯存空間,顯著提高了顯存利用率。
PagedAttention 通過分塊管理顯存、動態按需分配和跨請求共享內存,解決了傳統方法中顯存碎片化、預留浪費和併發限制三大瓶頸。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/P-vavPxY-YX0hbpl8layyg