如何在Windows on Snapdragon上运行DeepSeek模型——Llama.cpp和MLC-LLM教程
发表于 2025-02-19 10:42:27

DeepSeek-R1是由深度求索公司开发的开源推理模型,可处理需要逻辑推理、数学问题解决和实时决策的任务。该模型的突出特性之一是能够对其逻辑进行跟踪,因此用户更容易理解其输出,并可以在必要时对其输出提出质疑。

这种透明性在要求结果可解释的领域(例如:研究和复杂决策)内尤为重要。

模型蒸馏是一个通过大型模型创建规模更小、效率更高模型,在减少计算需求的同时保留其大部分推理能力的过程。深度求索公司使用Qwen和Llama架构,应用该技术开发了一套建立在R1基础上的蒸馏模型,这样确保用户可以在标准笔记本电脑上利用DeepSeek-R1的各种功能。

开发人员可以选择几种方案,以便在Windows on Snapdragon的CPU上运行各种模型。

第一种方案是通过 Llama.cpp实现的,这是一个用于在C/ C++中高效实现Meta的LLaMa架构的开源项目。

第二种方案是通过流行的大语言模型平台,例如LMStudio。这样的大语言模型平台可以帮助快速尝试不同的DeepSeek模型变体,同时无需在骁龙X系列笔记本电脑上进行任何额外更改。

同样,为了在Windows on Snapdragon的GPU上运行各种模型,我们提供了两种选择:通过Llama.cpp并使用相关的Adreno程序库包和必要的命令参数,或通过MLC-LLM(为大语言模型量身定制的高级机器学习编译器和高性能部署引擎)。

本教程向您展示了如何利用Llama.cppMLC-LLMWindows on SnapdragonCPUGPU上运行DeepSeek-R1模型。您可以在骁龙X系列笔记本电脑上运行以下步骤。

CPU上运行——Llama.cpp教程

您可以使用Llama.cpp在骁龙X系列所支持设备的CPU上运行DeepSeek。有关利用llama.cpp在GPU上运行的说明,请参看下文。

1. 导航至Release b4739 · ggml-org/llama.cpp · GitHub

2. 在“Assets”选项下,找到llama-bxxxx-bin-win-llvm-arm64.zip,其中xxxx为数字,例如llama-b4601-bin-win-llvm-arm64.zip。下载zip文件并解压缩。

3. 下载DeepSeek蒸馏模型的量化版本,以下示例使用Q4_0。

4. 使用以下命令运行具有llama-cli的模型:

.\llama-cli.exe -m ..\ggml-model-deepseek-r1-distill-qwen-1.5b-Q4_0_pure.gguf -no-cnv -b 128 -ngl 0 -c 2048 -p "Hello"

5. 或者,使用llama-bench对所有三个模型(1.5b、7b和8b)进行基准测试:

.\llama-bench.exe -b 128 -ngl 0 -p 256 -n 100 -m ..\ggml-model-deepseek-r1-distill-qwen-1.5b-Q4_0_pure.gguf -m ..\ggml-model-deepseek-r1-distill-qwen-7b-Q4_0.gguf -m ..\ggml-model-deepseek-r1-distill-llama-8b-Q4_0.gguf

GPU上运行——Llama.cpp教程

参看上文有关使用Llama.cpp在CPU上运行的说明。

1. 导航到https://github.com/ggerganov/llama.cpp/releases/latest。

2. 在“Assets”项下,找到llama-bxxxx-bin-win-llvm-arm64-opencl-adreno.zip,其中xxxx为数字,例如llama-b4601-bin-win-llvm-arm64-opencl-adreno.zip。下载zip文件并解压缩。

3. 按照纯粹的Q4_0模式准备DeepSeek蒸馏模型。(模型准备注意事项:从Hugging Face下载的Q4_0模型通常包含Q6_K量化,在安卓GPU上运行较慢。为了取得最佳性能,应使用纯粹的Q4_0对模型进行量化。如要获得纯粹的Q4_0模型,请在lama-quantize后添加-pure。)

4. 使用以下命令运行具有llama-cli的模型:

