Best-of-N Jailbreaking:一种简单的黑盒算法攻击前沿 AI 系统
https://arxiv.org/abs/2412.03556
图片
Best-of-N (BoN) Jailbreaking 是一种简单的黑盒算法,可以攻击多种模态的前沿 AI 系统。该算法通过反复采样和增强提示(如文本提示的随机打乱或大写化),直到引发有害响应。研究发现,BoN Jailbreaking 在闭源语言模型(如 GPT-4o 和 Claude 3.5 Sonnet)上的攻击成功率(ASR)分别达到 89% 和 78%,当采样 10,000 个增强提示时。此外,它还能绕过最先进的开源防御措施,如断路器。
BoN Jailbreaking 不仅适用于文本模态,还可以扩展到视觉语言模型(如 GPT-4o)和音频语言模型(如 Gemini 1.5 Pro),使用特定模态的增强方法。随着采样次数的增加,BoN 的攻击成功率逐渐提高,且在不同模态下,ASR 与样本数量的关系呈现幂律行为。结合其他黑盒算法,BoN 的攻击效果可以进一步提升,例如与优化前缀攻击结合,ASR 可提高 35%。
这项研究表明,尽管语言模型功能强大,但它们对输入的微小变化非常敏感,攻击者可以利用这一点进行跨模态攻击。
网友 codetrotter: 有人尝试过用这种方法攻击“Gandalf”吗?特别是第 8 关。 网友 retiredpapaya: 我从未见过如此复杂的作者贡献列表。 网友 albert_e: 用外行的话说,这是否可以称为“暴力攻击”? 网友 impure: 这让我想起了苹果的那篇论文,他们发现提示中的微小变化会导致结果的巨大差异。 网友 infaloda: 我从未读过如此复杂的摘要。
优先使用一次性代码而非设计文档
https://softwaredoug.com/blog/2024/12/14/throwaway-prs-not-design-docs
在软件开发过程中,我们常常想象着一切都能按部就班地进行:先写设计文档,然后通过小的 Pull Request (PR) 逐步实现功能,最终 Git 历史记录整洁有序。然而,这种理想化的流程往往难以实现。一旦开始编码,最初的设计文档往往会变得不再适用。
软体工程师 Doug 提出了一个不同的设计方法论——编码狂欢(coding binges)。这种方法的核心步骤包括:
- 使用草稿 PR :创建一个你并不打算合并的草稿 PR,用于原型或概念验证。
- 早期获取反馈 :尽早让团队成员查看 PR,获取他们对方法的看法。
- 记录方法 :在草稿 PR 中记录你的设计思路,作为历史记录。
- 准备丢弃草稿 PR :随时准备好丢弃草稿 PR,以便快速迭代。
- 逐步分阶段提交 :从草稿 PR 中逐步分阶段提交干净的生产级 PR。
- 逐步完善测试和健壮性 :在每个 PR 阶段逐步完善测试和健壮性。
这种方法强调了快速原型化和早期反馈的重要性,而不是过度依赖设计文档。PR 作为一种历史记录,比过时的设计文档更具实际意义。此外,这种方法鼓励团队成员保持开放的心态,愿意尝试多种解决方案,并从中学习。
网友评论:
- JasonPeacock :这被称为原型设计,是设计过程中的一个重要部分,有些人称之为“路径探索”。
- ElatedOwl :写作对于探索问题空间非常有益。很多时候,我自信地认为自己理解了一个问题,但在开始写作后发现了新的关键问题。
- m1n1 :我们曾经为了赶在截止日期前完成一项任务,避免续签一份昂贵的合同,不得不构建并发布了临时的次优版本。这个临时版本不仅帮助我们按时起飞,还在后续飞行中发现了原设计中的遗漏需求。
- ChrisMarshallNY :最大的问题是,没有人会去读设计文档,即使雇主要求。另一个问题是,人们会把原型视为最终代码,强迫我使用它。
- robertclaus :在代码和设计文档之间,人们给出的反馈类型有很大不同。设计文档鼓励提出“为什么”问题,而一旦原型工作正常,这些问题就很难被提出来。
- delichon :我曾经因为硬盘故障丢失了三个月的代码,但重新编写只用了两周时间。第二次编写时,我对方向更加明确,代码质量也更好。
- hcarvalhoalves :如果认为大量编码是为了找出最佳方案,那么你很快就会被 GPT 替代。真正的挑战在于达成共识,确定应该构建什么。
- jp57 :谁会想象软件开发是一个干净、整齐的过程?教授们吗?实际上,软件开发更像是写作,而不是建造房屋或桥梁。
- simonw :我喜欢这种过程:通过持续的评论线程记录设计决策,而不是试图在一个文档中正式化它们。
- miscaccount :设计文档可以帮助缩小原型数量,特别是当你探索全新的东西时。虽然展示比讲述更好,但对于新员工来说,设计文档更容易理解。
小编锐评 :这种方法不仅提高了开发效率,还促进了团队之间的沟通和协作。通过快速原型化和早期反馈,可以更快地发现和解决问题,从而提高项目的整体质量。
SmartHome – 一款让你体验智能家居地狱的游戏
图片
SmartHome 是一款免费的浏览器游戏,由 scyclow 使用纯 JavaScript 开发,没有任何外部库。这款游戏结合了文本冒险、点选冒险、解谜、逃脱房间、艺术游戏、增量游戏、温馨游戏和角色扮演游戏等多种元素。如果你喜欢这些类型的游戏,那么 SmartHome 绝对值得一试。
游戏中,玩家需要在一个模拟的智能家居环境中完成各种任务,如创建账户、支付账单、操作智能设备等。然而,游戏的设计旨在模拟现实生活中的智能家居系统,因此充满了各种令人抓狂的细节和挑战。例如,你需要记住和输入电话号码、密码等信息,这些细节可能会让一些玩家感到厌烦。
玩家反馈:
- 网友 esperent :我在手机上玩了一会儿,但因为需要记住和输入太多信息,最后放弃了。如果能自动填充文本字段,游戏体验会更好。
- 网友 kbrackbill :这款游戏很好地再现了企业环境中的混乱场景,虽然设计初衷是为了制造挫败感,但这确实让游戏变得很不愉快。
- 网友 Groxx :这款游戏做得太好了,简直是恶心到极致。建议增加一些随机延迟,让搜索结果更真实。
- 网友 j0hnyl :我有幸在游戏发布前试玩过。虽然可能有很多玩家会在初期就放弃,但我强烈建议大家至少玩 10-15 分钟,你会发现很多有趣的细节和彩蛋。
- 网友 UniverseHacker :我曾经住过一个全是智能家居设备的 Airbnb,这款游戏完美地重现了那种体验。我给它打负 10 分。
- 网友 neumann :这款游戏真是痛苦而美妙。我喜欢这种感觉,即使只能坚持 10 分钟。
- 网友 brumar :我希望有一个“在角落里等死”的选项。虽然游戏让我感到无聊,但也确实有趣。
- 网友 jasfi :我喜欢游戏的风格,简约且注重语言。希望未来能看到更多类似的游戏,但不要故意让玩家感到挫败。
- 网友 codebje :我在游戏中赚到了足够的钱来支付门费,但在转账过程中浪费了太多时间。唯一的好消息是,一旦开始赚钱,就很容易积累大量财富。
小编锐评 :SmartHome 不仅是一款游戏,更是一种体验。它通过模拟智能家居系统的复杂性和挫败感,让玩家深刻体会到技术带来的便利与烦恼。尽管游戏设计上可能让一些玩家感到不悦,但正是这种独特的体验使其成为了一款值得尝试的作品。如果你对智能家居感兴趣,不妨花些时间体验一下,或许你会有不一样的感受。
用电子墨水屏取代儿子的学校时间表应用
https://mfasold.net/blog/displaying-website-content-on-an-e-ink-display/
图片
最近,我在寻找一种改善家庭早晨例行公事的方法:每天检查孩子的学校时间表和代课计划。时间表可以通过学校的网站或一个名为“VPmobil”的移动应用查看,但由于我的儿子的手机受到严格的家长控制,这成为了一项不受欢迎的任务。因此,我决定升级传统的冰箱上的纸质时间表,用电子墨水屏自动获取并显示最新时间表,包括每日变更。
项目目标:
- 低功耗 :设备应能在无直接电源的情况下运行,电池续航时间至少几周。
- 无干扰 :显示信息时不需与数字设备互动,减少干扰。
硬件选择: 为了实现这一目标,我选择了 Soldered 公司的 Inkscape 产品线,特别是 Inkplate 6COLOR,它具有 600x448 像素的 6 色显示屏。这款设备内置 ESP32 微控制器,支持 Wi-Fi 连接、电池充电和实时钟功能,非常适合低功耗应用。我购买了包括主板、电子墨水屏、外壳和电池在内的全套设备,总价 169 欧元。
技术实现:
- 登录网站 :使用 Playwright 自动化登录并导航到时间表页面。
- 截图 :截取包含时间表的页面部分,并调整样式以适应电子墨水屏的显示需求。
- 图像处理 :使用 Pillow 库处理截图,调整颜色和尺寸,确保与屏幕匹配。
- 服务器端应用 :使用 Werkzeug 创建一个简单的 Web 服务器,将处理后的图像提供给电子墨水屏设备。
- 设备端代码 :使用 Arduino 库编写设备端代码,定期从服务器获取图像并显示。
成果展示: 最终,我在家里的走廊安装了电子墨水屏,儿子每天至少两次查看时间表。设备运行非常可靠,偶尔还能显示一些特殊情况,如课外活动、班级分组、教室变更等。电池续航超过 8 周,只需在假期结束时充电一次。
评论精选:
- 网友 IshKebab: Arduino 软件真的很糟糕,但 Inkplate 10 的硬件确实很棒。
- 网友 modernerd: 这个项目展示了将高质量自然屏幕放置在更多表面的潜力,未来可能会扩展到其他交互或非交互用途。
- 网友 dagss: 父母对孩子手机使用的限制值得称赞,现在的青少年因智能手机分心严重,影响了创造力的发展。
- 网友 simon_acca: 如果有人想要类似的功能但不想折腾,推荐我的朋友的产品 Inklay,使用一年多了,非常满意。
- 网友 kleiba: 德国的数字服务真的落后,希望这种情况能有所改善。
Phi-4: 微软最新小型语言模型,专注于复杂推理
微软近日发布了 Phi-4,这是 Phi 系列的最新成员,拥有 140 亿参数的小型语言模型,专注于复杂推理,特别是在数学领域表现出色。Phi-4 不仅在数学竞赛题目中表现出色,还在常规语言处理任务中取得了高质量的结果。
Phi-4 的优势:
- 高性能 :Phi-4 在数学推理方面超过了同类甚至更大规模的模型,这得益于高质量的合成数据集、精心挑选的有机数据以及训练后的创新技术。
- 资源效率 :尽管参数量较小,Phi-4 依然能够提供高精度的结果,适合在资源受限的环境中部署。
- 安全与负责任的 AI :微软强调了在 Azure AI Foundry 中提供的强大安全功能,帮助用户在开发和部署 AI 解决方案时确保质量和安全性。
实际应用案例: Phi-4 在解决数学问题方面的实力得到了充分展示。例如,它成功解决了多个复杂的数学竞赛题目。用户可以在 Azure AI Foundry 上体验 Phi-4 的强大功能。
社区反馈:
- 网友 simonw :最有趣的是 Phi-4 使用合成数据进行训练,这一点在技术报告中有详细描述。虽然微软尚未正式发布模型权重,但 Hugging Face 上已经有非官方版本可供下载。
- 网友 thot_experiment :在遵循提示方面,Phi-4 仍然不及 Gemma2 27B。我对 Phi 系列的模型并不太满意。
- 网友 xeckr :Phi-4 的表现超出了它的参数量,令人印象深刻。
- 网友 jsight :我对 Phi-4 的 140 亿参数版本不太感兴趣,这个规模已经不算小了,而且我怀疑它在性能上不会比 Llama 3 或 Mistral 有明显优势。
小编锐评 :Phi-4 的发布无疑为小型语言模型领域带来了新的希望。尽管一些用户对其实际表现有所质疑,但不可否认,Phi-4 在数学推理方面的突破为未来的小型语言模型发展提供了新的方向。随着更多研究和实践的展开,我们期待 Phi-4 能够在实际应用中展现出更多的潜力。
从零构建高性能 LLM 推理引擎
https://andrewkchan.dev/posts/yalm-assets/
图片
在当今的 AI 时代,大规模语言模型(LLMs)的应用越来越广泛,但其高效的推理实现却是一个挑战。Andrew Chan 在他的博客中详细介绍了如何从零开始构建一个高性能的 LLM 推理引擎,特别关注了使用 CUDA 进行优化的方法。
关键技术点:
- 多线程利用 :通过合理分配线程,充分利用 GPU 的计算资源,避免核心闲置。
- 矩阵乘法优化 :采用块级并行和 warp 减法等技术,提高矩阵乘法的效率。
- 内存访问模式优化 :通过内存访问的优化,减少内存带宽瓶颈,提高整体性能。
- FP16 量化 :将浮点数从 FP32 量化到 FP16,减少内存占用,进一步提升推理速度。
实现步骤:
- 初始实现 :使用简单的线程分配方式,虽然实现了基本功能,但性能较低,甚至不如 CPU 后端。
- 块级并行 :每个块处理一行,利用 warp 减法提高计算效率,性能提升到 51.7 tok/s。
- 内核融合 :将多个内核融合在一起,减少内存访问次数,进一步提升性能至 54.1 tok/s。
- 内存访问优化 :通过共享内存和块级传输技术,优化内存访问模式,性能提升到 56.1 tok/s。
- 长上下文优化 :针对长上下文生成进行优化,特别是在注意力机制部分,性能进一步提升。
- FP16 量化 :将 KV 缓存从 FP32 量化到 FP16,通过手动预取和循环展开等技术,最终达到 63.8 tok/s 的短上下文生成速度和 58.8 tok/s 的长上下文生成速度。
精选评论:
- 网友 reasonableklout: 非常感谢分享,这篇文章对我帮助很大!希望未来能看到更多类似的深度技术文章。
- 网友 sakex: 很棒的文章!下一步建议探讨集体矩阵乘法和分片技术。
- 网友 fancyfredbot: 这篇文章没有提到如何利用张量核心和 wgmma 指令,这些技术对于达到峰值性能非常重要。
- 网友 diego898: 有没有类似的内容可以用 Python 实现?希望找到一个概念完整且简洁的教程。
- 网友 saagarjha: __shfl_down 是否已经不再推荐使用,因为它可能会导致 warp 同步问题?
- 网友 guerrilla: 这类项目需要哪些先决条件?我在大学时学过 ANN 和反向传播,但对许多架构术语不太熟悉。
小编锐评 :这篇文章深入浅出地讲解了如何从零构建高性能的 LLM 推理引擎,非常适合对 GPU 优化感兴趣的开发者和技术爱好者。通过实际代码示例和详细的性能分析,读者可以轻松理解和应用这些技术。希望未来能看到更多类似的技术分享!
Cyphernetes: 用于 Kubernetes 的查询语言
Cyphernetes 是一种专为 Kubernetes 设计的查询语言,旨在简化 Kubernetes 资源的查询和操作。Kubernetes 作为一个复杂的容器编排系统,拥有庞大的资源模型和 API,但现有的查询工具往往在大规模集群中表现不佳。Cyphernetes 通过引入类似于 Neo4j 的 Cypher 查询语言,使得查询 Kubernetes 资源变得更加直观和高效。
亮点功能:
- 图查询语言 :Cyphernetes 使用 Cypher 语法,这是一种广泛应用于图数据库的查询语言。通过这种方式,用户可以轻松地查询和操作 Kubernetes 资源,特别是那些具有复杂依赖关系的对象。
- 高性能 :与传统的查询工具(如 k9s)相比,Cyphernetes 在大规模集群中表现出色,不会对 Kubernetes API 服务器造成过大的负担。
- 可视化 :Cyphernetes 还提供了一种将 Kubernetes 对象模型可视化的功能,使得资源关系更加清晰明了。
社区反馈:
- 网友 alpb: 在多年的生产环境中,我从未见过任何查询 kube-apiserver 的工具能在数千节点的集群中稳定工作。即使是像 k9s 这样的流行工具,也会因为昂贵的查询(如列出所有 pod)而导致 API 服务器崩溃。如果真的需要这些查询能力,建议自己构建数据源(例如,使用控制器监听对象并将数据存储在 SQL 数据库中),这样长期来看会更好。
- 网友 danpalmer: 虽然我不反对用更好的工具替换 jq/jsonpath,但我不明白为什么这不是 SQL?Cyphernetes 几乎支持与 SQL 相同的语义,而 SQL 已经是一种成熟的查询语言。项目的目的是使 Kubernetes 更易于查询,而不是发明新的查询语言。
- 网友 jeremya: 我一直喜欢 Neo4j 团队为图数据查询创建的 Cypher 语言。Kubernetes API 对象之间的关联关系非常适合应用这种查询方式。
- 网友 multani: 我推荐使用 Steampipe 进行类似的查询。Steampipe 实质上是 PostgreSQL,可以查询多种 API,包括 Kubernetes。它支持多集群透明查询、自定义资源定义和缓存机制,非常强大且灵活。
小编锐评 :Cyphernetes 的推出无疑为 Kubernetes 生态系统带来了新的可能性。通过图查询语言,用户可以更直观地理解和操作复杂的 Kubernetes 资源。虽然一些社区成员对其性能和必要性提出了质疑,但不可否认,Cyphernetes 在特定场景下确实能提供更高效的解决方案。如果你正在寻找一种新的方式来管理和查询 Kubernetes 资源,不妨试试 Cyphernetes,看看它是否能满足你的需求。