在Windows 7操作系统,基于llama.cpp本地化部署 deepseek-r1模型的方法 2025-02-08
一、概述
现在已经是大模型时代。
个人认为,deepseek效果惊艳,大模型已进入实用阶段。
有些电脑,由于种种原因,还在用 Windows 7, Windows XP 等操作系统。
为了让这些电脑用上大模型,本教程在 llama.cpp的基础上做了一点修改,使得 Windows 7 x64 可用 deepseek-r1 模型,实测有效。
二、面向普通用户
资源下载
百度网盘:https://pan.baidu.com/s/1NShm6Qi9bDgl6jI-IsEr1A?pwd=6es1
迅雷网盘:https://pan.xunlei.com/s/VOIfPUb8lCS71jAjBEnXmRg9A1?pwd=nze7#
可执行程序及源码:https://gitee.com/goldenalien/llama.cpp/releases/tag/llama.cpp.win7.20250208
简单用法
-
普通用户只需下载
llama-server.win7.20250208.7z,该文件只含llama-server.exe -
下载
deepseek-r1:1.5b模型,即/models/sha256-aabd4debf0c8f08881923f2c25fc0fdeed24435271c2b3e92c4af36704040dbc -
在CMD终端,输入
c:\my_ai_tools\llama-server.exe --model c:\mymodels\sha256-aabd4debf0c8f08881923f2c25fc0fdeed24435271c2b3e92c4af36704040dbc,路径按实际情况设定。 详细参数,可输入llama-server --help
-
打开firefox或chrome等浏览器,输入
127.0.0.1:8080,OK! -
注意:IE 浏览器打不开!

