综述论文解读:Editing Large Language Models: Problems, Methods, and Opportunities

  论文为大语言模型知识编辑综述,发表于自然语言处理顶会ACL(原文链接)。由于目前存在广泛的模型编辑技术,但一个统一全面的分析评估方法,所以本文:

  1、对LLM的编辑方法进行了详尽、公平的实证分析,探讨了它们各自的优势和劣势。

  2、构建了一个新的数据集,旨在揭示当前模型编辑方法的缺点,特别是泛化和效率方面。

  3、概述了模型编辑领域未来潜在的研究机会。

  阅读本文请同时参考原始论文图表。

1  问题定义#

  假设原始模型为fθ(x):XY f θ ( x ) : X → Y ,对于某个样本(xe,ye) ( x e , y e ) ,或称编辑描述符,有fθ(xe)ye f θ ( x e ) ≠ y e ,则模型编辑就是使得编辑后的模型fθe f θ e fθe(xe)=ye f θ e ( x e ) = y e

  模型编辑会影响与所编辑样本(xe,ye) ( x e , y e ) 相关的样本的预测,把这样的样本集合称为编辑域I(xe,ye) I ( x e , y e ) ,也就是(xe,ye) ( x e , y e ) 和与它相似的邻域样本N(xe,ye) N ( x e , y e ) 构成的样本集合。一个成功的模型编辑仅影响编辑域内部的模型行为,而不影响编辑域外部的模型行为。如文中式(1)所示,其中O(xe,ye) O ( x e , y e ) 表示编辑域之外的样本。

  编辑后的模型fθe f θ e 通常要满足可靠性、普适性和局部性(reliabilty, generality, locality):

  1、可靠性 (Reliability):文中式(2),即修改后的模型对编辑样本正确预测的期望,越大越好。

  2、普适性 (Generality):文中式(3),即修改后的模型对编辑样本的邻域N(xe,ye) N ( x e , y e ) 的样本正确预测的期望,越大越好,本文的意思就是同义句也要满足。

  3、局部性 (Locality):文中式(4),即修改后的模型对编辑域之外的样本的预测与原始模型预测一致的期望,越大越好。

2  现有LLM编辑方法#

  现有LLM编辑方法可分为两类。总结看表1,示意图看图2.

2.1  使用额外参数而保持原始模型参数不变#

  1. SERAC: 一种使用检索增强反事实模型(SERAC)实现的半参数编辑。该模型将编辑存储在显式存储器中,并学会对其进行推理,从而根据需要调整原始模型的预测。

  2. T-Patcher和CaliNET: 将额外的可训练参数引入到PLM的FFN层中,并在修改后的数据集上训练额外添加的参数。

2.2  修改模型内部参数#

2.2.1  基于定位和修改#

  1、KN: 使用知识归因方法定位模型FFN中表达知识的神经元,并进行更新。

  2、ROME: 使用因果中介分析来定位编辑区域。与在FFN中修改知识神经元不同,ROME修改整个矩阵。

  3、MEMIT: 修改一系列的模型层,支持同时执行数千个修改。

  以上方法基于事实知识的局部性假设,尚未得到广泛验证,某些参数的变化可能会影响不相关的知识,并产生不可预见的结果。

2.2.2  基于元学习#

  1、KE:训练一个超网络(双向LSTM)来预测每个数据点的权重更新,从而实现对目标知识的编辑,而不破坏其他知识。但这种方法对于LLM效果不佳。

  2、MEND: 使用梯度的低秩分解来学习转换经过微调的语言模型的梯度。这种方法能够以较少的资源消耗应用于LLMs。

3  初步实验#

  表2展示了以上模型在三个指标上的实验对比结果,其中,FT表示直接对原始模型进行微调。

  数据集:ZsRE一个问答 (QA) 数据集,使用反译生成的问题改写作为样本邻域,并使用自然问题 (NQ) 作为编辑域之外的数据来评估局部性。COUNTERFACT通过用一个与主语实体相似但共享相同谓词的近似主语实体替换事实中的主语实体来构建超出范围的数据。

  模型:实验实施在T5-XL(3B)和GPT-J(6B)两个大模型上,T5-XL包含编解码器结构,GPT-J仅包含解码器。由于ROME和MEMIT只适用于解码器,因此只在GPT-J上进行了实验。

  微调:为了减小计算量,仅对ROME定位的层进行微调。

  结果分析:SERAC、ROME、MEMIT效果最好,在修改模型权重的方法中,ROME最好。

