#opg $OPG 私の目を引いたのは、失敗したアップロードではありませんでした。

それは、すでに正常にアップロードされているにもかかわらず、レジストリ上では見えないモデルでした。

ファイルは保存されました。
ハッシュも一致しました。
SDKは成功を返しました。

しかし、そのモデルは見つけられませんでした。

最初は、単なる同期の遅延だと思いました。分散システムでは、伝播が常に即座に行われるとは限りません。

さらに深く調べるほど、アーキテクチャの全体像がはっきりしてきました。

ライフサイクルは単一の行動ではありません:

アップロード → ストレージ → 登録 → 検証 → 伝播 → 利用可能化

各段階は前の段階に依存していますが、それぞれは独立して完了します。

ストレージは、モデルが存在することを確認します。

登録は、ネットワークがそれを認識したことを確認します。

この両方が完了するまで、モデルは物理的には存在していても推論には利用できないままになり得ます。

注目すべきは、メタデータの役割です。

レジストリは単にファイルのハッシュを記録するだけではありません。モデルの系譜(ラインエージ)、バージョン履歴、そしてそのモデルを発見可能かつ実行可能にするために必要な情報も検証します。

それによって、興味深い分離が生まれます:

モデルをアップロードできる。
モデルの支払いができる。
モデルは実行準備が整っていることさえある。

しかしユーザーには、登録が完了するまで見えません。

この問いは、スケールするとさらに面白くなります。

数千のデプロイ済みモデルがある場合、レジストリは大量のアクティビティ期間中、どのように登録の優先順位を決めるのでしょうか?

取引(トランザクション)を順番に処理しますか?
バッチ処理しますか?
それとも、保留中の登録が一時的なボトルネックになりますか?

見えていなかったのは、モデルそのものではありませんでした。

本当の気づきは、ストレージと発見可能性が、ネットワークの異なるレイヤーによって完了するということです。

そして、その違いは、最初に思う以上に重要です。
@OpenGradient