純新手教程:用llama.cpp本地部署DeepSeek蒸餾模型

0. 前言

llama.cpp是一個基于純C/C++實現的高性能大語言模型推理引擎,專為優化本地及云端部署而設計。其核心目標在于通過底層硬件加速和量化技術,實現在多樣化硬件平臺上的高效推理,同時保持低資源占用與易用性。

最近DeepSeek太火了,就想用llama.cpp在本地部署一下試試效果,當然在個人電腦上部署滿血版那是不可能的,選個小點的蒸餾模型玩一玩就好了。

1. 編譯llama.cpp

首先從Github上下載llama.cpp的源碼:

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp

llama.cpp支持多種硬件平臺,可根據實際的硬件配置情況選擇合適的編譯參數進行編譯,具體可以參考文檔docs/build.md

編譯CPU版本

cmake -B build
cmake --build build --config Release -j 8

編譯GPU版本

編譯英偉達GPU版本需要先裝好驅動和CUDA,然后執行下面的命令進行編譯

cmake -B build -DGGML_CUDA=ON -DGGML_CUDA_ENABLE_UNIFIED_MEMORY=1
cmake --build build --config Release -j 8

編譯完成后,可執行文件和庫文件被存放在build/bin目錄下。

2. 模型轉換與量化

本文以DeepSeek R1的蒸餾模型DeepSeek-R1-Distill-Qwen-7B為例進行介紹。

2.1 模型下載與轉換

首先從魔搭社區下載模型:

pip install modelscope
modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --local_dir DeepSeek-R1-Distill-Qwen-7B

下載好的模型是以HuggingFacesafetensors格式存放的,而llama.cpp使用的是GGUF格式,因此需要先要把模型轉換為GGUF格式:

# 安裝python依賴庫
pip install -r requirements.txt
# 轉換模型
python convert_hf_to_gguf.py DeepSeek-R1-Distill-Qwen-7B/

轉換成功后,在該目錄下會生成一個FP16精度、GGUF格式的模型文件DeepSeek-R1-Distill-Qwen-7B-F16.gguf

2.2 模型量化

FP16精度的模型跑起來可能會有點慢,我們可以對模型進行量化以提升推理速度。

llama.cpp主要采用了分塊量化(Block-wise Quantization)和K-Quantization算法來實現模型壓縮與加速,其核心策略包括以下關鍵技術:

  1. 分塊量化(Block-wise Quantization)
    該方法將權重矩陣劃分為固定大小的子塊(如3264元素為一組),每個子塊獨立進行量化。通過為每個子塊分配獨立的縮放因子(Scale)和零點(Zero Point),有效減少量化誤差。例如,Q4_K_M表示每個權重用4比特存儲,且子塊內采用動態范圍調整。

  2. K-Quantization(混合精度量化)
    在子塊內部進一步劃分更小的單元(稱為“超塊”),根據數值分布動態選擇量化參數。例如,Q4_K_M將超塊拆分為多個子單元,每個子單元使用不同位數的縮放因子(如6bit的縮放因子和4bit的量化值),通過混合精度平衡精度與壓縮率。

  3. 重要性矩陣(Imatrix)優化
    通過分析模型推理過程中各層激活值的重要性,動態調整量化策略。高重要性區域保留更高精度(如FP16),低重要性區域采用激進量化(如Q2_K),從而在整體模型性能損失可控的前提下實現高效壓縮。

  4. 量化類型分級策略
    提供Q2_KQ8_K等多種量化級別,其中字母后綴(如_M_S)表示優化級別:

    • Q4_K_M:中等優化級別,平衡推理速度與精度(常用推薦)。
    • Q5_K_S:輕量化級別,側重減少內存占用

    典型場景下,Q4_K_M相比FP16模型可減少70%內存占用,推理速度提升2-3倍,同時保持95%以上的原始模型精度。實際部署時需根據硬件資源(如GPU顯存容量)和任務需求(如生成文本長度)選擇量化策略。

執行下面的命令可將FP16精度的模型采用Q4_K_M的量化策略進行量化:

./build/bin/llama-quantize DeepSeek-R1-Distill-Qwen-7B/DeepSeek-R1-Distill-Qwen-7B-F16.gguf DeepSeek-R1-Distill-Qwen-7B/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf Q4_K_M

量化完成后,模型文件由15.2G減少到4.7G

3. 運行模型

模型量化完后,我們就可以運行模型來試試效果了。llama.cpp提供了多種運行模型的方式:

命令行方式

執行下面的命令就可以在命令行與模型進行對話了:

./build/bin/llama-cli -m DeepSeek-R1-Distill-Qwen-7B/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf -cnv

HTTP Server方式

由于模型是以Markdown格式輸出內容,因此用命令行的方式看著不太方便。llama.cpp還提供HTTP Server的方式運行,交互性要好很多。

首先在終端執行命令

./build/bin/llama-server -m DeepSeek-R1-Distill-Qwen-7B/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf --port 8088

然后打開瀏覽器,輸入地址http://127.0.0.1:8088就可以在網頁上與模型進行交互了,非常方便!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70306.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70306.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70306.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Netty入門詳解

引言 Netty 是一個基于 Java 的高性能、異步事件驅動的網絡應用框架,用于快速開發可維護的高性能網絡服務器和客戶端。它提供了一組豐富的 API,使得開發人員能夠輕松地處理各種網絡協議,如 TCP、UDP 等,并且支持多種編解碼方式&a…

物聯網簡介集合

物聯網(IoT)指的是物理設備(如電器和車輛)之間的互聯互通。這些設備嵌入了軟件、傳感器和連接功能,使其能夠相互連接并交換數據。這項技術實現了從龐大的設備網絡中收集和共享數據,為打造更高效、自動化的系…

【分布式理論11】分布式協同之分布式事務(一個應用操作多個資源):從剛性事務到柔性事務的演進