4  综合分析#

4.1  可移植性 (Portability)#

  除了前面的指标以外,模型将修改的某个知识转移到相关内容的有效性也是一个重要的指标。因此使用GPT-4来构建一个新的数据集来评估编辑方法的相关性能。简单来说,当将模型关于某个提问(s,r,?) ( s , r , ? ) 的预测o o 修改为o时,对于已知事实(o,r,o) ( o ∗ , r ∗ , o ′ ∗ ) ,能对问题(s,r,r,?) ( s , r , r ∗ , ? ) 预测出o o ′ ∗ ,也就是把o o ∗ 当做一个跳板。如果模型能正确回答出o o ′ ∗ ,则可以推断模型正确修改了(s,r,o) ( s , r , o ∗ ) 。数据集构建方式如文中表6所示。B.1好像是,对于GPT-4生成的问题答案的已知事实(o,r,o) ( o ∗ , r ∗ , o ′ ∗ ) ,选择T5和GPT-J共享的作为最终的可移植性数据集,但是符号写的却是原始的。

  可移植性指标定义为文中式(5),其中P(xe,ye) P ( x e , y e ) 表示由新生成的数据组成的样本。

  结果如表3所示,可以看出MEMIT效果最好。

4.2  局部性#

  图4可视化了不同指标概念对于某个样本的分布。对于某个问题的模型编辑,一个好的编辑应该使模型同步修改整个灰色虚线内部的所有问题的答案,而不修改虚线外的问题的答案。

4.3  效率#

  表4展示了各方法10次编辑所需的时间,不计入模型训练时间。

  图5对比各方法的显存消耗。

4.4  批量编辑分析#

  图6展示了各方法批量编辑的结果。在基于定位和修改的方法中,MEMIT效果最好。尽管SERAC效果不错,但是MEND和SERAC需要为每一批编辑训练一个独特的模型,在实践中不可行。

4.5  序列编辑分析#

  图7展示了各方法在连续实施多次编辑编辑后的模型指标,横坐标为编辑次数。可以看出冻结模型参数而进行外部修改的方法SERAC和T-Patcher最稳定。另外三个方法由于需要修改原始模型,所以会性能产生退化,其中MEMIT的效果和稳定性最强。

5  总结#

  在所有方法中,可靠性、普适性、局部性、可移植性综合来说最高的方法是MEMIT,并且它还支持批量编辑,缺点是它只适用于解码器,并且随着连续编辑次数增加,模型会退化,但这是基于定位和修改的方法的通病。

  在基于外部参数的方法中,SERAC的可靠性、普适性、局部性最好,对连续编辑的鲁棒性强,但可移植性较差。

 

