大模型知识编辑 easyedit

大模型知识编辑 easyedit

• • • • • • • • •

目录

🔔新闻

新报告

报告话题PPT资源
COLING2024 教程大型语言模型的知识编辑
VALSE2024 教程大型语言模型的知识机制与编辑
AAAI2024 教程大型语言模型的知识编辑

2024-06-04,🎉🎉 已被ACL 2024 System Demonstration Track 接受。

2024-06-03,我们发布了题为论文,同时介绍了一项新的编辑任务:和相应的终身编辑方法WISE 。

2024-04-24,EasyEdit 宣布支持的 ROME 方法。建议用户将其 transformers 包更新至 4.40.0 版本。

2024-03-29,EasyEdit 引入了对 GRACE 的回滚支持,详细介绍可参考,后续更新将逐步加入对其他方式的回滚支持。

2024-03-22,发布了新论文《》,并发布了新的数据集新的解毒方法DINM 。

2024-03-12,又一篇题为《》的论文发布,介绍了一个名为的新数据集。

2024-03-01,EasyEdit 增加了对一种名为FT-M 的新方法的支持。该方法涉及使用交叉熵损失对目标答案训练特定的 MLP 层并屏蔽原始文本。它的表现优于FT-L实现。感谢问题的作者 提供的建议。

2024-02-27,EasyEdit 增加了对一种新方法的支持,技术细节在论文“ ”中提供。

上一篇新闻


大型语言模型的知识编辑综合研究 [][][]
AAAI 2024 教程 [  ] []
AACL 2023 教程 [  ] []

编辑演示

有编辑演示。GIF 文件由创建。

知识编辑

任务定义

部署的模型仍可能出现不可预测的错误。例如,众所周知,LLM会产生幻觉延续偏见事实衰退,因此我们应该能够调整预训练模型的特定行为。

知识编辑旨在调整基础模型的(𝐹𝜃)特定编辑描述符上的行为[𝑋埃,是埃]高效。

多重设置

单一知识编辑

评估单次编辑后模型的性能。模型在单次编辑后重新加载原始权重(例如,LoRA 丢弃适配器权重)。您应该设置sequential_edit=False

𝜃′←精氨酸分钟𝜃(‖𝐹𝜃(𝑋埃)−是埃‖)

持续知识编辑

这需要按顺序编辑,并在应用所有知识更新后进行评估:𝜃′←精氨酸分钟𝜃∑埃=1‖𝑋埃‖(‖𝐹𝜃(𝑋埃)−是埃‖)它针对特定的输入输出对进行参数调整(𝑋埃,是埃), 在哪里𝑋埃∈𝑋埃和𝐹𝜃′(𝑋埃)=是埃。 这里,𝑋埃​ 代表整个编辑集。要启用连续编辑,您可以设置sequential_edit=True

多场景

事实知识编辑

知识插入
  • 注入LLM以前从未见过的知识。例如:
  • 梅西夺得过几次世界杯? 0次1
知识更新
  • 更新过时的知识。例如:
  • 美国总统:唐纳德·特朗普乔·拜登:
知识抹去
  • 删除敏感信息。例如:
  • 某人的电话号码是XXXX__

在不影响无关样本的模型行为的情况下,最终目标是创建一个编辑模型(𝐹𝜃′)​​。

安全编辑**Detoxifying LLM** 致力于构建一个安全可靠的大型语言模型 (LLM)。知识编辑专注于特定领域,进行永久性调整,而不会损害整体性能。然后,通过知识编辑对 LLM 进行 Detoxifying,利用少量数据(通常是一个实例)来纠正 LLM 的毒性行为。编辑后的 ​​LLM 可以防御各种恶意输入。[README](  )

多模态模型编辑

图像字幕视觉问答的编辑任务。

性格编辑

鉴于个人的观点可以反映其性格特征,因此提议的任务通过编辑 LLM 对特定主题的观点来初步尝试编辑他们的性格。我们借鉴已建立的作为构建数据集和评估 LLM 性格表现的基础。

评估

基于 Logits

  • ES:根据预生成文本的对数评估编辑成功率。
  • DD:评估模型是否根据预生成文本的逻辑改变对其他主题的看法。

