【教程】如何在WSL2:Ubuntu上部署llama.cpp

【教程】如何在WSL2:Ubuntu上部署llama.cpp

WSL2:Ubuntu部署llama.cpp

llama.cpp 是一个完全由 C 与 C++ 编写的轻量级推理框架,支持在 CPU 或 GPU 上高效运行 Meta 的 LLaMA 等大语言模型(LLM),设计上尽可能减少外部依赖,能够轻松在多种后端与平台上运行。

安装llama.cpp

下面我们采用本地编译的方法在设备上安装llama.cpp

克隆llama.cpp仓库

在wsl中打开终端:

git clone https://github.com/ggml-org/llama.cpp cd llama.cpp 

编译项目

编译项目前,先安装所需依赖项:

sudoapt update sudoaptinstall -y build-essential cmake git#llama.cpp的某些功能依赖libcurl#如llama-download 的自动下载模型sudoaptinstall -y libcurl4-openssl-dev #如果要使用python接口,还需要sudoaptinstall -y python3 python3-pip pip3 install numpy 
CPU Backend

默认使用CPU版本编译

cmake -B build cmake --build build --config Release # cmake --build build --config Release -j 8 # -j 8 可加速编译过程,视你的 CPU 核心数而定
GPU Backend

如果你想使用GPU(推荐支持CUDA的NVIDA显卡),需要先安装CUDA Toolkit。由于WSL2默认不会自动识别WIndows主机上的CUDA Toolkit,因此需要特殊处理。

    • 驱动版本 ≥ 465
    • NVIDIA 官网 下载并安装最新版 CUDA Toolkit(但只需要驱动)。
  1. 重新编译带CUDA的llama.cpp

设置CUDA 环境变量

exportPATH=/usr/local/cuda/bin:$PATHexportLD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATHexportCUDACXX=/usr/local/cuda/bin/nvcc source ~/.bashrc 

安装CUDA Toolkit的stub(轻量化开发头文件)虽然你已经有了 CUDA runtime(用于运行模型),但 llama.cpp 编译阶段还需要 C++ 头文件和 nvcc 编译器 —— 你需要在 WSL2 里补装开发包:

sudoapt update #这里直接安装了CUDA12的整个工具包sudoaptinstall -y cuda #验证 nvcc --version 

在 子系统中验证 GPU 是否可用在 WSL2 中运行:

nvidia-smi 

如果成功看到你的 GPU 显示状态(如 RTX 3060、显存使用情况等),说明 CUDA 运行库已经桥接成功,可以继续。

Windows 主机 上确认:1)安装了支持 WSL 的 NVIDIA 驱动(必须是 DCH 驱动):2)安装好 WSL CUDA Toolkit(可以只装驱动和运行库,不需要开发工具)。

 如何安装WSL CUDA Toolkit 

​ i. 下载NVIDIA GeForce Game Ready(根据自己的GPU版本进行选择),下载网址:https://www.nvidia.com/Download/index.aspx​ ii. 移走原先的GPG key

sudo apt-key del 7fa2af80 

​ iii. 下载CUDA Toolkit

$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin $ sudomv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 $ wget https://developer.download.nvidia.com/compute/cuda/12.9.1/local_installers/cuda-repo-wsl-ubuntu-12-9-local_12.9.1-1_amd64.deb $ sudo dpkg -i cuda-repo-wsl-ubuntu-12-9-local_12.9.1-1_amd64.deb $ sudocp /var/cuda-repo-wsl-ubuntu-12-9-local/cuda-*-keyring.gpg /usr/share/keyrings/ $ sudoapt-get update $ sudoapt-get -y install cuda-toolkit-12-9 
#如果你用CPU生成过编译文件,执行新的make指令时可能会报错#先使用 rm -rf build 把之前的清空rm -rf build cmake -B build -DGGML_CUDA=ON cmake --build build --config Release -j 8# -j 8 可加速编译过程,视你的 CPU 核心数而定# 其实重启电脑也可以达到一样的效果

从Hugging Face下载模型

选择合适的模型

进入网站查看 llama.cpp 支持的所有模型列表

我们推荐首先尝试较为主流的 LLaMA 2、LLaMA 3、 Mistral、Qwen、ChatGLM 等系列模型。常见的 LLM 模型大小有 1B、7B、13B 等,一般来说,模型规模越大,生成的质量越好,但是运行时内存(推理时所需内存)也会随之增长。为避免频繁出现 OOM (Out of the memory) 的现象,我们推荐从较小的 LLM 开始调试。

注册Hugging Face账号后,可以添加自己的硬件设备信息,如下

用户主页

之后Hugging Face会对你的硬件能力做出评估

用户硬件性能评估

此时再选择相应的模型,右侧Hardware Compatibility面板 用于帮助用户根据自己设备的性能,选择合适的量化模型文件(GGUF 格式)

以第一行为例,Q4_K_M是模型的量化精度,数字越大精度越高,越接近原始模型,但也更占内存;2.5GB下载后模型文件所占空间,也是运行所需的最低内存估算

模型量化精度推荐

下载方法

1.使用Hugging Face下载

这里使用手动从 Hugging Face 官网下载的方法,打开你想下载的模型主页,如:
https://huggingface.co/Qwen/Qwen3-0.6B-GGUF

然后在 Files and versions 中找到对应的 .gguf文件下载并保存到你希望的目录即可。

