作者:

英特尔创新大使 张晶

英特尔开发者技术推广工程师 李翊玮

DeepSeek-R1在春节期间引发了全球科技界的热度,DeepSeek-R1 是由 DeepSeek 开发的开源推理模型,用于解决需要逻辑推理、数学问题解决和实时决策的任务。使用 DeepSeek-R1,您可以遵循其逻辑,使其更易于理解,并在必要时对其输出提出质疑。此功能使推理模型在需要解释结果的领域(如研究或复杂决策)中具有优势。 AI 中的蒸馏从较大的模型创建更小、更高效的模型,在减少计算需求的同时保留了大部分推理能力。DeepSeek 应用了这项技术,使用 Qwen 和 Llama 架构从 R1 创建了一套提炼的模型。这使我们能够在普通笔记本电脑上本地试用 DeepSeek-R1 功能。 在本教程中,我们将研究如何使用 OpenVINO 运行 DeepSeek-R1 蒸馏模型。

在创新大使的文章《赶紧在本地运行与OpenAI-o1能力近似的DeepSeek-R1模型》也收到了读者的热烈反馈。很多读者问:DeepSeek-R1除了部署在RTX-4060上,能否部署到英特尔Ultra Core 的CPU、GPU或NPU上?

本文将基于OpenVINO™ GenAI库,介绍使用三行Python代码,将DeepSeek-R1模型到英特尔Core Ultra CPU、GPU或NPU的完整过程。

1.1  硬件介绍

本文是用KHARAS(深圳市世野科技 Intel® Core™ Ultra Processor (Series 2) AI PC Dev Kit | Khadas ) 提供基于Intel Ultra的AI PC,只有435g, 以下为其参数

主要特点

  • Intel® Core™ Ultra Processor Series 2 
  • AI Performance: up to 115 TOPS 
  • NPU: 4.0 AI Engine, up to 47 TOPS 
  • GPU: Intel® Arc™ 140V, up to 64 TOPS 
  • 32GB LPDDR5X Memory, 1TB PCIe SSD 
  • Copilot+ PC: Windows AI assistant 
  • Battery Life Optimization
  • WiFi+ Bluetooth: AX211D2 

应用场景

AI PC 开发:

  • 以 AI 为中心的硬件和软件的进步使 AI 在 PC 上成为可能。将项目从早期 AI 开发无缝过渡到基于云的训练和边缘部署。

 多个处理器中的 AI 加速:

  • 英特尔®酷睿™ Ultra 7 258V 处理器通过混合架构将 CPU、GPU 和 NPU 相结合,并通过高带宽内存和缓存进行增强,从而加速 AI。 

Intel AI PC 开发支持:

  • 通过针对 Intel CPU 和 GPU 优化的 OpenVINO™ 工具包和 ONNX 运行时获得 Intel 官方支持。

1.2 什么是OpenVINOTM GenAI库?

回到标题, 我们将用OpenVINO™ GenAI库基于OpenVINO™工具套件和运行时,提供C++/Python API,支持生成式AI模型在英特尔®硬件平台上快速部署。

Github仓:https://github.com/openvinotoolkit/openvino.genai

1.3  搭建OpenVINOTM GenAI开发环境

只需两条安装命令,即可完成OpenVINOTM GenAI开发环境的搭建:

# 安装OpenVINO GenAI

pip install openvino-genai

# 安装optimum-intel,用于转换并量化生成式AI模型

pip install pip install optimum-intel[openvino]

1.4  下载并量化DeepSeek-R1模型

请先使用下面的命令,从ModelScope下载DeepSeek-R1-Distill-Qwen-1.5B模型到本地:

# 安装ModelScope

pip install modelscope

# 下载DeepSeek-R1-Distill-Qwen-1.5B模型

modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B

1.5 使用 Optimum-CLI 工具转换模型

本文使用optimum-intel命令,将DeepSeek-R1-Distill-Qwen-1.5B PyTorch格式模型转换为OpenVINOTM IR格式模型,并完成FP16、INT8或INT4量化。

 Optimum Intel 是 Transformers 和 Diffusers 库与 OpenVINO  之间的接口,用于加速 Intel 架构上的端到端管道。它提供易于使用的 cli 界面,用于将模型导出为 OpenVINO 中间表示 (IR) 格式。

以下命令演示了使用 optimum-cli 导出模型的基本命令

optimum-cli export openvino --model <model_id_or_path> --task <任务> <out_dir>

其中 --model 参数是 HuggingFace Hub 中的模型 ID 或带有 model 的本地目录(使用 .save_pretrained 方法保存),--task 是  导出的模型应该解决的支持任务之一。对于 LLM,建议使用 text-generation-with-past。如果模型初始化需要使用远程代码,则应额外传递 --trust-remote-code 标志。

optimum-cli export openvino --model d:\DeepSeek-R1-Distill-Qwen-1___5B --task text-generation-with-past --weight-format int4 --group-size 128 --ratio 0.8 --sym d:\dsr1_int4

optimum-cli export openvino --model d:\DeepSeek-R1-Distill-Qwen-1___5B --task text-generation-with-past --weight-format int8 d:\dsr1_int8

optimum-cli export openvino --model d:\DeepSeek-R1-Distill-Qwen-1___5B --task text-generation-with-past --weight-format fp16 d:\dsr1_fp16

设置 --weight-format 分别为 fp16、int8 或 int4。这种类型的优化可以减少内存占用和推理延迟。默认情况下,int8/int4 的量化方案是非对称的,要使其对称化,您可以添加 --sym。

对于 INT4 量化,您还可以指定以下参数:

--group-size 参数将定义用于量化的组大小,-1 将导致每列量化。

--ratio 参数控制 4 位和 8 位量化之间的比率。如果设置为 0.9,则意味着 90% 的层将被量化为 int4,而 10% 的层将被量化为 int8。

较小的 group_size 和 ratio 值通常会以牺牲模型大小和推理延迟为代价来提高准确性。您可以使用 --awq 标志启用在模型导出期间以 INT4 精度额外应用 AWQ,并使用 --datasetparameter 提供数据集名称(例如 --dataset wikitext2)

注意

1. 应用 AWQ 需要大量的内存和时间。

2. 模型中可能没有匹配的模式来应用 AWQ,在这种情况下,将跳过它。

1.6  编写DeepSeek-R1的推理程序

获得DeepSeek-R1的OpenVINO™ IR模型后,即可使用OpenVINO™ GenAI库编写推理程序,仅需三行Python代码,如下所示:

import openvino_genai

#Will run model on CPU, GPU or NPU are possible options

pipe = openvino_genai.LLMPipeline("D:\dsr1_int4", "GPU")

print(pipe.generate("Prove the Pythagorean theorem.", max_new_tokens=4096))

运行视频如下所示:

请插入3linecodes.mp4

1.7  总结

使用OpenVINO™ GenAI库可以方便快捷的将生成式AI模型本地化部署到英特尔 Core Ultra CPU、GPU或NPU上。

参考文献:openvino_notebooks/notebooks/deepseek-r1/deepseek-r1.ipynb at latest · openvinotoolkit/openvino_notebooks · GitHub

Logo

为开发者提供丰富的英特尔开发套件资源、创新技术、解决方案与行业活动。欢迎关注!

更多推荐