置顶-因你而在的故事
因你而在的故事 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 ...
使用丢番图逼近优化大语言模型的参数
使用丢番图逼近优化大型语言模型的参数 背景: 大型语言模型(如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-静态警报自动确认与LLM代码生成的正确性评估
读paper12-静态警报自动确认与LLM代码生成的正确性评估 基于历史缺陷信息检索的语句级软件缺陷定位方法 一个比较有创新性的点是 通过分析类的 AST 可以获取到与此语句相关的 AST 片段,依次提取 AST 片段中的节点类型信息,组成语句的结构信息序列,使用最短编辑距离 (edit distance) 计算两个结构信息序列间的相似程度 编辑距离指的是在两个单词之间,由其中一个单词转换为另一个单词所需要的最少单字符编辑操作次数。 所以相当于将图相似度问题转化为了序列的相似度问题。 基于路径语义表示的静态警报自动确认方法 整体流程如上图,比较关键的两个步骤是: 基于 CFG 路径的 token 序列的提取 基于路径token序列的语义表示的学习 基于 CFG 路径的 token 序列的提取 基本步骤如下: 通过静态分析工具 DTS (defect testing system)将源代码文件解析为 CFG 利用面向目标的路径生成算法生成从入口节点到缺陷节点的 CFG 路径 对于CFG路径的节点,选取两种类型的路径节点进行 token 提取. 第 1 类节点是所有包含 ...
AutoGen-multiple agents framework
AutoGen:multiple agents framework AutoGen 提供了一个统一的多智能体对话框架,作为使用基础模型的高级抽象。它具有功能强大、可定制和可对话的代理,通过自动代理聊天将 LLM、工具和人类整合在一起。 通过自动化多个能力强的代理之间的聊天,可以轻松使它们集体自主执行任务,或者在人类反馈下执行任务,包括需要通过代码使用工具的任务。 该框架简化了复杂 LLM 工作流的编排、自动化和优化。它最大化了 LLM 模型的性能并克服了它们的弱点。它使基于多智能体对话的下一代 LLM 应用程序的构建变得轻而易举。 主要特点 AutoGen 抽象并实现了旨在通过智能体间对话解决任务的可对话智能体。具体来说,AutoGen 中的智能体具有以下显著特点: 可对话:AutoGen 中的智能体是可对话的,这意味着任何智能体都可以发送和接收来自其他智能体的消息,以启动或继续对话。 可定制:AutoGen 中的智能体可以定制,以整合 LLM、人类、工具或它们的组合。 AutoGen 设计与实现要点 下图显示了 AutoGen 中内置的智能体。 AssistantAgent ...
读paper11-基于LLM的缺陷修复3
读paper11-基于LLM的缺陷修复3 InferFix: End-to-End Program Repair with LLMs 主要关注:Null Pointer Dereference (NPD), Resource Leak (RL), and Thread Safety Violation (TSV)三种缺陷 对于缺陷修复部分:上下文预处理模块使用分析器提供的信息来提取有问题的方法,并保留与修复错误最相关的周围上下文 - import 语句、类签名、在 buggy 行调用的 getResourceResolver 方法的主体。然后,检索增强引擎在历史数据库中搜索语义相似的错误代码片段,并在prompt前加上类似的错误修复。最后,将增强的prompt发送到微调的 Codex 模型进行推理。然后,通过执行 Infer 静态分析器和单元测试作为 CI 管道的一部分来验证预测的补丁,以确保错误确实已修复,并且代码库中没有引入回归。 静态分析使用的是开源工具Infer:https://github.com/facebook/infer 代码匹配 https://aclantholo ...
研一课程笔记-数值分析4-6
研一课程笔记-数值分析4-6 非线性方程迭代解法 n次方程根的个数与次数相同(实根或者复根) 设有非线性方程 f(x)=0(4.1)f(x)=0\tag{4.1} f(x)=0(4.1) 其中 f(x)f(x)f(x) 是一元非线性函数。若常数 sss 使 f(s)=0f(s)=0f(s)=0,则称 sss 是方程(4.1)的根,又称 sss 是函数 f(x)f(x)f(x)的零点。若 f(x)f( x)f(x) 能分解为 f(x)=(x−s)mφ(x)f(x)=(x-s)^m\varphi(x) f(x)=(x−s)mφ(x) 其中 mmm 是正整数,φ(s)≠0\varphi(s)\neq0φ(s)=0 ,则称 sss 是方程(4.1)的 mmm 重根和 f(x)f(x)f(x) 的 mmm 重零点。当 m=1m=1m=1 时,sss 称为方程(4.1)的单根和 f(x)f(x)f(x) 的单零点。 二分法 用 C[a,b]C[a,b]C[a,b] 和 C(a,b)C(a,b)C(a,b) 分别表示在闭区间 [a,b][a,b][a,b] 和开区间 (a,b)(a,b)(a, ...
读paper10-代码相似度
读paper10-代码相似度 2024.10.14:项目换血,这个用不到了。。。。。 Learning graph-based code representations for source-level functional similarity detection https://github.com/jun-zeng/Tailor https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=10172499 代码相似性通常被划分为这四种类型: 类型 I–除空白、代码注释和布局外,代码完全相同。 类型 II–代码结构和语法完全相同,标识符名称、类型、布局和注释除外。 类型 III–符合类型 II 的特征,但有添加、删除或修改的声明。 类型 IV–代码具有相同的功能和效果,但通过不同的语法结构实现。 不过,AST 与程序语义(如控制流)无关,这限制了它识别语法不同但语义相似的程序的能力。作为一种补救措施,基于图的方法建立了程序依赖图(PDG),纳入了控制/数据依赖关系,通过发现同构子图来预测语义相似的功能 ...
RLHF-从基础到Claude中的应用探索
RLHF-从基础到Claude中的应用探索 强化学习基础知识: 马尔可夫决策过程(Markov Decision Processes,MDPs) 例行回顾,但不是核心内容 MDPs 简单说就是一个智能体(Agent)采取行动(Action)从而改变自己的状态(State)获得奖励(Reward)与环境(Environment)发生交互的循环过程。 MDP 的策略完全取决于当前状态(Only present matters),这也是它马尔可夫性质的体现。 其可以简单表示为: M=<S,A,Ps,a,R>M=<S,A,P_{s,a},R>M=<S,A,Ps,a,R> 基本概念 s∈Ss∈Ss∈S:有限状态 state 集合,s 表示某个特定状态 a∈Aa∈Aa∈A:有限动作 action 集合,a 表示某个特定动作 Reward R(s,a)=E[Rt+1∣s,a]R(s,a)=E[R_{t+1}|s,a]R(s,a)=E[Rt+1∣s,a]:表示 agent 采取某个动作后的即时奖励,它还有 R(s,a,s’)R(s, a, s’)R(s ...
读paper9-基于LLM的缺陷修复2
读paper9-基于LLM的缺陷修复2 Evaluating Large Language Models for Real-World Vulnerability Repair in C/C++ Code 提到了三点关于修复效果增强的点: 变量上下文:相当于对变量的解释 外部函数、数据结构或变量 代码思想、逻辑 Impact of Code Language Models on Automated Program Repair 关于微调的几个发现,比较有价值: 微调将 CLM 的修复能力提高了 31%-1,267% ,经过微调的 CLM 显著优于基于 DL 的 APR 技术,提高了 46%-164% 。 虽然微调有所帮助,但有时会使 CLM 过度依赖于错误行,从而无法解决一些无需微调即可解决的错误。 CodeT5 和 CodeGen 模型在使用 10,000 个 APR 训练实例进行微调后,达到了最佳修复能力,而使用更多 APR 数据进行微调后,修复的错误数量更少(减少了 8%-19%)。InCoder 模型在使用 50,000 个训练实例进行微调后,缺陷数量最多,使用 ...
读paper8-Copiloting_the_Copilots
读paper8:Copiloting the Copilots Copiloting the Copilots: Fusing Large Language Models with Completion Engines for Automated Program Repair https://github.com/ise-uiuc/repilot INTRODUCTION 现有 LLM 在 APR 工具上的局限性的三个场景: 生成不可行的token:即91%概率会生成 asString() ,而不是代码中的 asEndTag() 相当于LLM从其学习的知识库中选择了概率最大的结果,但是不是针对该项目代码的修复(无导向性,无针对性 很难生成少见的token 比如 asEndTag() 这种更自定义的方法名,就很难生成 原因其实还是跟上一个场景类似,没有针对当前项目进行学习 突然想起一个办法,先让LLM分析所有代码,再去进行缺陷检测与修复,但是这个要怎么实现呢。。。。。 没有明确的类型考虑 对于自定义的实体类,显然我们的返回值是EndTag对象,但是LLM并不会学习到这一 ...