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

IsoBench:多模态基础模型性能的基准测试与优化

随着多模态基础模型的快速发展,如何准确评估这些模型在不同输入模态下的性能成为了一个重要课题。本文提出了IsoBench,一个基准数据集,旨在通过提供多种同构(isomorphic)表示形式的问题,来测试和评估多模态基础模型在数学、科学、算法和游戏等领域的表现。通过IsoBench发现,尽管人类倾向于偏好视觉表示,但当前的多模态模型在处理文本输入时的性能普遍优于图像输入。此外,本文还介绍了两种提升模型性能的提示技术:IsoCombination和IsoScratchPad,旨在通过结合不同输入表示或在视觉和文本表示之间进行转换来提高模型的推理能力。

Figure 1探讨了多模态基础模型是否平等地处理每种模态。它展示了一个模型在接收图像表示或与之同构的文本表示时的不同响应。例如,在上面的图中,只有文本表示的响应是正确的IsoBench扩展了这样的示例到四个领域(数学、科学、算法、游戏),发现许多流行的多模态基础模型普遍倾向于文本。

IsoBench

IsoBench作为一个多领域的基准测试数据集,其设计初衷是为了全面评估多模态基础模型在处理各种类型问题时的性能。它包含了超过1630个精心挑选的样本,这些样本广泛覆盖了离散和应用数学、物理、化学以及国际象棋等不同领域。这样的设计使得IsoBench能够为研究者提供一个广泛的测试平台,用以衡量和比较模型在不同认知任务上的表现。

在IsoBench中,每个样本都至少提供了两种形式的表示:一种是视觉表示,另一种或多种是文本表示。视觉表示通常以图像的形式呈现,例如函数的曲线图、化学结构图或国际象棋的棋盘布局。与此相对应,文本表示则以文字形式提供相同的信息,这可能包括函数的数学表达式、化学方程式或棋局的代数表示。重要的是,这些文本表示与视觉表示是同构的,也就是说,它们在逻辑和信息上是等价的,这保证了研究者可以公正地评估模型处理不同模态输入的能力。

IsoBench的设计巧妙之处在于,它允许研究者直接比较模型在接收相同信息但以不同形式表达时的性能差异。这种比较对于理解多模态模型如何处理和整合来自不同模态的信息至关重要。例如,研究者可以观察到模型在解析文本描述的数学问题时是否比直接从图像中提取信息更为准确。同样,在化学领域,模型是否能够从分子结构图中正确地识别出相关信息,与它处理文本描述的能力相比如何,这些都是IsoBench能够回答的问题。

IsoBench的这种设计还有助于揭示模型可能存在的偏好或偏见。例如,如果模型在处理文本输入时的性能普遍优于图像输入,这可能表明当前的多模态模型在视觉信息处理方面存在局限,或者模型的训练过程中对文本数据的依赖性更强。通过这样的分析,研究者可以更深入地了解模型的内部工作机制,并据此对模型进行改进。

IsoBench的构建涉及以下几个步骤:

  1. 数学包括连续数学问题的图像、LATEX和代码文本表示。IsoBench数据集的构建是一个精心设计的过程,旨在全面评估多模态基础模型在不同领域的表现。它涵盖了数学问题,这不仅包括了函数的图像表示,还包含了使用LATEX格式和代码形式的文本表示。图像表示通过matplotlib生成,确保了函数的关键属性在视觉上清晰可见。LATEX和代码文本表示则提供了函数的精确数学定义,使得模型可以通过解析这些文本来理解函数的性质。
  2. 游戏国际象棋游戏的图形棋盘、代数布局、PGN和FEN文本表示。在游戏领域,尤其是国际象棋,IsoBench通过图形棋盘、代数布局、PGN(便携式游戏符号)和FEN(Forsyth-Edwards符号)等多种形式来表示棋局。图形棋盘以图像格式展示,而代数布局、PGN和FEN则以文本形式提供,这些文本表示形式能够使模型以不同的方式理解和处理棋局信息。
  3. 算法图算法问题的图像、LATEX数学表达和故事描述文本表示。对于算法问题,IsoBench采用了图像、LATEX数学表达和故事描述文本这三种表示方式。图像表示利用networkx包以随机风格展示图,而LATEX表示则使用邻接矩阵作为图的数学表示。故事描述文本则将图问题以故事的形式呈现,例如将图连通性问题描述为判断两个城市之间是否可以通过驾驶到达。
  4. 科学:科学问题的图像和文本表示,后者由人工编写,以确保与图像内容的同构性。在科学问题方面,IsoBench包括了图像和文本两种表示形式。图像表示为每个样本提供了文本问题、选项以及附加的图表,以提供额外的上下文信息。文本表示则是由人工编写的,描述了每个图表的内容,同时避免引入额外的推理或超出图表所展示的信息,确保了与图像内容的同构性。

