当前位置: 首页 > news >正文

Qwen3-8B模型本地部署和简单接入DBhub实践

文章目录

  • 实验环境和组件介绍
  • 具体的配置过程
    • ollama部署使用
    • 测试Mysql数据库表的构建
    • DBHUB的搭建
    • Cherry Studio接入模型和MCP工具
  • 遇到的问题
    • 1Panel商店ollama镜像版本过低
    • Cherry Studio连接Ollama服务检测模型无法使用
    • ollama检测异常解决

实验环境和组件介绍

  • 实验平台
  • Ubuntu 24
  • GPU:RTX 3090
  • Memory:32GB

  • 关键组件
    • 1panel
    • ollama
    • mysql,DBhub
    • one-api
    • Cherry Studio

  • 推荐模型
  • qwen3-8b/qwen3-14b/qwen3-32b,从ollama拉取这些模型的量化guff文件,单卡3090均能支持。

具体的配置过程

ollama部署使用

  • 由于使用docker部署ollama需要提前安装NVIDIA Container Toolkit,官方参考指南,推荐阅读Ubuntu 24.04 安装 NVIDIA Container Toolkit 全指南:让Docker拥抱GPU。
sudoapt-getupdate&&sudoapt-getinstall-y --no-install-recommendscurlgnupg2
curl-fsSL https://nvidia.github.io/libnvidia-container/gpgkey|sudogpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg\&&curl-s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list|\sed's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g'|\sudotee/etc/apt/sources.list.d/nvidia-container-toolkit.list
sudoapt-getupdatesudoapt-getinstall-y nvidia-container-toolkit
# 生成配置文件sudonvidia-ctk runtime configure --runtime=docker# 重启Docker服务sudosystemctl restartdocker
  • 然后正常在1panel引用商店中,部署ollama,注意勾选GPU选项。然后,正常拉取模型到本地。这里建议选择一个好的网络。
ollama run qwen3:8b

测试Mysql数据库表的构建

  1. Mysql数据库的部署,借助1panel面板,使用docker快速搭建。
  2. 手动在1panel数据库管理面板创建test数据库。
  3. 然后使用Mysql客户端工具,这里笔者使用hexhub这款开源软件进行连接,然后执行sql脚本。
