• 设计目标精准:主要处理上亿级文件(平均10MB),极少目录变更,适配单数据中心最大负载,涵盖1百万客户端。
• 高可靠性保障:写入原子性确保文件非半写状态,断电或节点故障不破坏元数据,数据腐败概率极低,支持灾难级恢复策略。
• 多区域复制支持:跨数据中心复制,避免单点故障,提升计算扩展灵活性。
• 关键组件分工明确:
- Registry:C++实现,管理元数据分片与Block服务地址,5节点共识持久化。
- Metadata Shard:256逻辑实例,存储文件/目录属性及映射。
- CDC(Cross Directory Coordinator):协调跨目录操作,确保事务串行执行。
- Block Service:百万级实例,分散存储文件块,实现多点冗余。
- 客户端支持多协议(FUSE、S3、web UI、CLI等)。
• 运维友好:支持在线维护和故障迁移,具备自动坏块修复和数据迁移工具。
• 开发与测试:
- 采用Docker容器构建环境,支持Alpine和Ubuntu两种镜像。
- 提供详尽集成测试及内核模块测试,确保核心组件稳定。
- VS Code友好,支持Go、C++代码智能提示与调试。
• 开源协议兼容性强:GPL-2.0-or-later主协议,核心协议与客户端库采用Apache-2.0 + LLVM例外,支持构建闭源客户端。
TernFS凭借其对超大规模不可变文件的深度优化和健壮设计,为高性能计算和机器学习数据存储提供了极具前瞻性的解决方案。
• 量化张量支持多种格式,携带完整元数据,方便灵活管理量化信息。
• 通用范围估计方法,易扩展,支持多样量化算法。
• 量化算子调度基于 PyTorch dispatcher,针对不同量化方案优化执行。
• 逐步量化流程设计,支持模型从非量化到量化的全链路自定义转换。
• 默认安全模式自动捕捉常见错误,确保量化模型可直接部署高效硬件,且允许关闭该模式。
• mpath 工具抽象管理模块层级,便于批量操作多层网络结构。
• 未来规划包括 Omniquant、GPTQ、SpinQuant 等先进量化方法,以及自动量化和部署导出功能。
• 依托 PyTorch eager 模式,支持断点调试和打印,调试体验与标准模型无异。
适合科研和快速原型,助力高效探索量化技术边界。安装简单,基于 pip,兼容主流 PyTorch 环境。
• 𝗽𝗿𝗲-𝗰𝗵𝘂𝗻𝗸𝗶𝗻𝗴(预切块):先将文档拆分成小块,再做embedding并存入向量库。优点是查询时速度快,因所有切块已预计算和索引,但需提前确定切块大小和边界。
• 𝗽𝗼𝘀𝘁-𝗰𝗵𝘂𝗻𝗸𝗶𝗻𝗴(后切块):先embedding整篇文档,查询时仅对检索到的文档再切块,且支持缓存切块结果,访问频繁时速度提升。优点是避免无用文档切块,切块更灵活且上下文感知,但首次访问有延迟,且需要更复杂的基础设施。
切块策略同样至关重要,从简单到高级,常见包括:
• 固定大小切块:按固定token或字符数切分,简单快速但可能破坏语义。
• 递归切块:先按段落,再按句子逐层拆分,保留文档结构。
• 基于文档结构切块:依据Markdown标题、HTML标签等格式元素切分,保持逻辑单元完整。
• 语义切块:基于语义相似度和话题边界拆分,适合密集复杂文本。
• 智能体切块(Agentic):由AI智能体综合文档结构和内容动态决策切块方案。
• 延迟切块(Late Chunking):先对全文做embedding,后利用上下文丰富的embedding生成切块,适合需要跨段关联的技术或法律文档。
• 分层切块:为超长复杂文档构建多级切块,支持从宏观到微观的多层次查询。
• 自适应切块:根据文本密度和结构动态调整切块大小和重叠,兼顾细节和上下文。
选择预切还是后切,需权衡查询速度、系统复杂度和文档访问频率,后切块适合大规模稀疏访问场景。
合适的切块大小和边界设计,是提升检索准确率和生成质量的基础,切块过大或过小都会降低性能。
高级切块技术(如Agentic和Late Chunking)虽成本高,但对关键领域和复杂文档意义重大。