Figure 2介绍了IsoBench包含的四个主要领域:数学函数、科学问题、图算法和棋类游戏。对于每个领域,都有两个或三个子任务。IsoBench中的所有示例都提供了一个图像表示和几个与之同构的文本表示。

性能分析

性能分析的核心目的在于比较模型在接收相同信息的不同表示形式时的性能差异,尤其是视觉表示与文本表示之间的差异。通过对IsoBench数据集中的样本进行测试,研究者发现了一个有趣的现象:尽管人类在认知过程中通常更倾向于视觉信息,显示出所谓的“图片优势效应”,但参与测试的多模态模型却表现出了与人类完全相反的倾向。

这些模型在处理文本提示时的性能明显优于图像提示。例如,在IsoBench的测试中,Claude-3 Opus模型在图像输入下的表现比文本输入低了28.7个百分点,显示出在图像理解方面的明显不足。同样,GPT-4 Turbo和Gemini Pro也展现出了类似的趋势,分别在图像输入下比文本输入低18.7个百分点和14.9个百分点。这一发现指出了当前多模态模型在图像处理能力上的局限性,同时也表明了模型在文本理解方面的相对优势。

Table 1展示了IsoBench的评估结果。列出了不同的主题(科学、数学、算法、游戏)和模型(如GPT-4 Turbo、Gemini Pro、Claude-3 Opus等),并展示了在处理图像和文本表示时的准确率。图像与文本表示之间的准确率差距可达到28.7%。

这些结果对于理解多模态基础模型的内部工作机制具有重要意义。它们提示研究者,尽管这些模型被称为“多模态”,但它们在处理不同模态信息时可能并没有实现平衡,而是存在一定的偏好。这种偏好可能源于模型训练过程中数据的不平衡,或者是模型架构本身对于文本信息的处理更为优化。

这些发现还为改进多模态模型提供了方向。研究者可以考虑通过调整模型的训练策略或改进模型架构来减少这种性能差异,从而使模型在处理视觉信息时能够达到与文本信息相似的性能水平。例如,可以通过增加图像模态的训练样本或改进图像特征的提取和融合机制来提高模型的视觉理解能力。

IsoCombination and IsoScratchPad

为了应对多模态基础模型在处理不同输入模态时表现出的性能差异,研究者们提出了IsoCombination(IsoCB)和IsoScratchPad(IsoSP)两种创新的方法。这些方法旨在通过不同的策略来提高模型对视觉和文本输入的理解和处理能力,从而缩小它们在性能上的差距。

IsoCombination和IsoScratchPad两种方法的说明。IsoCB将所有用户提供的表示结合在一起,为一个基础模型构建一个统一的提示。IsoSP是一个两步提示方法,首先让基础模型描述一个图像,然后使用这个文本描述作为给定任务的唯一表示。

IsoCombination (IsoCB)

IsoCombination(IsoCB)方法的核心思想是将多种同构表示形式同时提供给模型,这样做的目的是让模型能够从不同的信息表达中提取和整合知识,以期望能够获得比单一模态输入更好的性能。例如,在处理图算法问题时,IsoCB方法通过结合图像表示和文本表示(如LATEX或故事描述),使得模型能够更全面地理解问题的本质。实践证明,这种方法能够有效地提高模型的性能,与单一最佳表示相比,性能提升最高可达9.4个百分点。这表明,多模态输入的联合效应能够显著促进模型在某些复杂任务上的表现。

IsoScratchPad (IsoSP)

