MPK契約
MPKは、コンパイルされたモデルアーカイブに埋め込まれた推論契約です。これは、ルートプランナーと下流のエクストラクターが読み込むJSONファイルであり、ファイル名はmpk.jsonまたは*_mpk.jsonです。モデルアーカイブ自体は、Modelを通じてロードされる通常の.tar.gzファイルです。
このページでは、以下の2つの点を明確に区別します。
- アーカイブ:バイナリ、設定、重み、およびMPK契約JSONを含む
.tar.gz形式の配布単位。 - 契約:推論ルーティングの根拠となる
*_mpk.jsonJSONドキュメント。
バイトレベルの契約およびセキュリティルールについては、MPK契約(貢献者参照)を参照してください。
単一の.tar.gzアーカイブを使用する理由
Modalix上のモデルには、多くの要素(コンパイルされたMLAグラフ、CVUカーネル、設定、重み)が含まれています。これらを1つの署名された.tar.gzアーカイブにまとめることで、以下の利点があります。
- アトミック性:モデル全体がロードされるか、まったくロードされないかのいずれか。
- バージョン管理:MPK契約は、そのスキーマバージョンを宣言します。互換性のない契約は、早期に拒否されます。
- トレーサビリティ:チェックサム、署名、および配布を行うための単一のアーティファクト。
- 再現性:同じアーカイブとMPK契約が与えられた場合、フレームワークのプランナーは同じルーティング決定を行います。
MPK契約は唯一の信頼できるJSON
モデルアーカイブには、他のJSONファイルが含まれている場合があります。ただし、フレームワークはmpk.jsonまたは*_mpk.jsonのみを推論契約として扱います。アーカイブ内の他のJSONからモデルのトポロジーを推測しないでください。契約は「MPK契約に含まれていない場合は、存在しない」という原則に従います。
このルールにより、フレームワークのプランナーは決定的な動作を維持します。
モデルアーカイブのロード
アプリケーションは、アーカイブローダーAPIを直接呼び出しません。.tar.gzパスを使用してModelを構築します。Modelは、ア ーカイブの検証、安全なコンテンツを内部レイアウトに抽出、MPK契約の解析、およびルートプランニングを実行します。
正確な小文字の.tar.gz形式のモデルアーカイブのみが受け入れられます。.mpk、.tgz、.tar、およびプレーンな.gzファイルは、アーカイブの検査前に拒否されます。
セキュリティ対策
モデルアーカイブはシステム外部から提供されるため、ロードはフェイルクローズで行われます。受け入れられたすべてのアーカイブは、厳格なマトリックスチェックを受けます。
- 拡張子の許可リスト —
.tar.gzのみが許可されます。 - サイズ制限 — アーカイブ、エントリ、および合計 JSON バイト数の制限。
- エントリ数の制限 — zip ボム形式のパックに対する保護。
- JSON の深さの制限 — パーサーのスタックオーバーフローに対する保護。
- パス走査の保護 — 正規化されたパスで、絶対パスと
..セグメントが拒否されます。 - UTF-8 の検証 — エントリのパスは有効な UTF-8 でなければなりません。
- Unicode の類似文字の拒否 — 視覚的に紛らわしいパス文字が拒否されます。
- ファイルタイプの許可リスト — 既知のファイ ルタイプのみが抽出されます。
- JSON の重複キーの拒否 — 任意の深さでの重複キーが拒否されます。
- スキーマの検証 — コントラクトとローダー側のメタデータは、サポートされているスキーマと一致する必要があります。
- 必須セクションの検証 — 推論コントラクトとモデルバイナリが存在する必要があります。
- カーネルの許可リスト — 参照されるカーネルは、フレームワークの既知のセットに含まれている必要があります。
上位レイヤーは、エラーを構造化された io.* または mpk.* エラーコードを持つ NeatError として報告します。
関連する型
Model—.tar.gzモデルアーカイブをロードし、ルートフラグメントを公開するパブリックなエントリポイント。MpkContractおよび関連する内部構造体 —mpk.json/*_mpk.jsonから解析された推論コントラクト。
詳細情報
- MPK契約(貢献者参照) — バイトレベルのルールとフィールドのセマンテ ィクス。
- 「MPK コントラクト」 — デザインの詳細な解説の §0.16、§15。
- 「モデルアーカイブのセキュリティマトリックス」 — デザインの詳細な解説の §91。