Skip to content

feat: implement T6.3 backend plugin registry governance - #77

Open
111a909 wants to merge 1 commit into
RACE-org:triton_v3.0from
111a909:clean/t6.3-production-v3.0
Open

feat: implement T6.3 backend plugin registry governance#77
111a909 wants to merge 1 commit into
RACE-org:triton_v3.0from
111a909:clean/t6.3-production-v3.0

Conversation

@111a909

@111a909 111a909 commented Aug 17, 2026

Copy link
Copy Markdown

Summary

Implement T6.3 BackendPlugin Registry governance for the Triton v3.0 branch:

  • backend plugin discovery, validation and selection
  • protocol and compatibility validation
  • native library and symbol conflict detection
  • plugin lifecycle management
  • Triton compiler and driver integration
  • protocol field evolution policy

Validation status

  • AC1: PASS
  • Plugin lifecycle: PASS
  • AC2: PASS
  • AC4: PASS
  • AC3: BLOCKED_EXTERNAL(T10.2)

controllable_scope=GO

Scope limitation

AC3/T10.2 is not implemented in this change. Existing compile tests are not presented as T10.2 conformance.

@111a909
111a909 deployed to local-ci-fork-approval August 17, 2026 07:30 — with GitHub Actions Active
@github-actions

Copy link
Copy Markdown

Codex AI 自动审查

Codex AI 自动审查仅供参考且不阻塞合入;本地确定性 CI 检查结果才是合入门禁。

审查摘要

  • Codex AI 审查结论:失败
  • 本地确定性 CI 检查:未通过;Codex AI 自动审查用于辅助定位原因,最终仍以检查结果和复测为准。
  • 合入建议:不建议合入。先修复 Legacy 后端的发现/自动加载兼容性,使用当前 sophgo wheel 重新通过 expected backend 与后端 smoke;随后再运行被本次失败阻断的 FlagGems 和性能阶段。

本次变更新增后端治理 Registry 并接入 Triton 编译器/驱动。本地确定性 CI 检查的首个失败是 verify-expected-backend:前端构建和 10 个 smoke 已通过,但安装的 sophgo 后端发现结果为 {}。根因是新发现层将无 Manifest 的既有 entry point 标记为 Legacy 后只保留元数据,未加载并回填 Triton 公开后端表;自动 driver 路径又只选择 Manifest 记录。该产品回归稳定阻断后端集成,后续阶段未运行。

贡献者目标与实现情况

  • 判断:部分实现
  • 贡献者目标:实现后端插件注册表治理,包括发现、兼容性与协议校验、冲突检测、选择及生命周期,并接入 Triton 编译器和驱动。
  • 预期效果:后端应可被发现、校验和选择;Triton 编译器与驱动应消费注册表选出的后端,同时不破坏现有后端集成。
  • 当前实现情况:diff 新增完整的 Manifest、兼容性、冲突、协议、原生工件和 Registry 实现,并将 compiler/driver 接入 Registry。实际环境中的既有 sophgo 后端没有 Manifest,虽然被识别为 Legacy,却未被加载或暴露给 Triton,导致后端发现失败并阻断集成验收。
  • 判断依据:
    • 本地确定性 CI 检查在前端构建和 frontend smoke 通过后,于 expected backend 验证发现 sophgo 后端为空而失败。
    • 已安装 sophgo wheel 仅包含 triton.backends 的 sophgo entry point,未包含后端 Manifest;注册表诊断将其记录为 legacy/discovered。
    • FILE-020 的发现函数仅执行元数据发现,未将 Legacy 记录加载并写入公开 backends 映射;运行时自动候选也只枚举 Manifest targets。

需要处理的问题

1. [高风险] Legacy entry point 不再填充 Triton 后端注册表

  • 问题类型:接口兼容性问题
  • 代码定位:triton/python/triton/backends/__init__.py:212
  • 这段代码负责:Triton entry point 发现与公开后端表的桥接
  • 核心证据:基线实现会对每个 triton.backends entry point 执行 load 并填充 backends。此处只调用 Registry.discover();Registry 将没有 Manifest 的 sophgo 分发包正确记录为 legacy/discovered,但不会加载它,get_driver_backends 的自动候选又只遍历 Manifest targets。本地确定性 CI 检查的 discovery 输出为 {},随后 expected backend 断言 sophgo 未被发现;已安装 sophgo wheel 的 entry_points.txt 只有 sophgo = triton_sophgo,未含 Manifest。
  • 影响:现有未迁移到 Manifest 的后端无法被自动发现,sophgo-cmodel 后端验证稳定失败,后端 JIT、FlagGems 与性能门禁均无法执行。
  • 建议:为 Legacy entry point 保留兼容桥接:在受控的 Legacy 路径加载并经 LegacyBackendPluginShim 写入公开 backends,或让自动 driver/编译器路径能按既有契约加载唯一 Legacy 后端;同时添加覆盖无 Manifest 已安装后端的发现、driver 和编译路径测试。

