Repository navigation
Closed
Labels
skeepSKEEP proposal tracking issue (durable design record)SKEEP proposal tracking issue (durable design record)trackingParent/tracking issue with sub-issuesParent/tracking issue with sub-issues
Description
Proposal document: docs/modules/skeep/pages/008-precision-and-encoding-conversion.adoc (#1434)
Status: Implemented
Branch: feature/skeep-008-precision-and-encoding-conversion
Trigger
Public Kotlin API (NeuralNetworkDsl members, TensorStorage) · DSL syntax/semantics (what a layer's dtype means, where a cast happens) · compatibility/migration policy (removing members that always threw, rules for precision loss).
Summary
Two public entry points promise to change a tensor's numeric form and do not work:
- Mixed precision in the DSL.
dense<TLayer>(…)×2 andstage<TStage>(…)areTODO()in bothNeuralNetworkDslImplandStageImpl. That's the six stubs allowlisted inconfig/stub-allowlist.txt. They can't be implemented as declared, because a type parameter on an interface method can't bereified, so the implementation never gets the layer'sKClass. - Encoding change after load.
TensorStorage.repackTothrows for every encoding change.
The proposal:
- takes the dtype as a value (
dense(64, dtype = FP16),stage("head", dtype = BF16)) behind onePrecisionBoundarymodule, using the existingTensorOps.convert, which is traced and lowers tostablehlo.convert; - keeps
repackTolossless and adds an explicit, lossyrequantizeToon top of the existingRequantizersregistry, so it accepts the same encodings as loader quantize-at-load; - retires the unused
MixedPrecisionModule/InternalMixedPrecisionModule/MixedPrecisionTensorOpsscaffold.
Related DARC features
- [Feature]: Close the remaining NotImplemented stubs outside the operator surface #1414 (remaining non-op stubs umbrella). The mixed-precision stubs were deliberately not filed there and wait on this proposal.
- [Feature]: TransposedConv2d — convTranspose2d op, CPU kernel, backward and StableHLO lowering #1371 / [Feature]: GroupNormalization forward pass (groupNorm {} DSL currently crashes) #1379 (layer gaps found by the same inventory).
Sub-issues
No sub-issues were filed; the phases shipped in three PRs:
- B1 lossless
repackTo+requantizeTo— feat(storage): lossless repackTo and explicit lossy requantizeTo (SKEEP-008 phase B1) #1470 - A1 DSL
PrecisionBoundary, inference only — feat(nn): mixed-precision dense/stage via PrecisionBoundary (SKEEP-008 phase A1) #1469 - A2 export test (
stablehlo.convertat boundaries) — feat(nn): finish SKEEP-008 — export test, differentiable convert, scaffold removal (phases A2, A3, A4) #1492 - A3
convertbecomes@Diff— feat(nn): finish SKEEP-008 — export test, differentiable convert, scaffold removal (phases A2, A3, A4) #1492 - A4 removal of the deprecated overloads and scaffold — feat(nn): finish SKEEP-008 — export test, differentiable convert, scaffold removal (phases A2, A3, A4) #1492
Status upkeep
- Proposal registered in
docs/modules/skeep/nav.adocand the "Current Proposals" table - Maintainer moved status to
Accepted(went straight toImplementedin feat(nn): finish SKEEP-008 — export test, differentiable convert, scaffold removal (phases A2, A3, A4) #1492) - Implementation PR(s) linked here and flipped the proposal's
Status:toImplemented: B1 feat(storage): lossless repackTo and explicit lossy requantizeTo (SKEEP-008 phase B1) #1470, A1 feat(nn): mixed-precision dense/stage via PrecisionBoundary (SKEEP-008 phase A1) #1469, A2 + A3 + A4 feat(nn): finish SKEEP-008 — export test, differentiable convert, scaffold removal (phases A2, A3, A4) #1492
Metadata
Metadata
Assignees
Labels
skeepSKEEP proposal tracking issue (durable design record)SKEEP proposal tracking issue (durable design record)trackingParent/tracking issue with sub-issuesParent/tracking issue with sub-issues
Activity
michalharakal commentedon Nov 10, 2026
All five phases are merged: B1 in #1470 and A1 in #1469 (released in 0.63.0), A2, A3 and A4 in #1492. The proposal is at
Status: Implemented.Left open on purpose, as recorded in the proposal's Open Questions: folding the cast pair between two adjacent boundaries in a compile pass, and per-boundary
DTypePolicymetadata. Neither is tracked by an issue yet.