人工智能AI合集:Ollama部署对话语言大模型-网页访问
目录
🍅点击这里查看所有博文
随着人工智能技术的飞速发展,AI已经不再是遥不可及的高科技概念,而是逐渐融入到我们的日常生活中。从智能手机的语音助手到家庭中的智能音箱,再到工业自动化和医疗诊断,AI的应用无处不在。然而,要想真正掌握并应用这些技术,不仅需要理论知识,更需要实践操作。这正是嵌入式AI学习的核心所在。
嵌入式系统,作为现代电子设备的核心,其与AI技术的结合,为智能设备的开发提供了无限可能。从简单的自动化任务到复杂的图像和语音识别,嵌入式AI开发板成为了学习这些技术的理想平台。它们不仅易于操作,而且功能强大,能够满足从初学者到专业人士的各种需求。
对于大多数人来说,日常生活中的无时无刻都能接触的到AI应用。比如平时最常见的停车场的车牌识别、上班打卡机的人脸识别、能自由对话的语音助手等等。它们都有一个共同的特点,就是体积小巧且功能强大。这些应用的落地都离不开嵌入式AI。
随着AI技术的不断发展和普及,我们的生活将变得更加智能、便捷和高效。未来,AI将继续深入到更多领域,为我们的生活带来更多惊喜和便利。无论是智能家居、智能交通、智能医疗还是智能制造,AI都将扮演着重要的角色,推动着科技的不断进步和社会的发展。
因此,学习和掌握AI技术变得愈发重要。只有不断学习、实践和创新,我们才能更好地应对未来的挑战和机遇。
本系列博客所述资料均来自互联网资料,并不是本人原创(只有博客是自己写的)。出于热心,本人将自己的所学笔记整理并推出相对应的使用教程,方面其他人学习。为国内的AI事业发展尽自己的一份绵薄之力,没有为自己谋取私利的想法。若出现侵权现象,请告知本人,本人会立即停止更新,并删除相应的文章和代码。
文章目录
- 目录
- 安装ollama
- 配置局域网访问
- 部署通义千问
- 安装ollama-webui
安装ollama
安装ollama,该工具是一个大模型聚合平台。可以方便管理各种语言模型。运行curl -fsSL https://ollama.com/install.sh | sh执行安装步骤,输入密码Mind@123。
(base) HwHiAiUser@orangepiaipro:~$ curl -fsSL https://ollama.com/install.sh | sh
>>> Downloading ollama...
######################################################################## 100.0%##O#-#
>>> Installing ollama to /usr/local/bin...
[sudo] password for HwHiAiUser:
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.
WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode.
提示开发板没有GPU显卡(WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode.)运行的性能可能较为低下,不知道具体是啥原因暂且忽略吧。
输入ollama --version验证是否安装成功,得到结果ollama version is 0.2.7说明一切正常。
(base) HwHiAiUser@orangepiaipro:~/Downloads/byte-unixbench/UnixBench$ ollama --version
ollama version is 0.2.7
配置局域网访问
设置Ollama配置支持局域网访问,修改/etc/systemd/system/ollama.service文件,在Environment下面再添加一行Environment="OLLAMA_HOST=0.0.0.0:11434"保存即可。
[Unit]
Description=Ollama Service
After=network-online.target[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/home/HwHiAiUser/.local/bin:/usr/local/Ascend/ascend-toolkit/latest/bin:/usr/local/Ascend/ascend-toolkit/latest/compiler/ccec_compiler/bin:/usr/local/miniconda3/bin:/usr/local/miniconda3/condabin:/usr/local/Ascend/ascend-toolkit/laster/bin:/usr/local/Ascend/ascend-toolkit/laster/compiler/ccec_compiler/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin "
Environment="OLLAMA_HOST=0.0.0.0:11434"
[Install]
WantedBy=default.target
运行sudo systemctl daemon-reload重载systemctl,紧接着运行sudo service ollama restart重启服务,最后通过curl http://192.168.101.8:11434测试,若返回Ollama is running则代表设置成功。
(base) HwHiAiUser@orangepiaipro:~$ sudo systemctl daemon-reload
(base) HwHiAiUser@orangepiaipro:~$ sudo service ollama restart
(base) HwHiAiUser@orangepiaipro:~$ curl http://192.168.101.8:11434
Ollama is running(base)
部署通义千问
根据ollama官方文档的描述,最少要有8G的内存才能使用7B的语言模型。
| Model | Parameters | Size | Download |
|---|---|---|---|
| Llama 3 | 8B | 4.7GB | ollama run llama3 |
| Llama 3 | 70B | 40GB | ollama run llama3:70b |
| Phi 3 Mini | 3.8B | 2.3GB | ollama run phi3 |
| Phi 3 Medium | 14B | 7.9GB | ollama run phi3:medium |
| Gemma 2 | 9B | 5.5GB | ollama run gemma2 |
| Gemma 2 | 27B | 16GB | ollama run gemma2:27b |
| Mistral | 7B | 4.1GB | ollama run mistral |
| Moondream 2 | 1.4B | 829MB | ollama run moondream |
| Neural Chat | 7B | 4.1GB | ollama run neural-chat |
| Starling | 7B | 4.1GB | ollama run starling-lm |
| Code Llama | 7B | 3.8GB | ollama run codellama |
| Llama 2 Uncensored | 7B | 3.8GB | ollama run llama2-uncensored |
| LLaVA | 7B | 4.5GB | ollama run llava |
| Solar | 10.7B | 6.1GB | ollama run solar |
Note: You should have at least 8 GB of RAM available to run the 7B models, 16 GB to run the 13B models, and 32 GB to run the 33B models.
而我们的开发板一共就搭载了8G内存,出掉系统的开销,剩下可以用的也就6.3G。
(base) HwHiAiUser@orangepiaipro:~/Downloads/byte-unixbench/UnixBench$ free -htotal used free shared buff/cache available
Mem: 7.4Gi 859Mi 2.9Gi 49Mi 3.6Gi 6.3Gi
Swap: 0B 0B 0B
从表格来看,可选项只有Moondream 2和Phi 3 Mini。实际上官方的仓库内有很多的语言模型,我们只要找一个小于8B的就行。测试选用阿里系发布的通义千问大模型部署。运行命令ollama run qwen:0.5b安装通义千问0.5B。这个安装就比较费时了,在等待安装的过程中可以再开一个终端,继续下一步跳过等待的过程。
(base) HwHiAiUser@orangepiaipro:~$ ollama run qwen:0.5b
pulling manifest
pulling fad2a06e4cc7... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 394 MB
pulling 41c2cf8c272f... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 7.3 KB
pulling 1da0581fd4ce... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 130 B
pulling f02dd72bb242... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 59 B
pulling ea0a531a015b... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 485 B
verifying sha256 digest
writing manifest
removing any unused layers
success
部署完成后控制台是可以直接访问的,只不过控制台还是显得不够高端只能自己用,其他人想要使用该怎么办呢。
(base) HwHiAiUser@orangepiaipro:~$ ollama run qwen:0.5b
>>> 你好
您好!有什么可以帮助您的吗?>>> 你是谁
我是来自阿里云的大规模语言模型,我叫通义千问。如果您有任何问题或需要帮助,请随时告诉我,我会尽力提供支持和解答。>>>
安装ollama-webui
安装ollama的前端交互界面,这里就用到了我们刚刚开发环境中安装的docker。运行下面的命令安装open-webui的容器。
(base) HwHiAiUser@orangepiaipro:~$ docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
Unable to find image 'ghcr.io/open-webui/open-webui:main' locally
main: Pulling from open-webui/open-webui
ea235d1ccf77: Pull complete
26f13e32d8cd: Pull complete
e569c3fca503: Pull complete
8cae6dc67aef: Pull complete
153915d34d13: Pull complete
761886d9fb03: Pull complete
4f4fb700ef54: Pull complete
004754e7f3d1: Pull complete
4495941f96a2: Pull complete
2bb7e3b0ae41: Downloading [=======> ] 40.45MB/288.1MB
abd18b7d3c36: Download complete
49800a7fbb5c: Downloading [==> ] 32.38MB/727.9MB
25281b23f845: Downloading [==============================> ] 32.91MB/54.66MB
67196eb5d079: Waiting
85f88c980917: Waiting
48fbf4ab6c66: Waiting
安装完成后通过http://{ip}:{port}访问open-webui,我们这边使用的访问地址就是http://192.168.101.8:3000,第一次登录需要注册账户。

注册完成会自动登录,登录进去后,必须找到管理员面板。

点击设置,先修改外部连接的Ollama API的地址。我这边修改为http://192.168.101.8:11434,点击后面的刷新按钮,确定弹窗提示已验证服务器连接。随后建议关掉OpenAI API的访问按钮,最后点击保存。

如果连接的Ollama API这一步报错WebUI could not connect to Ollama呢,这大概率是因为没有正确配置局域网访问导致的。

可以做如下测试,在开发板中执行curl http://192.168.101.8:11434会报错Connection refused。sudo lsof -i :11434去查看端口状态显示localhost,说明Ollama被配置为只能使用localhost去访问。
(base) HwHiAiUser@orangepiaipro:~$ curl http://192.168.101.8:11434
curl: (7) Failed to connect to 192.168.101.8 port 11434 after 0 ms: Connection refused
(base) HwHiAiUser@orangepiaipro:~$ sudo lsof -i :11434
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ollama 10749 ollama 3u IPv4 53543 0t0 TCP localhost:11434 (LISTEN)
(base) HwHiAiUser@orangepiaipro:~$ curl http://localhost:11434/
Ollama is running(base)
由于我们这边Ollama被安装在了宿主机中,Ollama-webui被安装到docker中,两者之间的网络环境是不一样的,无法在docker中通过localhost:11434访问到Ollama。这边我们需要修改一下配置文件,参考上面安装Ollama提到的配置局域网访问即可。
回到主页,选择刚刚安装的千问0.5B,就可以快乐的玩耍啦。

相关文章:
人工智能AI合集:Ollama部署对话语言大模型-网页访问
目录 🍅点击这里查看所有博文 随着人工智能技术的飞速发展,AI已经不再是遥不可及的高科技概念,而是逐渐融入到我们的日常生活中。从智能手机的语音助手到家庭中的智能音箱,再到工业自动化和医疗诊断,AI的应用无处不在…...
CentOS搭建Apache服务器
安装对应的软件包 [roothds ~]# yum install httpd mod_ssl -y 查看防火墙的状态和selinux [roothds ~]# systemctl status firewalld [roothds ~]# cat /etc/selinux/config 若未关闭,则关闭防火墙和selinux [roothds ~]# systemctl stop firewalld [roothds ~]# …...
CDGA|数据治理:安全如何贯穿数据供给、流通、使用全过程
随着信息技术的飞速发展,数据已经成为企业运营、社会管理和经济发展的核心要素。然而,数据在带来巨大价值的同时,也伴随着诸多安全风险。因此,数据治理的重要性日益凸显,它不仅仅是对数据的简单管理,更是确…...
32单片机bootloader程序
一,单片机为什么要使用bootloader 1、使用bootloader的好处 1) 程序隔离:可以同时存在多个程序,只要flash空间够大,或者通过外挂flash,可以实现多个程序共存,在多个程序之间切换使用。 2)方便程…...
MongoDB - 数组更新操作符:$、$[]、$pop、$pull、$push、$each、$sort、$slice、$position
文章目录 1. $1. 更新数组中的值2. 更新数组中的嵌入文档 2. $[]1. 更新数组中的所有元素2. 更新数组中的所有嵌入文档 3. $pop1. 删除数组的第一个元素2. 删除数组的最后一个元素 4. $pull1. 删除所有等于指定值的项2. 删除与指定条件匹配的所有项3. 从文档数组中删除项4. 从嵌…...
多GPU并行处理[任务分配、进程调度、资源管理、负载均衡]
1. 多GPU并行处理设计 设计思路: 实现基于多GPU的并行任务处理,每个GPU运行独立的任务,以加速整体的处理速度。 实现机制: 进程隔离: 利用multiprocessing.Process为每个GPU创建独立的工作进程。 GPU资源限制: 通过设置CUDA_VISIBLE_DEVICES环境变量&…...
项目部署到服务器
(相关资源都给出来了) 1 下载MobaXterm,然后打开 正常连接输入你的服务器IP,用户名可以起名为root 2 将JDK,Tomcat,mysql安装包 布置到服务器中(JDK官网地址:https://www.oracle.com/java/technologies/downloads/#java8 mysql官网地址: …...
Idea2024 创建Meaven项目没有src文件夹
1、直接创建 新建maven项目,发现没有src/main/java 直接新建文件夹:右击项目名->new->Directory 可以看到idea给出了快捷创建文件夹的选项,可以根据需要创建,这里点击src/main/java 回车,可以看到文件夹已经创建…...
LeetCode 2766.重新放置石块:哈希表
【LetMeFly】2766.重新放置石块:哈希表 力扣题目链接:https://leetcode.cn/problems/relocate-marbles/ 给你一个下标从 0 开始的整数数组 nums ,表示一些石块的初始位置。再给你两个长度 相等 下标从 0 开始的整数数组 moveFrom 和 moveTo…...
基于STM32的农业大棚温湿度采集控制系统的设计
目录 1、设计要求 2、系统功能 3、演示视频和实物 4、系统设计框图 5、软件设计流程图 6、原理图 7、主程序 8、总结 🤞大家好,这里是5132单片机毕设设计项目分享,今天给大家分享的是智能教室。 设备的详细功能见网盘中的文章《8、基…...
go语言的命名规则
身为前端为什么去学go语言呢?我认为go在未来可能会给我带来一些收益。自认为收益是去做一件事情不可缺少的因素,就好像是你努力之后得到回报,努力的欲望会越来越强。《Head First Go》这本书里作者有一句话,如果你已经掌握了一门编…...
新增ClamAV病毒扫描功能、支持Java和Go运行环境,1Panel开源面板v1.10.12版本发布
2024年7月19日,现代化、开源的Linux服务器运维管理面板1Panel正式发布了v1.10.12版本。 在这一版本中,1Panel新增了多项实用功能。社区版方面,1Panel新增ClamAV病毒扫描功能、支持Java和Go运行环境,同时1Panel还新增了文件编辑器…...
Windows通过命令查看mac : getmac
要查看本机网卡mac,可以通过ipconfig /all 显示,但输出内容过多 可以通过getmac命令查看 示例 C:\Users\Desktop> getmac物理地址 传输名称暂缺 没有硬件 1C-1B-B5-04-E2-7D \Device\Tcpip_{80096E40-D51D-490C-9AF7-…...
Android笔试面试题AI答之Android系统与综合类(1)
答案仅供参考,来着文心一言、Kimi.ai 目录 1.简述嵌入式实时操作系统,Android 操作系统属于实时操作系统吗?嵌入式实时操作系统简述Android操作系统是否属于实时操作系统 2.简述Android系统的优势和不足?3.简述Android的系统架构 ࿱…...
【Android】数据存储方案——文件存储、SharedPreferences、SQLite数据库用法总结
文章目录 文件存储存储到文件读取文件 SharedPreferences存储存储获取SharedPreferences对象Context 类的 getSharedPreferences() 方法Activity 类的 getPreferences() 方法PreferenceManager 类中的 getDefaultSharedPreferences() 方法 示例 读取记住密码的功能 SQLite数据库…...
抖音矩阵管理系统功能说明:一站式掌握
在当下这个信息爆炸的时代,抖音作为短视频领域的佼佼者,其用户规模持续扩大,影响力日益增强。对于内容创作者和营销人员来说,如何高效管理抖音账号,实现内容的多平台分发和精准触达,成为了亟待解决的问题。…...
旅游卡使用指南及常见疑问解答
近期,许多朋友对旅游卡的免费旅游政策表示浓厚兴趣,但心中不免存疑:这真的是全程免费,无需自费一分吗? 在此,我们明确告知:免费旅游确实存在,但享受范围与条件需清晰界定。 本文将…...
【MySQL篇】Percona XtraBackup标准化全库完整备份策略(第三篇,总共五篇)
💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…...
背单词工具(C++)
功能分析 生词本管理: 创建生词本文件:在构造函数中创建了“生词本.txt”“背词历史.log”“历史记录.txt”三个文件。添加单词:用户可以输入单词、词性和解释,将其添加到生词本中。查询所有单词:展示生词本中所有的单…...
面试八股 | 数据库引擎 | InnoDB和myISAM的区别?
⭐️⭐️⭐️InnoDB和MyISAM的区别? InnoDB : 1、使用的是行锁,操作时候只锁一行数据,不会对其他有影响,适合高并发工作 2、支持事务 3、不仅缓存索引还要缓存真实数据,适合高并发 4、默认安装 5、支持外键 6、…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