.\llama-cli.exe -m ..\ggml-model-deepseek-r1-distill-qwen-1.5b-Q4_0_pure.gguf -no-cnv -b 128 -ngl 99 -c 2048 -p "Hello"

5. 或者,使用llama-bench对所有三个模型(1.5b、7b和8b)进行基准测试:

.\llama-bench.exe -b 128 -ngl 99 -p 256 -n 100 -m ..\ggml-model-deepseek-r1-distill-qwen-1.5b-Q4_0_pure.gguf -m ..\ggml-model-deepseek-r1-distill-qwen-7b-Q4_0.gguf -m ..\ggml-model-deepseek-r1-distill-llama-8b-Q4_0.gguf

GPU上运行——MLC-LLM教程

1.  设置主机

通过https://docs.anaconda.com/anaconda/install/windows/安装Anaconda

conda create -n mlc-venv -c conda-forge "llvmdev=15" "cmake>=3.24" git rust numpy==1.26.4 decorator psutil typing_extensions scipy attrs git-lfs python=3.12 onnx clang_win-64

conda activate mlc-venv

对于其他依赖项,应运行以下命令:

pip install torch==2.2.0 torchvision==0.18.0 torchaudio==2.3.0

编译TVM模块需要高于7.1版本的GCC编译器。您可以通过MinGW发行版(可在nuwen.net上获得)安装GCC编译器,并将编译器路径显式添加到系统PATH环境变量中。

在Windows目标上运行。

2. 下载程序包。

通过构建带有安卓特定编译配置、预编译目标二进制文件和工具的python wheel可以简化安卓MLC-LLM,所有必需的安装程序均可以在 JFrog.io发行版中获得。下载适用于Windows环境的以下程序包:

mlc_llm-utils-win-x86-01_31_2025.zip

mlc_llm_adreno_cpu_01_31_2025-0.1.dev0-cp312-cp312-win_amd64.whl

tvm_adreno_cpu_01_31_2025-0.19.dev0-cp312-cp312-win_amd64.whl

3. 安装程序包

在上文配置的Anaconda环境下,按照下文所示进行设置:

pip install tvm_adreno_cpu_01_31_2025-0.19.dev0-cp312-cp312-win_amd64.whl

pip install mlc_llm_adreno_cpu_01_31_2025-0.1.dev0-cp312-cp312-win_amd64.whl

按照下文检查安装状态:

python -c "import tvm; print(tvm.__path__)"\

python -c "import mlc_llm; print(mlc_llm.__path__)"

Download the utils and extract as below:

mlc_llm-utils-win-x86-01_31_2025

  bin

  ├── mlc_cli_chat.exe

  ├── mlc_llm.dll

  ├── mlc_llm_module.dll

  └── tvm_runtime.dll

4. 编译DeepSeek模型。

给定位于dist/models/Meta -Llama-3-8B-Instruct文件夹中的DeepSeek-R1-Distill-Qwen-1.5B,编译过程应遵循下文说明的各个阶段:

    • 生成配置

# 生成配置

python -m  mlc_llm gen_config \

     ./dist/models/DeepSeek-R1-Distill-Qwen-1.5B \

     --quantization q4f16_0 \

     --conv-template  deepseek_r1_qwen \

     --prefill-chunk-size 256  \

     -o ./dist/DeepSeek-R1-Distill-Qwen-1.5B-q4f16_0-MLC

  • 量化各个参数

# 量化各个参数

python3 -m mlc_llm convert_weight \

        ./dist/models/DeepSeek-R1-Distill-Qwen-1.5B \

        --quantization q4f16_0 \

        -o ./dist/DeepSeek-R1-Distill-Qwen-1.5B-q4f16_0-MLC

  • 编译模型

python3 -m mlc_llm compile \

        ./dist/DeepSeek-R1-Distill-Qwen-1.5Bq4f16_0-MLC/mlc-chat-config.json \

        --device  windows:adreno_x86 \

        -o ./dist/libs/DeepSeek-R1-Distill-Qwen-1.5B-q4f16_0-adreno.dll

