2 分•作者: arnav__1•大约 2 个月前
各位 HN 用户: 我们是 OpenLake 的开发者,OpenLake 是一个开源存储引擎,用于将 KV 缓存卸载到远程磁盘和内存。 在将 KV 缓存卸载到本地磁盘后,我们发现瓶颈在于 PCIe 或 NIC 的带宽。我们想知道 GPU 无损压缩是否适用于快速读取和降低 TTFT(Time To First Token)。 BF16 通常很难压缩(符号/尾数熵很高)。令我们惊讶的是,真实世界的 KV 块差异很大。指数字节的熵非常低,几乎没有填充。我们没有压缩整个张量,而是仅在 GPU 上压缩指数流。 我们在 H100(生产 KV 快照)上取得了以下成果: - 1.51 倍无损压缩 - 622 GB/s 的中位数 GPU 解码速度 解压缩速度比 400 Gb/s 的 NIC 带宽快约 10 倍,并且可以无损地传输数据,而不会改变质量。 我们将开源此项目,命名为 ExANS,它将通过我们的 vLLM 和 SGLang 连接器在 OpenLake v0.8 版本中提供。推理引擎无需进行任何更改。 我很想了解大家目前是如何处理 KV 传输的。你们是否在使用 KV 压缩,或者带宽目前还不是瓶颈? 谢谢! GitHub:https://github.com/openlake-project/openlake 技术博客:https://theopenlake.com/blog/exans-lossless-gpu-compression-for-bf16-kv-cache
1 分•作者: vsergione•大约 2 个月前
我构建了一个功能强大的在线剪贴板。<p>更准确地说,它是一个可共享的临时工作空间,我可以在其中粘贴文本和文件,设置过期计时器,或配置“阅后即焚”。对于真正私密的内容,可以使用端到端加密,它会在文本持久化到数据库之前在浏览器中进行加密(文件不会被加密)。它还提供了一个 API,可以用于将其集成到自动化工作流程中。<p>我经常发现自己使用 WhatsApp 或 Slack 作为临时的剪贴板,与自己(或同事)共享数据片段:配置文件、笔记、密码,有时还有文件。这是一种快速粗糙的解决方案,虽然能完成任务,但随着时间的推移,我的聊天记录会充斥着我不再需要的内容。<p>有时我需要从无法使用 WhatsApp 或 Slack 的设备访问这些数据。在这些情况下,我曾依赖 cl1p.net 或 pastebin 等在线剪贴板服务,但它们的功能限制总是阻碍我。<p>另一个用例是自动化。有时我需要将任意数据提供给自动化工作流程,因此能够快速地将其发布到网络上的某个地方并通过 API 检索,这是我长期以来一直想要的功能。<p>一些功能包括: - 语法高亮, - Markdown/HTML 预览 - 上传最多 10 个文件(每个文件最大 10MB,总计最大 50MB) - 设置自定义过期时间或配置“阅后即焚” - 使用密码保护剪辑的端到端加密,密码用作文本的加密密钥(不用于上传的文件) - 也存在账户/团队(自定义 URL),但上述所有流程无需账户即可正常工作。<p>此外,一个用于自托管的开源版本即将推出。<p>非常欢迎提供反馈!
2 分•作者: Absonsonson•大约 2 个月前
我非常喜欢使用 Conductor 及其带来的体验,但我更喜欢使用终端。所以我构建了 t。<p>它的功能:<p>- `t new "fix vault sync"` 会创建一个 git worktree 和一个分支,并进入该目录。<p>- `t claude`、`t codex`、`t grok`、`t gemini` 会在此处启动一个代理,并将该会话记录到 worktree 和分支中。<p>- 一个任务可以包含多个对话,来自不同的代理,同时在不同的窗格中运行。所有对话都引用同一个 worktree/分支。<p>- `t sessions` 会列出附加到该任务的所有对话,并恢复你选择的对话。`t find` 会在所有对话中进行搜索。
5 分•作者: shailendraht•大约 2 个月前
大家好,我是 Shailendra 和 Karan。我们正在为编码代理构建一种快速安全的方式,以便在生产环境中实时调试问题。 当生产环境出现故障时,它允许 Cursor、Claude 等工具在您运行的代码中安全地设置虚拟断点或探针,并提取日志中没有的确切变量值。 这一切都能为工程师节省时间和精力,他们原本需要挖掘日志和跟踪信息,或者通过 `console.log` 或 `print` 语句重新部署,直到找到根本原因。 以下是解释此功能的视频链接:<a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ivV7I--ta5c" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ivV7I--ta5c</a> 现在,代理编写了我们的大部分代码。这缩小了工程师调试 AI 生成代码所需的有用上下文,而 AI 在同一代码中添加的有限遥测数据也无济于事。 因此,当生产环境出现问题时,工程师的第一反应是打开日志或将其交给代理。但如果找不到您要查找的行,代理就会开始根据不存在的数据猜测根本原因,迫使您添加日志并重新部署。 代理与现有数据的这种分析-推理循环成本高昂,会消耗大量 token。而添加日志、重新部署的循环又慢又痛苦,让工程师对值班感到厌倦。 我们的方法允许代理在发生故障的确切时刻和地点按需捕获遥测数据,从而终结日志-重新部署循环,并在消耗更少 token 的情况下获得最准确的根本原因分析 (RCA)。 显而易见的问题是如何在正在运行的服务上实现这一点。您无法像在笔记本电脑上暂停调试器那样暂停实时服务。安全地从正在运行的进程中获取值,而不暂停线程或减慢主机速度,这才是挑战。我们正在实现这一点。 在此之前,我曾在一个 100 人的团队中负责工程管理。然后,Karan 和我花了三年时间开发 HyperTest,这是一个测试工具。 在 HyperTest 中,我们使用 OpenTelemetry 将生产流量转化为集成测试。这也是生产环境的仪器化。从正在运行的服务中提取真实运行时状态而不破坏它的难题,正是我们学会解决的难题。 我们也以艰难的方式吸取了一些其他教训。HyperTest 试图通过更好的测试来防止 bug,但每次推广都面临阻力。由于团队忙于处理生产环境的紧急问题,会议经常被取消。测试是例行公事,而生产环境的故障则是火烧眉毛。这让我们看到了优先级的所在。 这催生了构建真正自主的值班代理的想法,即一个代理能够接收警报,进行探测,诊断并修复问题,这一切都在几分钟内完成。但目前它的工作方式如下: 您像往常一样与您的编码代理进行交互。告诉它哪里出了问题:“checkout 返回 200,但有些用户看到他们的订单失败,找出原因。”它会在您的本地代码中定位到相关行,通过 MCP 与我们连接,并在正在运行的服务中的该行设置一个探针。探针是只读的,在实际流量命中之前处于休眠状态。当流量命中时,它会在那一刻捕获调用堆栈每一帧的局部变量。然后将这些变量交给代理,代理使用真实数据进行诊断。 它包含两个部分:一个运行在您的服务内部的 SDK,以及您的编码代理与之通信的 MCP 服务器。SDK 使得在无需重新部署的情况下设置探针(虚拟断点、日志或指标)成为可能。在 Node 和 Python 中,它会钩入进程。在 Java 中,它作为 JVM 代理附加,在字节码级别进行仪器化。无论哪种方式,服务都会继续运行并处理流量。没有任何东西会被暂停。 当您的代理想要查看某一行时,它会调用 MCP 服务器,MCP 服务器会指示 SDK 在该位置放置一个探针。当一个请求命中该行时,SDK 会捕获探针请求的内容,在进程内进行清理,并通过 MCP 将其流式传输回代理。 这可以在生产环境中运行,因此探针可以读取该变量中的任何值。我们确保在进程内,在您自己的容器内存中进行数据 redaction。这发生在任何数据通过网络传输之前。密码、token、授权、SSN 和信用卡等密钥默认会被 redaction,您也可以添加自己的。 此外,探针只读取,从不写入。如果您希望捕获的状态永远不要离开您的网络,您可以将服务器、代理甚至数据库自托管在您的基础设施中。 关于开销:空闲时,SDK 占用的内存微乎其微,对吞吐量和响应时间几乎没有影响。探针只有在主动捕获时才会产生开销。捕获也是有上限的。一个独立的监视器会实时监控,如果开销突然增加,就会禁用所有活动的探针。 每个日志和跟踪工具都会将已有的数据提供给代理,并要求它向后推理可能发生了什么。我们认为,让代理能够洞察正在运行的代码,以便它们在需要时、在故障点捕获它们所需的内容,会更有用。 这似乎是调试生产事件最简单、最快捷的方法。 我们很乐意让社区在任何环境中尝试使用此功能,通过与您的编码代理聊天来调试任何已知或未知的问题。并告诉我们您还需要哪些功能才能使其成为一个真正自主的值班代理。 支持的平台:NodeJs、Java、Python。