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

llama.cpp 去掉打印,只显示推理结果

llama.cpp 去掉打印,只显示推理结果

1 llama.cpp/common/log.h

#define LOG_INF(...) LOG_TMPL(GGML_LOG_LEVEL_INFO,  0,                 __VA_ARGS__)
#define LOG_WRN(...) LOG_TMPL(GGML_LOG_LEVEL_WARN,  0,                 __VA_ARGS__)
#define LOG_ERR(...) LOG_TMPL(GGML_LOG_LEVEL_ERROR, 0,                 __VA_ARGS__)
#define LOG_DBG(...) LOG_TMPL(GGML_LOG_LEVEL_DEBUG, LOG_DEFAULT_DEBUG, __VA_ARGS__)
#define LOG_CNT(...) LOG_TMPL(GGML_LOG_LEVEL_CONT,  0,                 __VA_ARGS__)#define LOG_INFV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_INFO,  verbosity, __VA_ARGS__)
#define LOG_WRNV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_WARN,  verbosity, __VA_ARGS__)
#define LOG_ERRV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_ERROR, verbosity, __VA_ARGS__)
#define LOG_DBGV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_DEBUG, verbosity, __VA_ARGS__)
#define LOG_CNTV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_CONT,  verbosity, __VA_ARGS__)

修改为:

#ifndef NDEBUG // 如果没有定义NDEBUG(即处于调试模式)#define LOG_INF(...) LOG_TMPL(GGML_LOG_LEVEL_INFO,  0,                 __VA_ARGS__)
#define LOG_WRN(...) LOG_TMPL(GGML_LOG_LEVEL_WARN,  0,                 __VA_ARGS__)
#define LOG_ERR(...) LOG_TMPL(GGML_LOG_LEVEL_ERROR, 0,                 __VA_ARGS__)
#define LOG_DBG(...) LOG_TMPL(GGML_LOG_LEVEL_DEBUG, LOG_DEFAULT_DEBUG, __VA_ARGS__)
#define LOG_CNT(...) LOG_TMPL(GGML_LOG_LEVEL_CONT,  0,                 __VA_ARGS__)#define LOG_INFV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_INFO,  verbosity, __VA_ARGS__)
#define LOG_WRNV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_WARN,  verbosity, __VA_ARGS__)
#define LOG_ERRV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_ERROR, verbosity, __VA_ARGS__)
#define LOG_DBGV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_DEBUG, verbosity, __VA_ARGS__)
#define LOG_CNTV(verbosity, ...) LOG_TMPL(GGML_LOG_LEVEL_CONT,  verbosity, __VA_ARGS__)#else // 如果定义了NDEBUG(即处于发布模式)
#define LOG_INF(...)
#define LOG_WRN(...)
#define LOG_ERR(...)
#define LOG_DBG(...)
#define LOG_CNT(...)#define LOG_INFV(verbosity, ...) 
#define LOG_WRNV(verbosity, ...) 
#define LOG_ERRV(verbosity, ...) 
#define LOG_DBGV(verbosity, ...) 
#define LOG_CNTV(verbosity, ...) #endif

2 语言模型部分,已经存在参数

语言模型部分 ,命令行参数:
--log-disable
禁止所有打印

3 视觉模型部分,以 llava-cli 为例

1 修改代码
llama.cpp/examples/llava/llava.cpp :
llama.cpp/examples/llava/clip.cpp :

#define LOG_INF(...) do { fprintf(stdout, __VA_ARGS__); } while (0)
#define LOG_WRN(...) do { fprintf(stderr, __VA_ARGS__); } while (0)
#define LOG_ERR(...) do { fprintf(stderr, __VA_ARGS__); } while (0)
#define LOG_DBG(...) do { fprintf(stderr, __VA_ARGS__); } while (0)

改为如下:

#ifndef NDEBUG // 如果没有定义NDEBUG(即处于调试模式)#define LOG_INF(...) do { fprintf(stdout, __VA_ARGS__); } while (0)
#define LOG_WRN(...) do { fprintf(stderr, __VA_ARGS__); } while (0)
#define LOG_ERR(...) do { fprintf(stderr, __VA_ARGS__); } while (0)
#define LOG_DBG(...) do { fprintf(stderr, __VA_ARGS__); } while (0)#else // 如果定义了NDEBUG(即处于发布模式)
#define LOG_INF(...)
#define LOG_WRN(...)
#define LOG_ERR(...)
#define LOG_DBG(...)
#define LOG_CNT(...)#endif

2 examples/llava/llava-cli.cpp :
process_prompt()函数内部:
LOG("%s", tmp);
改为
std::cout<<tmp;

3 examples/llava/CMakeLists.txt
添加宏定义 -DNDEBUG

set(TARGET llama-llava-cli)
add_executable(${TARGET} llava-cli.cpp)
set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME llama-llava-cli)
install(TARGETS ${TARGET} RUNTIME)
target_link_libraries(${TARGET} PRIVATE common llava ${CMAKE_THREAD_LIBS_INIT})
target_compile_features(${TARGET} PRIVATE cxx_std_11)
# 为特定目标添加 NDEBUG 定义
target_compile_definitions(${TARGET} PRIVATE -DNDEBUG)

编译之后,推理测试:

1.png
请添加图片描述

model_dir=/huggingface_cache/Bunny-v1_0-4B-gguf/ggml-model-f16.gguf
mmproj_dir=/huggingface_cache/Bunny-v1_0-4B-gguf/mmproj-model-f16.gguf
prompt=" A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: <image>\nWhy is the image funny? ASSISTANT:"image=/media/wmx/soft1/huggingface_cache/1.png/media/llama.cpp/build/bin/llama-llava-cli \
-m $model_dir \
--mmproj $mmproj_dir \
--image ${image} \
-p $prompt

只输出:

在海滩上,一位女士和她的狗正在进行一个友好的互动。狗伸出前爪,
似乎在与女士进行握手,这是人类和动物之间常见的问候方式。
女士坐在沙滩上,面带微笑,似乎在享受和狗狗的时光。背景是晴朗的天空和远处的海洋,

相关文章:

llama.cpp 去掉打印,只显示推理结果

llama.cpp 去掉打印&#xff0c;只显示推理结果 1 llama.cpp/common/log.h #define LOG_INF(...) LOG_TMPL(GGML_LOG_LEVEL_INFO, 0, __VA_ARGS__) #define LOG_WRN(...) LOG_TMPL(GGML_LOG_LEVEL_WARN, 0, __VA_ARGS__) #define LOG_ERR(…...

Word、PDF转换为图片Java

Word、PDF转换为图片Java 需求要在小程序端展示文档内容&#xff0c;所以将文档每页转换为图片后显示 参考和其他等方案&#xff1a; https://blog.csdn.net/strggle_bin/article/details/140599514 https://www.modb.pro/db/566986 https://blog.csdn.net/spring_is_comin…...

iOS IPA上传到App Store Connect的三种方案详解

引言 在iOS应用开发中&#xff0c;完成开发后的重要一步就是将IPA文件上传到App Store Connect以便进行测试或发布到App Store。无论是使用Xcode进行原生开发&#xff0c;还是通过uni-app、Flutter等跨平台工具生成的IPA文件&#xff0c;上传到App Store的流程都是类似的。苹果…...

Java中的Arrays类

java.util.Arrays是一个非常实用的类&#xff0c;提供了许多静态方法来操作数组&#xff0c;如排序、查找、复制和填充等。 1. toString - 将数组转换为字符串 // 导入java.util.Arrays类 import java.util.Arrays;public class ArraysExample {public static void main(Stri…...

GUI编程

GUI编程 【Java从0到架构师课程】笔记 GUI简介 GUI&#xff1a;图形用户界面&#xff0c;在计算机中采用图形的方式显示用户界面 java的GUI开发 AWT&#xff1a;java最早推出的GUI编程开发包&#xff0c;界面风格跟随操作系统SWT&#xff1a;eclipse就是java使用SWT开发的Sw…...

(multi)map和set--C++

文章目录 一、序列式容器和关联式容器二、set系列的使用1、set和multiset参考文档2、set类的介绍3、set的构造和迭代器4、set的增删查5、insert和迭代器遍历使用样例&#xff1a;6、find和erase使用样例&#xff1a;7、multiset和set的差异 三、map系列的使用1、map和multimap参…...

jmeter响应断言放进csv文件遇到的问题

用Jmeter的json 断言去测试http请求响应结果&#xff0c;发现遇到中文时出现乱码&#xff0c;导致无法正常进行响应断言&#xff0c;很影响工作。于是&#xff0c;察看了其他测试人员的解决方案&#xff0c;发现是jmeter本身对编码格式的设置导致了这一问题。解决方案是在jmete…...

复旦大学全球供应链研究中心揭牌,合合信息共话大数据赋能

10月13日&#xff0c;复旦大学全球供应链研究中心&#xff08;以下简称“中心”&#xff09;揭牌仪式在复旦大学管理学院政立院区隆重举行。我国的供应链体系庞大复杂&#xff0c;在百年未有之大变局下&#xff0c;保障产业链供应链安全已成为我国的重要战略目标。中心的设立旨…...

达那福发布新品音致系列:以顶尖降噪技术,开启清晰聆听新篇章

近日&#xff0c;国际知名助听器品牌达那福推出其最新研发的音致系列助听器。该系列产品旨在通过顶尖的声音处理技术&#xff0c;直面助听器市场中普遍存在的挑战——如何在噪声环境中提供清晰的语音辨识。 根据助听器行业协会2022年的调查数据&#xff0c;高达86%的佩戴者认为…...

当物理学奖遇上机器学习:创新融合的里程碑

作为一名程序员&#xff0c;看到 2024 年诺贝尔物理学奖颁发给机器学习与神经网络领域研究者&#xff0c;心中满是感慨与思考。 从编程技术角度出发&#xff0c;这意味着传统编程理念与物理思维有了更紧密的结合。在以往的编程中&#xff0c;算法优化多侧重于数据结构和计算效率…...

模拟电路2

BJT双极性晶体管 1.1 BJT共射特性曲线 输入特性&#xff1a; iB f(uBE)|UceC 定量分析&#xff0c;确定只有一个变量 输出特性 放大区&#xff1a;发射结正偏&#xff0c;集电结反偏 截至区&#xff1a;双结反偏 CE断路 饱和区&#xff1a;双结正偏 UCEs0.3 CE类似于开关闭…...

大数据面试题整理——MapReduce

系列文章目录 第一章 HDFS面试题 第二章 MapReduce面试题 文章目录 系列文章目录一、请简要解释一下 MapReduce 的工作原理。二、什么是 map 函数和 reduce 函数&#xff1f;它们的作用分别是什么&#xff1f;三、如何处理数据倾斜问题在 MapReduce 中&#xff1f;四、在 MapR…...

【景观生态学实验】实验一 ArcGIS地理数据处理及制图基础

实验目的 1.掌握ArcGIS软件基本操作&#xff1a;通过实验操作与学习&#xff0c;熟练掌握ArcGIS软件相关的基本操作&#xff0c;包括界面熟悉、工具栏使用、数据的加载和保存、基本数据处理操作等; 2.掌握如何使用ArcGIS进行影像拼接及裁剪&#xff1a;通过实验操作与学习&am…...

今年双十一最值得入手的好物有哪些?双十一值得选购的好物盘点!

在这个全民狂欢的购物盛宴——双十一&#xff0c;每一个角落都弥漫着诱人的优惠与不可错过的精品。从科技潮品到生活必需品&#xff0c;从时尚尖货到家居好物&#xff0c;无数精选商品在这一季集中绽放&#xff0c;等待着慧眼识珠的你将它们带回家&#xff0c;今年的双十一&…...

【OpenCV】人脸识别方法

代码已上传GitHub&#xff1a;plumqm/OpenCV-Projects at master EigenFace、FisherFace、LBPHFace 这三种方法的代码区别不大所以就一段代码示例。 EigenFace与FisherFace 1. 将人脸图像展开为一维向量&#xff0c;组成训练数据集 2. PCA&#xff08;EigenFace&#xff09;或…...

xxl-job定时任务

学习中心 清理Redis中的历史榜单&#xff1a; 持久化榜单数据&#xff1a; 创建历史榜单表&#xff1a; 支付服务 待退款订单检查&#xff1a; 未支付订单检查&#xff1a; 交易服务 退款单处理&#xff1a; 促销中心 优惠券发放状态处理&#xff1a;...

C#从零开始学习(如何构建应用)(1)

开始使用 C# 本章所有的代码都放在 https://github.com/hikinazimi/head-first-Csharp 创建一个控制台应用 打开Visual Studio 2019 创建项目 选择控制台应用程序 创建后点击运行,就可以在控制台打印Hello World 构建一个游戏(创建WPF项目) 构建游戏的步骤 首先创建WPF项…...

OpenCV高级图形用户界面(7)获取指定窗口的属性值函数getWindowProperty()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 提供窗口的参数。 函数 getWindowProperty 返回窗口的属性。 cv::getWindowProperty() 函数用于获取指定窗口的属性值。这个函数允许你查询窗口…...

Java实现文件上传功能

目录 1、准备工作 2、注意事项 3、jsp页面代码 4、Servlet 5、注册Servlet 1、准备工作 导入依赖&#xff1a;commons-fileupload和commons-io 2、注意事项 ①为保证服务器安全&#xff0c;上传文件应该放在外界无法直接访问的目录下&#xff0c;比如WEB-INF目录下 ②为…...

Leetcode|24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II

24. 注意&#xff1a;涉及头节点的修改或者删除时&#xff0c;最好设置一个虚拟的头结点&#xff0c;方便简化代码&#xff0c;不必进行是否为头节点的的判断&#xff0c;简化code class Solution { public:ListNode* swapPairs(ListNode* head) {ListNode* dummyHead new Li…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式&#xff0c;给定一个隐函数关系&#xff1a; F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 &#x1f9e0; 目标&#xff1a; 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...

Oracle实用参考(13)——Oracle for Linux物理DG环境搭建(2)

13.2. Oracle for Linux物理DG环境搭建 Oracle 数据库的DataGuard技术方案,业界也称为DG,其在数据库高可用、容灾及负载分离等方面,都有着非常广泛的应用,对此,前面相关章节已做过较为详尽的讲解,此处不再赘述。 需要说明的是, DG方案又分为物理DG和逻辑DG,两者的搭建…...