52 分•作者: NickDob•3 个月前
返回首页
最新
1 分•作者: rshemet•3 个月前
大家好,我是 Cactus 的 Roman 和 Henry(<a href="https://github.com/cactus-compute/cactus" rel="nofollow">https://github.com/cactus-compute/cactus</a>)。
我们刚刚发布了我们设备端推理平台的重大升级:
* 内置基于模型置信度的路由,可将推理任务转交给云端。
* 支持任何 PyTorch 模型的转换器。
* 无损 4 位量化(评估结果请参见我们的 GitHub README)。
* 支持兼容设备的 GPU 加速(首批支持 Apple Metal)。
* 极低的 RAM 占用。
* 可在任何 Arm 设备上运行:iOS、Android、Mac、DGX Spark、Raspberry Pi 等。
总而言之,一个 Gemma 4 E2B 级别的模型在 M5 Max 上可达到 169 token/秒 的速度,占用 2.7GB 磁盘空间且与 FP16 相比无精度损失,使用 1.3GB RAM,并在需要时向云端模型寻求帮助。
我们十八个月前开始解决的问题是:推理引擎大多为数据中心设计,但消费级硬件的物理特性不同:RAM 需要与操作系统共享,会受到热节流限制,并且同一模型在不同硬件上的表现也不同。
因此,我们为资源受限的设备从头开始编写了一个运行时。自那时以来,Cactus 已发展到每周处理数百万次推理,并拥有数万名月活跃开发者。
我们在生产应用中部署 Cactus 的最大体会是,虽然本地模型可以处理 90% 的工作负载,但那 10% 的差距意味着它们仍然不够生产就绪。我们的用户通常通过构建自定义的云端回退逻辑来解决这个问题。
Cactus v2 解决了这个问题:
我们实现云端回退的方法是,在模型的权重中植入一个探针,该探针读取模型的内部激活并发出置信度信号。这样,路由就发生在模型内部,而不是由一个位于其前方的提示分类器来完成。我们认为这对于多轮智能代理工作至关重要,模型应该知道哪些轮次足够简单可以在本地处理,哪些轮次比较困难——然后将其转交给云端。本次发布支持 Gemma-4 E2B 的单轮路由,可配置为向任意端点(Gemini、Claude、OpenAI 兼容端点或您自己的端点)进行升级。
我们的下一个目标是为多轮智能代理工作开发混合原生模型。这是真正尚未解决的问题。我们目前的权重内探针方法已显示出有希望的结果,并计划很快发布首批模型变体。
混合变体是 Gemma 的衍生品,根据 HF 卡上注明的 Gemma 条款发布。
除了混合路由,该运行时还具备最先进的量化技术,能在 4 位精度下实现无损量化,通过内存映射权重来减少 RAM 占用,并支持跨平台运行,提供 Python、Rust、React Native、Swift 和 Kotlin 绑定。
免责声明:Cactus 以源代码可用形式分发——个人使用和小型公司免费;超出此范围的商业使用需付费(类似 Docker 的许可模式)。
您可以通过我们的 GitHub (<a href="https://github.com/cactus-compute/cactus" rel="nofollow">https://github.com/cactus-compute/cactus</a>) 或通过 `brew install cactus-compute/cactus/cactus` 开始使用。
1 分•作者: fisher-brett•3 个月前
1 分•作者: thunderbong•3 个月前
1 分•作者: speckx•3 个月前
1 分•作者: maxjustus•3 个月前
chwire 是一个用于 JS 的 ClickHouse 客户端,它通过 HTTP 和 TCP 使用原生(列式二进制)格式进行通信。对于 100 万行的数据负载,编码速度比 JSONEachRow 快 2-6 倍,解码速度快 2-8 倍。一旦加入压缩,原生格式几乎总是胜出,因为较小的数据负载压缩起来更便宜。
我过去一年一直在为 [https://www.hockeystack.com/](https://www.hockeystack.com/) 的使用而开发这个项目。最初是因为官方 ClickHouse JS 客户端在扩展插入操作时,gzip/deflate 的 CPU 占用过高而感到沮丧。从那时起,我便致力于实现一个我能做到的最好的 ClickHouse 客户端。
亮点:
* 在浏览器中通过 HTTP 以及在 Node/Bun/Deno 中通过 HTTP 或 TCP 支持 ZSTD/LZ4
* 一个经过严格模糊测试的原生格式实现
* 支持所有类型 + 任意嵌套级别的容器类型,包括 Variant、Dynamic、JSON、Nested 和 Tuple
* CI 系统会往返测试 ClickHouse 自带的 generateRandom 和 generateRandomStructure,并且我还有一个单独的模糊测试实现,包括 JSON、Variant 和 Dynamic
* 解析器在内部是同步且可恢复的。当没有足够的数据来解析列时,异步包装器会缓冲块并获取更多数据。
* 一个功能齐全的 Node/Bun/Deno TCP 客户端
* 支持 ProfileEvents、日志、进度和其他协议包类型
* 支持 [外部表](https://clickhouse.com/docs/en/engines/table-engines/special/external-data)
* 支持 [原生查询参数](https://clickhouse.com/docs/en/sql-reference/syntax/#defining-and-using-query-parameters)
次要的动机是希望它能作为一个不错的参考实现,用一种相对高级但有点简陋的语言。理论上,有人可以指向一个 LLM,并使用 `/goal` 或其他方式来获得另一种语言的可用的实现。
希望它能对大家有所帮助!
1 分•作者: binyu•3 个月前
1 分•作者: speckx•3 个月前
2 分•作者: cdrnsf•3 个月前
1 分•作者: zem•3 个月前
3 分•作者: chmaynard•3 个月前
8 分•作者: juunge•3 个月前
140 分•作者: thisislife2•3 个月前
6 分•作者: OdedF•3 个月前
1 分•作者: AmiPatel•3 个月前
1 分•作者: speckx•3 个月前
1 分•作者: thunderbong•3 个月前
1 分•作者: lisper•3 个月前
3 分•作者: zzzeek•3 个月前
1 分•作者: MediaSquirrel•3 个月前
在本地运行大型语言模型(LLM)来驱动代码助手很复杂,所以我构建了一个 Cursor + VS Code 插件,让这个过程变得简单。
它会自动检测你的机器配置,选择一个适合你机器的模型,然后运行一个本地服务器,设置一个 Cloudflare Quick Tunnel,并引导你将其连接到 Cursor。
最后,你可以在 Cursor 中像往常一样工作,只需在模型选择下拉菜单中选择“Local Motion”作为你的模型即可。