可点击代码定位

链接固定到本次测试提交,便于提交者修复和审核者核对代码功能;已验证行号的问题链接到具体行,仅能确认文件的问题链接到文件并标注行号待核对。

验证情况

  • 验证内容与结果:
    • 复用 本地确定性 CI 检查delivery summary:目标提交的 frontend build 和 frontend smoke 通过,失败发生在 verify-expected-backend,后续后端阶段未运行。
    • 复用失败日志:verify-backend-discovery 输出空对象,紧接着 expected backend 对 sophgo 的断言失败。
    • 读取当前环境中已安装 sophgo 分发包的元数据,确认其 entry point 为 sophgo = triton_sophgo;定向 Registry 诊断确认该记录为 legacy/discovered。
    • 读取 本地确定性 CI 检查生成的 sophgo wheel 元数据,确认 wheel 没有后端 Manifest;静态对比基线与新发现/选择调用链确认公开 backends 未被填充。
    • 对新增 Python 模块及修改的 Triton Python 模块执行语法编译,并执行 diff 空白错误检查,均通过。
    • Codex 执行的验证或诊断命令执行失败,现有记录尚不足以完成稳定性或根因归因。
  • 限制与未覆盖:
    • 失败记录尚不足以完成稳定性或根因归因。
    • 尚未执行:安装仅含 triton.backends entry point、无 Manifest 的测试 wheel,断言 import triton 后公开 backends 包含该后端,并能经 driver 默认路径完成一次 active probe。
    • 尚未执行:在 sophgo-cmodel 环境重新执行 expected backend、backend smoke JIT 和 FlagGems 样本,确认修复未仅恢复元数据而遗漏运行时选择。
    • 尚未执行:构建携带有效 Manifest 的后端测试 wheel,覆盖 Manifest winner 与 Legacy 后端共存、显式选择和冲突诊断。

剩余风险

  • 当前可用外部 sophgo wheel 未提供 Manifest;即使修复 Legacy 桥接,Manifest 兼容性、ABI 和原生符号治理路径仍需由迁移后的后端 wheel 验证。
  • 本地确定性 CI 检查在后端发现阶段停止,未产生 backend smoke、FlagGems、编译耗时、pass profile 或 IR 序列化结果,无法评估这些后续路径。
  • 未在带本次构建 libtriton 的独立动态诊断环境中直接调用 get_driver_backends;该命令受当前 checkout 缺少本地扩展模块限制,但失败根因已由 CI、安装元数据和静态调用链共同确认。

变更文件

