置顶-因你而在的故事
因你而在的故事 2023.6 当我透过学线办公室窗外望去,高楼与山丘,夕阳落日,无限风光,又与何人说。 心灵鸡汤 举头望明月,万般感怀皆在其中, 此情此景,犹如天星照我,愿逐月华。 I go through that so much. I doubt myself every single day. No matter what happens, I continue to doubt myself. And I think I always will and I think it’s always something I’m gonna struggle with. But this song helped me, and helps me moment to moment. I don’t think we can ever hope to fully get over the things that makes us insure, or the voices in our head that say “You can’t do it. You are not good e ...
Defects4J使用
Defects4J使用 安装 依赖 没写Git,一般Linux下都会有吧( Java 11 1conda install -c conda-forge openjdk=11 Subversion (svn ≥ 1.8) 1conda install -c conda-forge subversion Perl ≥ 5.0.12 大多数 Linux 系统自带 Perl ≥ 5.0.12,检查版本: 1perl -v 如果版本太低,可以手动编译或使用 perlbrew。 1234567wget https://www.cpan.org/src/5.0/perl-5.36.0.tar.gztar -xzf perl-5.36.0.tar.gzcd perl-5.36.0./Configure -des -Dprefix=$HOME/.local/perlmake && make installecho 'export PATH="$HOME/.local/perl/bin:$PATH"' >> ~/.bashrcsource ...
LLM基础知识整理
LLM基础知识整理 LLM-Base BERT BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer架构的预训练语言模型,通过双向上下文建模显著提升了自然语言处理任务的性能。其核心原理如下: 1. 核心架构:Transformer编码器 BERT采用多层Transformer编码器堆叠而成,基础模型包含12层,大模型包含24层。 每层编码器由多头自注意力机制和前馈神经网络组成,支持并行计算和长距离依赖捕捉。 自注意力机制允许模型动态权衡不同位置词的重要性,生成上下文相关的词表示。 2. 预训练任务 BERT通过两个无监督任务学习通用语言表示: 2.1 掩码语言模型(Masked Language Model, MLM) 方法:随机遮盖输入中15%的词(如替换为[MASK]),模型基于上下文预测被遮盖的词。 遮盖策略: 80%替换为[MASK]。 10%替换为随机词。 10%保留原词。 目的:迫使模型融合双向上下文信息,避免对遮盖标记过度依赖。 2.2 下一句预测(Next ...
读paper20-基于LLM的缺陷修复6
读paper20-基于LLM的缺陷修复6 AuPair: Golden Example Pairs for Code Repair https://arxiv.org/abs/2502.18487 介绍了一种从在修复代码中进行的修复对的生成方法,可以用于数据集构造,当然,修复对的生成过程也就是缺陷的修复过程。 训练集是代码及LLM生成的初始的推测(guess),该方法首先从训练集中抽取待修复代码及其guess,基于LLM进行修复,并对比修复后代码与已有修复(若有)的质量,若发现了更好的修复代码,则更新到候选对中。然后对候选修复对中的每一对,评估其修复质量,选择形成最终数据集。 候选修复对生成 从训练数据集 D 中抽取一个待修复代码及其初始guess。如果生成的修复代码在该问题的单元测试中得分高于初始guess,则该guess-fix配对将被添加到候选集 C 中。此外,如果该fix未通过所有单元测试,则为有进一步改进余地的潜在guess,因此它将作为新guess添加到训练数据集 D 中。 其中,得分是基于生成的代码在该代码测试用例的通过情况进行计算的 修复对提取 现在,我们已经有 ...
读paper19-基于LLM的缺陷修复5与总结
读paper19-基于LLM的缺陷修复5与总结 ThinkRepair: Self-Directed Automated Program Repair Datasets:Defects4J and QuixBugs 论文中提到了一点:Few-shot CoT that largely enhances analyzing and reasoning capabilities to understand the semantics of the buggy function 核心点在于针对APR的Automated few-shot CoT。少量的示例可以帮助 LLM 更好地应对所面临的任务,但示例的质量会严重影响其能力。因此,该研究设计了一种自动方法,从 LLMs 中提取思维链,选择有效的示例进行few-shot learning,并用 CoTs 组成prompt进行修复。 Collection Phase 这一步的核心点就在于,如果修复被验证为正确,就将CoT保存,相当于构建一个知识库。 Fixing Phase 针对Collection Phase保存的案例进行few-sho ...
读paper18-Agent_for_code
读paper18-Agent_for_code 总的来说我觉得可以优化的点主要集中在三部分: 前期数据预处理: 一方面是针对代码输入的预处理,即去除代码中的无关上下文来压缩代码,但这本质上是一个缺陷定位的过程 另一方面是考虑Few-shot的可能性及其效果 最后是针对修复思路的推理增强,不过这个直接使用Reasoning LLM似乎就能有较好效果 中期围绕LLM的处理流程: 一方面是流程的优化,针对目前的“修复-评估-反思”流程进行优化 另一方面是Memory、RAG等对流程中某一步的增强 末期围绕“修复-评估-反思”流程中的评估进行增强: 如何构建更有效的打分机制,比如递进式:完整性-可运行性-修复正确性 或者是多指标打分加权平均 MapCoder: Multi-Agent Code Generation for Competitive Problem Solving 来自ACL https://github.com/Md-Ashraful-Pramanik/MapCoder https://arxiv.org/abs/2405.11403 这篇paper跟我 ...
读paper17-基于LLM的缺陷修复4与修复提示词
读paper17-基于LLM的缺陷修复4与修复提示词 https://dl.acm.org/doi/10.1145/3650212.3680328 https://dl.acm.org/doi/10.1145/3650212.3680384 https://ieeexplore.ieee.org/document/10664337 CREF: An LLM-Based Conversational Software Repair Framework for Programming Tutors https://dl.acm.org/doi/10.1145/3650212.3680328 为避免LLM爬取导致的数据泄露,引入了TutorCode数据集,https://tutorcode.org/docs/ ,信息挺充足的。 是一种动态修复工具,方法很简单,就是反复将测试用例通过情况加上人类思考交给LLM直到修复通过。所以其中还是需要人为的干涉,所以实际上跟日常生活中问LLM没区别。 可以考虑使用一个LLM把其中的人类思考替代掉,类似于DeepSeek R1的思考过程。 AutoCodeR ...
读paper16-微调LLM的APR与正确性验证
读paper16-微调LLM的APR与正确性验证 REEF: A Framework for Collecting Real-World Vulnerabilities and Fixes(数据集构建) 该Paper针对的是CVE,所以更准却的说应该是漏洞数据集构建框架,不过可以尝试借鉴思路进行缺陷数据集构建框架的搭建 这种方法的好处是覆盖了较多的CWE规则,同时使用LLM对数据项进行了信息补全和完善。 但缺点是每条数据都会包含多个文件的修复,也就是说这种数据集更偏向项目级的修复。 工具和数据集在Github中给出:https://github.com/ASE-REEF 。C和cpp的数据量挺多的,但需要清洗。 RepairCAT: Applying Large Language Model to Fix Bugs in AI-Generated Programs 从数据集构造到模型微调的实现。使用LLM生成数据集进行模型微调。 数据集不进行缺陷定位,而是将整个有问题的程序一并处理,让模型决定修复的位置。 训练LLM和构建工具的源代码在Zenodo链接中存档:https://zeno ...
使用丢番图逼近优化大语言模型的参数
使用丢番图逼近优化大型语言模型的参数 背景: 大型语言模型(如GPT-3)在自然语言处理领域取得了显著的成就,但其参数量巨大,导致计算成 本高昂。丢番图逼近是数学中研究有理数逼近无理数的理论,可以用于优化模型参数,减少计算量。 问题:假设我们有一个大型语言模型,其参数量为数百万。我们需要使用丢番图逼近的方法来优化 这些参数,以减少模型的计算量,同时保持模型的性能。 要求: 1、参数分析:分析模型中参数的分布和作用,确定哪些参数可以通过丢番图逼近来优化。 2、逼近方法选择:选择合适的丢番图逼近方法,如连分数逼近、有理数逼近等。 3、参数优化:使用丢番图逼近方法对选定的参数进行优化,减少参数的位数或数量。 4、模型测试:在优化后的参数上测试模型的性能,确保模型的准确性和效率没有显著下降。 5、结果分析:分析优化后的模型与原模型的性能差异,评估丢番图逼近方法的效果。 附加挑战: • 多目标优化:考虑模型的多个目标,如准确率、计算量、存储空间等,使用丢番图逼近进行多目标 优化。 • 动态优化:设计一种动态优化策略,根据模型的使用情况实时调整参数的逼近程度。 • 理论研究:深入研究丢番图逼近理论 ...
读paper15-Multi-Agent
读paper15-Multi-Agent Communication Beyond Natural Language: LLMs Leveraging Alternative Formats for Enhanced Reasoning and Communication https://arxiv.org/abs/2402.18439 对于CoT,会首先引导模型生成思维集t={ti}t=\{t_i\}t={ti},然后基于此集合生成回复,但其使用的思维模式通常不会指定且使用自然语言,所以针对此进行改进。 该研究假设,结构化数据格式(如 JSON、markdown 表格、列表)或符号表示法(如逻辑表达式、数学公式)等各种格式有可能产生更精确、更有效的推理,并简化交流。 具体来说,对于单 LLM 推理,我们在原有的 CoT 提示中添加了鼓励使用非 NL 格式的指令。在多代理场景中,也会添加类似的格式决策指令。 为了提高清晰度并消除自然语言中固有的歧义,请考虑采用更有条理、更简洁的交流形式来逐步提供解决方案。合适的格式包括代码、伪代码、JSON、markdown 表格、逻辑运算符或数 ...
读paper14-Multi-Agent-2
读paper14-Multi-Agent-2 MALT: Improving Reasoning with Multi-Agent LLM Training 采用顺序多代理设置,异构 LLM 分配专门的角色:生成器、验证器和迭代解决问题的完善模型。我们提出了一种基于轨迹扩展的合成数据生成过程和一种由基于结果的联合奖励驱动的信用分配策略。 MALT 包括以下步骤: 单独生成合成数据:为每个基准单独生成合成数据。 基于联合二元奖励的信用分配启发式方法:在此过程中,每个基准的训练集由可用于比较的真实答案组成,用于在搜索过程的叶节点上生成二元奖励。基于此方法,为每个模型生成特定角色的训练数据。 模型训练:训练遵循上述配置,首先进行 SFT(监督微调),然后在 SFT 策略的基础上进行 DPO(直接偏好优化)。 在实践中,对长文本序列进行训练可能会不稳定或产生幻觉。为了解决这个问题,MALT 在推理过程中采用了一种简单的多数表决机制,由三个productions来确保自洽性。由于推理不需要树形搜索过程,而且与baseline推理遵循相同的顺序模式,因此计算效率很高. Inference Se ...
深度学习-蒸馏、剪枝、量化
深度学习-蒸馏、剪枝、量化 蒸馏 Distilling the Knowledge in a Neural Network 概述 基本原理 教师模型与学生模型: 教师模型(Teacher Model,Net-T):通常是一个大型且高精度的模型,能够通过训练获得较强的性能。教师模型可以是任何一种复杂的模型,通常是深度神经网络。 学生模型(Student Model,Net-S):是一个结构更小、计算需求更少的模型,旨在通过学习教师模型的知识来达到类似的性能,甚至在某些情况下超越教师模型。 知识迁移: 蒸馏的核心思想是通过将教师模型的输出信息(通常是软标签,soft labels)传递给学生模型。软标签不同于硬标签(即分类任务中的目标标签),它包含了更多关于类别之间关系的信息。教师模型的输出通常会比学生模型的输出更平滑、更有信息,因此能够帮助学生模型学到更为细致的特征表示。 软标签(Soft Labels)与温度(Temperature): 软标签:是教师模型经过软化处理后的预测结果。通常,教师模型的输出通过一个温度参数进行调整,使得原本很尖锐的概率分布变得更加平滑,从而为 ...
并行计算-片上多处理器
并行计算-片上多处理器 关键概念 Scoreboard 在计算机体系结构和并行计算中,Scoreboard 是一种硬件机制,主要用于管理指令的执行顺序和资源分配,以支持无序执行(Out-of-Order Execution)或解决数据相关性问题。它的中文一般翻译为 “记分牌” 或 “计分板”。 Scoreboard 的作用 Scoreboard 的核心目的是协调指令执行,确保指令在处理器流水线中正确执行,即使它们之间存在依赖关系。它通过监控指令的状态、处理单元的可用性以及数据依赖性,来决定是否可以发射(issue)、执行和写回(commit)特定的指令。 具体来说,Scoreboard 的功能包括: 处理数据相关性: 读后写依赖(RAW,Read After Write):确保后续指令读取正确的数据。 写后读依赖(WAR,Write After Read):确保前面的读操作完成后再写入。 写后写依赖(WAW,Write After Write):确保写入操作按照正确的顺序完成。 管理硬件单元的使用: Scoreboard 记录每个功能单元(如加法器、乘法器等)的状态,确保指令 ...
读paper13-Multi-Agent盘点
读paper13:Multi-Agent盘点 MetaGPT 论文:https://arxiv.org/abs/2308.00352 代码:https://github.com/geekan/MetaGPT MetaGPT 以一行需求作为输入,输出用户故事/竞争分析/需求/数据结构/API/文档等 MetaGPT利用SOP(Standard Operating Procedures,标准作业程序)来协调基于大语言模型的多智能体系统,从而实现元编程技术。该框架使用智能体模拟了一个虚拟软件团队,包含产品经理、架构师、项目经理、工程师、质量工程师等角色,并引入SOP成为框架的虚拟软件团队的开发流程。其专注于软件开发,覆盖了从需求分析到代码实现的全生命周期覆盖。 架构 框架采用双层架构设计: 基础组件层以AI Agent为核心,提供了观察、思考等能力。其建立了个体智能体操作和在系统范围内进行信息交换所需的核心模块,包括环境、记忆、角色、行动和工具。 环境:为智能体提供协作工作空间和交流平台。 记忆:存储和检索历史消息。 角色:根据领域封装专业技能和工作流程。 行动:执行模块化的子任务 ...
数值分析大作业-PageRank
数值分析大作业-PageRank 题目 互联网的使用已经深入人们的日常生活中,其巨大的信息量和强大的功能给人们的生产、生活带来了很大使利。随着网络信息量越来越庞大,如何有效地搜索出用户真正需要的信息变得十分重要。互联网巨头Google公司的核心技术就是通过PageRank 技术对海量的网页进行重要性分析。该技术利用网页相互链接的关系对网页进行组织,确定出每个网页的重要级别(PageRank)。当用户进行搜索时,Google找出符合搜索要求的网页,并按它们的PageRank 大小依次列出。这样,用户一般在显示结果的第一页或者前几页就能找到真正有用的结果。形象地解释,PageRank 技术的基本原理是:如果网页A 链接到网页B ,则认为“网页A投了网页B”一票,而且如果网页A 是级别高的网页,则网页B 的级别也相应地高。 假设 nnn是 Internet 中所有可访问网页的数目,此数值非常大,2010 年已接近 100亿。定义n×nn\times nn×n 的网页链接矩阵 G=(gij)∈Rn×nG=(g_{ij})\in\mathbb{R}^n\times nG=(gij)∈Rn×n, ...
默认参数的最优化
默认参数的最优化 场景:速读时,有些学生速读 1 次就能复述,有些需要 2 次,有些需要 N 次,而建议速读次数 X 是个默认值,这个默认值到底取多少合适 技术:使用线性回归技术 什么是好的超参数优化算法 如果说只是为了找到最优的超参数组合而不考虑其他的因素,那么我们那可以用穷举法,把所有超参数组合都尝试一遍,这样肯定能找到最优的。但是我们都知道这样肯定不行,因为我们还需要考虑时间,计算资源等因素。而这些因素我们可以称为 Budget, 用 BBB 表示。 假设一开始候选的超参数组合数量是 nnn,那么分配到每个超参数组的预算就是 Bn\frac{B}{n}nB。所以 Hyperband 做的事情就是在 nnn 与 Bn\frac{B}{n}nB 做权衡 (tradeoff)。 也就是说如果我们希望候选的超参数越多越好,因为这样能够包含最优超参数的可能性也就越大,但是此时分配到每个超参数组的预算也就越少,那么找到最优超参数的可能性就降低了。反之亦然。所以 Hyperband 要做的事情就是预设尽可能多的超参数组合数量,并且每组超参数所分配的预算也尽可能的多,从而确保尽可能地找到 ...
读paper12-静态警报自动确认
读paper12-静态警报自动确认 基于历史缺陷信息检索的语句级软件缺陷定位方法 一个比较有创新性的点是 通过分析类的 AST 可以获取到与此语句相关的 AST 片段,依次提取 AST 片段中的节点类型信息,组成语句的结构信息序列,使用最短编辑距离 (edit distance) 计算两个结构信息序列间的相似程度 编辑距离指的是在两个单词之间,由其中一个单词转换为另一个单词所需要的最少单字符编辑操作次数。 所以相当于将图相似度问题转化为了序列的相似度问题。 基于路径语义表示的静态警报自动确认方法 整体流程如上图,比较关键的两个步骤是: 基于 CFG 路径的 token 序列的提取 基于路径token序列的语义表示的学习 基于 CFG 路径的 token 序列的提取 基本步骤如下: 通过静态分析工具 DTS (defect testing system)将源代码文件解析为 CFG 利用面向目标的路径生成算法生成从入口节点到缺陷节点的 CFG 路径 对于CFG路径的节点,选取两种类型的路径节点进行 token 提取. 第 1 类节点是所有包含警报 IP 处导致潜在缺陷的 ...
AutoGen-multiple agents framework
AutoGen:multiple agents framework AutoGen 提供了一个统一的多智能体对话框架,作为使用基础模型的高级抽象。它具有功能强大、可定制和可对话的代理,通过自动代理聊天将 LLM、工具和人类整合在一起。 通过自动化多个能力强的代理之间的聊天,可以轻松使它们集体自主执行任务,或者在人类反馈下执行任务,包括需要通过代码使用工具的任务。 该框架简化了复杂 LLM 工作流的编排、自动化和优化。它最大化了 LLM 模型的性能并克服了它们的弱点。它使基于多智能体对话的下一代 LLM 应用程序的构建变得轻而易举。 主要特点 AutoGen 抽象并实现了旨在通过智能体间对话解决任务的可对话智能体。具体来说,AutoGen 中的智能体具有以下显著特点: 可对话:AutoGen 中的智能体是可对话的,这意味着任何智能体都可以发送和接收来自其他智能体的消息,以启动或继续对话。 可定制:AutoGen 中的智能体可以定制,以整合 LLM、人类、工具或它们的组合。 AutoGen 设计与实现要点 下图显示了 AutoGen 中内置的智能体。 AssistantAgent ...