--1. 准备工作:如果存在旧表则删除,保证脚本可重复运行 DROP TABLE IF EXISTS order_items;DROP TABLE IF EXISTS orders;DROP TABLE IF EXISTS products;DROP TABLE IF EXISTSusers;--2. 建表语句(DDL)-- 用户表 CREATE TABLEusers(idINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50)NOT NULL, email VARCHAR(100), balance DECIMAL(10,2)DEFAULT0.00, created_at DATETIME DEFAULT CURRENT_TIMESTAMP);-- 商品表 CREATE TABLE products(idINT PRIMARY KEY AUTO_INCREMENT, product_name VARCHAR(100)NOT NULL, category VARCHAR(50), price DECIMAL(10,2)NOT NULL, stock INT DEFAULT0);-- 订单表 CREATE TABLE orders(idINT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, order_date DATETIME NOT NULL, total_amount DECIMAL(10,2)NOT NULL, status TINYINT DEFAULT0COMMENT'0:Pending, 1:Paid, 2:Shipped, 3:Completed', FOREIGN KEY(user_id)REFERENCES users(id));-- 订单详情表 CREATE TABLE order_items(idINT PRIMARY KEY AUTO_INCREMENT, order_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, price DECIMAL(10,2)NOT NULL, FOREIGN KEY(order_id)REFERENCES orders(id), FOREIGN KEY(product_id)REFERENCES products(id));--1. 清理旧数据(保证脚本可重复运行)DROP TABLE IF EXISTS order_items;DROP TABLE IF EXISTS orders;DROP TABLE IF EXISTS products;DROP TABLE IF EXISTSusers;--2. 建表语句(DDL)CREATE TABLEusers(idINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50)NOT NULL, email VARCHAR(100), balance DECIMAL(10,2)DEFAULT0.00, created_at DATETIME DEFAULT CURRENT_TIMESTAMP);CREATE TABLE products(idINT PRIMARY KEY AUTO_INCREMENT, product_name VARCHAR(100)NOT NULL, category VARCHAR(50), price DECIMAL(10,2)NOT NULL, stock INT DEFAULT0);CREATE TABLE orders(idINT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, order_date DATETIME NOT NULL, total_amount DECIMAL(10,2)NOT NULL, status TINYINT DEFAULT0COMMENT'0:Pending, 1:Paid, 2:Shipped, 3:Completed', FOREIGN KEY(user_id)REFERENCES users(id));CREATE TABLE order_items(idINT PRIMARY KEY AUTO_INCREMENT, order_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, price DECIMAL(10,2)NOT NULL, FOREIGN KEY(order_id)REFERENCES orders(id), FOREIGN KEY(product_id)REFERENCES products(id));--3. 修正后的数据填充存储过程 DELIMITER$$CREATE PROCEDURE generate_mock_data()BEGIN --===变量声明区(必须在最前面)===DECLARE i INT DEFAULT1;DECLARE item_j INT;-- 【修复】这里声明了内层循环变量 item_j DECLARE num_users INT DEFAULT500;DECLARE num_products INT DEFAULT100;DECLARE num_orders INT DEFAULT1000;DECLARE random_user_id INT;DECLARE random_product_id INT;DECLARE random_qty INT;DECLARE random_price DECIMAL(10,2);DECLARE random_status INT;DECLARE days_back INT;-- --- A. 填充用户表 --- WHILE i<=num_users DO INSERT INTOusers(username, email, balance)VALUES(CONCAT('user_', i), CONCAT('user_', i,'@example.com'), ROUND(RAND()*5000,2));SET i=i +1;END WHILE;-- --- B. 填充商品表 --- SET i=1;WHILE i<=num_products DO INSERT INTO products(product_name, category, price, stock)VALUES(CONCAT('Product ', i,' - ', ELT(FLOOR(1+ RAND()*5),'Electronics','Clothing','Home','Books','Sports')), ELT(FLOOR(1+ RAND()*5),'Electronics','Clothing','Home','Books','Sports'), ROUND(RAND()*200+10,2), FLOOR(RAND()*100));SET i=i +1;END WHILE;-- --- C. 填充订单表及详情 --- SET i=1;WHILE i<=num_orders DO SET random_user_id=FLOOR(1+ RAND()* num_users);SET random_status=FLOOR(RAND()*4);SET days_back=FLOOR(RAND()*365);INSERT INTO orders(user_id, order_date, total_amount, status)VALUES(random_user_id, DATE_SUB(NOW(), INTERVAL days_back DAY),0.00, random_status);SET @current_order_id=LAST_INSERT_ID();-- --- D. 填充订单详情(内层循环)--- -- 初始化内层计数器 SET item_j=1;-- 随机生成13个商品项 WHILE item_j<=FLOOR(1+ RAND()*3)DO SET random_product_id=FLOOR(1+ RAND()* num_products);SET random_qty=FLOOR(1+ RAND()*5);SELECT price INTO random_price FROM products WHEREid=random_product_id;INSERT INTO order_items(order_id, product_id, quantity, price)VALUES(@current_order_id, random_product_id, random_qty, random_price);UPDATE orders SET total_amount=total_amount +(random_qty * random_price)WHEREid=@current_order_id;SET item_j=item_j +1;END WHILE;SET i=i +1;END WHILE;END$$DELIMITER;--4. 执行存储过程 CALL generate_mock_data();--5. 验证结果 SELECT'Users'AS Table_Name, COUNT(*)AS Row_Count FROMusersUNION ALL SELECT'Products', COUNT(*)FROM products UNION ALL SELECT'Orders', COUNT(*)FROM orders UNION ALL SELECT'Order_Items', COUNT(*)FROM order_items;

DBHUB的搭建

  1. 在应用商店,按照要求正常配置启动即可。