查看变更文件
文件 类型 改动说明 影响
MANIFEST.in 修改 将 triton_anchor 下的 JSON 文件加入源码分发清单。 使 JSON 元数据可进入源码分发包;与当前失败无直接因果关系。
python/triton_anchor/__init__.py 修改 从 _version 导入公开 version 公开版本仍为 0.2.0,但改为依赖新增版本模块;与 sophgo 发现失败无直接关系。
python/triton_anchor/_build_info.json 新增 新增默认 _build_info.json,包含协议、工具链和 ABI 字段。 为兼容性检查提供未生成时的构建元数据默认值;当前失败发生在 Legacy 发现,尚未进入该校验。
python/triton_anchor/_version.py 新增 新增无依赖版本常量模块。 集中定义核心版本、后端协议版本和 Manifest schema 版本。
python/triton_anchor/backends/__init__.py 新增 新增 backends 公共导出,汇集错误、Manifest、Registry、选择和校验 API。 提供后端治理公共 API;其导入成功并允许注册表将 sophgo 识别为 Legacy,但未解决加载桥接。
python/triton_anchor/backends/capabilities.py 新增 新增能力集合规范化、报告和校验函数。 实现能力协商;当前 Legacy 后端无 Manifest,未进入能力校验。
python/triton_anchor/backends/compatibility.py 新增 新增后端 Manifest 的兼容性检查和报告。 实现协议、版本、ABI、wheel tag 等预加载兼容性校验;当前失败早于该阶段。
python/triton_anchor/backends/conflicts.py 新增 新增冲突类型、报告和静态冲突检测。 为静态身份、目标和原生符号冲突提供检测;当前单一 Legacy entry point 未触发该路径。
python/triton_anchor/backends/environment.py 新增 新增构建元数据加载、工具链版本规范化和核心环境收集。 为 Manifest 兼容性提供 CoreEnvironment 与构建信息读取;未参与当前 Legacy 发现失败。
python/triton_anchor/backends/errors.py 新增 新增后端插件错误基类和各阶段错误子类。 提供结构化后端错误类型,供发现、选择和生命周期传播使用。
python/triton_anchor/backends/examples/triton_anchor_backend.example.json 新增 新增 Manifest JSON 示例。 为新 Manifest 协议提供示例,不会自动迁移既有 sophgo wheel。
python/triton_anchor/backends/legacy.py 新增 新增 LegacyBackendPluginShim,用于包装旧式 compiler_cls/driver_cls 插件。 声明了 Legacy 适配器,但当前发现和自动 driver 路径未调用它,因此未保留旧后端行为。
python/triton_anchor/backends/manifest.py 新增 新增 Manifest 解析、分发包 Manifest 加载及 entry point 覆盖校验。 将无 Manifest 的分发包标记为 Legacy;该判断正确,但后续未加载 Legacy 记录导致当前失败。
python/triton_anchor/backends/native.py 新增 新增原生工件校验与检查报告。 实现原生库发现、哈希和 ELF 检查;当前失败未到原生兼容性阶段。
python/triton_anchor/backends/protocol.py 新增 新增协议版本、隔离模式、兼容性状态和生命周期转换规则。 定义后端协议枚举、生命周期状态和字段演进策略。
python/triton_anchor/backends/registry.py 新增 新增状态化 BackendPluginRegistry 及全局 Registry 实例。 负责 metadata-only 发现、验证、加载、注册、选择和重置;能记录 sophgo 为 Legacy,但不会在普通自动路径中使其成为可用 backend。
python/triton_anchor/backends/schemas/backend_manifest.schema.json 新增 新增 backend manifest JSON Schema。 约束 Manifest 格式;不影响没有 Manifest 的 Legacy wheel 的直接发现,但也不会迁移该 wheel。
python/triton_anchor/backends/selection.py 新增 新增后端选择优先级、环境选择器和 Legacy 限制。 选择规则明确排除 Legacy 自动选择,仅允许精确 record_id/registry_key;与 FILE-020 的自动 driver 路径组合后使现有 sophgo 后端不可用。
setup.py 修改 重构版本和构建信息生成,扩展包列表与 package_data。 将新增后端包、JSON 元数据和构建信息纳入 wheel,并增加 packaging 依赖;前端 wheel 构建通过。
triton/python/triton/backends/__init__.py 修改 将 Triton 后端发现、选择、缓存和激活改为委托 triton_anchor Registry。 直接导致回归:发现函数只保存 Registry 元数据,未按旧契约加载 Legacy entry point 并填充公开 backends;本地确定性 CI 检查因 sophgo 未发现失败。
triton/python/triton/compiler/compiler.py 修改 make_backend 从公开 backends 映射改为调用 Registry 适配函数。 编译器 backend 创建改走 Registry;当前失败阻断在此之前,未执行后端 JIT。
triton/python/triton/runtime/driver.py 修改 新增 Registry 驱动选择、生命周期错误转换及并发安全 LazyProxy/DriverConfig。 运行时 driver 创建、显式激活和 LazyProxy 重置改走 Registry;当没有 Manifest winner 或手动 backend 时会得到空候选。

@111a909
111a909 had a problem deploying to local-ci-fork-approval August 19, 2026 11:25 — with GitHub Actions Error
@111a909
111a909 force-pushed the clean/t6.3-production-v3.0 branch from 86093dd to b85a506 Compare August 19, 2026 11:30
@111a909
111a909 requested a deployment to local-ci-fork-approval August 19, 2026 11:31 — with GitHub Actions Waiting
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant