Specs#
契約や探索空間の境界では、処理そのものではなく、接続条件や表現を宣言値として渡します。 このページでは、これらの宣言値をまとめて宣言要素と呼びます。 宣言要素は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が接続する別々の境界です。
宣言値 |
所有者 |
利用する境界 |
|---|---|---|
|
|
Graphの接続とポート互換性 |
|
ポートまたは契約 |
data kindとschema bindingの統合 |
|
Componentまたはポート |
SearchSpace、Problemが提供するサービスの解決 |
|
|
候補表現と表現サービスの整合性 |
構築時点と利用時点#
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を参照してください。