使用 Unsloth 超高效微调 Llama 3.1

本文介绍了如何高效地对 Llama 3.1 模型进行监督微调,特别是使用 Unsloth 库进行 8B 模型的微调。文章强调,Llama 3.1 的发布缩小了闭源和开源模型之间的性能差距,微调该模型可以实现更好的性能和定制化,且成本更低。作者提供了监督微调的全面概述,比较了与提示工程的不同,并详细介绍了主要技术及其优缺点。 监督微调(SFT)概述: SFT 是一种改善和定制预训练 LLM 的方法,通过在较小的数据集上重新训练基础模型,使其能够更好地执行指令和回答问题。 SFT 可以提高模型的整体性能,增加新知识,或适应特定任务和领域。 SFT 技术: 全微调:对预训练模型的所有参数进行重新训练,效果最佳但需要大量计算资源。 LoRA(低秩适应):只训练小的适配器,减少内存使用和训练时间,非破坏性。 QLoRA:LoRA 的扩展,提供更高的内存节省,适合 GPU 内存受限的情况,但训练时间更长。 微调 Llama 3.1 8B 的过程: 使用 Unsloth 库进行高效微调,支持单 GPU 设置,提供更快的训练速度和更低的内存使用。 训练使用了 mlabonne/FineTome-100k 数据集,经过处理后应用 ChatML 模板。 训练参数和过程: 训练使用 A100 GPU,耗时约 4 小时 45 分钟,建议在资源有限的情况下加载数据集的子集以加快训练。 主要超参数包括学习率、批量大小、训练轮数等,使用 AdamW 8-bit 优化器。 模型评估与保存: 训练完成后,通过简单的提示测试模型性能,并使用 Unsloth 提供的保存方法将训练好的模型上传到 Hugging Face Hub。 文章还提到量化模型的不同格式以便于在推理引擎中使用。 后续步骤建议: 评估模型性能,进行偏好对齐,量化以提高推理速度,或在 Hugging Face Space 部署模型。 使用 Unsloth 超高效微调 Llama 3....

August 21, 2024 · 4 min · fisherdaddy

AI 时代的代码编辑器: Cursor

Cursor 是什么 Cursor 是名为 Anysphere 的初创公司开发的基于 AI 驱动的代码编辑器,按官方的原话是:Cursor is an IDE designed to pair-program with AI. Anysphere 是在 2022 年由 Michael Truell、Sualeh Asif、Arvid Lunnemark 和 Aman Sanger 在麻省理工学院就读期间共同创立。该公司的愿景是致力于构建极其高效的人类人工智能系统。首先要打造的是未来工程师:一位人类人工智能程序员,其效率比任何一位工程师都要高一个数量级。 2023 年 9 月该公司筹集了由 OpenAI Startup Fund 领投的 1100 万美元种子轮融资,前 GitHub 首席执行官 Nat Friedman、Dropbox 联合创始人 Arash Ferdowsi 和其他天使投资者参与了投资。其中,OpenAI 投资 800 万美元,占该轮融资的 72.7%。 据消息称 2024 年 8 月该公司又获得了重要的 6000 万美元的 A 轮融资,估值达到 4 亿美元主要投资者包括 Andreessen Horowitz、Thrive Capital 和 Stripe 的 CEO Patrick Collison。...

August 20, 2024 · 2 min · fisherdaddy

苦涩的教训 • Richard S. Sutton