与IsoCB的直接联合不同,IsoScratchPad(IsoSP)采用的是一种分两步的提示策略。IsoSP首先要求模型接收并处理视觉表示,然后将其转换为文本格式,这一步骤就像是在草稿本上做笔记一样,将视觉信息“翻译”成文本信息。接下来,模型利用这个生成的文本表示来完成特定的任务,如预测输出。这种方法特别适合于那些需要从视觉信息中提取关键细节并进行深入分析的任务。例如,在科学问题领域,IsoSP方法能够显著提高模型的性能,与直接使用图像表示相比,性能提升最多可达14.4个百分点。这证明了通过将视觉信息转换为文本信息,可以更好地激发和利用模型的文本处理能力。

Table 6 提供了IsoCombination(IsoCB)和IsoScratchPad(IsoSP)两种方法的性能分析结果。详细展示了这两种方法在不同领域(如最大流问题、连通性、物理问答、化学问答等)对模型性能提升的影响。在表格中,最佳方法的性能用红色突出显示,而与仅使用图像提示相比的性能提升则用绿色标示。

IsoCombination(IsoCB)方法通过将所有提供的同构表示结合起来,构建一个统一的提示输入给模型。这种方法利用了不同表示形式之间的互补性,以期望模型能够更全面地理解问题。根据Table 6中的结果,IsoCB在多个任务上相对于仅使用图像提示的性能有了显著提升。例如,在处理最大流问题时,IsoCB将性能从36.7%提升到了65.6%,显示出了28.9个百分点的显著提高。

IsoScratchPad(IsoSP)方法则采用了一个两步提示策略。首先,模型接收包含视觉元素的提示,并将其转换为文本描述;然后,使用这个文本描述作为唯一的输入来完成任务。IsoSP方法的优势在于,它允许模型利用其在文本处理上的强项,同时通过自身的描述过程更深入地理解视觉信息。根据Table 6中的数据,IsoSP同样在多个领域相对于图像提示表现出了性能提升,例如在化学问答任务中,IsoSP的性能从69.3%提升到了88.0%,提高了18.7个百分点。

值得注意的是,对于某些特定领域,IsoCombination(IsoCB)不仅改善了图像提示的性能,还进一步改善了文本提示的性能。这意味着在某些情况下,结合多种表示形式的IsoCB方法甚至比单一的最佳文本提示表现得更好,这表明IsoCB在促进模型性能方面具有潜在的额外优势。

IsoCB和IsoSP这两种方法的提出,不仅展示了通过创新的提示技术和输入策略来提高多模态模型性能的可能性,也为未来多模态人工智能的发展提供了新的思路。通过这些方法的应用和进一步的优化,可以期待多模态基础模型在处理多样化输入时将变得更加均衡和高效。这对于推动多模态人工智能技术在更广泛领域的应用具有重要意义。IsoBench的建立不仅为理解多模态模型的能力提供了一个测试平台,也为未来多模态人工智能的发展提供了重要的参考和指导。

论文链接:https://arxiv.org/abs/2404.01266

相关文章:

IsoBench:多模态基础模型性能的基准测试与优化

随着多模态基础模型的快速发展,如何准确评估这些模型在不同输入模态下的性能成为了一个重要课题。本文提出了IsoBench,一个基准数据集,旨在通过提供多种同构(isomorphic)表示形式的问题,来测试和评估多模态…...

MyEclipse使用教程

MyEclipse使用教程如下,按照以下步骤,您可以逐步熟悉并掌握MyEclipse的基本使用: 一、MyEclipse安装与准备 软件准备: 在使用MyEclipse之前,您需要确保已经安装了JDK(Java Development Kit)。J…...

TiDB学习9:Ti Cloud简介

目录 1. 为什么选择TiDB 2. 多租户 3. TiDB架构 4. 什么是TiDB Cloud 5. TiDB Cloud Provider Region 6. TiDB Cloud 入门 6.1 在浏览器中打开TiDB Cloud 6.2 创建您的账户 6.3 Developer Tier 与Dedicated Tier 6.3.1 Developer Tier 6.3.2 Dedicated Tier 6.3.2.…...

JavaScript 创建新节点的方法

在 JavaScript 中,可以使用 document.createElement() 方法来创建新的节点。该方法接受一个字符串参数,表示要创建的节点类型,如 "div"、"p" 等。 创建一个新节点的基本步骤如下: 使用 document.createElem…...

在phpstorm2024版里如何使用Jetbrains ai assistant 插件 ?