基于代际

  • Acc:针对目标个性编辑模型后生成文本的准确率。
  • TPEI:测量编辑模型生成的观点文本是否更倾向于目标性格。
  • PAE:利用 GPT-4 评估生成文本中的性格特征。

而对于评估AccTPEI ,您可以从下载训练好的分类器。

不同技术的比较

评估

知识编辑过程通常会影响与编辑示例密切相关的广泛输入的预测,称为编辑范围

成功的编辑应该在编辑范围内调整模型的行为,同时保留不相关的输入:

𝐹𝜃埃(𝑋)={是埃如果 𝑋∈我(𝑋埃,是埃)𝐹𝜃(𝑋)如果 𝑋∈哦(𝑋埃,是埃)

  • Reliability:使用给定的编辑描述符进行编辑的成功率
  • Generalization:编辑范围内编辑的成功率
  • Locality:编辑不相关的输入后模型的输出是否发生变化
  • Portability:推理/应用编辑的成功率(单跳、同义词、逻辑概括)
  • Efficiency:时间和内存消耗

🌟概述

EasyEdit 是一个 Python 包,用于编辑大型语言模型 (LLM),例如、、、(GPT-J支持从1B65B 的模型),其目标是在特定领域内有效改变 LLM 的行为,而不会对其他输入的性能产生负面影响。它易于使用且易于扩展。LlamaGPT-NEOGPT2T5

EasyEdit 包含统一的EditorMethodEvaluate框架,分别代表编辑场景、编辑技巧、评估方法。

每个知识编辑场景由三个部分组成:

  • Editor:例如用于LM的BaseEditor(事实知识生成编辑器),MultiModalEditor(多模态知识)。
  • Method:所使用的特定知识编辑技术(例如ROMEMEND等)。
  • Evaluate:评估知识编辑性能的 指标。
  • Reliability,,,,GeneralizationLocalityPortability

目前支持的知识编辑技术如下:

  • 基于内存:、、、、
  • 元学习:、、
  • 定位然后编辑:、、、、
注1:由于该工具包兼容性有限,一些知识编辑方法包括 、、 等不支持。
注2:同样,方法由于同样的原因也只得到部分支持,并且将继续得到改进。
当前实施

您可以根据具体需求选择不同的编辑方法。

方法T5GPT-2GPT-JGPT-NEO骆驼百川ChatGLM2实习生奎文米斯特拉尔
金融时报
安达洛拉
塞拉克
IKE
修补
千牛
罗马
r-罗马
梅米特
优雅
梅洛
专职培训与培训培训
指导编辑
DINM
❗️❗️如果您打算使用 Mistral,请transformers手动将库更新至 4.34.0 版本。您可以使用以下代码:pip install transformers==4.34.0

数据集

基准:KnowEdit

❗️❗️ 需要说明的是,KnowEdit是通过重新整理和扩展现有的数据集(包括WikiBioZsREWikiData CounterfactWikiData RecentconvsentSanitation )而构建的,以对知识编辑进行全面的评估。特别感谢这些数据集的创建者和维护者。
请注意,Counterfact 和 WikiData Counterfact不是相同的数据集。
任务知识插入知识修改知识抹除
数据集维基最近维基百科维基数据反事实康文特卫生
类型事实问答幻觉反事实情绪不需要的信息
# 火车57010,0005921,45514,39080
# 测试1,26613011,39288580080

我们提供了详细的脚本以便用户轻松使用 KnowEdit,请参阅。

数据集描述

数据集结构


事实知识数据集
数据集Google 云端硬盘百度网盘描述
使用问题改述的问答数据集
反事实使用实体替换的反事实数据集

我们提供了zsre和counterfact数据集来验证知识编辑的有效性,你可以在这里下载。,。

  • 对于局部性,除了测试不相关的实例之外,我们还提供分散注意力的测试(),其他归因和其他下游任务(例如常识推理)。
  • 对于可移植性,它测试模型是否可以应用已编辑的实例进行推理。我们针对单跳推理、主题别名和逆向关系(例如,配偶之间的一对一关系应进行双向编辑)提供评估。

数据集描述

<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>editing-data
├── counterfact
│   ├── counterfact-edit.json
│   ├── counterfact-train.json
│   └── counterfact-val.json
├── locality
│   ├── Commonsense Task
│   │   ├── piqa_valid-labels.lst
│   │   └── piqa_valid.jsonl
│   ├── Distracting Neighbor
│   │   └── counterfact_distracting_neighbor.json
│   └── Other Attribution
│       └── counterfact_other_attribution.json
├── portability
│   ├── Inverse Relation
│   │   └── zsre_inverse_relation.json
│   ├── One Hop
│   │   ├── counterfact_portability_gpt4.json
│   │   └── zsre_mend_eval_portability_gpt4.json
│   └── Subject Replace
│       ├── counterfact_subject_replace.json
│       └── zsre_subject_replace.json
└── zsre
    ├── zsre_mend_eval.json
    ├── zsre_mend_train_10000.json
    └── zsre_mend_train.json
</code></span></span></span>
  • 反事实:使用实体替换的原始反事实数据集
  • zsre:使用问题改述的原始问答数据集
  • 局部性(局部性的评价,详见)
  • 常识任务:对其他下游任务(如常识任务)的评估
  • 分散注意力的邻居:对分散注意力的邻居进行测试()
  • 其他归因
  • 可移植性
  • 逆关系:评估一对一关系,例如spouse
  • 单跳:单跳推理的评估
  • 主题替换:同义词替换的评估

概念知识数据集:ConceptEdit
数据集Google 云端硬盘HuggingFace 数据集描述
概念编辑编辑概念知识的数据集
  • 在这里,您可以按照运行概念编辑实验。

数据集描述

<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>data
└──concept_data.json
    ├──final_gpt2_inter.json
    ├──final_gpt2_intra.json
    ├──final_gptj_inter.json
    ├──final_gptj_intra.json
    ├──final_llama2chat_inter.json
    ├──final_llama2chat_intra.json
    ├──final_mistral_inter.json
    └──final_mistral_intra.json
</code></span></span></span>

概念特定评估指标

  • Instance Change:捕捉这些实例级变化的复杂性
  • Concept Consistency:生成的概念定义的语义相似度

多模态知识数据集:MMEdit
数据集Google 云端硬盘百度网盘描述
电子集成电路用于编辑图像字幕的数据集
电气工程专业用于编辑视觉问答的数据集
  • E-ICE-VQA中使用的所有图像均可在
  • 对于局部性,它与事实编辑相同,以衡量不相关的事实是否保留其输出。
  • 对于多模态局部性,它评估编辑对视觉模块的影响,这与常规局部性类似。

数据集描述

<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>editing-data
├── caption
│   ├── caption_train_edit.json
│   └── caption_eval_edit.json
├── locality
│   ├── NQ dataset
│   │   ├── train.json
│   │   └── validation.json
├── multimodal_locality
│   ├── OK-VQA dataset
│   │   ├── okvqa_loc.json
└── vqa
    ├── vqa_train.json
    └── vqa_eval.json
</code></span></span></span>
  • 多模态局部性(多模态局部性的评估,请参阅本文中数据集的详细)

用于净化法学硕士 (LLM) 的数据集:SafeEdit
数据集HuggingFace 数据集描述
安全编辑用于解毒 LLM 的数据集
  • 在这里,您可以按照运行解毒编辑实验。

数据集描述

<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>data
└──SafeEdit_train.json
└──SafeEdit_val.json
└──SafeEdit_test.json
    
</code></span></span></span>

消除特定评估指标的毒性

  • Defense Duccess (DS):对对抗性输入(攻击性提示+有害问题)编辑后的LLM的解毒成功率,用于修改LLM。
  • Defense Generalization (DG):已编辑的LLM对于域外恶意输入的解毒成功率。
  • General Performance:对不相关任务执行的副作用。
教程笔记本
方法描述GPT-2骆驼
IKE情境学习(ICL) 编辑
罗马定位并编辑神经元
梅米特定位并编辑神经元

要求

🔧Pip 安装

注意:请使用 Python 3.9+ 来使用 EasyEdit。 要开始使用,只需安装 conda 并运行:  git clone https://github.com/zjunlp/EasyEdit.git conda create -n EasyEdit python=3.9.7 ... pip install -r requirements.txt        解释

🐳Docker 安装

我们打包了环境,你可以下载Docker 。

从 Docker Hub 或者阿里云拉取 Docker 镜像:  docker pull zjunlp/easyedit        解释       docker pull registry.cn-hangzhou.aliyuncs.com/zjunlp/easyedit:v1        解释

如果要在本地构建Docker 镜像,可以将项目克隆到本地机器并构建Docker 镜像:  git clone https://github.com/zjunlp/EasyEdit.git cd EasyEdit docker build -t your-image-name .        解释

然后将 Docker 镜像作为容器运行:  docker run -p 8080:80 your-image-name        解释

编辑 GPU 内存使用情况

我们的结果全部基于默认配置

骆驼-2-7Bchatglm2gpt-j-6bgpt-xl
金融时报60GB58GB55GB7GB
塞拉克42GB32GB31GB10GB
IKE52GB38GB38GB10GB
修补46GB37GB37GB13GB
千牛42GB39GB40GB12GB
罗马31GB29GB27GB10GB
梅米特33GB31GB31GB11GB
安达洛拉29GB24GB25 GB8GB
优雅27GB23GB6GB

📌使用 EasyEdit

编辑大型语言模型(LLM)大约5 秒

中找到

基础编辑器

BaseEditor是语言情态知识编辑的课程。您可以根据自己的具体需求选择合适的编辑方式。
  • 由于 Transformer 版本不同、GPU 型号不同,编辑结果可能会略有波动。
通过简单例子介绍

由于的模块化和灵活性EasyEdit,您可以轻松地使用它来编辑模型。

步骤1:定义一个PLM作为需要编辑的对象。 选择需要编辑的PLM 。目前支持在EasyEdit上检索的部分模型(T5GPTJGPT-NEO)。相应的配置文件目录为,例如,设置相应的以选择要进行知识编辑的对象。LlaMAhparams/YUOR_METHOD/YOUR_MODEL.YAMLhparams/MEND/gpt2-xl.yamlmodel_name  model_name: gpt2-xl model_class: GPT2LMHeadModel tokenizer_class: GPT2Tokenizer tokenizer_name: gpt2-xl model_parallel: false # true for multi-GPU editing        解释

步骤2:选择合适的知识编辑方法  ## In this case, we use MEND method, so you should import `MENDHyperParams` from easyeditor import MENDHyperParams ## Loading config from hparams/MEMIT/gpt2-xl.yaml hparams = MENDHyperParams.from_hparams('./hparams/MEND/gpt2-xl')        解释

步骤3:提供编辑描述符和编辑目标  ## edit descriptor: prompt that you want to edit prompts = [ 'What university did Watts Humphrey attend?', 'Which family does Ramalinaceae belong to', 'What role does Denny Herzig play in football?' ] ## You can set `ground_truth` to None !!!(or set to original output) ground_truth = ['Illinois Institute of Technology', 'Lecanorales', 'defender'] ## edit target: expected output target_new = ['University of Michigan', 'Lamiinae', 'winger']        解释

步骤4:将它们组合成一个BaseEditor EasyEdit提供简单统一的 init 方法Editor,例如 huggingface: from_hparams。  ## Construct Language Model Editor editor = BaseEditor.from_hparams(hparams)        解释

Step5:提供评估数据 注意,portability 和 locality 的数据都是可选的(设置为 None 仅用于基本编辑成功率评估)。两者的数据格式都是dict,对于每个测量维度,你需要提供相应的 prompt 和它对应的 ground truth。以下是数据示例:  locality_inputs = { 'neighborhood':{ 'prompt': ['Joseph Fischhof, the', 'Larry Bird is a professional', 'In Forssa, they understand'], 'ground_truth': ['piano', 'basketball', 'Finnish'] }, 'distracting': { 'prompt': ['Ray Charles, the violin Hauschka plays the instrument', 'Grant Hill is a professional soccer Magic Johnson is a professional', 'The law in Ikaalinen declares the language Swedish In Loviisa, the language spoken is'], 'ground_truth': ['piano', 'basketball', 'Finnish'] } }        解释

在上面的例子中,我们评估了有关“邻里”和“分散注意力”的编辑方法的性能。

步骤6:编辑和评估 完成!我们可以对您要编辑的模型进行编辑和评估。该edit函数将返回一系列与编辑过程相关的指标以及修改后的模型权重。[sequential_edit=True用于持续编辑]  metrics, edited_model, _ = editor.edit( prompts=prompts, ground_truth=ground_truth, target_new=target_new, locality_inputs=locality_inputs, sequential_edit=False # True: start continuous editing ✈️ ) ## metrics: edit success, rephrase success, locality e.g. ## edited_model: post-edit model        解释

EasyEdit 的最大输入长度为 512。如果超出此长度,您将遇到错误“CUDA 错误:设备端断言已触发”。您可以在以下文件中修改最大长度:

步骤 7:回滚 在连续编辑中,如果您对某次编辑的结果不满意,并且不想丢失之前的编辑,则可以使用回滚功能撤消之前的编辑。目前,我们仅支持 GRACE 方法。您只需编写一行代码,使用 edit_key 即可撤消您的编辑。

<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>editor.rolllback('edit_key')
</code></span></span></span></span>

解释

在 EasyEdit 中,我们默认使用 target_new 作为 edit_key

评估

我们将返回指标指定为dict格式,包括编辑前后的模型预测评估。对于每次编辑,它将包括以下指标:

  • rewrite_acc可靠性
  • rephrase_acc概括
  • locality位置
  • portablility可移植性  { "post": { "rewrite_acc": , "rephrase_acc": , "locality": { "YOUR_LOCALITY_KEY": , //... }, "portablility": { "YOUR_PORTABILITY_KEY": , //... }, }, "pre": { "rewrite_acc": , "rephrase_acc": , "portablility": { "YOUR_PORTABILITY_KEY": , //... }, } }        解释
  • 对于可靠性的评估,只需要提供相应的编辑prompts和剪辑即可target_new
  • 为了进行泛化评估,rephrase_prompts是必需的。
  • 对于Locality和Portablility的评估,需要定义相应度量的名称,以及promptsground_truth
注意:长度需要等于编辑提示

培训师

  • 基于元学习:MEND
  • 基于内存的路由:SERAC

对于上述编辑方法,需要对相应的元网络或分类器进行预训练。因此,在 EasyEdit 中,我们提供了统一的框架来预训练相关的网络结构。以训练 MEND 为例:

  • 步骤1步骤2与上面的例子相同,涉及选择合适的编辑模型和编辑方法。

步骤3:提供编辑训练集 目前支持且可用的数据集有:zsrecounterfact()。请将它们放在“data”目录中,并初始化dataset_class(ZsreDataset对于zsre和CounterFactDataset对于counterfact)以加载相应的训练集。  train_ds = ZsreDataset('./data/zsre_mend_train.json', config=training_hparams) eval_ds = ZsreDataset('./data/zsre_mend_eval.json', config=training_hparams)        解释

步骤4:将它们组合成Trainer  trainer = EditTrainer( config=training_hparams, train_set=train_ds, val_set=eval_ds )        解释

步骤5:运行并编辑 完成!我们可以进行运行和评估。  trainer.run()        解释

  • 运行: 将CHECKPOINT保存到路径results_dir
  • 编辑:将hparams文件archive中的字段设置为,EasyEdit会在编辑过程中自动加载相应的预训练权重()。CHECKPOINT

训练示例  from easyeditor import EditTrainer, MENDTrainingHparams, ZsreDataset training_hparams = MENDTrainingHparams.from_hparams('hparams/TRAINING/MEND/llama-7b.yaml') train_ds = ZsreDataset('./data/zsre/zsre_mend_train.json', config=training_hparams) eval_ds = ZsreDataset('./data/zsre/zsre_mend_eval.json', config=training_hparams) trainer = EditTrainer( config=training_hparams, train_set=train_ds, val_set=eval_ds ) trainer.run()        解释

使用 EasyEdit 与 KnowEdit

数据集

KnowEdit 是法学硕士知识编辑的基准数据集。你可以从 HuggingFace、HuggingFace 和 ModelScope 轻松获取 KnowEdit。

数据集拥抱脸拥抱脸模型范围
知道编辑

用法

我们提供了详细的脚本以便用户轻松使用 KnowEdit,请参阅。

编辑表现

我们展示了使用 EasyEdit在上对四个指标的编辑结果。我们采用作为测试数据集。

❗️❗️编辑llama-2-7B需要 GPU 上有 40G+ VRAM。(OOM)
可靠性概括位置可移植性
金融时报56.9452.0296.3251.03
塞拉克99.4999.13100.0057.82
IKE100.0099.9869.1967.56
修补94.2490.2797.0456.95
千牛28.9528.4365.4337.18
罗马92.4587.0499.6357.47
梅米特92.9485.9799.4960.64

进行KnowEdit 编辑的结果。

数据集公制塞拉克安达洛拉修补罗马梅米特FT-L金融时报
WikiData_recent
編輯成功。98.6860.7465.6176.8885.0885.3271.1831.24
可移植性63.5236.9347.2250.1137.4537.9448.7115.91
位置100.0033.3455.7892.8766.264.7863.73.65
流利度553.19531.01537.51586.34574.28566.66549.35428.67
編輯成功。99.6766.0169.8696.7496.5783.0754.6536.88
可移植性56.4863.9452.9560.4152.2051.4345.028.72
位置30.2323.1472.2192.7927.1425.4671.120.31
流利度410.89541.14532.82524.33570.47559.72474.18471.29
维基百科
編輯成功。99.6995.5397.0293.6695.0594.2966.2795.64
位置69.7947.9057.8769.5146.9651.5660.1413.38
流利度606.95632.92615.86609.39617.25616.65604.00589.22
WikiData_counterfact
編輯成功。99.9969.8372.1478.8283.2183.4151.1226.78
可移植性76.0745.3255.1757.5338.6940.0939.0716.94
位置98.9632.3866.7894.1665.463.6862.510.29
流利度549.91547.22553.85588.94578.84568.58544.80483.71
转换信
編輯成功。62.7552.7844.8950.7645.7944.7549.5061.93
位置0.2649.730.183.420.000.000.000.00
流利度458.21621.45606.42379.43606.32602.62607.86546.24
卫生
編輯成功。0.0072.502.500.0085.0048.750.0060.00
位置100.0056.5865.505.2950.3167.4714.7842.61
流利度416.29794.15330.44407.18465.12466.10439.10351.39
❗️❗️请注意,如果您希望在 Knowedi 上重现有关罗马的结果,请确保fp16: False

去做

引用

如果您在工作中使用 EasyEdit,请引用我们的论文。  @article{zhang2024comprehensive, title={A Comprehensive Study of Knowledge Editing for Large Language Models}, author={Zhang, Ningyu and Yao, Yunzhi and Tian, Bozhong and Wang, Peng and Deng, Shumin and Wang, Mengru and Xi, Zekun and Mao, Shengyu and Zhang, Jintian and Ni, Yuansheng and others}, journal={arXiv preprint arXiv:2401.01286}, year={2024} } @article{wang2023easyedit, title={Easyedit: An easy-to-use knowledge editing framework for large language models}, author={Wang, Peng and Zhang, Ningyu and Xie, Xin and Yao, Yunzhi and Tian, Bozhong and Wang, Mengru and Xi, Zekun and Cheng, Siyuan and Liu, Kangwei and Zheng, Guozhou and others}, journal={arXiv preprint arXiv:2308.07269}, year={2023} } @article{yao2023editing, title={Editing Large Language Models: Problems, Methods, and Opportunities}, author={Yao, Yunzhi and Wang, Peng and Tian, Bozhong and Cheng, Siyuan and Li, Zhoubo and Deng, Shumin and Chen, Huajun and Zhang, Ningyu}, journal={arXiv preprint arXiv:2305.13172}, year={2023} } @article{cheng2023edit, title={Can We Edit Multimodal Large Language Models?}, author={Cheng, Siyuan and Tian, Bozhong and Liu, Qingbin and Chen, Xi and Wang, Yongheng and Chen, Huajun and Zhang, Ningyu}, journal={arXiv preprint arXiv:2310.08475}, year={2023} } @article{mao2023editing, title={Editing personality for llms}, author={Mao, Shengyu and Zhang, Ningyu and Wang, Xiaohan and Wang, Mengru and Yao, Yunzhi and Jiang, Yong and Xie, Pengjun and Huang, Fei and Chen, Huajun}, journal={arXiv preprint arXiv:2310.02168}, year={2023} } @misc{knowlm, author = {Ningyu Zhang and Jintian Zhang and Xiaohan Wang and Honghao Gui and Kangwei Liu and Yinuo Jiang and Xiang Chen and Shengyu Mao and Shuofei Qiao and Yuqi Zhu and Zhen Bi and Jing Chen and Xiaozhuan Liang and Yixin Ou and Runnan Fang and Zekun Xi and Xin Xu and Lei Li and Peng Wang and Mengru Wang and Yunzhi Yao and Bozhong Tian and Yin Fang and Guozhou Zheng and Huajun Chen}, title = {KnowLM Technical Report}, year = {2023}, url = {http://knowlm.zjukg.cn/}, }

Read more

Tomcat学习总结(17)—— Tomcat生产环境中域名访问和连接MySQL

Tomcat学习总结(17)—— Tomcat生产环境中域名访问和连接MySQL

搭建基于域名的虚拟主机 进入Tomcat里面去修改配置文件,配置虚拟主机用域名访问, [root@juny-18 tomcat]# cd conf/ [root@juny-18 conf]# ls Catalina catalina.properties jaspic-providers.xml logging.properties tomcat-users.xml web.xml catalina.policy context.xml jaspic-providers.xsd server.xml tomcat-users.xsd server.xml是Tomcat的主配置文件(全局),服务器设置的,例如端口设置,路径设置。 context里设置tomcat数据源,用来连接数据库。 tomcat_users主要是用户名和密码的设置。 web是默认首页等等之类的设置 首先配置主配置文件 [root@juny-18 conf]# vim server.

By Ne0inhk
Kubernetes学习总结(2)——Kubernetes设计架构

Kubernetes学习总结(2)——Kubernetes设计架构

Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统。下面这张图是Kubernetes的架构图。 Kubernetes节点 在这张系统架构图中,我们把服务分为运行在工作节点上的服务和组成集群级别控制板的服务。 Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制。 每次个节点上当然都要运行Docker。Docker来负责所有具体的映像下载和容器运行。 Kubernetes主要由以下几个核心组件组成: etcd保存了整个集群的状态; apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制; controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上; kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理; Container runtime负责镜像管理以及Pod和容器的真正运行

By Ne0inhk
Docker学习总结(29)——Docker核心技术与实现原理

Docker学习总结(29)——Docker核心技术与实现原理

提到虚拟化技术,我们首先想到的一定是 Docker,经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段使用的玩具了。作为在生产环境中广泛应用的产品,Docker 有着非常成熟的社区以及大量的使用者,代码库中的内容也变得非常庞大。 同样,由于项目的发展、功能的拆分以及各种奇怪的改名 ,让我们再次理解 Docker 的的整体架构变得更加困难。 虽然 Docker 目前的组件较多,并且实现也非常复杂,但是本文不想过多的介绍 Docker 具体的实现细节,我们更想谈一谈 Docker 这种虚拟化技术的出现有哪些核心技术的支撑。 首先,Docker 的出现一定是因为目前的后端在开发和运维阶段确实需要一种虚拟化技术解决开发环境和生产环境环境一致的问题,通过 Docker 我们可以将程序运行的环境也纳入到版本控制中,排除因为环境造成不同运行结果的可能。但是上述需求虽然推动了虚拟化技术的产生,但是如果没有合适的底层技术支撑,那么我们仍然得不到一个完美的产品。本文剩下的内容会介绍几种 Docker 使用的核心技术,如果我们了解它们的使用方法和原理,就能清楚 Do

By Ne0inhk