️ 在 Windows WSL 上部署 Ollama 和大语言模型的完整指南20241206
🛠️ 在 Windows WSL 上部署 Ollama 和大语言模型的完整指南
📝 引言
随着大语言模型(LLM)和人工智能的飞速发展,越来越多的开发者尝试在本地环境中部署大模型进行实验。然而,由于资源需求高、网络限制多以及工具复杂性,部署过程常常充满挑战。
本指南基于实际经验,详细讲解如何在 Windows WSL(Windows Subsystem for Linux) 上部署 Ollama 和大语言模型,同时解决端口转发等常见痛点,实现局域网内多设备访问。
无论您是 AI 技术新手、行业从业者,还是 经验丰富的专家,这篇文章都能提供全面的指南、实践经验与优化建议。

⭐ 1.为什么选择 WSL 部署大模型?
1.1 性能优势
👉 WSL 的设计目标是高效:
- WSL 利用 Windows 内核直接运行 Linux 环境,性能接近原生 Linux。
- 支持 NVIDIA GPU 加速(如 4070 Super),运行大语言模型毫无压力。
1.2 易用性
- 轻量级:无需像 VMware 或 VirtualBox 那样安装完整的虚拟机。
- 集成度高:与 Windows 文件系统和网络无缝结合。
- 简单维护:直接通过 Windows Store 更新 WSL。
1.3 实际适用性
- 开发者首选:对于想快速部署和运行模型的开发者,WSL 是简单且高效的选择。
⚙️ 2. 实现目标的挑战与应对策略
2.1 核心目标
🌟 最终实现的核心目标如下:
- 在 WSL 中成功部署 Ollama 服务并加载千问大语言模型。
- 配置 OpenWebUI,提供直观的交互界面,方便用户使用。
- 实现局域网访问,支持家庭设备通过浏览器与服务交互。
2.2 挑战分析
🚧 在实际联网部署中面临的关键挑战包括:
-
大模型下载与镜像获取
- 模型文件和 Docker 镜像较大,需确保网络环境稳定。
- 在线下载过程中可能因网络波动导致超时或中断。
-
端口转发和局域网访问
- WSL 默认服务绑定到
127.0.0.1,局域网设备无法直接访问。 - 动态 IP 问题会导致端口转发规则失效,需频繁手动调整。
- WSL 默认服务绑定到
-
服务性能与配置
- 模型加载占用大量内存与显存,需合理优化系统资源。
- Docker 容器与 Ollama 服务同时运行时,可能出现资源竞争问题。
2.3 应对策略
✅ 在线获取资源,避免复杂的手动传输
- 直接通过
ollama命令下载模型,无需额外离线准备。 - 使用 Docker 官方镜像仓库,确保高效获取最新镜像。
✅ 优化端口转发,实现动态调整
- 编写自动化脚本,动态获取 WSL 的当前 IP,并更新转发规则。
- 利用 Windows 的 Nginx 反向代理,将服务映射到局域网内可用地址。
✅ 服务绑定到 0.0.0.0,开放外部访问
- 修改服务绑定地址为
0.0.0.0,允许外部设备通过 IP 地址直接访问。 - 配置 OpenWebUI 的 Web 服务,提供直观的交互界面。
2.3 应对策略
✅ 在线获取资源,避免复杂的手动传输
- 直接通过
ollama命令下载模型,无需额外离线准备。 - 使用 Docker 官方镜像仓库,确保高效获取最新镜像。
✅ 优化端口转发,实现动态调整
- 编写自动化脚本,动态获取 WSL 的当前 IP,并更新转发规则。
- 利用 Windows 的 Nginx 反向代理,将服务映射到局域网内可用地址。
✅ 服务绑定到 0.0.0.0,开放外部访问
- 修改服务绑定地址为
0.0.0.0,允许外部设备通过 IP 地址直接访问。 - 配置 OpenWebUI 的 Web 服务,提供直观的交互界面。## 📋 3.实践:在 WSL 上部署 Ollama 和千问模型(联网版)
3.1 准备资源与环境
环境准备📂
1.windows电脑安装WSL
wsl --installwsl --set-default-version 2
2. 在WSL 中安装 Docker:
sudo apt update
sudo apt install -y docker.io
sudo service docker start
友情提示:
可以通过如下命令实现将windows宿主机资源传输到 WSL:
cp /mnt/c/Users/<your_username>/Downloads/docker-images-openwebui.tar ~/
3. 配置非 root 用户运行 Docker:
sudo usermod -aG docker $USER
newgrp docker
验证 Docker 是否可用
加载 Docker 镜像
docker run hello-world```
3.2部署 Ollama 和千问模型
1.下载并安装 Ollama
curl -O https://ollama.com/downloads/ollama-linux-amd64
chmod +x ollama-linux-amd64
sudo mv ollama-linux-amd64 /usr/local/bin/ollama
2.启动 Ollama 服务
ollama serve
3.下载并运行千问模型
通过 ollama 工具直接在线下载并运行模型:
ollama run qwen2.5
3.3 部署 OpenWebUI
1. 拉取 OpenWebUI 的 Docker 镜像
docker pull ghcr.io/open-webui/open-webui:main
2. 启动 OpenWebUI 容器
docker run -d --name openwebui \-p 8080:8080 \-v ~/.ollama:/app/backend/data \ghcr.io/open-webui/open-webui:main
3. 验证 OpenWebUI 是否运行正常
docker ps
访问服务
确保容器状态为 Up,然后
• 本地访问:http://localhost:8080
• 局域网访问:通过端口转发或绑定所有地址实现http://<WIndows_IP>:8080。
3.4 设置局域网访问
获取 WSL 的 IP 地址
hostname -I
例如,返回的 IP 地址可能是 172.22.203.210。
在 Windows 中设置端口转发
1. 打开 PowerShell(管理员权限),运行以下命令:
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8080 connectaddress=<WSL_IP> connectport=8080
替换 <WSL_IP> 为实际的 WSL IP 地址。
2. 在局域网中的设备上访问:
http://<Windows_IP>:8080
🔧4. WSL 的端口转发问题及优化解决方案
4.1 动态 IP 的困扰
WSL 的 IP 地址可能每次重启后变化,可以在 /etc/wsl.conf 文件中固定 WSL 子网:
[network]
generateResolvConf = false
subnet = 192.168.50.0/24
重启 WSL 后验证新 IP 是否生效。
wsl --shutdown
wsl
验证新 IP 是否生效:
hostname -I
4.2 自动化脚本
每次启动 WSL 自动更新端口转发规则:
创建脚本 setup_portproxy.sh:
#!/bin/bash
wsl_ip=$(hostname -I | awk '{print $1}')
powershell.exe -Command "netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8080 connectaddress=$wsl_ip connectport=8080"
赋予执行权限:
chmod +x setup_portproxy.sh
在每次 WSL 启动后运行脚本。
4.3 使用反向代理
在 Windows 主机上安装 Nginx,配置反向代理到 WSL 的服务地址:
1. 安装 Nginx
下载并安装 Nginx for Windows,编辑 conf/nginx.conf 文件,添加以下内容:
server {listen 80;server_name localhost;location / {proxy_pass http://172.22.203.210:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
2. 重新启动 Nginx
在命令行中执行:
nginx -s reload
📊 对比分析:WSL vs VMware vs VirtualBox
| 特性 | WSL | VMware Workstation | VirtualBox |
|---|---|---|---|
| 性能 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| GPU 支持 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ |
| 易用性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 免费使用 | ⭐⭐⭐⭐⭐ | ⭐ | ⭐⭐⭐⭐⭐ |
📝 结论与展望
🌟 总结
通过联网直接使用 ollama 下载并运行千问等大语言模型,同时结合 OpenWebUI 提供的便捷交互界面,用户可以快速搭建 AI 实验环境。借助反向代理和端口转发的优化配置,还能够轻松实现局域网内访问,从而为开发和实验提供更高效的支持。未来可以通过进一步优化自动化脚本和硬件配置,让 WSL 成为本地 AI 部署的最佳选择。
补充亮点
- 增加了 OpenWebUI 的 Docker 镜像加载和启动步骤。
- 强调局域网访问 OpenWebUI 的方法,使得模型在本地和局域网中都能灵活使用。
- 整体简化流程,无离线依赖,完全基于网络操作。
🔍 展望
-
为开发者提供解决问题的思路:
- 聚焦实际开发中的痛点问题,例如 WSL 的端口转发不稳定、资源调度困难等,提供清晰的解决步骤。
- 通过脚本化、自动化配置和硬件资源优化,减少开发者的重复性工作。
-
启发具体问题的解决方案:
- 针对端口映射问题,提出动态脚本更新的方案,避免配置失效。
- 在 GPU 和模型加载方面,利用量化技术降低资源消耗,为硬件条件受限的开发者提供有效的策略。
本文旨在通过分享实践心得与创新思考,助力你在技术探索的征途中,轻松跨越障碍,加速实验进程,让创意与成果璀璨绽放。🎯
相关文章:
️ 在 Windows WSL 上部署 Ollama 和大语言模型的完整指南20241206
🛠️ 在 Windows WSL 上部署 Ollama 和大语言模型的完整指南 📝 引言 随着大语言模型(LLM)和人工智能的飞速发展,越来越多的开发者尝试在本地环境中部署大模型进行实验。然而,由于资源需求高、网络限制多…...
使用Tomcat搭建简易文件服务器
创建服务器 1. 复制一个tomcat服务器,并命名为file-service(好区分即可) 2.在webapp里面新建一个文件夹 uploadfiles ,用于存储上传的文件 3. 修改conf/service.xml,配置文件服务器的端口与上传文件夹的访问 在Host标签之间加入一个Context标签 docBase"uploa…...
《C++赋能:构建智能工业控制系统优化算法新引擎》
在工业 4.0 的浪潮汹涌澎湃之际,传统工业控制系统正面临着前所未有的挑战与机遇。如何借助人工智能的强大力量,实现工业控制系统的深度优化,已成为工业领域乃至整个科技界关注的焦点。而 C语言,以其卓越的性能、高效的执行效率和对…...
node.js中跨域请求有几种实现方法
默认情况下,出于安全考虑,浏览器会实施同源策略,阻止网页向不同源的服务器发送请求或接收来自不同源的响应。 同源策略:协议、域名、端口三者必须保持一致 <!DOCTYPE html> <html lang"en"> <head>&l…...
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,已于近期上市。该书基于Node.js 22.3.0编写,提供26个实战案例43个上机练习,可谓是目前市面上最新的Node.js力作。 本文对《循序渐进Node.js企业级开发实践》一书做个大致的介绍。 封…...
常见排序算法总结 (四) - 快速排序与随机选择
快速排序 算法思想 每一轮在数组相应的范围上随机找一个元素进行划分,将不大于它的所有元素都放到左边,将大于它的元素都放到右边。在左右两个子数组上不断地递归,直到整个数组上有序。 注意:实现时选择的时参考荷兰国旗问题优化…...
Doris的基础架构
Doris的基础架构 Frontend(FE):主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。Backend(BE):主要负责数据存储、查询计划的执行。 我的Github地址,欢迎大家加入我的开…...
python录制鼠标键盘操作循环播放
依赖 pip install pynput 程序: from pynput import mouse, keyboard import time import threading# 用于存储录制的鼠标和键盘事件 mouse_events [] keyboard_events []# 定义事件处理函数# 处理鼠标事件 def on_move(x, y):mouse_events.append((move, x, y))def on_cl…...
标书里的“废标雷区”:你踩过几个?
在投标领域,标书的质量不仅决定了中标的可能性,更是体现企业专业度的关键。但即便是经验丰富的投标人,也难免会在标书编制过程中踩中“废标雷区”。这些雷区可能隐藏在技术方案的细节中,也可能是投标文件格式的规范问题。以下&…...
centos下使用acme来自动获取免费通配符ssl证书,并发布到nginx服务,(DNS服务为阿里云)
参考链接: 官方文档 acme.sh获取证书 # 下载acme的项目 git clone https://gitee.com/neilpang/acme.sh.git # 执行安装脚本 cd acme.sh ./acme.sh --install -m myexample.com # 安装脚本会新增一个定时任务,这个命令可以检查 crontab -l # 从阿里云获取ks,写入 export Ali_…...
基于协同过滤的图书推荐系统 爬虫分析可视化【源码+文档】
【1】系统介绍 研究背景 随着互联网的普及和电子商务的发展,用户可以在线获取大量的图书资源。然而,面对海量的信息,用户往往难以找到自己真正感兴趣的书籍。同时,对于在线书店或图书馆等提供图书服务的平台来说,如何…...
Hyperf jsonrpc
依赖的 composer 包 composer require hyperf/json-rpc composer require hyperf/rpc-server composer require hyperf/rpc-client composer require hyperf/service-governance composer require hyperf/service-governance-consul composer require hyperf/service-gove…...
计算机毕业设计Spark股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
Linux系统下安装配置 Nginx 超详细图文教程
一、下载Nginx安装包 nginx官网:nginx: downloadhttp://nginx.org/en/download.html找到我们所需要版本,把鼠标移动到上面,右键打开链接进行下载 或者如果Linux联网,直接在Linux服务上使用wget命令把Nginx安装包下载到/usr/local/…...
语言处理程序基础
逻辑运算 正规式 有限自动机 上下文无关文法 表达式(前缀、后缀、中缀) 将表达式(a-b)*(c5)构造成树的步骤为:括号不能出现在树中;按照表达式的计算顺序来依次构造!&…...
golang实现简单的redis服务
golang 手搓redis服务器仓库地址:实现思路: golang 手搓redis服务器 仓库地址: 仓库: https://github.com/dengjiayue/my-redis.git 实现思路: ● 协议: tcp通信 ● 数据包: 长度(4byte)方法(1byte)数据json ● 数据处理: 单线程map读写 ○ 依次处理待处理队列的请求(chan)…...
QT QTableWidget::setModel”: 无法访问 private成员
//严重性代码说明项目文件行禁止显示状态 //错误C2248 “QTableWidget::setModel”: 无法访问 private 成员(在“QTableWidget”类中声明) QSqlQueryModel* sql_model; ui.tableView_database->setModel(sql_model); //ok ui.tableWidget_database->setModel(sql_model)…...
STM32:Bootloader(AB备份,自动回滚)
目录 1.STM32的升级方式2.IAP升级3.代码逻辑展示3.1 划分存储区域3.2 IAP的状态4.源码分析4.1 记录IAP的状态4.2 APP代码异常判断4.3 IAP状态的切换以及异常的处理逻辑4.4 完整的逻辑代码1.STM32的升级方式 1、ICP:In Circuit Programing,简单说就是在单片机开发时使用烧录器…...
数独小游戏(Matlab)
基于Matlab制作的数独小游戏 (完整源码和介绍) 感兴趣可以随时联系博主噢~常在线能秒回! “Matlab数独小游戏”程序设计的关键技术流程和核心算法如下: 1.图形用户界面(GUI):使用MATLAB的GUIDE工具创建和管理用户界面࿰…...
使用docker让项目持续开发和部署
大多人选择开发时在本地,部署时文件都在容器里,如果没有容器,那就本地开发,没有映射文件,如果部署环境到容器了,容器内部启动时设置执行命令,再将映射的文件进行编译,这就直接能实现…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