ai assistant激活成功后,如图 ai assistant渠道:https://web.52shizhan.cn/activity/ai-assistant 在去年五月份的 Google I/O 2023 上,Google 为 Android Studio 推出了 Studio Bot 功能,使用了谷歌编码基础模型 Codey,Codey 是…...

进程间通信(27000字超详解)

🌎进程间通信 文章目录: 进程间通信 进程间通信简介       进程间通信目的       初识进程间通信       进程间通信的分类 匿名管道通信       认识管道       匿名管道       匿名管道测试       管道的四种…...

一、大模型推理

https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md https://github.com/hiyouga/LLaMA-Factory/blob/main/examples/README_zh.md 安装 v7.1 https://github.com/hiyouga/LLaMA-Factory/releases/tag/v0.7.1 git clone --depth 1 https://github.com/hiyoug…...

.NET IoC 容器(三)Autofac

目录 .NET IoC 容器(三)AutofacAutofacNuget 安装实现DI定义接口定义实现类依赖注入 注入方式构造函数注入 | 属性注入 | 方法注入注入实现 接口注册重复注册指定参数注册 生命周期默认生命周期单例生命周期每个周期范围一个生命周期 依赖配置Nuget配置文…...

Day44 动态规划part04

背包问题 01背包问题:每件物品只能用一次完全背包问题:每件物品可以使用无数次 01背包问题 暴力解法:每一件物品其实只有两个状态,取或者不取,所以可以使用回溯法搜索出所有的情况,那么时间复杂度就是 o…...

html期末复习速览

一.基础标签 1.段落标签<p></p> 特点&#xff1a;分段分割 2.标题标签<h1></h1>……<h6></h6> 特点&#xff1a;文字加粗&#xff0c;单独占一行 3.换行标签<br /> 特点&#xff1a;单标签&#xff0c;强制换行 二.文本格式化…...

CTFHUB-信息泄露-目录遍历和PHPINFO

目录 目录遍历 PHPINFO 目录遍历 很简单&#xff0c;挨着把每个目录都点开看一下 发现2目录下有个 flag.txt 文件&#xff0c;点开发现了本关的flag PHPINFO 这关也很简单&#xff0c;进来之后是一个phpinfo页面&#xff0c;按 CTRL F键打开查询&#xff0c;输入flag&#…...

面向Java程序员的Go工程开发入门流程

对于一个像我这样没有go背景的java程序员来说&#xff0c;使用go开发一个可用的程序的速度是肉眼可见的缓慢。 其难点不在于go语言本身&#xff0c;而是搭建整个工程链路的过程&#xff0c;即所谓的“配环境”。 本文主要讲述如何配出一个适合go开发的环境&#xff0c;以免有同…...

vue3开发高德地图

在vue3的index.html 使用动态注入地址名和key <html lang"en"><head><meta charset"UTF-8" /><link rel"icon" type"image/svgxml" href"/vite.svg" /><meta name"viewport" conten…...

通过DLL方式链接glfw3.dll

主要是CMakeLists.txt文件变化 cmake_minimum_required(VERSION 3.10) project(glfwTest) set(CMAKE_CXX_STANDARD 11) aux_source_directory(. SRC_SOURCES) set(GLFW_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include) set(GLFW_LIBRARY_DIR ${CMAKE_SOURCE_DIR}/lib/glfw) add_ex…...

Python自然语言处理(NLP)库之NLTK使用详解

概要 自然语言处理(NLP)是人工智能和计算机科学中的一个重要领域,涉及对人类语言的计算机理解和处理。Python的自然语言工具包(NLTK,Natural Language Toolkit)是一个功能强大的NLP库,提供了丰富的工具和数据集,帮助开发者进行各种NLP任务,如分词、词性标注、命名实体…...

sqoop操作

介绍 sqoop是隶属于Apache旗下的, 最早是属于cloudera公司的,是一个用户进行数据的导入导出的工具, 主要是将关系型的数据库(MySQL, oracle...)导入到hadoop生态圈(HDFS,HIVE,Hbase...) , 以及将hadoop生态圈数据导出到关系型数据库中 操作 将数据从mysql中导入到HDFS中 1.全量…...

【Qt秘籍】[002]-开始你的Qt之旅-下载