本文由 Rich Sutton 撰写,强调了在人工智能(AI)研究中,利用计算能力的通用方法是最有效的。这一结论主要归因于摩尔定律,即计算成本的持续下降。尽管研究者们倾向于依赖人类知识来提高短期性能,但长期来看,依赖计算能力的提升才是关键。文章通过计算机国际象棋、围棋、语音识别和计算机视觉等领域的案例,说明了过度依赖人类知识的方法最终会限制进步,而真正的突破往往源于对计算能力的有效利用。 计算机国际象棋: 1997 年,计算机通过深度搜索击败了国际象棋世界冠军卡斯帕罗夫。尽管研究者们希望基于人类理解的复杂方法能获胜,但简单的搜索方法最终显示出更大的有效性。 计算机围棋: 类似的情况在围棋中也出现。研究者们最初投入大量精力试图避免搜索,依赖人类知识,但最终通过大规模搜索和自我对弈学习取得了成功。 语音识别: 1970年代,DARPA 赞助的语音识别比赛中,基于人类知识的特殊方法未能胜出,统计方法(如隐马尔可夫模型)获得了成功。深度学习的兴起进一步表明,依赖计算和学习的统计方法在语音识别中占据主导地位。 计算机视觉: 早期的视觉识别方法侧重于寻找边缘和特征,而现代深度学习神经网络则采用卷积等更为通用的方法,表现出更好的效果。 总结教训: AI 研究者常常试图将人类知识嵌入到系统中,短期内有效但长期会导致停滞。真正的进步来自于通过搜索和学习来扩展计算能力。 研究者应认识到,思维内容的复杂性无法简单化,应该构建能够捕捉复杂性的元方法,而不是试图将已有发现直接嵌入AI系统中。 痛苦的教训 Rich Sutton 2019年3月13日 从70年的AI研究中,我们学到的最重要的一课是:利用计算资源的通用方法最终是最有效的,且远胜其他方法。其背后的根源在于摩尔定律的延伸,即计算成本的持续指数级下降。大多数AI研究都是在假设智能体的计算能力固定的前提下进行的(在这种情况下,借助人类知识是提升性能的主要途径),但在稍长于常规研究周期的时间内,计算能力必然会大幅增长。研究人员为了在短期内见效,往往选择依赖领域专家的知识,然而从长远来看,唯一重要的还是如何最大化利用计算资源。这两种方法理论上并不冲突,但实际中常常是对立的。花在一种方法上的时间会挤占另一种方法的研究,而研究者对某种方法的投入往往带有心理上的偏好。基于人类知识的方法通常会使系统变得更复杂,从而削弱了其利用计算资源的能力。AI研究领域中,研究者往往是经历了多次失败后,才领悟到这一“痛苦的教训”,这里回顾一些经典的案例很有启发意义。 在计算机象棋领域,1997年击败世界冠军卡斯帕罗夫的方法主要依赖于大规模深度搜索。当时,大多数象棋AI研究者对这种方式感到不满,因为他们一直专注于基于人类对象棋结构理解的方法。当一种简单的搜索策略结合专用硬件和软件,证明其效果远胜于人类知识驱动的方法时,这些研究者无法接受。他们声称“蛮力”搜索可能赢了这一局,但这并不是一个通用策略,也不符合人类下棋的方式。这些研究者希望基于人类知识的方法取胜,结果却让他们失望。 类似的研究进展也出现在计算机围棋领域,只是时间上晚了20年。起初,大量研究尝试通过利用人类知识或围棋的特殊规则来避免搜索,但随着大规模搜索的有效应用,这些努力都变得无关紧要,甚至产生了负面影响。另一个重要的因素是通过自我对弈学习价值函数(这一点在其他许多游戏中也适用,甚至在1997年击败世界冠军的象棋程序中,只是学习并未起主要作用)。自我对弈学习和一般意义上的学习,像搜索一样,能够充分发挥计算资源的威力。搜索和学习是AI研究中利用大规模计算资源的两大关键技术。在计算机围棋领域,与象棋类似,研究者们最初将精力放在如何通过人类理解来减少搜索需求,但最终接受搜索和学习后才取得了更大的成功。 在语音识别领域,20世纪70年代有一场由DARPA赞助的竞赛。参赛者中包括了许多基于人类知识的特殊方法,如对单词、音素和人类声道的理解。而另一派则是基于隐马尔可夫模型(HMM)的新方法,这些方法更依赖统计计算。最终,统计方法胜过了基于人类知识的方法。这场胜利引发了整个自然语言处理领域的变革,统计学和计算逐渐占据主导地位。深度学习在语音识别中的崛起是这一趋势的最新发展。深度学习方法更少依赖人类知识,更多依赖大规模计算和海量数据训练,极大提升了语音识别的效果。与游戏领域类似,研究者们总是试图让系统模仿他们的思维方式,将人类知识嵌入系统中,但事实证明,当摩尔定律带来的计算能力大量涌现,且有了更好的利用方式后,这种做法是无效的,甚至浪费了大量研究者的时间和精力。 在计算机视觉领域,也有类似的模式。早期方法将视觉理解为寻找边缘、通用圆柱体或基于SIFT特征。然而如今,这些方法已经被淘汰。现代深度神经网络仅依赖卷积和某些不变性概念,且效果远超前人。 这是一个重要的教训。作为一个领域,我们还没有完全吸取这课,因为我们仍在重复类似的错误。要认识到并有效避免这些错误,我们需要理解这些错误背后的吸引力。我们必须吸取这个“痛苦的教训”:试图模拟我们自认为的思维方式,从长远来看是行不通的。这一教训基于几个历史事实:1)AI研究者往往试图将知识直接嵌入智能体中,2)这种方法在短期内总是有效且令人满意,3)但从长远来看,这种方法会停滞甚至阻碍进一步进展,4)突破性进展最终通过相反的方法实现,即通过搜索和学习扩展计算能力。这种成功往往伴随着苦涩,因为它取代了人们更偏好的以人为中心的路径。 从这个“痛苦的教训”中应当汲取的一点是,通用方法的巨大潜力,这些方法可以随着计算能力的增加而不断扩展。搜索和学习是两种在这方面表现出无限扩展性的技术。 另一个从“痛苦的教训”中得出的普遍原则是,心智的实际内容极其复杂且难以简化;我们应该停止试图用简单的方法去理解心智内容,如空间、物体、多智能体或对称性的简单模型。这些都是外部世界中任意且本质上复杂的一部分,不应被直接嵌入系统中,因为它们的复杂性是无穷无尽的;相反,我们应该只嵌入能够发现和捕捉这种任意复杂性的元方法。这些方法的核心在于它们能够找到良好的近似解,但这个寻找过程应该由我们的元方法完成,而非我们手动设计。我们需要的是像我们一样能发现新知识的AI智能体,而不是简单地包含我们已有知识的系统。嵌入已有的发现只会使我们更难理解发现过程的本质。

