使用LLama.cpp本地部署大模型

摘要

        llama.cpp是一个基于C/C++开发的高效大语言模型推理工具,支持跨平台部署和Docker快速启动,核心功能是在有限的计算资源情况下本地部署使用大模型。本文介绍了通过Docker方式部署llama.cpp的步骤,包括如何下载模型、CPU/GPU配置及启动参数说明。llama.cpp提供Web UI界面和OpenAI兼容API,支持文本和多模态对话,对电脑配置要求不高,完全免费且私密,让普通用户也能轻松在本地运行大语言模型。

LLama.cpp简介

       1. llama.cpp 是一个在 C/C++ 中实现大型语言模型(LLM)推理的工具

        2.支持跨平台部署,也支持使用 Docker 快速启动

        3.可以运行多种量化模型,对电脑要求不高,CPU/GPU设备均可流畅运行。

        支持模型包含:llama系列,qwen系列,gemma系列,Falcon、Alpaca、GPT4All、Chinese LLaMA、Vigogne、Vicuna、Koala、OpenBuddy、Pygmalion、Metharme、WizardLM、Baichuan、Aquila、Starcoder、Mistral AI、Refact、Persimmon、MPT、Bloom、StableLM-3b-4e1t等。

        4.开源地址参考:https://github.com/ggml-org/llama.cpp

        5.支持模型格式:GUFF(llama提供了转换成GUFF格式的工具)

        6.纯C/C++实现,没有任何依赖

        7.对Apple Silicon(如M1/M2/M3芯片)提供一流支持 - 通过ARM NEON、Accelerate和Metal框架优化

        8.支持x86架构的AVX、AVX2、AVX512和AMX指令集

        9.支持1.5位、2位、3位、4位、5位、6位和8位整数量化,实现更快的推理和更低的内存使用

为NVIDIA GPU提供自定义CUDA内核(通过HIP支持AMD GPU,通过MUSA支持摩尔线程MTT GPU)

        10.支持Vulkan和SYCL后端

        11.CPU+GPU混合推理,可部分加速大于总VRAM容量的模型     

        12.工作流程图:

大模型下载

        本文以Qwen3-VL-8B-Instruct-GGUF为列演示如何下载大模型。

        1.huggingface官网官网下载,https://huggingface.co/models

        2.modelscope(魔塔)下载

        登录huggingface需要科学上网,所以这里选择modelscope下载。

        第一,需要安装python,这个是基础,如果不会的话自己去搜索;

        第二,安装modelscope,打开CMD命令行,输入pip install modelscope;

        第三,在命令行中输入:

                modelscope download --model Qwen/Qwen3-VL-8B-Instruct-GGUF  --local_dir  qwen

                加--local_dir参数是为了指定到的地址。

    下面是我的命令行:

        通过以上命令可以将Qwen3-VL-8B-Instruct-GGUF中的所有文件下载到d:/llm-models/qwen文件夹中,等待下载完成即可。如果只是下载部分文件也可以自己指定,具体怎么操作可以去查看modelscope中的文档说明:Qwen3-VL-8B-Instruct-GGUF · 模型库

下载llama.cpp

         llama.cpp有已经编译好的可直接执行的程序,如果仅仅是部署使用,可直接下载对应版本,下载地址:

        llama.cpp编译版本下载连接

  运行大模型Llama-cli

        使用llama-cli运行指定的大模型

        

这是运行成功后的界面:

        然后就可以直接在上面输入信息与大模型对话了:

 编译llama.cpp源码

需要的环境如下:

1.下载cmake,Download CMake

2.带有 "使用 C++ 的桌面开发" 工作负载的 Visual Studio Community Edition

3.下载llama.cpp源码(也可以使用git下载),https://github.com/ggerganov/llama.cpp

使用cmd进入llama.cpp的源码目录:

先运行:cmake -B build

如果没有安装CURL,会出现如下提示:

禁用CURL即可,即使用下面的命令:

cmake -B build -DLLAMA_CURL=OFF

会出现如下的警告,不用管。

然后再运行:cmake --build build --config Release

        大概10分钟左右,编译好的dll和可执行文件就好了,基本不会出现其他问题。

        