一、Qt的开发工具有哪些&#xff1f; Qt的开发工具概述Qt支持多种开发工具&#xff0c;其中最常见的开发工具是 1.QtCreator 【易上手/有少量bug/适合新手】 2.VisualStudio 【功能强大/易出错/需要更多额外配置】 3.Eclipse 【清朝老兵IDE/不建议使用】 【注意&#xff1…...

【自动驾驶】点与向量从ego系转odometry系

1.点从ego系转odometry系(ego -> odometry) struct Point {float x;float y;float angle; }; Point trans; // is the odom to ego transform Point odom_coord; is the odom coord Point ego_coord; is the ego coordfloat odom_coord.x = (ego_coord.x - trans.x) * st…...

jsmug:一个针对JSON Smuggling技术的测试PoC环境

关于jsmug jsmug是一个代码简单但功能强大的JSON Smuggling技术环境PoC&#xff0c;该工具可以帮助广大研究人员深入学习和理解JSON Smuggling技术&#xff0c;并辅助提升Web应用程序的安全性。 背景内容 JSON Smuggling技术可以利用目标JSON文档中一些“不重要”的字节数据实…...

Qt 控件提升

什么是控件提升&#xff08;Widget Promotion&#xff09; 控件提升是一个在Qt编程中常见但容易被忽视的概念。简单来说&#xff0c;控件提升就是将一个基础控件&#xff08;Base Widget&#xff09;转换为一个更特定、更复杂的自定义控件&#xff08;Custom Widget&#xff09…...

封装一个websocket,支持断网重连、心跳检测,拿来开箱即用

封装一个websocket&#xff0c;支持断网重连、心跳检测 代码封装 编写 WebSocketClient.js import { EventDispatcher } from ./dispatcherexport class WebSocketClient extends EventDispatcher {constructor(url) {console.log(url, urlurl)super()this.url url}// #soc…...

推荐一款开源电子签章/电子合同系统

文章目录 前言一、项目介绍二、项目地址三、技术架构四、代码结构介绍五、功能模块六、功能界面首页面手写签名面板电子印章制作数字证书生成 总结 前言 大家好&#xff01;我是智航云科技&#xff0c;今天为大家分享一个免费开源的电子签字系统。 一、项目介绍 开放签电子签…...

Qt Creator(Qt 6.6)拷贝一行

Edit - Preference - Environment&#xff1a; 可看到&#xff0c;拷贝一行的快捷键是&#xff1a; ctrl Ins...

红队内网攻防渗透:内网渗透之数据库权限提升技术

红队内网攻防渗透 1. 内网权限提升技术1.1 数据库权限提升技术1.1.1 数据库提权流程1.1.1.1 先获取到数据库用户密码1.1.1.2 利用数据库提权工具进行连接1.1.1.3 利用建立代理解决不支持外联1.1.1.4 利用数据库提权的条件及技术1.1.2 Web到Win-数据库提权-MSSQL1.1.3 Web到Win-…...

从0开始制作微信小程序

目录 前言 正文 需要事先准备的 需要事先掌握的 什么是uniapp 平台应用的分类方式 什么是TypeScript 创建项目 项目文件作用 源码地址 尾声 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Security and so on.&#x1…...

Linux学习笔记:日志文件的编写

日志文件Log.hpp 日志文件的作用简单的日志文件编写 日志文件的作用 日志文件可以很好的帮我们显示出程序运行的信息,例如,进程pid,运行时间,运行状况等,通过日志记录程序的执行路径、变量值、函数调用等&#xff0c;可以帮助我们快速定位和修复代码中的错误。 简单的日志文件…...

为什么要保持方差为1

1.数值稳定性&#xff1a; 在机器学习和深度学习中&#xff0c;维持激活函数输入的方差在一个合理范围内&#xff08;如1&#xff09;是很重要的&#xff0c;这有助于防止在训练过程中发生梯度消失或梯度爆炸的问题。如果方差过大或过小&#xff0c;经过多层网络后输出结果的方…...

Wpf 使用 Prism 实战开发Day31

登录数据绑定 1.首先在LoginViewModel 登录逻辑处理类中&#xff0c;创建登录要绑定属性和命令 public class LoginViewModel : BindableBase, IDialogAware {public LoginViewModel(){ExecuteCommand new DelegateCommand<string>(Execure);}public string Title { ge…...

Linux权限提升二