August 18, 2024 · 1 min · fisherdaddy

Google 前创始人埃里克·施密特在斯坦福 CS323 访谈的核心认知摘要

本访谈发生于 2024 年 4 月 9 日,在 2024 年8 月 13 日在 Youtube 上放出录播视频,但因为其中提到的 Google AI 落后的大实话而引起网络热议,视频没过两天就被下架了,我上传了一份在 X 上,感兴趣大家可以看原视频。这里也有一个我用 AI 制作的带中文字幕版,也可以测合着看 。 施密特讲他每六个月都会调整一次对 AI 的看法,他举了一个例子:“六个月前,我还确信前沿 AI 模型与其他模型的差距在缩小,所以我在一些小公司投入了大量资金。现在我就不敢确定了。” 短期内人工智能的发展(1-2年) 上下文窗口的扩展、Agent、文本到行动(Text to Action) 上下文窗口 上下文窗口可以理解为短期记忆。长上下文窗口很好的解决了 LLM 的时效性问题。 当前的模型通常18个月的时间来训练,准备 6 个月,训练 6 个月,微调 6 个月,所以他们的信息总是过时的,而长上下文窗口可以反馈最新发生了什么给 LLM,它可以变得像 Google 一样实时。 Agent Agent的定义:执行某种任务的东西。另一种定义是内存中的一个LLM的状态。 施密特建立了一个基金会,资助了一家非盈利组织,有个工具叫ChemCrow,它是一个基于 LLM 的系统,用于学习化学知识。有个实验室晚上用它进行测试、然后把测试结果让 LLM 学习,目前他们会运行这个系统,生成关于蛋白质的化学假设,这对化学和材料科学领域都是一个巨大的加速器,这就是Agent。 文本到行动 文本到行动的定义:从自然语言到Python语言,也就是根据人类描述自动写程序。 文本到行动可以理解为有大量廉价的程序员,如果每个人都有一个自己专属的AI程序员的话,会发生什么呢? 假设你不喜欢Google,那么可以让 AI 程序员给你 copy 一个 Google 程序:搜索网页、用户界面、写好文案 。很多人认为,包括Google在内的现有公司在这种攻击下是脆弱的 。 他还列举了一个TikTok的例子,“给我做一个 TikTok 的复制品。吸引所有用户,拿下所有音乐,加上我的偏好,30 秒内做出来并发布。如果一个小时内不火,就做出类似的调整继续尝试。” 施密特认为当agent和文本到行动可以规模交付时,它会对世界产生没有人能理解的影响。这个影响远大于社交媒体所造成的影响。这三件事情(上下文窗口的扩展、agent、文本到行动)的结合将在下一个浪潮中发生。 这种不确定性还体现在所需投资的规模上。头部 AI 公司正在讨论“100 亿、200 亿、500 亿甚至 1000 亿美元”的需求。Sam Altman 认为可能需要“约 3000 亿美元,甚至更多”。这些数字不仅代表资金投入,还意味着巨大的能源消耗,可能会重塑地缘政治格局。只靠美国没有足够的电力来支撑这件事。所以,美国应该和加拿大搞好关系,因为他们那有大量的水和电。至于钱,需要让阿拉伯国家来资助。...