此处您需要选择位于./dist/DeepSeek-R1-Distill-Qwen-1.5B-q4f16_0-MLC的量化权重和位于./dist/libs/DeepSeek-R1-Distill-Qwen-1.5B-q4f16_0-adreno.dll的模型库。

5. 在安卓GPU上运行。

Windows既支持本机命令行界面 (CLI) 方法,也支持运行模型编译的Python方法。

  • 本地CLI

使用mlc_llm-utils-win-x86-01_31_2025.tar.bz2中预编译的目标cli工具。下文列出了cli工具mlc_cli_chat.exe及其依赖项。

mlc_llm-utils-win-x86-01_31_2025

  bin

  ├── mlc_cli_chat.exe

  ├── mlc_llm.dll

  ├── mlc_llm_module.dll

  └── tvm_runtime.dll

现在,将dist/DeepSeek-R1-Distill-Qwen-1.5B和dist/libs/DeepSeek-R1-Distill-Qwen-1.5B-q4f16_0- adre_dll复制到目标设备

在目标机器上启动终端并运行以下命令,这样可以启动一项交互式聊天:

mlc_cli_chat.exe --model <PATH to DeepSeek-R1-Distill-Qwen-1.5B-q4f16_0-MLC> --model-lib <PATH to DeepSeek-R1-Distill-Qwen-1.5B-q4f16_0-adreno.dll> --device opencl

  • Python CLI

在具有 mlc-venv环境的Anaconda命令行下,执行以下命令:

mlc_cli_chat_exe——model <PATH to DeepSeek-R1-Distill-Qwen-1.5B-q4f16_0-MLC>——model-lib <PATH to DeepSeek-R1-Distill-Qwen-1.5B-q4f16_0-adreno.dll>——device opencl

python -m mlc_llm chat --device opencl --model-lib <PATH to DeepSeek-R1-Distill-Qwen-1.5B-q4f16_0-adreno.dll> <PATH to DeepSeek-R1-Distill-Qwen-1.5B-q4f16_0-MLC>

后续步骤

现在轮到你了。我们的工程师已经将教程汇集在一起,您可以在CPU和GPU上对DeepSeek-R1模型进行实验。请参阅本教程,以学习如何利用Ollama在Windows on Snapdragon的GPU上运行DeepSeek-R1模型以及如何在LM Studio上运行DeepSeek-R1模型

与此同时,微软正将经过NPU优化的DeepSeek-R1版本直接整合到Copilot+个人电脑上,并从高通骁龙X系列设备开始。

微软公司还宣布,目前可以在骁龙支持的Copilot+个人电脑上获得采用ONNX优化的蒸馏版DeepSeek R1模型。对于短提示词(<64个token),该类模型可确保小于70毫秒的首个token延迟时间,25-40个token/秒的吞吐率,对于较长的响应可达到更高的吞吐量。今天就从下载VS Code的人工智能扩展工具开始吧

是否想要了解更多关于Windows on Snapdragon上深度求索的信息?请加入我们的开发人员Discord社区,以获得更多见解,并与其他开发人员和本公司的技术专家进行实时对话。

在所发布内容中表达的观点仅为原作者的个人观点,并不代表高通公司或其子公司(以下简称为“高通公司”)的观点。所提供的内容仅供参考之用,而并不意味着高通公司或任何其他方的赞同或表述。本网站同样可以提供非高通公司网站和资源的链接或参考。高通公司对于可能通过本网站引用、访问、或链接的任何非高通公司网站或第三方资源并没有做出任何类型的任何声明、保证、或其他承诺。

高通品牌产品属于高通科技公司和/或其子公司的产品。

关于作者

德旺·阿加瓦尔

高级产品经理

阅读更多

迪利普·卡普尔

阅读更多

CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
微博关注
【免责声明:CSDN本栏目发布信息,目的在于传播更多信息,丰富网络文化,稿件仅代表作者个人观点,与CSDN无关。其原创性以及文中陈述文字和文字内容未经本网证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本网不做任何保证或者承诺,请读者仅作参考,并请自行核实相关内容。您若对该稿件有任何怀疑或质疑,请立即与CSDN联系,我们将迅速给您回应并做处理。】