#应用场景&#xff1a; 获取到Web权限或普通用户在Linux服务器上时进行的SUID&SUDO提权 SUID (Set owner User ID up on execution)是给予文件的一个特殊类型的文件权限。在Linux/Unix中&#xff0c;当一个程序运行的时候&#xff0c;程序将从登录用户处继承权限。SUID被定…...

[AI OpenAI] 推出ChatGPT Edu

一种负担得起的解决方案&#xff0c;帮助大学将AI负责任地引入校园。 我们宣布推出ChatGPT Edu&#xff0c;这是一个专为大学设计的ChatGPT版本&#xff0c;旨在负责任地向学生、教职员工、研究人员和校园运营部署AI。ChatGPT Edu由GPT-4o提供支持&#xff0c;能够跨文本和视觉…...

HTML5+CSS3回顾总结

一、HTML5新特性 1.语义化标签 <header> 头部标签<nav> 导航标签<article> 内容标签<section> 定义文档某个区域<aside> 侧边栏标签<footer> 尾部标签 2.多媒体标签 2.1视频标签vedio 》常规写法&#xff08;尽量都使用mp4&#xff0…...

AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.05.01-2024.05.10

文章目录~ 1.Pseudo-Prompt Generating in Pre-trained Vision-Language Models for Multi-Label Medical Image Classification2.VLSM-Adapter: Finetuning Vision-Language Segmentation Efficiently with Lightweight Blocks3.Memory-Space Visual Prompting for Efficient …...

Python 点云生成高程模型图(DSM)

点云生成高程模型图 一、什么是DSM?二、python代码三、结果可视化一、什么是DSM? DSM(Digital Surface Model)是一种数字高程模型,通常用于描述地表地形的数字化表示。它是由一系列离散的高程数据点组成的三维地形模型,其中每个点都具有其相应的高程值。   DSM主要用于…...

[第五空间 2021]WebFTP

题目是WebFTP 通过标签可以看出git泄露(git泄露是指开发人员利用git进行版本控制) 通过网上了解WebFTP的源码账号admin 密码admin888 进去之后正常思路是我们利用/.git 在githack里面进行复现 查看log看看有没有flag 但是经过我们查询之后不是这样子 通过一段时间摸索在phpinf…...

SQL—DQL(数据查询语言)之小结

一、引言 在前面我们已经学习完了所有的关于DQL&#xff08;数据查询语言&#xff09;的基础语法块部分&#xff0c;现在对DQL语句所涉及的语法&#xff0c;以及需要注意的事项做一个简单的总结。 二、DQL语句 1、基础查询 注意&#xff1a; 基础查询的语法是&#xff1a;SELE…...

找回xmind文件办法:一切意外均可找回(误删/重启关机等)

我周三编辑完&#xff0c;周四下午评审完用例忘记保存 结果到了快乐星期五&#xff0c;由于是周五我太开心了...早上到公司后觉得电脑卡&#xff0c;直接点了重启啥都没保存啊啊啊啊啊 准备上传测试用例时才想起来我的用例找不见了&#xff01;&#xff01;&#xff01;&…...

微信小程序 npm构建+vant-weaap安装

微信小程序&#xff1a;工具-npm构建 报错 解决&#xff1a; 1、新建miniprogram文件后&#xff0c;直接进入到miniprogram目录&#xff0c;再次执行下面两个命令&#xff0c;然后再构建npm成功 npm init -y npm install express&#xff08;Node js后端Express开发&#xff…...

【LeetCode 63】 不同路径 II

1. 题目 2. 分析 这道题比较典型&#xff0c;跟最小路径和 是同样的思想。比较简单。 3. 代码 class Solution:def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:row len(obstacleGrid)col len(obstacleGrid[-1]) dp [[0] *(col) f…...

OpenAI助手API接入-问答对自动生成

支持GPT-3.5-Turbo, GPT-4o, GPT-4-Turbo import json import openai from pathlib import Path import os client openai.OpenAI(base_urlbase_url, api_keyapi_key) file client.files.create( fileopen("H3.pdf", "rb"), purposeassistants ) …...

9. C++通过epoll+fork的方式实现高性能网络服务器