三、面向开发者
资源说明
可执行程序
llama-server.win7.20250208.7z,精简版,只有llama-server.exellama.cpp.win7.20250208.7z,完全版,所有llama*.exe
模型文件
/models/sha256-*,从ollama提取的gguf文件,也可以从其他途径获得
| 名称 | ollama ID | 大小GB | OLLAMA_MODELS/blobs |
|---|---|---|---|
| deepseek-r1:1.5b | a42b25d8c10a | 1.04 | sha256-aabd4debf0c8f08881923f2c25fc0fdeed24435271c2b3e92c4af36704040dbc |
| deepseek-r1:8b | 28f8fd6cdc67 | 4.58 | sha256-6340dc3229b0d08ea9cc49b75d4098702983e17b4c096d57afbbf2ffc813f2be |
| deepseek-r1:14b | ea35dfe18182 | 8.37 | sha256-6e9f90f02bb3b39b59e81916e8cfce9deb45aeaeb9a54a5be4414486b907dc1e |
| deepseek-r1:32b | 38056bbcbb2d | 18.4 | sha256-6150cb382311b69f09cc0f9a1b69fc029cbd742b66bb8ec531aa5ecf5c613e93 |
| deepseek-r1:70b | 0c1615a8ca32 | 39.5 | sha256-4cd576d9aa16961244012223abf01445567b061f1814b57dfef699e4cf8df339 |
| qwen2.5-coder:7b | 2b0496514337 | 4.36 | sha256-60e05f2100071479f596b964f89f510f057ce397ea22f2833a0cfe029bfc2463 |
源代码
/source/llama.cpp.git.20250208.7z,原版GIT仓库,含所有历史版本,20250208备份/source/llama.cpp.2025-02-08.4d3465c5aeca8be29cac77f1535c35f4fb274eca.zip,20250208代码,commit版本号为4d3465c5aeca8be29cac77f1535c35f4fb274eca
开发工具
/dev-tools/w64devkit-x64-2.0.0.exe/dev-tools/cmake-3.31.5-windows-x86_64.msi/dev-tools/Git-2.45.2-64-bit.exe/dev-tools/Firefox 18.5.0.0.exe
开发过程
准备工具
- Windows 7 x64 操作系统
w64devkit-x64-2.0.0.exehttps://github.com/skeeto/w64devkitcmake-3.31.5-windows-x86_64.msihttps://cmake.org/download/Git-2.45.2-64-bit.exehttps://git-scm.com/downloads/winFirefox 18.5.0.0.exe【可选】llama.cpp源代码,本案例取自 2025.02.08的 commit:4d3465c5aeca8be29cac77f1535c35f4fb274eca
操作步骤
- 打开Windows 7 x64操作系统
- 按默认设置,安装 w64devkit, cmake, GIt, firefox。注意,该添加到PATH的添加。
- 解压源代码
llama.cpp,按下图修改/examples/server/httplib.h, 第3012到3057行,也就是把 if else 注释掉,只保留 else 部分的代码。
#if _WIN32_WINNT >= _WIN32_WINNT_WIN8hFile_ = ::CreateFile2(wpath.c_str(), GENERIC_READ, FILE_SHARE_READ,OPEN_EXISTING, NULL);
#elsehFile_ = ::CreateFileW(wpath.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
#endifif (hFile_ == INVALID_HANDLE_VALUE) { return false; }LARGE_INTEGER size{};if (!::GetFileSizeEx(hFile_, &size)) { return false; }// If the following line doesn't compile due to QuadPart, update Windows SDK.// See:// https://github.com/yhirose/cpp-httplib/issues/1903#issuecomment-2316520721if (static_cast<ULONGLONG>(size.QuadPart) >(std::numeric_limits<decltype(size_)>::max)()) {// `size_t` might be 32-bits, on 32-bits Windows.return false;}size_ = static_cast<size_t>(size.QuadPart);#if _WIN32_WINNT >= _WIN32_WINNT_WIN8hMapping_ =::CreateFileMappingFromApp(hFile_, NULL, PAGE_READONLY, size_, NULL);
#elsehMapping_ = ::CreateFileMappingW(hFile_, NULL, PAGE_READONLY, 0, 0, NULL);
#endif// Special treatment for an empty file...if (hMapping_ == NULL && size_ == 0) {close();is_open_empty_file = true;return true;}if (hMapping_ == NULL) {close();return false;}#if _WIN32_WINNT >= _WIN32_WINNT_WIN8addr_ = ::MapViewOfFileFromApp(hMapping_, FILE_MAP_READ, 0, 0);
#elseaddr_ = ::MapViewOfFile(hMapping_, FILE_MAP_READ, 0, 0, 0);
#endif
改为
// #if _WIN32_WINNT >= _WIN32_WINNT_WIN8// hFile_ = ::CreateFile2(wpath.c_str(), GENERIC_READ, FILE_SHARE_READ,// OPEN_EXISTING, NULL);
// #elsehFile_ = ::CreateFileW(wpath.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
// #endifif (hFile_ == INVALID_HANDLE_VALUE) { return false; }LARGE_INTEGER size{};if (!::GetFileSizeEx(hFile_, &size)) { return false; }// If the following line doesn't compile due to QuadPart, update Windows SDK.// See:// https://github.com/yhirose/cpp-httplib/issues/1903#issuecomment-2316520721if (static_cast<ULONGLONG>(size.QuadPart) >(std::numeric_limits<decltype(size_)>::max)()) {// `size_t` might be 32-bits, on 32-bits Windows.return false;}size_ = static_cast<size_t>(size.QuadPart);// #if _WIN32_WINNT >= _WIN32_WINNT_WIN8// hMapping_ =// ::CreateFileMappingFromApp(hFile_, NULL, PAGE_READONLY, size_, NULL);
// #elsehMapping_ = ::CreateFileMappingW(hFile_, NULL, PAGE_READONLY, 0, 0, NULL);
// #endif// Special treatment for an empty file...if (hMapping_ == NULL && size_ == 0) {close();is_open_empty_file = true;return true;}if (hMapping_ == NULL) {close();return false;}// #if _WIN32_WINNT >= _WIN32_WINNT_WIN8// addr_ = ::MapViewOfFileFromApp(hMapping_, FILE_MAP_READ, 0, 0);
// #elseaddr_ = ::MapViewOfFile(hMapping_, FILE_MAP_READ, 0, 0, 0);
// #endif


-
找到安装的
/w64devkit/w64devkit.exe,双击运行,cd到llama.cpp所在的目录
- 输入关键命令 cmake . -G "MinGW Makefiles"


-
然后输入关键命令
cmake --build . --config Release,等待编译完成。编译后的程序在 /bin 目录。

测试
- 从
ollama的OLLAMA_MODELS/blobs找几个模型文件,形如SHA256-*,注意看文件大小 - 在win7 输入
llama-server --model sha512-xxxxxxxxxxxxxxxxxxxxxx, 默认服务网址为127.0.0.1:8080, 终端有乱码,不影响使用。 - 用firefox打开网址,即可对话



相关文章:
在Windows 7操作系统,基于llama.cpp本地化部署 deepseek-r1模型的方法 2025-02-08
一、概述 现在已经是大模型时代。 个人认为,deepseek效果惊艳,大模型已进入实用阶段。 有些电脑,由于种种原因,还在用 Windows 7, Windows XP 等操作系统。 为了让这些电脑用上大模型,本教程在 llama.c…...
力扣146 - LRU缓存
视频讲解 哈希 双向链表 为什么要用双向链表? 快速删除节点(O(1)) 如果是单链表的话,删除一个节点时,需要从头遍历,找到前驱节点,才能修改 prev->next,导致 O(n)…...
C++ 算法竞赛STL以及常见模板
目录 STL /*═══════════════ Vector ═══════════════*/ /*════════════════ Pair ════════════════*/ /*══════════════ String ════════════════*/ /*══════════…...
微信小程序将markdown内容转为pdf并下载
要在微信小程序中将Markdown内容转换为PDF并下载,您可以使用以下方法: 方法一:使用第三方API服务 选择第三方API服务: 可以选择像 Pandoc、Markdown-PDF 或 PDFShift 这样的服务,将Markdown转换为PDF。例如,PDFShift 提供了一个API接口,可以将Markdown内容转换为PDF格式…...
AI绘画软件Stable Diffusion详解教程(7):图生图基础篇(改变图像风格)
我们在使用AI魔盒不停的绘制一幅幅图像时,会有这样的疑问:为什么生成的图像随机性这么强?我们如何按照自己的构图创作作品?为什么提示词生成的图像细节不够?如何把手绘的风格转换成另一种风格,或者说把自己…...
ES映射知识
映射 映射类似于关系型数据库的Schema(模式)。 映射来定义字段列和存储的类型等基础信息。 {"mappings": {"properties": {"username": {"type": "keyword","ignore_above": 256 // 忽略…...
蓝桥杯嵌入式组第七届省赛题目解析+STM32G431RBT6实现源码
文章目录 1.题目解析1.1 分而治之,藕断丝连1.2 模块化思维导图1.3 模块解析1.3.1 KEY模块1.3.2 ADC模块1.3.3 IIC模块1.3.4 UART模块1.3.5 LCD模块1.3.6 LED模块1.3.7 TIM模块 2.源码3.第七届题目 前言:STM32G431RBT6实现嵌入式组第七届题目解析源码&…...
SpringBoot项目配置文件
SpringBoot项目提供了多种属性配置方式(properties、yaml、yml) yml配置文件 使用Apifox可以方便开发接口、前端测试等 工程搭建: 1.创建SpringBoot工程,并引入web开发起步依赖、mybatis、mysql驱动、lombok 2.创建数据库表&am…...
PythonWeb开发框架—Flask框架之flask-sqlalchemy、序列化和反序列化使用详解
1.安装依赖库 pip install flask-sqlalchemy pip install pymysql 2.连接数据库配置 from flask import Flask from flask_sqlalchemy import SQLAlchemyapp Flask(__name__) #创建 Flask 应用实例#配置数据库连接 app.config[SQLALCHEMY_DATABASE_URI]mysql://root:stud…...
如何监控 Pod 的 CPU/内存使用率,prometheus+grafana
一、监控 Pod 的 CPU/内存使用率的方法 1. 使用 kubectl top 命令(临时检查) # 查看所有 Pod 的资源使用率(需安装 Metrics Server) kubectl top pods --all-namespaces # 查看指定命名空间的 Pod kubectl top pods -n <n…...
Spring Batch 概览
Spring Batch 是什么? Spring Batch 是 Spring 生态系统中的一个轻量级批处理框架,专门用于处理大规模数据任务。它特别适合企业级应用中需要批量处理数据的场景,比如数据迁移、报表生成、ETL(Extract-Transform-Load)…...
用Deepseek写一个五子棋微信小程序
在当今快节奏的生活中,休闲小游戏成为了许多人放松心情的好选择。五子棋作为一款经典的策略游戏,不仅规则简单,还能锻炼思维。最近,我借助 DeepSeek 的帮助,开发了一款五子棋微信小程序。在这篇文章中,我将…...
AF3 squeeze_features函数解读
AlphaFold3 data_transforms 模块的 squeeze_features 函数的作用去除 蛋白质特征张量中不必要的单维度(singleton dimensions)和重复维度,以使其适配 AlphaFold3 预期的输入格式。 源代码: def squeeze_features(protein):&qu…...
Python 远程抓取服务器日志最后 1000行
哈喽,大家好,我是木头左! 一、神奇的 Python 工具箱 1. SSH 连接的密钥——paramiko paramiko 库提供了丰富的方法来处理 SSH 连接的各种细节。从创建连接对象,到执行远程命令,再到获取命令输出,它都能有…...
vue3+screenfull实现部分页面全屏(遇到的问题会持续更新)
需求:除了左侧菜单,右侧主体部分全部全屏 首先下载screenfull全屏插件 npm install screenfull --save页面引入 import screenfull from screenfull;我这里是右上角全屏图标 <el-iconref"elIconRef"color"#ffffff"size"2…...
Ubuntu 下 nginx-1.24.0 源码分析 (1)
main 函数在 src\core\nginx.c int ngx_cdecl main(int argc, char *const *argv) {ngx_buf_t *b;ngx_log_t *log;ngx_uint_t i;ngx_cycle_t *cycle, init_cycle;ngx_conf_dump_t *cd;ngx_core_conf_t *ccf;ngx_debug_init(); 进入 main 函数 最…...
2025数据存储技术风向标:解析数据湖与数据仓库的实战效能差距
一、技术演进的十字路口 当前全球数据量正以每年65%的复合增长率激增,IDC预测到2027年企业将面临日均处理500TB数据的挑战。在这样的背景下,传统数据仓库与新兴数据湖的博弈进入白热化阶段。Gartner最新报告显示,采用混合架构的企业数据运营效…...
探索高性能AI识别和边缘计算 | NVIDIA Jetson Orin Nano 8GB 开发套件的全面测评
随着边缘计算和人工智能技术的迅速发展,性能强大的嵌入式AI开发板成为开发者和企业关注的焦点。NVIDIA近期推出的Jetson Orin Nano 8GB开发套件,凭借其40 TOPS算力、高效的Ampere架构GPU以及出色的边缘AI能力,引起了广泛关注。本文将从配置性…...
数据结构 常见的排序算法
🌻个人主页:路飞雪吖~ 🌠专栏:数据结构 目录 🌻个人主页:路飞雪吖~ 一、插入排序 🌟直接插入排序 🌟希尔排序 二、选择排序 🌟选择排序 🌟堆排序…...
ES索引知识
索引是数据的载体,存储了文档和映射的信息 索引是具有相同结构的文档的合集体。 设置索引,不仅仅是设置索引名字,还有索引的一些配置,比如:分片和副本,刷新频率,搜索结果的最大参数,…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