August 17, 2024 · 1 min · fisherdaddy

LLM 中的外部幻觉 • Lilian Weng

本文是 OpenAI 安全系统团队负责人 Lilian Weng 所写,主要探讨了大型语言模型(LLMs)中的外部幻觉(Extrinsic Hallucinations),即模型生成的内容未能与提供的上下文或世界知识相一致。幻觉问题被细分为两种类型:上下文幻觉和外部幻觉。外部幻觉关注的是模型输出是否基于预训练数据集,并强调模型需要具备事实性和在不知情时能够承认不知道的能力。文章还讨论了幻觉的成因、检测方法以及改进策略。 幻觉的定义与类型: 上下文幻觉:模型输出应与上下文中的源内容一致。 外部幻觉:模型输出应基于预训练数据集,且应与外部世界知识相符合。 幻觉的成因: 预训练数据问题:预训练数据量庞大,通常来自公共互联网,可能包含过时或错误的信息。 微调新知识:在微调阶段引入新知识可能导致模型学习速度较慢,并增加幻觉的可能性。 幻觉检测方法: FactualityPrompt:通过维基百科文档作为事实基础来评估模型输出的真实性。 FActScore:将生成内容分解为多个原子事实,并分别验证其真实性。 改进策略: 检索增强生成(RAG):通过检索相关文档来为模型生成提供支持信息。 自我反思检索增强生成(Self-RAG):模型在生成内容时自我反思并检索相关文档。 验证链(CoVe):模型生成初步响应后,通过设计验证问题进行事实检查。 评估基准: 文章提到了一些用于评估模型幻觉的基准数据集,如 TruthfulQA、FactualityPrompt 和 SelfAware。 LLM 中的外部幻觉 在大语言模型 (LLM) 中,"幻觉" 通常指的是模型生成不真实、捏造、不一致或无意义的内容。这个术语被广泛用于描述模型犯错的情形。在这里,本文将"幻觉"的问题范围限定在模型输出是虚构的,并且无法通过给定的上下文或世界知识加以验证的情况。 幻觉可以分为两类: 上下文幻觉:模型输出应该与上下文中的源内容保持一致。 外部幻觉:模型输出应基于预训练数据集中的知识。然而,考虑到预训练数据集的庞大规模,每次生成时检索并识别潜在冲突的成本过高。如果我们将预训练数据集视为世界知识的代理,我们实际上是在尝试确保模型输出的内容是事实,并且能够通过外部世界知识进行验证。更重要的是,当模型不清楚某个事实时,它应当如实承认。 本文的重点在于外部幻觉。为了避免幻觉,LLM 需要做到以下两点:(1) 输出内容基于事实,(2) 在适当的情况下承认自己不知道答案。 幻觉的成因是什么? 一个标准的 LLM 通常会经历预训练和后续的微调(如对齐优化)的过程,因此我们将在这两个阶段探讨幻觉产生的原因。 预训练数据问题 预训练数据集的规模非常庞大,其目的是涵盖几乎所有书面形式的世界知识。由于大多数数据来自公开的互联网,难免存在过时、缺失或错误的信息。模型在最大化对数似然的过程中可能错误地记住这些信息,导致在生成时出现错误。 引入新知识的微调 通过监督微调 (Supervised Fine-Tuning) 和 RLHF 对预训练模型进行微调是提高模型特定能力(如指令遵从性)的常见方法。然而,在微调阶段引入新知识几乎是不可避免的。 微调通常消耗的计算资源较少,因此关于通过小规模微调来可靠地学习新知识这一点存在争议。Gekhman 等人(2024) 研究了微调 LLM 是否会促进幻觉的产生。他们发现:(1) LLM 在学习包含新知识的微调样本时比其他与模型现有知识一致的样本要慢;(2) 一旦这些新知识被模型学会,模型产生幻觉的可能性反而增加。 在一个闭卷问答数据集(如 EntityQuestions)上,我们可以通过随机少样本示例和设置不同解码温度的方式,估计模型准确生成正确答案的概率。他们根据这一概率将数据分为四类:已知 组(其中包括高度已知、可能已知和弱已知三种子类别)以及 未知 组。 图 1. 闭卷问答示例的知识分类,基于模型输出正确答案的可能性。(图片来源:Gekhman 等人 2024) 实验中,一些基于开发集准确率的有趣发现可作为幻觉的代理指标:...

August 16, 2024 · 6 min · fisherdaddy

