【DeepSeek】R1 入門指南:架構、訓練、本地部署和硬體需求
DeepSeek 改進大型語言模型推理能力的新方法
DeepSeek 透過強化學習(RL)引入了一種創新方法,以提升大型語言模型(LLMs)的推理能力,這一方法在他們近期發佈的論文《DeepSeek-R1 》中有詳細闡述。這項研究在透過純強化學習而無需大量監督微調來增強LLM 解決複雜問題的能力方面,代表了一個重要的進展。
DeepSeek-R1 的技術概述
模型架構:
DeepSeek-R1 不是一個單一的模型,而是一系列模型,包括:DeepSeek-R1-Zero 和DeepSeek-R1。
讓我說明一下DeepSeek-R1 和DeepSeek-R1-Zero 之間的關鍵區別:
主要區別
DeepSeek-R1-Zero 代表團隊使用純強化學習而不進行任何監督微調的初步實驗。他們從基礎模型開始,直接應用強化學習,讓模型透過試錯過程發展推理能力。雖然這種方法取得了令人印象深刻的結果(在AIME 2024 上達到71% 的精準率),但在可讀性和語言一致性方面存在一些顯著的限制。該模型擁有6710 億個參數,採用混合專家(MoE)架構,每個標記啟動相當於370 億個參數。這個模型展現了新興的推理行為,如自我驗證、反思和長鏈思維(CoT)推理。
相較之下,DeepSeek-R1 使用了更複雜的多階段訓練方法。它不是純粹依賴強化學習,而是在應用強化學習之前,首先在一小部分經過精心挑選的範例(稱為「冷啟動資料」)上進行監督微調。這種方法解決了DeepSeek-R1-Zero 的限制性,同時實現了更好的效能。該模型同樣保持了6,710 億參數,但在響應的可讀性和連貫性方面表現更佳。
訓練過程比較
訓練方法論:
- 強化學習(RL): 與主要依賴監督學習的傳統模型不同,DeepSeek-R1 廣泛使用RL。訓練利用群體相對策略最佳化(GRPO),專注於精準性和格式獎勵,以在不需要大量標籤資料的情況下增強推理能力。
- 蒸餾技術: 為了普及高性能模型的訪問,DeepSeek 還發佈了從15 億到700 億參數的R1 蒸餾版本。這些模型基於Qwen 和Llama 等架構,顯示複雜的推理能力可以被封裝在更小、更有效率的模型中。蒸餾過程包括使用完整DeepSeek-R1 產生的合成推理資料對這些較小的模型進行微調,從而在降低計算成本的同時保持高效能。
DeepSeek-R1-Zero 的訓練過程非常簡單:
- 從基礎模型開始
- 直接應用強化學習
- 使用基於精準性和格式的簡單獎勵
DeepSeek-R1 的訓練過程則包含四個不同階段:
- 使用數千個高品質範例進行初步監督微調
- 重點針對推理任務進行強化學習
- 通過拒絕採樣收集新的訓練資料
- 在所有類型的任務上進行最終的強化學習
性能指標:
- 推理基準測試: DeepSeek-R1 在各種基準測試中表現出色:
- AIME 2024: 達到79.8% 的通過率,相較之下,OpenAI 的o1–1217 達到79.2%。
- MATH-500: 獲得97.3% 的高分,略高於o1–1217 的96.4%。
- SWE-bench Verified: 在程式設計任務中表現優異,展現了其程式設計能力。
- 成本效益: DeepSeek-R1 的API 定價為每百萬輸入標記0.14 美元,對於快取命中,顯著低於類似模型如OpenAI 的o1。
侷限性與未來工作
論文承認了幾項需要改進的領域:
- 模型在需要特定輸出格式的任務上有時會遇到困難
- 在軟體工程任務上的效能可以進一步提升
- 在多語言環境中存在著語言混合的挑戰
- 少樣本提示(Few-shot prompting)會持續降低效能
未來的工作將重點解決這些限制,並擴展模型在函數呼叫、多輪互動和複雜角色扮演場景等方面的能力。
部署與可訪問性
開源與授權: DeepSeek-R1 及其變體在MIT 許可下發佈,促進了開源合作和商業使用,包括模型蒸餾。此舉對於促進創新和降低AI 模型開發的門檻至關重要。
模型格式: 兩種模型及其蒸餾版本均提供GGML、GGUF、GPTQ 和HF 等格式,允許靈活地在本地部署。
通過DeepSeek 聊天平台的網頁訪問
DeepSeek 聊天平台提供了一個使用者友好的介面,可以無需任何設定即可與DeepSeek-R1 互動。
訪問步驟:
- 訪問DeepSeek 聊天平台
- 註冊一個帳號或登錄已有帳號
- 登錄後,選擇「Deep Think」模式,體驗DeepSeek-R1 的逐步推理能力
通過DeepSeek API 訪問
對於程式設計訪問,DeepSeek 提供了與OpenAI 格式相容的API,允許整合到各種應用中。
使用API 的步驟:
a. 取得API 金鑰:
- 造訪 DeepSeek API 平台建立帳號並產生唯一的API 金鑰
b. 組態你的環境:
- 將base_url 設定為https://api.deepseek.com/v1
- 使用你的API 金鑰進行認證,通常會透過HTTP 頭中的Bearer Token
c. 進行API 通話:
- 使用API 傳送提示並接收DeepSeek-R1 的回應
- 詳細的檔案和範例可在 DeepSeek API 檔案中找到
在本地運行DeepSeek-R1
兩種模型(R1 和R1-Zero):
- 硬體需求: 由於其龐大的規模,完整模型需要顯著的硬體支援。建議使用具有大量VRAM(如Nvidia RTX 3090 或更高)的GPU。對於CPU 使用,至少需要48GB 的RAM 和250GB 的磁碟空間,儘管沒有GPU 加速,效能會較慢。
- 蒸餾模型: 為了在資源需求較低的硬體上進行本地部署,DeepSeek 提供了蒸餾版本。這些模型的參數範圍從15 億到700 億,使其適合具有更適度硬體的系統。例如,7B 模型可以在至少12GB VRAM 的GPU 或在CPU 上以GGML/GGUF 格式運行,所需RAM 大約為16GB。
本地運行的軟體工具:
- Ollama:你可以使用Ollama 在本地提供模型服務:Ollama 是一個用於在你的機器上本地運行開源AI 模型的工具。你可以在 Ollama 下載頁面 下載它。
接下來,你需要本地下載並運行DeepSeek R1 模型。
Ollama 提供了不同大小的模型——基本上,模型越大,AI 越聰明,但需要更好的GPU。以下是模型系列:
為了開始實驗DeepSeek-R1,建議從較小的模型開始,以熟悉設定並確保與你的硬體相容。你可以透過打開終端並執行以下命令來啟動這個過程:
ollama run deepseek-r1:8b- 1.5B 版本(最小):
ollama run deepseek-r1:1.5b - 8B 版本:
ollama run deepseek-r1:8b - 14B 版本:
ollama run deepseek-r1:14b - 32B 版本:
ollama run deepseek-r1:32b - 70B 版本(最大/最聰明):
ollama run deepseek-r1:70b
通過Ollama 向本地下載的DeepSeek-R1 傳送請求:
Ollama 提供了一個API ,可以以程式設計方式與DeepSeek-R1 互動。確保Ollama 伺服器在本地運行後再進行API 請求。你可以透過執行以下命令啟動伺服器:
ounter(lineollama serve
伺服器啟動後,你可以使用curl 傳送請求,如下所示:
ounter(lineounter(lineounter(lineounter(lineounter(linecurl -X POST <http://localhost:11434/api/generate> -d '{ "model": "deepseek-r1", "prompt": "你的問題或提示內容"}'
將「你的問題或提示內容」取代為你希望提供給模型的實際輸入。該指令向本機Ollama 伺服器傳送POST 請求,伺服器使用指定的DeepSeek-R1 模型處理提示並傳回產生的回應。
本地運行/訪問模型的其他方法包括:
- vLLM/SGLang: 用於本地提供模型。對於蒸餾版本,可以使用類似以下的命令:
vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-32B — tensor-parallel-size 2 — max-model-len 32768 — enforce-eager- llama.cpp: 你也可以使用llama.cpp 在本機上運行模型。
結論
從DeepSeek-R1-Zero 到DeepSeek-R1 的這一進展,代表了研究中的重要學習歷程。雖然DeepSeek-R1-Zero 證明了純強化學習的可行性,但DeepSeek-R1 展示了將監督學習與強化學習相結合如何能夠建立一個更強大且實用的模型。 (開源大雄)