epollfork 实现高性能网络服务器 一般在服务器上&#xff0c;CPU是多核的&#xff0c;上述epoll实现方式只使用了其中的一个核&#xff0c;造成了资源的大量浪费。因此我们可以将epoll和fork结合来实现更高性能的网络服务器。 创建子进程函数–fork( ) 要了解线程我们先来了解…...

【Mac】XMind for mac(XMind思维导图)v24.04.10311软件介绍和安装教程

软件介绍 XMind for Mac是一款功能强大的思维导图软件。它具有以下主要特点&#xff1a; 1.多样化的思维导图功能&#xff1a;XMind for Mac提供了丰富的思维导图编辑功能&#xff0c;用户可以创建各种类型的思维导图&#xff0c;包括组织结构图、逻辑图、时间轴图等&#xf…...

使用 Django ORM 进行数据库操作

文章目录 创建Django项目和应用定义模型查询数据更新和删除数据总结与进阶聚合和注解跨模型查询原始SQL查询 Django是一个流行的Web应用程序框架&#xff0c;它提供了一个强大且易于使用的对象关系映射&#xff08;ORM&#xff09;工具&#xff0c;用于与数据库进行交互。在本文…...

行为型设计模式之模板模式

文章目录 概述原理结构图实现 小结 概述 模板方法模式(template method pattern)原始定义是&#xff1a;在操作中定义算法的框架&#xff0c;将一些步骤推迟到子类中。模板方法让子类在不改变算法结构的情况下重新定义算法的某些步骤。 模板方法中的算法可以理解为广义上的业…...

大泽动力车载柴油发电机的特点和优势有哪些

大泽动力车载柴油发电机具有一系列显著的特点和优势&#xff0c;以下是对其的详细介绍&#xff1a; 低噪音性能&#xff1a;大泽动力车载柴油发电机具备明显的低噪音性能&#xff0c;其噪音限值在距离机组7米处测得为70dB(A)&#xff0c;这为用户提供了一个相对安静的工作环境…...

基于 IP 的 DDOS 攻击实验

一、介绍 基于IP的分布式拒绝服务&#xff08;Distributed Denial of Service, DDoS&#xff09;攻击是一种利用大量受控设备&#xff08;通常是僵尸网络&#xff09;向目标系统发送大量请求或数据包&#xff0c;以耗尽目标系统的资源&#xff0c;导致其无法正常提供服务的攻击…...

GPT-4o如何重塑AI未来!

如何评价GPT-4o? 简介&#xff1a;最近&#xff0c;GPT-4o横空出世。对GPT-4o这一人工智能技术进行评价&#xff0c;包括版本间的对比分析、GPT-4o的技术能力以及个人感受等。 GPT-4o似乎是一个针对GPT-4模型进行优化的版本&#xff0c;它在性能、准确性、资源效率以及安全和…...

window本地域名映射修改

位置 C:\Windows\System32\drivers\etc 文件名 hosts 修改方法 复制一份到桌面 修改桌面的文件 # 前面为ip 后面为域名&#xff0c;域名-》ip的映射 127.0.0.1 link.com最后将修改后的文件保存&#xff0c;复制到C:\Windows\System32\drivers\etc替换...

【退役之重学】为什么要加入多级缓存

一、为什么 加入多级缓存是为了提高数据访问的效率和性能 二、怎么做 在多级访问系统中&#xff0c;数据首先会被存储在速度最快的 L1 缓存中&#xff0c;如果数据在 L1 缓存中未命中&#xff0c;则会继续在 L2 缓存 和 L3 缓存中查找&#xff0c;如果在所有缓存中都未命中&…...

Redis常用命令大全

目录 1、五大数据类型的基本命令 1.1 字符串 1.2 列表 1.3 哈希 1.4 集合 1.5 有序集合 2、与key相关 2.1 查看redis数据的类型 2.2 查看当前redis库中的所有key命令 3、除了五大数据类型外常见命令 3.1 键操作 3.2 服务器操作 3.3 连接操作 3.4 发布/订阅 3.5 事…...

HttpSecurity 是如何组装过滤器链的

有小伙伴们问到这个问题&#xff0c;简单写篇文章和大伙聊一下。 一 SecurityFilterChain 首先大伙都知道&#xff0c;Spring Security 里边的一堆功能都是通过 Filter 来实现的&#xff0c;无论是认证、RememberMe Login、会话管理、CSRF 处理等等&#xff0c;各种功能都是通…...