一、前言
随着人工智能技术的不断发展,越来越多的企业和开发者开始重视本地大模型的部署与应用。相比云端服务,本地模型在数据隐私、响应速度以及自定义方面具有独特优势。本文将从理论到实战,详细解析如何利用 MATLAB 这一强大计算工具结合 Ollama 构建和部署本地 AI 大模型,带你走进智能应用新时代。
二、核心技术概述
1. MATLAB 的优势
MATLAB 作为工程计算和算法开发的利器,具备高效的数据处理、可视化以及丰富的工具箱,特别适用于 AI 算法建模、数据仿真和结果分析。无论是传统的机器学习还是深度学习模型,MATLAB 都能提供一站式的开发环境。
2. AI 大模型的发展趋势
AI 大模型(Large Language Models、视觉模型等)在自然语言处理、图像识别等领域取得了突破性进展。对于需要自定义算法和模型调优的场景,本地部署不仅可以降低延迟,更能确保数据安全。
3. Ollama:本地 AI 模型运行平台
Ollama 是一款致力于本地部署 AI 模型的工具平台,支持多种大模型的快速加载与调用。包括DeepSeekR1等大模型。
三、软件下载与环境配置
1. 软硬件要求
(1)MATLAB:需要 MATLAB R2024a 或更高版本,配置LLMs with MATLAB库。
(2)Ollama:安装 Ollama 平台,确保本地环境中能顺利运行大模型。
(3)硬件配置:建议使用具备较高 GPU 性能的电脑。
2. 软件下载
2.1. Ollama下载
官网链接:https://ollama.com/ 。点击Download下载,点击Models可见所有模型,点击某个模型连接,比如qwen2,可以看到模型详细的介绍。(下载需魔法,百度网盘资源关注公众号回复关键词''MatGPT''可免费领取)。
下载完成后,双击安装文件,点击「Install」开始安装,会默认安装到C盘,路径如下:C:\Users%username%\AppData\Local\Programs\Ollama,并不会让用户自定义选择安装路径。
2.2. 配置环境变量(必须)
默认存放Ollama模型目录为C:/Users//.ollama/models。可通过以下命令更改模型安装时的存放目录,从而减少C盘负担。
# 只设置当前用户(需要先创建D:\ollama_models目录)
setx OLLAMA_MODELS "D:\ollama_models"
# 为所有用户设置(需要先创建D:\ollama_models目录)
setx OLLAMA_MODELS "D:\ollama_models" /M
或者可以本地部署环境变量,通常可选择这个:
变量名(N):OLLAMA_MODELS
变量值(V):D:\Work\ollama\models
2.3. 配置端口(可选)
Ollama API 默认绑定在本机地址 http://localhost:11434,只能在安装了 Ollama 的系统上直接调用;如果需要在网络中提供服务,则必须通过修改系统环境变量来更改 API 的监听地址和端口。
变量名(N):OLLAMA_HOST
变量值(V): :8000
2.4. 允许浏览器跨域请求(可选)
Ollama 默认只允许来自127.0.0.1和0.0.0.0的跨域请求,如果你计划在其它前端面板中调用 Ollama API。
变量名(N):OLLAMA_ORIGINS
变量值(V): *
2.5. LLMs with MATLAB库
在系统命令提示符下,运行下述命令将LLMs with MATLAB库克隆至本地工作路径。(需要魔法,百度网盘资源关注公众号回复关键词可免费领取)。
git clone https://github.com/matlab-deep-learning/llms-with-matlab.git
使用addpath
将目录添加到 MATLAB 路径或者将其添加为matlab toolbox,或者可在matlab内部设置路径。
addpath('路径/llms-with-matlab-main');
四、本地调用Ollama
4.1. AI 模型管理
以下是模型交互命令,如果本地没有该模型,则会先下载模型再运行,首次运行启动可能略慢。
ollama list:显示模型列表。
ollama show:显示模型的信息
ollama pull:拉取模型
ollama push:推送模型
ollama cp:拷贝一个模型
ollama rm:删除一个模型
ollama run:运行一个模型
可以通过按下 Win+R 快捷键,在弹出的“运行”窗口中输入 cmd,打开命令提示符,从而部署本地AI模型。(此时默认下载到C盘)
或"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe",打开该软件进行模型交互命令。(此时下载到上述环境变量地址)执行命令,
4.2. ollama终端交互示例
利用下述命令创建本地模型,并进行终端交互。
ollama pull llama3.2
五、matlab+Ollama
5.1. 简单示例
在下载并配置完成LLMs with MATLAB库后,可以调用ollamaChat
类创建与本地ollama的连接,这里以llama3.2为例:
chat=ollamaChat('llama3.2');
chat.generate('你是谁')
5.2. 设置循环聊天
官方案例:
%% 设置聊天循环
%%配置模型
%设置每次聊天会话允许的最大字数,并定义关键字,当用户输入该关键字时,该关键字将结束聊天会话。
wordLimit = 2000;
stopWord = "end";
%创建一个实例ollamaChat来执行聊天,创建一个实例messageHistory来存储会话历史记录。
chat = ollamaChat("llama3.2"); % qwen2:7b
messages = messageHistory;
%% 聊天循环
% 开始聊天并保持聊天,直到出现stopWord设置的语句出现
totalWords = 0;
messagesSizes = [];
%%
% 主循环会无限地继续下去,直到输入设置好的stopWord或按下Ctrl+ c
while true
query = input("User: ", "s");
query = string(query);
%dispWrapped("User", query)
%%
% 如果您输入了stopWord,则显示消息并退出循环。
if query == stopWord
disp("AI: Closing the chat. Have a great day!")
break;
end
numWordsQuery = countNumWords(query);
%%
% 如果查询超过字数限制,则显示错误消息并停止执行。
if numWordsQuery>wordLimit
error("Your query should have fewer than " + wordLimit + " words. You query had " + numWordsQuery + " words.")
end
%%
% 跟踪每条消息的大小和到目前为止使用的总字数。
messagesSizes = [messagesSizes; numWordsQuery]; %#ok
totalWords = totalWords + numWordsQuery;
%%
% 如果总字数超过限制,则从会话开始时删除消息,直到不再使用为止。
while totalWords > wordLimit
totalWords = totalWords - messagesSizes(1);
messages = removeMessage(messages, 1);
messagesSizes(1) = [];
end
%%
% 将新消息添加到会话并生成新的响应。
messages = addUserMessage(messages, query);
[text, response] = generate(chat, messages);
dispWrapped("AI", text)
%%
% 计算回复中的字数并更新总字数。
numWordsResponse = countNumWords(text);
messagesSizes = [messagesSizes; numWordsResponse]; %#ok
totalWords = totalWords + numWordsResponse;
%%
% 向会话添加响应。
messages = addResponseMessage(messages, response);
end
%% |Helper Functions|
% 该函数用于计算文本字符串中的单词数
function numWords = countNumWords(text)
numWords = doclength(tokenizedDocument(text));
end
%%
% 该函数显示从前缀挂起缩进的换行文本
function dispWrapped(prefix, text)
indent = [newline, repmat(' ',1,strlength(prefix)+2)];
text = strtrim(text);
disp(prefix + ": " + join(textwrap(text, 70),indent))
end
%%
标签:AI,ollama,模型,%%,MATLAB,ChatGPT,Ollama
From: https://blog.csdn.net/2303_77200324/article/details/145443781