后记

        如果大模型太大,导入时可能会提示缓存不够,那就换个小点的模型。

Read more

Java 大视界 -- Java 大数据在智能交通智能停车诱导与车位共享中的应用

Java 大视界 -- Java 大数据在智能交通智能停车诱导与车位共享中的应用

Java 大视界 -- Java 大数据在智能交通智能停车诱导与车位共享中的应用 * 引言: * 正文: * 一、Java 构建的智能停车全场景技术体系(含极端气候适配) * 1.1 寒地设备续航优化(哈尔滨实战) * 1.2 设备故障预测模型(全国 19 城数据训练) * 二、政企协同的车位共享生态(含政策适配) * 2.1 广州车展应急共享机制(2023 年实战) * 2.2 成都社区错峰共享(金牛区案例) * 三、那些藏在代码里的 “民生细节” * 结束语: * 🗳️参与投票和联系我: 引言: 嘿,亲爱的 Java 和 大数据爱好者们,大家好!我是ZEEKLOG(全区域)四榜榜首青云交!《中国城市交通发展报告(2024)

By Ne0inhk
【Java 开发日记】什么是线程池?它的工作原理?

【Java 开发日记】什么是线程池?它的工作原理?

目录 一、什么是线程池? 二、线程池的核心工作原理 核心组件 工作流程详解(结合上图) 补充:线程回收 三、Java中的线程池实现 (ThreadPoolExecutor) 核心构造函数 常见的任务队列 (workQueue) 内置的拒绝策略 四、通过 Executors 工具类创建的常见线程池 五、最佳实践与总结 一、什么是线程池? 核心思想: 线程池是一种基于“池化”思想来管理线程的工具。它预先创建好一定数量的线程,放入一个“池子”中,当有任务需要执行时,就从池子中取出一个空闲线程来执行任务,任务执行完毕后,线程并不被销毁,而是返回池中等待执行下一个任务。 为什么需要线程池? 在深入原理之前,我们先想想如果不使用线程池,我们如何处理多任务: // 原始方式:为每个任务创建一个新线程 for (int i = 0; i <

By Ne0inhk
Java外功精要(6)——Spring事务及其传播机制

Java外功精要(6)——Spring事务及其传播机制

1.概述 Spring事务管理是Spring框架中用于确保数据库操作 原子性、一致性、隔离性和持久性(ACID) 的核心机制。它通过声明式或编程式(本文略)方式管理事务,支持多种事务传播行为和隔离级别相较于编程式事务,声明式事务通过@Transactional注解实现事务管理,无需手动编写事务代码事务基本概念在全面解析MySQL(5)——“索引、事务、JDBC”三大核心一文中有介绍,本文不再赘述 2.@Transactional 作用:提供声明式事务管理。它简化了在应用程序中管理数据库事务的流程。开发者只需在方法或类上添加此注解,Spring框架就会自动处理事务的开启、提交和回滚,无需手动编写事务管理代码(如 begin、commit、rollback) 级别:类 + 方法作为类注解:为类中所有public方法添加注解作为方法注解:默认仅对public方法生效 @RequestMapping("/test")@RestController@Slf4jpublicclassTestController{privatefinalUserService userService;@A

By Ne0inhk
【Linux/C++多进程篇(一) 】一个变两个?揭秘 C/C++ 程序中神奇的“分身术”

【Linux/C++多进程篇(一) 】一个变两个?揭秘 C/C++ 程序中神奇的“分身术”

⭐️在这个怀疑的年代,我们依然需要信仰。 个人主页:YYYing. ⭐️Linux/C++进阶系列专栏:【从零开始的linux/c++进阶编程】 ⭐️其他专栏:【linux基础】【数据结构与算法】【从零开始的计算机网络学习】 系列上期内容:【Linux/C++文件篇(一) 】标准I/O与文件I/O基础  系列下期内容:【Linux/C++多进程篇(二) 】万字解析linux系统编程之进程间通信 (IPC) 目录 前言:        多进程理论基础 一、为什么要引入多进程 二、多进程相关概念 三、进程的内存管理 四、进程与程序的区别 五、进程的种类 六、进程PID 七、特殊的进程 八、linux中有关进程的指令 九、进程状态的切换

By Ne0inhk