原创作者: qizhou 转载于: https://www.cnblogs.com/qizhou/p/18916580
<think>好的,我现在需要解决用户的问题:“sudo: qtcreator: editing files in a writable directory is not permitted”。首先,我需要理解这个错误信息的具体含义和可能的原因。用户可能在尝试以管理员权限运行Qt Creator时遇到了这个错误,导致无法编辑文件。接下来,我需要考虑可能的解决方案,并确保这些方案在Ubuntu环境下有效。 首先,我应该回顾用户之前的问题,用户之前询问过如何在Ubuntu中以管理员权限启动Qt Creator,现在遇到的是执行相关命令后的错误。这说明用户可能按照之前的建议尝试了使用sudo运行Qt Creator,但遇到了权限问题。 错误信息中提到“editing files in a writable directory is not permitted”,这可能是因为用户以root身份运行Qt Creator,但某些目录或文件的权限设置不允许root用户修改,或者存在安全机制阻止这种行为。Ubuntu的一些版本可能对sudo权限有更严格的限制,特别是涉及到图形界面应用程序时。 接下来,我需要考虑可能的解决方案: 1. **检查文件权限**:用户可能需要调整目标目录的权限,使得普通用户有写入权限,而不是依赖root权限。这样用户可以在不提升权限的情况下编辑文件,避免使用sudo。 2. **使用正确的所有权**:有时候文件或目录的所有者不正确,导致普通用户无法修改。使用chown命令修改所有者可能有效。 3. **使用组权限**:将用户添加到特定的用户组,如dialout或plugdev,可能赋予必要的权限,无需root。 4. **避免以root运行IDE**:长期以root运行应用程序有安全风险,应该尽量避免。用户可能只需要临时权限,或者需要配置项目路径的权限。 5. **使用pkexec或gksudo**:某些情况下,图形化提权工具可能更适合,避免环境变量的问题。 6. **检查AppArmor或SELinux**:安全模块可能阻止了Qt Creator的某些操作,需要调整配置文件。 接下来,我需要验证这些方案的可行性,并确保步骤正确。例如,修改目录权限时,需要指导用户使用chmod或chown命令,同时提醒用户注意安全风险。另外,用户可能对命令行操作不熟悉,需要给出具体的命令示例。 同时,需要注意用户可能在使用旧版或新版的Ubuntu,不同版本的工具可能有所不同,比如gksu在新版中已被弃用,推荐使用pkexec。需要确保给出的命令适用于用户当前的系统环境。 最后,需要总结这些解决方案,并强调安全注意事项,避免用户因错误配置导致系统不稳定或安全漏洞。</think>在Ubuntu中遇到 `sudo: qtcreator: editing files in writable directory is not permitted` 错误时,通常是由于系统安全机制限制以`root`身份修改普通用户已拥有写入权限的目录。以下是分步解决方案: --- ### **问题根源** - **安全策略**:Ubuntu默认禁止通过`sudo`在普通用户已有写入权限的目录中进行提权操作(防止权限滥用) - **常见场景**:尝试以`sudo qtcreator`编辑`/home/用户名/`下的项目文件时触发此限制 --- ### **解决方案** #### **方法1:直接以普通用户身份运行** 如果目标目录**已属于当前用户**: ```bash # 直接启动Qt Creator(无需sudo) qtcreator ``` - ✅ 推荐:避免提权操作,符合最小权限原则 --- #### **方法2:调整目录所有权** 如果文件/目录被错误地标记为`root`所有: ```bash # 修改目录所有权(假设目录为~/projects) sudo chown -R $USER:$USER ~/projects # 再以普通用户身份运行 qtcreator ``` - `-R`:递归修改子目录和文件权限 - `$USER:$USER`:将所有者改为当前用户及其默认组 --- #### **方法3:通过临时提权复制文件** 若必须编辑系统保护文件(如`/etc`下的配置): ```bash # 1. 复制文件到用户目录 cp /path/to/system/file ~/temp_edit # 2. 用普通用户编辑副本 qtcreator ~/temp_edit # 3. 完成编辑后覆盖原文件 sudo cp ~/temp_edit /path/to/system/file ``` --- #### **方法4:修改安全策略(慎用)** 临时绕过安全限制: ```bash sudo EDITOR=qtcreator sudoedit /path/to/file ``` - 原理:通过`sudoedit`以安全方式提权编辑文件 - ⚠️ 警告:需确保文件路径正确,避免误操作 --- #### **方法5:调整项目目录权限** 对于开发项目目录: ```bash # 添加组写入权限(假设用户属于developer组) sudo chmod -R g+w /project/path sudo chgrp -R developer /project/path # 将用户加入组 sudo usermod -aG developer $USER ``` - 需注销后重新登录生效 --- ### **替代建议** 1. **配置版本控制系统**(如Git): ```bash git config --global --add safe.directory /your/project/path ``` - 解决Git因目录权限变更产生的安全警告 2. **使用虚拟化开发环境**: ```bash # 通过Docker容器隔离开发环境 docker run -v ~/projects:/workspace -it ubuntu:latest ``` - 避免直接操作系统文件 --- ### **安全注意事项** 1. **不要长期以root运行IDE**: - 可能导致: - 项目文件所有权混乱(`root`和用户混合) - 插件/缓存目录权限错误 - 安全漏洞暴露风险增加 2. **审计敏感操作**: ```bash # 查看提权操作日志 grep qtcreator /var/log/auth.log ``` --- ### **附加调试命令** 如果仍遇到权限问题: ```bash # 检查目录权限 ls -ld /path/to/directory # 检查用户组 groups # 检查SELinux/AppArmor状态 sudo aa-status sudo sestatus ``` 建议优先使用**方法1**或**方法2**,仅在必要时使用提权操作,并确保操作后恢复正确的文件权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值