2. 使用ModelScope下载

ModelScope 是阿里云提供的 AI 模型平台,也支持中文大模型。如果你无法访问 Hugging Face 或下载速度慢,推荐使用 ModelScope 下载

首先安装 ModelScope 所需库(推荐使用虚拟环境):

pip install modelscope 

然后运行以下 python 脚本

from modelscope import snapshot_download model_dir = snapshot_download('Qwen/Qwen3-0.6B-GGUF',#替换为你想要下载的模型名称,推荐下载 .gguf 格式的量化模型,适用于 llama.cpp cache_dir='./models/qwen-0.6b-gguf',#设置本地保存路径 revision='master',#可指定具体版本)print(f"Model saved at {model_dir}")

最后耐心等待即可。

Read more

鸿蒙 HarmonyOS 6 | 混合开发 (01) Web 组件内核——ArkWeb 加载机制与 Cookie 管理

鸿蒙 HarmonyOS 6 | 混合开发 (01) Web 组件内核——ArkWeb 加载机制与 Cookie 管理

文章目录 * 前言 * 一、 Web 组件的控制核心:WebviewController * 二、 掌控加载生命周期:优化加载与异常反馈 * 三、 跨端状态同步:Cookie 管理与持久化 * 四、 实战 构建具备完整状态闭环的 ArkWeb 浏览器容器 * 五、 总结 前言 在移动应用开发中,原生开发(Native)与网页开发(Web)的融合方案(Hybrid)已成为商业应用的标配。营销活动页、动态协议、复杂的可视化报表等场景,通常依赖 Web 生态的灵活性与更新效率。因此,在鸿蒙原生应用中高性能地嵌入 H5 页面,是开发者必须掌握的核心能力。 在 HarmonyOS 6 (API 20) 中,系统提供了全新的 ArkWeb 内核。它基于

工业监控系统:C#上位机多PLC数据采集+Web可视化(WPF+SignalR)

工业监控系统:C#上位机多PLC数据采集+Web可视化(WPF+SignalR)

在工业自动化产线、智能工厂监控场景中,多PLC设备的集中数据采集与远程可视化是核心需求。WPF作为C#高端桌面应用框架,具备美观流畅的界面渲染能力;SignalR作为实时通信框架,可实现桌面端与Web端的毫秒级数据推送。本文将从零到一搭建多PLC并行采集(西门子S7系列)+ WPF本地监控 + SignalR实时推送 + Web可视化展示的完整工业监控系统,代码可直接复用,适配工业现场严苛环境。 一、项目核心架构与前期准备 1.1 整体架构设计 系统采用“分层架构+分布式通信”模式,形成“设备层-采集层-通信层-可视化层”的完整闭环: 1. 设备层:多台西门子PLC(S7-200SMART/300/400/1200/1500),提供产线温度、压力、电机转速、IO状态等工业数据; 2. 采集层:WPF上位机(.NET 8),封装多PLC并行采集工具类,支持断线重连、数据缓存、采集频率配置; 3. 通信层:

探索WAAPI:开启Web动画新纪元

探索WAAPI:开启Web动画新纪元

目录 一.WAAPI的诞生背景 二.WAAPI的核心组件与工作原理 2.1核心组件 2.2工作原理 三.WAAPI的显著优势 3.1性能卓越 3.2精确控制 3.3代码简洁易读 3.4兼容性与扩展性 四.WAAPI的应用场景与实践案例 4.1页面过渡动画 4.2交互式动画 4.3数据可视化动画 五.WAAPI的未来展望         在当今数字化时代,Web页面不再仅仅是静态信息的展示平台,而是逐渐演变为充满交互性和动态效果的多媒体空间。动画作为增强用户体验、传达信息的重要手段,在Web开发中扮演着愈发关键的角色。而Web Animations API(简称WAAPI)的出现,为Web动画开发带来了革命性的变化,它以其强大的功能和灵活的操控性,成为开发者手中的一把利器。 一.WAAPI的诞生背景         在WAAPI出现之前,Web开发者实现动画主要依赖CSS动画和JavaScript动画库。CSS动画虽然简单易用,但在控制动画的精确性和交互性方面存在一定局限;而传统的JavaScript动画库虽然功能丰富,

【Dify】使用 python 调用 Dify 的 API 服务,查看“知识检索”返回内容,用于前端溯源展示

【Dify】使用 python 调用 Dify 的 API 服务,查看“知识检索”返回内容,用于前端溯源展示

本文介绍了如何使用Dify HTTP API实现聊天问答功能,支持文本和图文交互。主要包含三个核心接口:上传文件获取ID、发送聊天消息(可携带图片)和删除会话。 脚本提供了极简封装类DifyChat,包含安全响应解析和可选会话管理功能。使用时需配置API地址、密钥和用户标识,支持纯文本问答和图文问答两种模式,并详细说明了流式输出、多用户适配等扩展场景的实现方法。 参考链接:对接Dify的api接口 上传文件、发起对话、删除对话 一、Dify 聊天示例脚本说明 本脚本演示了如何通过 Dify HTTP API 进行聊天问答,并可选携带图片。核心流程: 1. 上传文件(可选) * 调用 /v1/files/upload 上传本地图片,得到 upload_file_id。 * 只有在需要图文问答时才上传;纯文本时可跳过。 2. 发送对话消息 * 调用 /v1/chat-messages,