Unstructured 案例研究: 多模态 RAG 技术在从 PDF 生成幻灯片的应用

本文探讨了 Alayna 如何与 Unstructured 合作,通过其无服务器 API 推出了一种新的 AI 幻灯片和课程生成器,旨在帮助教师节省准备时间,提升教学质量。该产品利用多模式 RAG 技术,使教师能够将 PDF 教材无缝转换为引人入胜的幻灯片演示,并为学生提供更具互动性的学习体验。 教育挑战:教师面临时间不足的问题,急需创新工具以简化课堂准备工作。 产品介绍:Alayna 的 AI 幻灯片和课程生成器允许教师根据个体学习风格创建高质量课程,支持从 PDF 中提取图像和文本。 技术优势:Unstructured 的无服务器 API 能够处理多模式数据(文本、图像和表格),使得从教科书中提取有意义的数据成为可能。 功能展示:教师可上传教科书 PDF,系统自动生成包含相关图像和表格的幻灯片。这一功能自 7 月 8 日推出后,获得了教育工作者的积极反馈。 学习效果:研究表明,结合视频、文本、音频和互动内容的课程材料可提高信息保留率达 60%。 可扩展性:Alayna 选择无服务器架构以提高处理效率,能够同时处理多页文档,适应请求量的增加。 未来展望:Alayna 与 Unstructured 的合作为教育者提供了重要工具,期待未来在教育领域的进一步创新和发展。 Unstructured 案例研究: 多模态 RAG 技术在从 PDF 生成幻灯片的应用 教师往往缺乏充分的时间来准备课堂,因此,为他们寻找创新的解决方案以简化工作流程,对维持学校教育质量至关重要。Alayna 的使命是利用人工智能 (AI) 技术,使教师能够更多地专注于教学,而减少行政任务的负担。为实现这一目标,Alayna 与 Unstructured 合作,提升其产品功能,并将多模态 RAG (Retrieval-Augmented Generation) 技术引入其平台。本案例研究探讨了 Alayna 如何通过 Unstructured 提供的无服务器 API,作为核心数据摄取和预处理方案,推出其最新的 AI 幻灯片与课程生成器功能。 ^ 来自 Alayna 最新 TikTok 演示的示例幻灯片集 Alayna 利用 AI 技术提升教育内容的创作和传递。其核心产品 AI 幻灯片与课程生成器,帮助教育工作者创建高质量、互动性强且符合个体学习风格和目标的课程。该产品可以将 PDF 文件无缝转换为互动的幻灯片演示文稿,并通过 Unstructured 进行图像与文本的自动提取。他们还为教育工作者提供了 AI 副驾驶 (AI Copilot),帮助处理日常教学任务。...

August 13, 2024 · 1 min · fisherdaddy

如何阅读论文

