Specs#

Layer 4: Extend Framework

契約や探索空間の境界では、処理そのものではなく、接続条件や表現を宣言値として渡します。 このページでは、これらの宣言値をまとめて宣言要素と呼びます。 宣言要素はComponentの派生型ではなく、Compilerが接続と要求を判定するための不変値です。

Specsの役割#

Specsは処理自体を行うのではなく、接続条件、表現、要求サービスをCompilerへ渡す境界を所有します。 Componentの実行状態は保持せず、ComponentContractとSearchSpaceが宣言値を所有します。

PortSpecとPortContract#

PortSpecはポート名、方向、DataSpec、カーディナリティ、要求サービス、任意性を含む1つのポート宣言です。 PortContractは1つの役割に属する入力ポートと出力ポートの集合です。 ポート名は各方向内で一意でなければなりません。

ONE、MANY、OPTIONALのcardinalityは、提供側の値が消費側の要求を満たすかをCompilerが判定します。 方向、登録済みのdata kind、schema binding、cardinalityが一致しない接続は互換ではありません。

DataSpecとServiceRequirement#

DataSpecは登録済みのnominal data kindとschema bindingを表します。 固定値、変数、包含条件、productによるbindingを使って、ポート間で同じスキーマ変数を統合できます。 DataSpecのkind互換性、schemaのunification、サービス解決は別々の検査です。

ServiceRequirementはポートまたはComponentが必要とする名前付きサービスを宣言します。 SearchSpaceのSamplingServiceやValidationServiceなどは空間の能力として照合されます。 EvaluationAdapterは評価境界のアダプターで、FeatureEncoderはsaealib.space.FeatureEncoderとして公開されるアダプターのサブタイプです。 FeatureEncoderはGenomeBatchをFeatureBatchへ変換し、サロゲートモデルが学習できる特徴を決める意味変換を提供します。 SamplingServiceなどの空間能力とは性質が異なります。現在の実装ではSurrogateManagerの契約がServiceRequirement("FeatureEncoder")を宣言し、VectorSpaceが既定のFeatureEncoderをサービスとして登録するため、数値ベクトル空間では追加設定なしに解決されます。ObjectSpace、PermutationSpace、SequenceSpaceでは、利用者がFeatureEncoderを指定しないとエラーになります。サロゲートモデルへ渡す入力は利用者が決定します。

RepresentationSpecの境界#

RepresentationSpecはSearchSpace側の候補表現仕様です。 候補の型、形状、表現を記述しますが、ComponentContractのポート、状態、実行の一部ではありません。 したがって、SearchSpaceサービス、EvaluationAdapter、FeatureEncoder、空間が保持するRepresentationSpecは、Compilerが接続する別々の境界です。

宣言値

所有者

利用する境界

PortSpec、PortContract

ComponentContract

Graphの接続とポート互換性

DataSpec

ポートまたは契約

data kindとschema bindingの統合

ServiceRequirement

Componentまたはポート

SearchSpace、Problemが提供するサービスの解決

RepresentationSpec

SearchSpace

候補表現と表現サービスの整合性

構築時点と利用時点#

PortSpec、DataSpec、ServiceRequirementはComponentContractの構築時に作られ、Compilerがグラフ接続時に使います。 これらの値は契約またはSearchSpaceが所有し、Runtimeは実行中に書き換えません。

不変条件と診断#

未登録のkind、未定義のcardinality、schema bindingの不一致、要求サービスの不足はDiagnosticsになります。 実装上はunknown_data_spec、unknown_cardinality、unknown_schema_variable、unresolved_serviceなどの診断コードで報告されます。

拡張点#

新しいデータkindやサービスを追加する場合は、登録規則と互換性規則を明示し、暗黙の型変換で接続しない設計にします。

関連ページ#

具体的なポート宣言型と公開インポート経路はAPIリファレンスを参照してください。 候補表現の拡張はSearchSpace、Compilerルールの拡張はFramework extensionsを参照してください。

参照#