Cherry Studio接入模型和MCP工具

  1. 在cherry Studio中配置MCP服务(这里笔者使用8081端口启动),然后就可以在对话中勾选使用该MCP服务。注意不要使用deepseek-r1系列,因为该模型系列对MCP工具调用并不友好,推荐使用qwen3系列。
  2. 连接ollama时,这里笔者遇到ollama无法正常访问,所以使用one api进行兼容解决。
  3. 正常调用和对话

遇到的问题

1Panel商店ollama镜像版本过低

  • 存在的问题:1Panel商店中最高支持0.13.5,但是已经很陈旧了。在拉取较新模型提示版本太低。
  • 解决方法:手动修改docker-sompose文件,调整镜像版本为0.14.1。笔者尝试latest版本仍然出错。

Cherry Studio连接Ollama服务检测模型无法使用

  • 存在的问题:Cherry Studio配置本地ollama服务连接,可以检测到存在的模型,但是无法正常使用模型。起初,笔者怀疑是ollama对openai格式调用的不兼容,但是查询资料,ollama已经兼容openai的调,经过,终端请求验证,确实可以正常调用。
curlhttp://localhost:11434/v1/chat/completions -H"Content-Type: application/json"-d'{ "model": "deepseek-r1:32b", "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "Hello!" } ] }'
  • 解决方法:使用One-api对ollama的访问做一层代理,顺利解决问题。




ollama检测异常解决

  • 其实也就是上个问题,不过在最后笔者再次尝试的时候,突然又正常了。注意连接检测使用单个,不并发即可通过。
  • 可能是ollama本身对并发支持不好,然后cherry studio默认的检测方式会发生错误。

http://www.jsqmd.com/news/250428/

相关文章:

  • 计算机Java毕设实战-基于SpringBoot的社区旧衣物上门回收系统推荐基于SpringBoot的社区旧衣物回收与捐赠系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Qwen3Guard-Gen-WEB数据标注:构建高质量训练集的方法论
  • Java Set 集合:HashSet、LinkedHashSet、TreeSet(含使用场景 + List 对比)
  • GLM-ASR-Nano-2512部署优化:如何提升识别准确率300%
  • 保护隐私的语音合成|Supertonic完全本地化推理详解
  • 计算机Java毕设实战-基于SpringBoot的网上购物商城设计与实现基于SpringBoot的商品管理、订单处理、购物车【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • YOLO11完整指南:超详细环境配置与项目目录结构解析
  • 一键识别语音内容、情感与背景音|SenseVoice Small WebUI使用手册
  • VibeThinker-1.5B真实体验:AIME数学题全对有多爽
  • Qwen2.5-0.5B如何省算力?低成本GPU部署实战指南
  • DeepSeek-R1性能优化:让本地推理速度提升50%
  • 用预置镜像在RTX 4090D上快速完成Qwen2.5-7B微调实战
  • Glyph模型助力AIGC创作,设计师效率翻倍
  • 当COBACABANA注入AI灵魂:智能工厂动态调度系统从0到1落地实战
  • AI智能二维码工坊部署避坑:环境依赖缺失问题解决
  • 移动端AI新选择:DeepSeek-R1-Distill-Qwen-1.5B
  • 一键启动通义千问2.5-7B:开箱即用的AI开发环境
  • 5分钟部署SAM 3:零基础玩转图像视频分割
  • Qwen3-4B-Instruct-2507长文本处理:256K上下文实战测试
  • Fun-ASR系统信息查看方法:模型路径与状态监控操作指南
  • 视觉语言模型新思路:Glyph技术原理与实战入门必看
  • 从三相桥式两电平与T型三电平逆变器看SVPWM调制
  • 无需代码!SenseVoiceSmall WebUI让语音转写超简单
  • 从Buck到AI芯片供电:如何用伏秒平衡原理设计低纹波、高响应的AI加速器电源?
  • Open Interpreter案例分享:在教育领域的应用
  • VibeThinker-1.5B与主流小模型对比:推理性能全方位评测
  • 亲测通义千问3-4B:中小企业AI落地真实体验分享
  • 图解说明WS2812B驱动程序时序与接线方法
  • aa---(12)
  • 探索Matlab在放射状配电网单相故障测距中的应用:小波变换、双端行波测距与凯伦布尔变换