博客

  • PHP 8.3 @ Ubuntu 无法开启JIT的问题

    首先要注意下这个配置文件:

    /etc/php/8.3/fpm/conf.d/10-opcache.ini

    确保:

    zend_extension=opcache.so

    [opcache]
    opcache.enable=1
    opcache.enable_cli=1
    opcache.jit=1255
    opcache.jit_buffer_size=200M
    ; 其他 OPCache 配置…

    重启 apache2 和 php8.3-fpm

    sudo service php8.3-fpm restart

    sudo service apache2 restart

    如果还是不行,最好是 kill 所有的 php-fpm 进程。

  • Ubuntu下用apt安装MySQL后root密码为空

    在Ubuntu下使用apt安装MySQL后,root用户的密码默认是空的。这是因为在安装过程中,MySQL会自动为root用户设置一个随机密码,并将其存储在/etc/mysql/debian.cnf文件中[1]

    要解决这个问题,你可以按照以下步骤操作:

    1. 使用以下命令查看MySQL自动设置的随机账户和密码:
       sudo cat /etc/mysql/debian.cnf

    这将显示默认的随机账户和密码,你可以使用这组账户和密码登录MySQL[1]

    1. 如果你想修改root用户的密码,可以按照以下步骤操作:
    • 登录MySQL: mysql -uroot -p 这将要求你输入密码,直接按回车键即可登录,因为默认密码为空。
    • 切换到mysql数据库: use mysql;
    • 修改root用户的密码: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';your_new_password替换为你想要设置的新密码。
    • 刷新权限: FLUSH PRIVILEGES;
    • 退出MySQL: exit; 现在你可以使用新密码登录root用户了。

    请注意,如果你使用的是MySQL 8.0版本,修改root用户密码的命令略有不同,请参考[1]


    Learn more:

    1. Ubunto20.04安装MySQL并修改root用户密码(Linux安装mysql root用户无法登陆)_ubuntu20.04安装mysql设置root账号密码-CSDN博客
    2. Ubuntu 20.4安装 mysql 8.0.20 以及解决root用户无法登录问题_ubuntu mysql 设置root密码后进不了-CSDN博客
    3. Ubunto20.04安装MySQL并修改root用户密码(Linux安装mysql root用户无法登陆) – 青山是谁 – 博客园
  • RTMP协议(Real-Time Messaging Protocol)

    RTMP协议(Real-Time Messaging Protocol)是一种用于在互联网上流式传输音频、视频和数据的通信协议[1]。最初由Macromedia开发为Flash Player和Flash Communication Server之间的流媒体传输的专有协议,后来被Adobe(收购了Macromedia)发布了该协议的不完整版本供公众使用[1]

    RTMP协议有多个变种:

    • RTMP:在Transmission Control Protocol(TCP)之上工作的“纯”协议,默认使用1935端口号。
    • RTMPS:在Transport Layer Security(TLS/SSL)连接上的RTMP。
    • RTMPE:使用Adobe自己的安全机制对RTMP进行加密。虽然实现的细节是专有的,但该机制使用行业标准的加密原语[1]
    • RTMPT:封装在HTTP请求中以穿越防火墙。RTMPT通常使用TCP端口80和443上的明文请求来绕过大多数企业流量过滤。封装的会话可以在内部携带纯RTMP、RTMPS或RTMPE数据包[1]
    • RTMFP:在User Datagram Protocol(UDP)上的RTMP,取代了RTMP Chunk Stream。Secure Real-Time Media Flow Protocol套件由Adobe Systems开发,使终端用户能够直接连接和通信(P2P)[1]

    RTMP的基本操作是基于TCP的,它维持持久连接并允许低延迟通信。为了平稳地传输流并尽可能多地传输信息,它将流分割成片段,并且片段的大小在客户端和服务器之间动态协商。有时,片段的大小保持不变;音频数据的默认片段大小为64字节,视频数据和大多数其他数据类型的默认片段大小为128字节。来自不同流的片段可以交错和多路复用到单个连接上。由于较长的数据块,该协议每个片段仅携带一个字节的头部,因此开销非常小。然而,在实践中,通常不会交错单个片段。相反,交错和多路复用是在数据包级别上完成的,以确保每个通道满足其带宽、延迟和其他服务质量要求。以这种方式交错的数据包被视为不可分割的,不会在片段级别上交错[1]

    RTMP定义了几个虚拟通道,可以在这些通道上发送和接收数据包,并且这些通道彼此独立运行。例如,有一个用于处理RPC请求和响应的通道,一个用于视频流数据的通道,一个用于音频流数据的通道,一个用于带外控制消息(片段大小协商等)的通道等。在典型的RTMP会话期间,多个通道可能同时处于活动状态。当对RTMP数据进行编码时,会生成一个数据包头部。数据包头部指定了要发送的通道的ID、生成时间戳(如果需要)以及数据包有效载荷的大小。然后,在将其发送到连接上之前,将其实际有效载荷内容(媒体数据)根据当前协商的片段大小进行分段。数据包头部本身永远不会被分段,其大小不计入数据包的第一个片段中的数据。换句话说,只有实际的数据包有效载荷(媒体数据)会被分段[1]

    在更高的层次上,RTMP封装了MP3或AAC音频和FLV1视频多媒体流,并可以使用Action Message Format进行远程过程调用(RPC)。所需的任何RPC服务都是异步进行的,使用单个客户端/服务器请求/响应模型,因此不需要实时通信[2]

    RTMP会话可以使用以下两种方法进行加密:

    • 使用行业标准的TLS/SSL机制。底层的RTMP会话只是包装在正常的TLS/SSL会话中。
    • 使用RTMPE,在RTMP会话中包装一个轻量级的加密层。

    在RTMP Tunneled(RTMPT)中,RTMP数据通过HTTP进行封装和交换,客户端(媒体播放器)的消息被发送到服务器上的80端口(HTTP的默认端口)[1]。RTMPT中的消息由于HTTP头部的原因比等效的非隧道化RTMP消息要大,但在客户端位于阻止非HTTP和非HTTPS出站流量的防火墙后,RTMPT可能有助于使用RTMP的场景,否则将无法使用非隧道化的RTMP。

    RTMP协议的数据包结构如下:

    • 数据包通过TCP连接发送,首先在客户端和服务器之间建立连接。
    • 数据包包含一个头部和一个主体,在连接和控制命令的情况下,主体使用Action Message Format(AMF)进行编码。
    • 头部分为基本头部(从图表中分离出来)和块消息头部。基本头部是数据包的唯一固定部分,通常由一个复合字节组成,其中最高的两个有效位是块类型(在规范中称为fmt),其余部分形成流ID。根据前者的值,可以省略消息头部的某些字段,并且可以从先前的数据包中派生它们的值,而根据后者的值,基本头部可以扩展为一个或两个额外的字节。如果基本头部的剩余六个位(最低有效位)的值为0,则基本头部为两个字节,表示从流ID 64到319(64+255);如果值为1,则基本头部为三个字节(最后两个字节编码为16位小端),表示从流ID 64到65599(64+65535);如果值为2,则基本头部为一个字节,保留用于低级协议控制消息和命令。块消息头部包含元数据信息,例如消息大小(以字节为单位)、时间戳增量和消息类型。最后一个值是一个字节,定义数据包是音频、视频、命令还是“低级”RTMP数据包,例如RTMP Ping[1]

    Learn more:

    1. Real-Time Messaging Protocol – Wikipedia
    2. RTMP协议深度
  • 实时消息协议 – 维基百科,自由的百科全书
  • RTP(Real-time Transport Protocol)是一种用于实时流媒体传输的协议

    RTP(Real-time Transport Protocol)是一种用于实时流媒体传输的协议。它是一种面向数据报的协议,用于在IP网络上传输音频和视频等实时数据。RTP协议通常与RTCP(Real-time Transport Control Protocol)一起使用,RTCP用于传输控制信息,例如流媒体的质量反馈和同步信息。

    RTP协议的特点和功能包括:

    1. 实时传输:RTP协议被设计用于实时传输,可以在网络上以实时的方式传输音频和视频数据。
    2. 分组传输:RTP将音频和视频数据分割成小的数据包进行传输,每个数据包都带有序列号和时间戳等信息,以便接收端可以正确地重建数据流。
    3. 时间同步:RTP协议使用时间戳来确保音频和视频数据在接收端能够按照正确的时间顺序播放。
    4. 负载类型:RTP协议支持多种不同的负载类型,例如音频编码(如G.711、AAC)和视频编码(如H.264、VP8)等。
    5. QoS支持:RTP协议可以通过设置不同的服务质量(QoS)参数来满足实时流媒体传输的要求,例如延迟、带宽和抖动等。

    RTP协议在实时流媒体传输中起着重要的作用,它可以与其他协议结合使用,例如RTSP(Real-time Streaming Protocol)用于控制流媒体的会话和传输。


    Learn more:

    1. 实时传输 Web 音频与视频 – Web 媒体技术 | MDN
    2. 【RTP 传输协议】实时视频传输的艺术:深入探索 RTP 协议及其在 C++ 中的实现-阿里云开发者社区
    3. RTP协议详解-CSDN博客
  • 外资撤离中国:我们面临的挑战与应对

    近年来,外资撤离中国的现象引起了广泛关注。外资的流动不仅影响着中国股市的表现,也对整个中国经济环境产生了深远的影响。本文将通过数据和事实,详细探讨外资撤离的现状、原因以及我们应对的策略。

    外资撤离的现状

    外资持有中资股规模下降

    根据中金的报告,2023年第三季度外资管理机构持有的中资股规模回落至6701亿美元,环比下滑3.9%。这一数据表明,外资对中国市场的信心正在减弱。事实上,2021年外资持有中资股规模达到高峰,但现在的情况显然不如当时。

    外国直接投资净流入首次下降

    根据中国外汇管理局的数据,自1998年以来,中国一直享有外国直接投资(FDI)净流入的优势。然而,如今这一趋势也发生了逆转。2023年,中国的FDI净流入首次出现了下降,甚至转为负值。这一变化无疑是一个警示信号。

    美元基金募资艰难

    美元募资的困难是另一个值得关注的问题。根据Preqin的数据显示,2023年聚焦于投资中国的风险投资和私募的外资仅筹集了57亿美元,而在2021年这一数字高达480亿美元,降幅几乎达到90%。

    外资撤离的原因

    政治与经济压力

    1. 政治压力:近年来,投资于中国的外资面临越来越大的政治压力。尤其是美国与中国之间的紧张关系,使得外资对中国市场的投资更加谨慎。
    2. 经济表现不佳:中国股市的表现令人失望。2023年流入中国股市的外资超过75%已经撤离,今年全球投资者抛售了中国股市价值超过250亿美元的股票,使得净买入量创下2015年来的最低纪录。

    产业升级与资本流向

    1. 产业转移:部分劳动密集型的低端产业正在向东南亚转移。这是产业升级的必经之路,但也导致了一部分外资的撤离。
    2. 资本流向变化:美债利率高位,新兴市场股市(如日韩、印度)上涨,吸引了部分资金的流向。

    我们能做些什么?

    释放积极信号

    企业家和投资人是最敏感的,他们需要看到明确的积极信号才会重新投入。以下是一些可能的积极信号:

    1. 宏观数据的改善:某次发布的宏观经济数据变好将是一个积极的信号。
    2. 财政政策的出台:有力的财政政策可以增强市场信心。
    3. 股市上行:股市的上行趋势将吸引更多的资金回流。
    4. 营商环境的改善:确实的营商环境改进将为企业家和投资人提供更大的信心。

    提高市场透明度和稳定性

    1. 回购股票:管理层愿意回购股票将展现对市场的信心。
    2. 保护私有产权:尊重市场的力量,保护私有产权,鼓励奋斗,尊重白手起家的企业家。

    结语

    外资撤离中国的现象虽然令人担忧,但我们也需要看到积极的一面。市场环境的改善和政策的调整有望吸引外资的回流。正如一位优秀群友所说:

    “一级市场是站在创新最前端的人,投资应当考虑行业和企业发展规律,和对应的合理的估值逻辑。不能因为秋天有霜降,春天就不种地了。”

    我们需要保持乐观,继续努力,等待春天的到来。


    参考文献

    • 中金报告
    • 中国外汇管理局数据
    • Preqin 数据
    • Rhodium Group智库报告
  • 微软中国员工迁移海外:背后的原因与影响

    近日,多位网友在社交媒体上爆料称,微软中国区Azure云平台的AI团队为主的数百名员工收到公司邮件,询问他们是否愿意迁移至其他地区工作。目的地包括美国、澳大利亚、爱尔兰等国家。公司将负责亲属签证问题,员工需要在6月7日前给出答复。本文将探讨这一消息背后的原因及其可能带来的影响。

    微软的回应与员工的困惑

    对于这一消息,微软方面回应称,公司有一小部分员工得到可以选择国际轮岗的机会。员工可以选择接受轮岗,或者继续在现在的岗位工作。微软在运营管理全球业务的过程中,一直有向员工提供内部轮岗机会的机制。

    然而,一些员工对此表示困惑。一位微软员工对记者表示,这是5月14日刚出的消息,一些员工突然收到有关征询迁移至海外工作邮件,要求在6月7日前回答去还是不去。“大家都很懵”,此前并没有感受到任何预兆,尤其是拖家带口的员工,“需要考虑的事情更多”。有同事认为这是一种“变相裁员”,虽然可以选择不去,但也因此对留在公司的未来产生了担忧。

    迁移计划的具体安排

    据了解,微软中国C+AI的ML团队可以转到美国西雅图,Azure团队转到澳洲,DevDiv(开发平台事业部)则维持现状。已经有员工的家属表示,家属所在的小组被整个迁至澳大利亚,线上开会时“会上有300多号人”,涉及北京、上海和苏州的员工。两个人商量一整晚到凌晨三点,也没得出什么结论。

    另有接近微软人士表示,Azure ML和Azure Core(基础设施)这两个组中与AI业务相关的数百人获得“打包”出国的机会,目的地包括美国、加拿大、澳大利亚和新西兰,是指定的(目的地),并不能随便挑选。

    背后的原因

    全球业务整合

    微软在全球范围内进行业务整合,尤其是AI和云计算业务。这种整合有助于公司在全球范围内更有效地配置资源,提升业务协同效应。

    国际轮岗机制

    微软一直以来都有向员工提供内部轮岗机会的机制。通过国际轮岗,员工可以获得更广泛的工作经验和视野,有助于个人职业发展。

    亚太市场竞争压力

    根据国际咨询机构Gartner发布的最新云计算市场追踪数据报告,2023年,微软Azure在亚太地区云计算IaaS市场排名第三,份额为16.1%。阿里云排名第一,市场份额为22.2%,亚马逊AWS排名第二,份额为16.5%。微软在亚太市场面临激烈的竞争压力,可能希望通过业务调整来应对市场挑战。

    可能带来的影响

    员工心理压力

    员工突然收到迁移通知,且需要在短时间内做出决定,这无疑会给员工带来巨大的心理压力。尤其是有家庭的员工,需要考虑更多因素,如孩子的教育、配偶的工作等。

    公司内部稳定性

    这种大规模的迁移计划可能会影响公司内部的稳定性。一些员工可能会选择离职,而不是接受迁移,导致团队的不稳定和人才流失。

    对亚太市场的影响

    微软在亚太地区的云计算市场份额已经处于劣势,此次迁移计划可能会进一步影响公司在这一地区的业务发展。如何平衡全球业务整合与区域市场竞争,是微软需要仔细考量的问题。

    结语

    微软中国员工迁移海外的消息引发了广泛关注和讨论。这一计划背后有多重原因,包括全球业务整合、国际轮岗机制以及应对亚太市场竞争压力等。然而,这一计划也给员工带来了巨大的心理压力,并可能影响公司内部的稳定性和区域市场的业务发展。在未来的执行过程中,如何平衡这些因素,将是微软面临的重要挑战。


    参考文献

    • 社交媒体爆料
    • 微软员工采访
    • Gartner云计算市场追踪数据报告,2023年
  • 探索大语言模型的最优架构:LLAMA-NAS的奇妙之旅

    引言

    在这个人工智能飞速发展的时代,大语言模型(LLMs)如同一位语言大师,解决了各种自然语言处理、复杂推理和情感分析任务。然而,这些“语言大师”往往需要极高的内存和计算资源,这让普通硬件平台望尘莫及。为了让更多人能使用LLMs,我们提出了一种基于LLaMA2-7B的高效神经架构搜索(NAS)方法,简称LLAMA-NAS。

    LLM的挑战和解决之道

    LLM如同巨兽

    大语言模型(LLMs)在处理自然语言和复杂推理任务上表现出了非凡的能力,但它们就像一头巨兽,消耗着大量的内存和计算资源。LLaMA2-7B,作为一款参数量达到7B的LLM,尽管功能强大,但其庞大的身躯让普通硬件平台难以承受。

    轻量化:从巨兽到精灵

    为了减轻LLMs的重量,我们提出了一种基于一击NAS(One-shot NAS)的方法。我们只对LLaMA2-7B进行一次微调,然后应用基于遗传算法的搜索,找到更小、更高效的网络架构。结果表明,在某些标准基准任务上,我们成功地将模型大小减少了1.5倍,并在几乎无损精度的情况下提升了1.3倍的吞吐量。

    方法:如何驯服LLMs

    InstaTune:一场架构的探险

    我们的优化方法借鉴了InstaTune,这是一种新颖的一击NAS方法。在微调LLaMA2-7B时,我们创建了一个超网络,并在微调阶段嵌入了NAS过程。这不仅节省了计算资源,还确保了子网络能够针对具体任务进行优化。

    我们使用了LINAS算法,这是一种结合NSGA-II搜索和网络性能预测器的方法,可以高效地识别Pareto最优的网络配置。通过在真实数据上迭代评估子网络,LINAS算法能够预测大量子网络的性能,并选择最有前途的进行进一步评估。

    搜索空间:在参数的海洋中航行

    在微调LLaMA2-7B后,我们定义了一组允许的参数值,并在搜索过程中使用这些参数。搜索空间包括了网络层数和每个MLP模块的中间大小。

    结果:轻量化的奇迹

    ARC:常识推理的挑战

    在AI2推理挑战(ARC)上,我们发现了几个比预训练的LLaMA2-7B更高效的子网络。例如,一个子网络在保持相同精度的情况下,体积减少了1.1倍,而另一个同等大小的子网络精度提升了1.9%。

    MMLU:多任务语言理解

    在大规模多任务语言理解(MMLU)任务中,我们的子网络不仅在模型大小上优于预训练的LLaMA2-7B,还在推理速度上有显著提升。例如,一个子网络在精度提升1.1%的同时,体积减少了1.5倍,速度提升了1.3倍。

    真相QA:真相的守护者

    在TruthfulQA任务上,我们的子网络表现更为出色。一个子网络在体积减少1.6倍的情况下,精度提升了3.6%。

    WinoGrande:常识推理的终极测试

    在WinoGrande任务上,我们的子网络也表现不俗。例如,一个子网络在保持相同精度的情况下,体积减少了1.1倍,而另一个同等大小的子网络精度提升了1.4%。

    总结:轻量化的未来

    我们的研究展示了一种高效的方法,通过一击NAS来减小和优化大语言模型的架构。我们的方法不仅在性能上优于剪枝和稀疏化技术,还能与量化技术结合,进一步减少模型的大小和复杂度。随着对大语言模型的兴趣不断增长,我们的工作为创建可在更便宜、更普及的硬件平台上使用的LLMs提供了一条可行之路。

    参考文献

    1. https://huggingface.co/meta-llama/Llama-2-7b
    2. LLM-Pruner: https://github.com/horseee/LLM-Pruner
    3. SliceGPT: https://github.com/microsoft/TransformerCompression

    希望这篇文章能够让您对LLAMA-NAS的方法和成果有一个清晰的了解,并在轻松愉快的阅读中学到新的知识。如果您有任何问题或需要进一步的信息,请随时联系我们。

  • LLAMA-NAS:让大语言模型不再“吃硬件”

    前言

    如果你觉得大语言模型(LLMs)像个贪吃的巨兽,那你就猜对了。这些能处理自然语言、复杂推理、情感分析等任务的模型,虽然能力非凡,但对内存和计算资源的“胃口”也惊人。以至于大部分硬件平台根本承受不起这顿“大餐”。为了让LLMs变得更“苗条”,我们提出了一种基于LLaMA2-7B的高效神经架构搜索方法——LLAMA-NAS。

    LLaMA2-7B的“减肥”计划

    一次性NAS:给模型做个“全身检查”

    我们的方法核心是一次性神经架构搜索(one-shot NAS),这个听起来就很酷对吧?具体来说,我们只对LLaMA2-7B模型进行一次微调,然后用遗传算法(genetic algorithm)来搜索更小、更高效的网络架构。结果显示,对于某些标准基准任务,预训练的LLaMA2-7B模型不仅“体型”庞大,而且“吃”得也多。通过我们的“减肥”计划,我们成功地将模型大小减少了1.5倍,处理速度提高了1.3倍,而准确度几乎没有损失。

    InstaTune:超级网络的“变形金刚”

    我们借鉴了InstaTune的方法,将NAS嵌入到微调阶段,使模型架构更具弹性,能够适应不同的任务、数据集和计算资源。在这过程中,我们并没有进行强教师或超级网络的知识蒸馏,主要是为了节省计算资源。

    搜索空间:模型参数的“百变金刚”

    在搜索过程中,我们使用了LINAS算法,这个名字听起来像某种神秘的武器。事实上,它确实很厉害,能够在多目标设置中优化模型大小和准确性。我们定义了一组允许的参数值,搜索空间包含了大约1.3 × 10^10种可能性。

    实验与结果

    AI2推理挑战

    首先,我们将方法应用于AI2推理挑战(ARC)任务,结果显示几个子网络架构在准确率和模型大小上都有明显提升。例如,一个子网络在准确率不变的情况下,模型大小减少了1.1倍。

    大规模多任务语言理解

    我们的方法在大规模多任务语言理解(MMLU)任务上也表现出色。多个子网络在准确率提升的同时,模型大小减少了1.5倍,处理速度提高了1.3倍。

    真诚QA和WinoGrande

    在真诚QA任务中,我们发现预训练的LLaMA2-7B模型明显过度参数化。通过我们的方法,找到的子网络在准确率提高3.6%的同时,模型大小减少了1.6倍。WinoGrande任务的结果也类似,我们的子网络在准确率不变的情况下,模型大小减少了1.1倍。

    比较与对比

    与剪枝和稀疏化技术的对比

    与LLM-Pruner和SliceGPT相比,我们的方法不仅在模型大小和准确率上更有优势,而且不需要额外的恢复微调步骤。

    量化:让模型“瘦上加瘦”

    我们还将INT8量化应用于搜索到的子网络,结果显示,量化后的子网络在准确率几乎不变的情况下,模型大小进一步减少。例如,一个子网络在量化后大小减少了2.5倍,准确率几乎没有损失。

    结论

    通过我们的LLAMA-NAS方法,我们不仅找到了更小、更高效的网络架构,还比剪枝和稀疏化技术更有效、更高效。而且,我们的方法不需要任何专用的软件内核或硬件,能够与其他量化方法无缝结合。随着对大语言模型的兴趣日益增加,我们的工作为自动创建能够在更便宜、更易获得的硬件平台上运行的网络提供了一条可行的道路。

    参考文献

    1. Anthony Sarah, Sharath Nittur Sridhar, Maciej Szankin, Sairam Sundaresan. “LLAMA-NAS: Efficient Neural Architecture Search for Large Language Models.”

    希望这篇文章能让你对我们的工作有更深入的了解,同时也希望你能像看完这篇文章一样开心。如果你对大语言模型的优化感兴趣,不妨试试我们的LLAMA-NAS方法,让你的模型也来次“瘦身”吧!

  • 不要忘记连接!用基于图的重排序提升RAG的表现

    认识一下RAG:文本生成的超级英雄

    Retrieval Augmented Generation,简称RAG,是一个能让大型语言模型(LLM)在回答问题时表现更佳的工具。RAG的工作原理是通过从现有文档中检索相关信息来为生成的文本提供背景支持。听起来是不是很厉害?但问题是,如果文档只提供部分信息或者与问题背景的连接不明显,那么RAG该怎么办?这篇文章就来回答这两个核心问题。

    G-RAG:图神经网络的魔力

    我们介绍一种基于图神经网络(GNN)的方法,叫做G-RAG。这个方法在RAG的检索器和阅读器之间引入了一个重排序器。G-RAG不仅考虑了文档之间的连接,还利用了语义信息(通过抽象意义表示图,AMR)来提供上下文感知的排序器。G-RAG不仅表现优异,还比最先进的方法更省计算资源。

    为什么重排序很重要?

    在开放领域问答(ODQA)中,RAG虽然能成功地检索到相关文档,但不能充分利用文档间的连接。这会导致模型忽视那些包含答案但与问题背景连接不明显的文档。通过重排序过程,我们能更有效地过滤检索到的文档,提高阅读过程的效果。

    现有方法的不足

    目前的重排序器虽然表现不错,但仍有一些问题。首先,大多数现有工作未能捕捉到不同检索文档之间的重要连接。其次,尽管AMR图提高了对复杂语义的理解,但将冗余的AMR信息集成到预训练语言模型中会导致过拟合和计算时间增加。最后,现有方法利用的预训练语言模型在快速发展的LLM时代显得不足。

    我们的解决方案

    为了应对这些挑战,我们提出了一种基于文档图的方法,每个节点代表一个文档,每条边代表两个文档之间存在共同概念。我们将不同文档之间的连接信息纳入边特征,并通过消息传递机制更新边特征。同时,我们在节点特征中加入了关键的AMR信息,避免了冗余信息的引入。

    实验结果

    我们在两个代表性的ODQA数据集上进行了实验:自然问题(NQ)和TriviaQA(TQA)。结果显示,基于图的策略(如GCN和G-RAG)在各种评估指标上表现出色。特别是G-RAG-RL模型,通过使用排序损失函数,进一步提升了识别正面文档的能力。

    结论与未来展望

    我们的G-RAG模型在现有ODQA方法中表现出色,通过利用文档之间的隐性连接和战略性地整合AMR信息,显著提高了识别有价值信息的能力。尽管预训练的LLM在重排序任务中的表现可能不尽如人意,但对其进行微调可能极大地提升RAG系统的表现。未来的研究方向包括设计更复杂的模型来更好地处理AMR信息,以及探索更高级的方法来解决LLM产生的排名分数中的平局问题。

    参考文献

    1. Wang, C., et al. (2023). “Graph as Tokens: Representing Text as Graphs for Neural Network Processing.” Retrieved from https://github.com/wangcunxiang/Graph-aS-Tokens/tree/main
    2. BERT: Bidirectional Encoder Representations from Transformers. (2019) Retrieved from https://arxiv.org/abs/1810.04805
    3. AMRBART: AMR Parsing with BART. (2020) Retrieved from https://arxiv.org/abs/2008.02759
    4. PaLM 2: A Next-Generation Language Model. (2022) Retrieved from https://arxiv.org/abs/2204.02311
  • 揭秘Caddy 2 + PHP-FPM 部署WordPress的卡顿谜团

    大家好,今天我将带您走进一个神秘的领域——Caddy 2 服务器与 PHP-FPM 部署的 WordPress 的卡顿现象。为什么我们辛辛苦苦搭建的网站会卡顿?让我们一探究竟。

    1. 初识Caddy 2与PHP-FPM

    首先,让我们简单介绍一下Caddy 2和PHP-FPM。Caddy 2 是一款现代化的开源Web服务器,因其自动HTTPS配置和简洁的配置文件赢得了广泛的好评。PHP-FPM(PHP FastCGI Process Manager)则是一个专为处理PHP请求优化的进程管理器,常用于提高网站性能。

    2. 卡顿现象的初步排查

    2.1 服务器资源不足

    当我们发现WordPress网站卡顿,首要怀疑的就是服务器资源不足。检查CPU使用率和内存占用情况是否过高。如果是的话,可能需要升级服务器配置。

    2.2 网络带宽问题

    网络带宽不足同样会造成网站卡顿。使用工具如 pingtraceroute 检查网络延迟和丢包率。如果网络状况不佳,可以尝试联系服务提供商解决。

    2.3 数据库性能

    WordPress的数据库性能也至关重要。使用 SHOW FULL PROCESSLIST; 命令检查MySQL数据库是否有慢查询,或者配置查询缓存来提高性能。

    3. 深入探讨Caddy 2与PHP-FPM的优化

    3.1 Caddy 2 的优化

    Caddy 2 默认的配置已经相当不错,但我们可以进一步优化:

    {
        auto_https off
        http_port 80
        https_port 443
    }
    
    example.com {
        root * /var/www/html
        php_fastcgi unix//run/php/php7.4-fpm.sock
        file_server
        encode gzip
    }
    • gzip压缩:启用gzip压缩可以减少传输数据量,提高加载速度。
    • 缓存:配置缓存以减少对服务器的压力。

    3.2 PHP-FPM 的优化

    PHP-FPM 的配置文件通常位于 /etc/php/7.4/fpm/pool.d/www.conf

    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    pm.max_requests = 500
    • pm.max_children:设置能够处理的最大并发请求数。
    • pm.max_requests:设置每个子进程在重启前处理的最大请求数,避免内存泄漏。

    4. WordPress的优化

    4.1 插件管理

    尽量减少并优化插件,特别是那些影响性能的插件。使用插件如 Query Monitor 来监控性能瓶颈。

    4.2 缓存插件

    使用缓存插件如 W3 Total Cache 或 WP Super Cache,可以显著提高页面加载速度。

    4.3 图像优化

    图像通常是页面加载时间的主要因素之一。使用插件如 Smush 来优化图像大小。

    5. CDN加速

    将静态资源(如图片、CSS、JS)托管到CDN(内容分发网络)上,可以显著提高加载速度,减轻服务器负担。

    结论

    通过以上措施,我们可以有效解决Caddy 2 + PHP-FPM 部署的WordPress网站卡顿问题。当然,实际情况可能千差万别,您需要根据具体情况进行调整和优化。希望这篇文章对您有所帮助!


    参考文献: