如何在MATLAB中使用DeepSeek模型

描述

| 作者: Mike Croucher,MathWorks 总部 & 技术小哥,MathWorks 中国


(下文翻译自 MATLAB Central 博客系列 The MATLAB Blog,点击文末“阅读原文”可以直接跳转至该原文。)

在 DeepSeek-R1(https://github.com/deepseek-ai/DeepSeek-R1) AI 模型横空出世后,人们几乎就立马开始询问如何在 MATLAB 中使用这些模型。上周末,MathWorks 的软件测试工程师 Vasileios Papanastasiou 在 LinkedIn 上发了指南帖,今天上午我第一次在自己的机子上根据他的指导尝试了下。  

在本地运行 deepseek-r1:1.5b

我将使用附加功能 “Large Language Models (LLMS) with MATLAB” 以及 ollama,在我的本地机子上运行一个较小的 DeepSeek 模型,并在 MATLAB 中与之交互。按照 Vasileios 的指导,我做的第一件事是:

下载并安装 Ollama: https://ollama.com/download


我在 Windows 上进行了此操作。安装完成后,我打开操作系统的命令行并运行了该命令:


ollama run deepseek-r1:1.5b


这将安装一个 15 亿参数的模型,虽然模型很小,但希望这意味着我不需要担心计算资源的限制。以后我还可以尝试更大的模型。

DeepSeek


现在来看看 MATLAB。Vasileios 建议我们从 GitHub(https://github.com/matlab-deep-learning/llms-with-matlab) 获取附加功能 “Large Language Models (LLMS) with MATLAB”,但我采取了不同的方法。我点击了 MATLAB R2024b 的“环境”中的“附加功能”。

DeepSeek



我在附加功能资源浏览器中搜索 “Large Language Models”,找到后点击 “添加”。这样就完成了下载和安装。

DeepSeek


安装就这样完成了。现在让我们在 MATLAB 中开始使用它!
首先,创建一个 ollamaChat 对象

 

chat = ollamaChat("deepseek-r1:1.5b")
 

 

DeepSeek

终于,我们可以尝试与 AI 对话

txt = generate(chat,"What is the speed of light?")
 

 

DeepSeek



我觉得像这样的 LLM 模型有趣的一点是,你可以反复问同一个问题,每次都会得到不同的答案,这反映了它们的随机性。有时结果只是略有不同

txt = generate(chat,"What is the speed of light?")
 

 

DeepSeek

而有时回复确实会非常冗长,包含很多“思考”的内容

txt = generate(chat,"What is the speed of light?")
 

 

DeepSeek

哇太多字了!

我想这是许多人所说的 AI 冗余(https://en.wikipedia.org/wiki/AI_slop)的一个例子。不过,不管它还说了什么,这个模型似乎相当确定光速是299,792,458米每秒,根据维基百科,这是正确的。这是 DeepSeek 模型的一个非常小的版本,但它仍然可以做一些有用的事情,而且是了解基于 LLM 的 AI 技术优缺点的一种有趣且有意义的方式。
您也不妨试试看,然后告诉我们你的想法!

技术小哥本地测评




在本地部署 DeepSeek,并用 MATLAB 调用,是非常容易的,我并未遇到太多困难就成功了,全过程可以总结为以下步骤:

DeepSeek

 
MATLAB 调用大语言模型的优势之一是,容易对大预言模型的返回结果进行处理。

这里给出两个玩法:
1. 利用字符处理能力,对大语言模型结果的关键信息进行提取。这里我问 DeepSeek 光速是多少 m/s,并反复提问 10 次,对回答结果中的数字进行提取,从而获得更为可靠的结果,代码如下:

 

chat = ollamaChat("deepseek-r1:32b");
raws = {};
for i=1:10
    raws{i} = generate(chat,"光速是多少m/s");
end
%对 DeepSeek 询问10次
processed=[];
for i=1:10
    temp=char(raws{i});
    [a,b] = regexp(temp,'');
    temp=temp(b:end);
    [a,b] = regexp(temp,'[0123456789,(?s)]{2,}');
    temp=temp([a(1):b(1)]);
    temp=replace(temp,',','');
    processed(i)=str2num(temp);
end
%对每次回答中的数字进行提取
median(processed)
%求取中位数
  2. 基于 Text Analytics Toolbox 工具箱的文字处理能力,对 DeepSeek 的回答进行进一步分析,例如我让 DeepSeek 写一些新春祝福,然后对回答进行词云处理,获得了这样的结果。  

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分