本文提出了一种实用的三步法来高效阅读研究论文,旨在帮助研究人员提高阅读效率,减少无效的时间浪费。作者强调,尽管阅读论文是一项重要技能,但通常未被系统教授,导致许多研究人员在阅读过程中感到挫败。三步法的每一步都有特定的目标,帮助读者逐步深入理解论文的内容。 三步法概述: 第一步:快速浏览,获取论文的总体印象,通常耗时五到十分钟。主要步骤包括阅读标题、摘要和引言,查看章节标题,快速浏览数学内容,阅读结论,以及查看参考文献。 第二步:深入阅读,关注论文的主要内容,但忽略细节,如证明。此步骤应记录关键点和不理解的术语,通常耗时约一小时。 第三步:全面理解,尝试重新实现论文中的工作,挑战每个假设,关注细节。此步骤可能需要数小时,适合需要深入理解论文的读者。 文献调查: 使用学术搜索引擎查找高引用的相关论文,进行初步阅读。 查找共享引用和重复作者名,识别关键论文和研究者。 浏览顶级会议的最新论文,进行多次阅读,确保全面了解领域内的重要研究。 相关工作: 文中提到了一些相关的资源和文献,供读者进一步学习如何撰写论文和进行评审。 通过这种系统的方法,研究人员可以更有效地处理大量文献,提升自己的研究能力和效率。 如何阅读论文 2016年2月17日版本 S. Keshav David R. Cheriton计算机科学学院,滑铁卢大学 加拿大滑铁卢,安大略省 [email protected] 摘要 研究人员经常需要花费大量时间阅读研究论文。然而,这项技能却很少被正式教授,导致了许多不必要的时间浪费。本文提出了一种实用且高效的“三遍法”来阅读研究论文,并详细介绍了如何利用这一方法进行文献综述。 1. 引言 研究人员阅读论文的原因有很多,例如为会议或课程评审论文,保持自己在领域内的知识更新,或者对新领域进行文献综述。一个典型的研究人员每年可能要花费数百小时在论文阅读上。 高效地阅读论文是一项至关重要却很少有人教授的技能。因此,初学的研究生通常只能通过反复试验来自行掌握。在这个过程中,他们往往浪费了大量时间和精力,并常常感到沮丧。 多年来,我使用了一种简单的“三遍法”来避免在阅读论文时陷入细节之前就先获得全局视角。这种方法让我可以预估审阅一组论文所需的时间。此外,我可以根据需求和时间来调整论文评估的深度。本文将介绍这一方法及其在文献综述中的具体应用。 2. 三遍法 核心思想是,阅读论文时应该分三次完成,而不是从头到尾一气呵成。每次阅读都有特定的目标,并在前一次的基础上逐步深入:第一次阅读让你对论文有一个总体的了解;第二次阅读让你掌握论文的内容但不涉及细节;第三次阅读则帮助你深入理解论文。 2.1 第一次阅读 第一次阅读是一种快速浏览,用于获得论文的整体概况。你还可以决定是否需要继续进行更深入的阅读。这次阅读通常需要大约五到十分钟,包含以下步骤: 仔细阅读标题、摘要和引言 阅读章节和小节标题,忽略其他内容 浏览数学内容(如果有),以确定其理论基础 阅读结论 浏览参考文献,标记出你已经阅读过的那些 在完成第一次阅读后,你应该能够回答以下五个 $\mathit{C}$ : 类型 (Category):这篇论文属于哪种类型?是测量研究?现有系统的分析?还是研究原型的描述? 背景 (Context):这篇论文与哪些其他论文相关?分析问题时用了哪些理论基础? 正确性 (Correctness):论文的假设看起来是否合理? 贡献 (Contributions):论文的主要贡献是什么? 清晰度 (Clarity):论文写得清晰明了吗? 基于这些信息,你可以决定是否继续深入阅读(也避免了不必要的打印,节省纸张)。你可能会因为论文不符合你的兴趣,或是对该领域了解不足以至于难以理解,或者作者的假设不合理而选择不再继续阅读。对于那些与你研究领域不直接相关的论文,第一次阅读通常已经足够,但这些论文可能在未来某个时候会变得相关。 顺便提及,当你写论文时,大多数评审者(和读者)通常只会进行一次阅读。因此,务必要选择结构清晰的章节和小节标题,并撰写简明扼要且内容全面的摘要。如果评审者在一次阅读后无法理解论文的主旨,那么论文很可能会被拒绝;如果读者在五分钟内无法理解论文的要点,那么这篇论文很可能不会再被阅读。正因为如此,一个通过精选图表来总结论文内容的“图形化摘要”是一个非常好的想法,且越来越多地出现在科学期刊中。 2.2 第二次阅读 第二次阅读时,你需要更仔细地阅读论文,但可以忽略诸如证明等细节。在阅读过程中,记下关键点或在页边记录注释会有帮助。奥格斯堡大学的Dominik Grusemann建议,“记下你不理解的术语,或者你可能想问作者的问题。”如果你是作为论文评审人,这些注释将有助于你撰写评审意见,并在程序委员会会议中支持你的评审意见。 仔细查看论文中的图表和其他插图,尤其是图表。检查坐标轴是否正确标记,结果是否显示了误差线,以确保结论的统计显著性?这些常见的错误能够区分出仓促的、粗糙的工作与真正优秀的工作。 记得标记尚未阅读但相关的参考文献,以供进一步阅读(这是学习论文背景的好方法)。 对于有经验的读者来说,第二次阅读应当花费最多一小时。完成这次阅读后,你应该能够掌握论文的内容。你应该能够将论文的主要观点及其支持证据向他人总结。这种细节程度适用于你感兴趣但不属于你研究专长的论文。 有时即使在第二次阅读结束后,你仍然无法完全理解论文。这可能是因为该主题对你来说较为陌生,带有不熟悉的术语和缩写,或是作者使用了你不熟悉的证明或实验技术,从而使得论文的主要内容难以理解。也有可能是因为论文写得不够清楚,存在未经证实的论断或大量前向引用。或者可能只是因为时间太晚,你已经疲惫不堪。此时你可以选择:(a)将论文放在一边,希望不需要理解这些内容也能在职业生涯中取得成功,(b)稍后返回阅读,也许是在阅读了相关背景材料之后,(c)坚持下去,继续进行第三次阅读。 2.3 第三次阅读 要彻底理解一篇论文,尤其是作为评审人时,往往需要进行第三次阅读。第三次阅读的关键是尝试“虚拟地重现”论文中的工作:即在与作者相同的假设下,重新创建该工作。通过将这种重现与实际论文进行比较,你可以轻松地识别出论文的创新点及其隐藏的缺陷和假设。 这次阅读需要极大的细节关注。你应该识别并质疑每个陈述中的每个假设。此外,你还应该考虑自己将如何展示某个特定的想法。这种对实际与虚拟的比较能够让你对论文中的证明和表达技巧有更深刻的理解,并可能将这些技巧纳入自己的工具库。在这次阅读中,你还应该记下未来工作的灵感。 对于初学者来说,这次阅读可能需要很多小时,甚至对于有经验的读者来说,也需要一到两个小时以上。在完成这次阅读后,你应该能够从记忆中重建论文的整体结构,并能够识别出其优缺点。特别是,你应该能够指出隐含的假设、缺失的相关工作的引用,以及实验或分析技术中的潜在问题。 3. 进行文献综述 进行文献综述时,你的论文阅读技巧将受到严峻考验。这通常需要你阅读数十篇论文,可能是一个你不熟悉的领域。你应该读哪些论文呢?以下是如何利用三遍法来帮助你进行文献综述。...