文章目錄 一. 什么是分布式事務?二. 分布式事務的挑戰三. 事務的ACID特性四. CAP理論與BASE理論1. CAP理論1.1. 三大特性1.2. 三者不能兼得 2. BASE理論 五. 分布式事務解決方案1. 兩階段提交(2PC)2. TCC(Try-Confirm-Cancel&…

【Quest開發】全身跟蹤

軟件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件:Meta Quest3 最終效果:能像meta的操作室沉浸場景一樣根據頭盔移動來推斷用戶姿勢,實現走路、蹲下、手勢匹配等功能 需要借助UnityMovement這個包 GitHub …

AI全棧開發_人工智能AI大模型 Prompt提示詞工程詳解(全方位介紹及運用)

AI引領的第四次工業革命正席卷而來,如何精準把握這一歷史性的機遇,將成為我們這一代人不容忽視且需深入思考與積極行動的重要課題。未來幾年AI將會像計算機一樣快速普及,面對這一歷史性的第一波紅利,你是否已準備好把握機遇&#…

小米平板怎么和電腦共享屏幕

最近嘗試使用小米平板和電腦屏幕分屏互聯 發現是需要做特殊處理的,需要下載一款電腦安裝包:小米妙享 關于這個安裝包,想吐槽的是: 沒有找到官網渠道,是通過其他網絡方式查到下載的 不附錄鏈接,原因是因為地…

java | MyBatis-plus映射和golang映射對比

文章目錄 Java實體類和數據庫的映射1.默認駝峰命名規則2.自定義字段映射3.關閉駝峰命名規則4.JSON序列化映射 Golang1. 結構體與表的映射2. 字段與列的映射3. 關聯關系映射4. 其他映射相關標簽 這篇也是做數據庫映射方面的對比: Java 實體類和數據庫的映射 1.默認…

訊方·智匯云校華為官方授權培訓機構

1.官方授權 訊方智匯云校是華為領先級授權培訓機構(華為授權培訓合作伙伴(HALP)體系,分為認證、優選、領先三個等級,領先級是HALP最高級),代表著華為對培訓合作伙伴在專業能力、師資隊伍、合作…

避免踩雷!CUDA與Anaconda兼容性配置完全手冊

CUDA與Anaconda深度學習環境配置指南 目錄 核心概念解析安裝場景分析版本沖突處理最佳實踐指南常見問題解答 核心概念解析 1. 組件對比表 組件作用域包含內容查看方式NVIDIA驅動系統級GPU底層通信支持nvidia-smiCUDA Toolkit系統級完整開發工具鏈(nvcc等)nvcc --versioncon…

掌握.NET Core后端發布流程,如何部署后端應用?

無論你是剛接觸.NET Core的新手還是已有經驗的開發者,在這篇文章中你將會學習到一系列實用的發布技巧與最佳實踐,幫助你高效順利地將.NET Core后端應用部署到生產環境中 目錄 程序發布操作 Docker容器注冊表 文件夾發布 導入配置文件 網站運行操作 …

一周學會Flask3 Python Web開發-request請求對象與url傳參

鋒哥原創的Flask3 Python Web開發 Flask3視頻教程: 2025版 Flask3 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili request請求對象封裝了從客戶端發來的請求報文信息,我們可以從中獲取所有數據。 request對象包含的常用屬性&…

2025年2月深度實測!DeepSeek、OpenAI o1、Gemini打造爆款應用及對比

我在網上看到了關于DeepSeek R1的各種說法,這是一個開源模型,其能力即便不比OpenAI o1等付費模型強,也與之相當: 由于我在日常工作中廣泛使用這些人工智能模型(使用Cursor AI),我決定看看哪種模型最適合我。 在進行了200次Cursor請求后,我將分享我的實驗結果。 一、…

OpenCV機器學習(6)樸素貝葉斯分類器(Naive Bayes Classifier)cv::ml::NormalBayesClassifier的使用

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 cv::ml::NormalBayesClassifier 是 OpenCV 機器學習模塊中的一部分,用于實現樸素貝葉斯分類器(Naive Bayes Classifier&a…

LLaVA-CoT: Let Vision Language Models Reason Step-by-Step論文解讀

文章目錄 前言一、摘要一、引言二、文獻綜述1. Visual reasoning with large language models2. Chain-of-thought in large language models3. Inference time scaling 三、方法1. Enhancing Reasoning Capability through Structured Thinking1. Reasoning Stages2. Data Pre…

Linux 和 Windows 區別

1. 文件組織 (1)目錄結構 Linux:采用**單一根目錄(/)**結構,所有文件和設備都掛載在這個目錄下。 典型目錄: /home/(用戶目錄)/etc/(配置文件)/bin/(系統可執行文件)/dev/(設備文件)/mnt/(掛載點)Windows:采用多個驅動器(C:\, D:\),每個分區是一個獨立的…

java基礎語知識(8)

類之間的關系 在類之間,最常見的關系有: 依賴(“uses-a”);聚合(“has-a”);繼承(“is-a”)。 依賴:一種使用關系,即一個類的實現需要另一個類的協助&#x…

Linux系統中常見的詞GNU是什么意思?

GNU 是 “GNU’s Not Unix” 的遞歸縮寫,它是一個自由軟件項目,旨在創建一個完全自由的操作系統。這個名字反映了GNU項目的核心理念:它試圖創建一個類Unix的系統,但不是Unix本身。 GNU 項目由 理查德斯托曼(Richard S…

安卓burp抓包,bypass ssl pinning

好久好久沒有發東西了。主要是懶。。。 這幾天在搞apk滲透,遇到了burp無法抓包問題,覺得可以寫下來。 問題描述 1. 一臺安卓手機,裝了面具,可以拿到root 2. 電腦上有burp,設置代理 3.手機和電腦連同一個網段&…

抖音試水AI分身;騰訊 AI 戰略調整架構;百度旗下小度官宣接入DeepSeek...|網易數智日報

抖音試水AI分身,字節旗下AI智能體平臺扣子已與抖音打通,相關功能內測中 2月19日消息,鈦媒體App獨家獲悉,字節旗下AI智能體開發平臺扣子(Coze)已與抖音打通,抖音創作者可在扣子智能體平臺打造AI分…

Python爬蟲實戰:爬取豆瓣電影

目錄 引言 1. 爬蟲基礎 1.1 什么是爬蟲? 1.2 Python爬蟲常用庫 2. 實戰:抓取豆瓣電影Top250 2.1 安裝依賴庫 2.2 發送HTTP請求 ?編輯 2.3 解析HTML ?編輯 2.4 存儲數據 2.5 完整代碼 3. 進階:處理分頁和動態內容 3.1 抓取多頁…