August 13, 2024 · 1 min · fisherdaddy

OpenAI 官方指南:在 API 中引入结构化输出

本文由 OpenAI 发布于2024 年 8 月 6 日 我们在 API 中引入了结构化输出功能——模型输出现在能够可靠地遵循开发者提供的 JSON Schema。 去年在 DevDay 开发者大会上,我们推出了 JSON 模式,帮助开发者构建更加可靠的应用程序。尽管 JSON 模式提高了生成有效 JSON 输出的可靠性,但并不能确保模型的响应会完全符合指定的 Schema。今天,我们引入了 API 的结构化输出功能,确保模型生成的输出能够严格匹配开发者提供的 JSON Schema。 生成结构化数据是 AI 在当今应用中的一个核心应用场景。开发者使用 OpenAI API 构建功能强大的助手,这些助手能够通过函数调用获取数据并回答问题,提取结构化数据用于数据录入,并创建允许大语言模型 (LLM) 执行操作的多步骤智能工作流。开发者通常会使用开源工具、提示工程和反复请求来确保模型输出与他们系统的格式互操作。结构化输出通过限制 OpenAI 模型的输出,使其严格遵循开发者提供的 Schema,并训练模型更好地理解复杂的 Schema,从而解决了这一问题。 在我们对复杂 JSON Schema 的评估中,启用了结构化输出的 gpt-4o-2024-08-06 模型获得了满分 100%。相比之下,gpt-4-0613 的得分不足 40%。 通过结构化输出, gpt-4o-2024-08-06 在我们的评估中实现了 100% 的可靠性,完美匹配输出模式。 如何使用结构化输出 我们在 API 中提供了两种形式的结构化输出: 函数调用:通过工具实现的结构化输出,可以在函数定义中设置 strict: true 来启用。此功能适用于所有支持工具的模型,包括 gpt-4-0613、gpt-3.5-turbo-0613 及之后的模型。启用后,模型的输出将严格匹配提供的工具定义。 Request POST /v1/chat/completions { "model": "gpt-4o-2024-08-06", "messages": [ { "role": "system", "content": "You are a helpful assistant....

August 13, 2024 · 13 min · fisherdaddy

PDF 转 Markdown 开源项目调研

最近计划抽时间写一个文档相关的翻译类项目,调研了几个主流的开源 PDF 转 Markdown 项目,从最终的效果来看,MinerU 的 Magic-PDF 当之无愧是当前最佳的选择,缺点就是速度慢。 项目:zerox 代码:https://github.com/getomni-ai/zerox 介绍:一种非常简单的PDF文档解析方法 逻辑:使用 PyMuPDF 将 pdf 文件中的每一页转换为图片,并将图片给 LLM ,让其转换为 markdown 格式 使用的prompt: Convert the following PDF page to markdown. Return only the markdown with no explanation text. Do not exclude any content from the page. 优劣势 优点:在纯文字、表格等场景下,效果还不错 缺点 :在有配图的情况下,配图会被丢失掉,用<img>之类的占位表示图片 项目:gptpdf 代码:https://github.com/CosmosShadow/gptpdf 介绍:使用视觉大语言模型(如 GPT-4o)将 PDF 解析为 markdown。方法非常简单(只有293行代码),但几乎可以完美地解析排版、数学公式、表格、图片、图表等。每页平均价格:0.013 美元 逻辑: 用PyMuPDF识别中其中的线条(page.get_drawings())、图片(page.get_image_info())、文本区域 用一些策略做一些合并,最终得到一个只有表格和图片的区域 将这些区域截图后存储在本地 在原图上用红色框和序号标注好,送给GPT识别,最终的结果是个markdown格式 使用的prompt 使用markdown语法,将图片中识别到的文字转换为markdown格式输出。你必须做到: 1. 输出和使用识别到的图片的相同的语言,例如,识别到英语的字段,输出的内容必须是英语。 2. 不要解释和输出无关的文字,直接输出图片中的内容。例如,严禁输出 “以下是我根据图片内容生成的markdown文本:”这样的例子,而是应该直接输出markdown。 3. 内容不要包含在```markdown ```中、段落公式使用 $$ $$ 的形式、行内公式使用 $ $ 的形式、忽略掉长直线、忽略掉页码。 4....

August 5, 2024 · 1 min · fisherdaddy

Character.AI 的提示词设计

在 Character.AI,掌握提示工程的艺术和科学至关重要。随着每日生成数十亿个提示,采用一种强大且可扩展的提示设计方法显得尤为必要。本文作者提倡从传统的“提示工程”转向“提示设计”,通过开发 Prompt Poet 工具,使开发者和非技术用户能够更高效地设计和管理提示,提升用户与 AI 模型的交互质量。 提示设计的重要性:构建有效的提示需要考虑多种因素,包括对话模式、实验、角色、用户属性、记忆和整个对话历史等。随着 LLM(大语言模型)上下文窗口的扩大,提升提示设计的效率显得尤为重要。 Prompt Poet 工具:该工具结合了 Python 的 f-strings 和 YAML,使提示的设计和管理更加灵活和易于使用。Prompt Poet 允许用户在不编写代码的情况下高效创建和迭代提示模板,节省了大量的字符串操作时间。 模板处理过程:提示模板的处理分为两个主要阶段: 渲染:使用 Jinja2 处理输入数据,执行控制流逻辑并验证数据。 加载:输出为结构化的 YAML 文件,便于管理和使用。 示例模板:提供了基本的问答机器人模板,展示了如何使用 Jinja2 语法和 YAML 结构来创建灵活的提示。 上下文长度管理:通过设置截断优先级,Prompt Poet 可以有效管理对话历史,确保在上下文长度受限时保留重要信息。 设计选择:Prompt Poet 库提供了多种功能,包括提示属性的设置、令牌化和截断等,优化了响应的效率和延迟。 结论:Prompt Poet 代表了提示工程的重大进步,简化了复杂和个性化提示的创建过程,使开发者和用户能够更专注于提示设计,推动 AI 交互的高效和直观化。 Character.AI 的提示词设计 作者: James Groeneveld Github: https://github.com/character-ai/prompt-poet PyPi: https://pypi.org/project/prompt-poet/ 在 Character.AI,掌握 Prompt Engineering(提示工程)的艺术和科学至关重要。构建生产环境中的提示需要考虑大量数据和因素:当前对话模式、正在进行的实验、涉及的角色、聊天类型、各种用户属性、固定记忆、用户角色和整个对话历史等。我们每天生成数十亿个提示,需要充分利用不断扩展的大语言模型 (LLM) 上下文窗口,并且我们的使用场景非常多样化,因此需要一种强大且可扩展的提示设计方法。我们主张从传统的“提示工程”转向“提示设计”,从繁琐的字符串操作转变为设计精确、引人入胜的提示。这篇文章介绍了我们开发的 Prompt Poet,它是我们为此目的开发的工具。 简要概述 Python 的 f-strings(及其封装)现在是提示工程师的行业标准。使用 f-strings 可以简单到将用户查询直接插入到字符串中,但也可能变得非常复杂,涉及大量手动字符串操作来创建最终提示。这也使得提示的迭代对于非技术人员来说不太友好,因为需要编写代码。 我们认为可以有更好的方法。因此,我们开发了 Prompt Poet (Github / PyPi),一个允许开发者和非技术用户高效设计和管理生产提示的工具。它节省了在字符串操作上的工程时间,让大家能更专注于为用户打造最佳提示。...

August 5, 2024 · 5 min · fisherdaddy