実際のアーキテクチャについて
Vision TransformerをONNXに変換し、約40 MBに圧縮したものです。ホスティングプラットフォームのファイルサイズ制限内に収まるよう2分割されています。ブラウザ内で再構成され、実行前にチェックサムが検証されます。
推論はWebAssemblyを通じて行われます。これにより、コンパイルされたランタイムがブラウザタブ内でネイティブに近い速度で実行可能です。ランタイム自体は、重みと共に読み込まれる圧縮されたWASMバイナリです。
これ自体はもはや特殊なことではありません。2021年には研究レベルのデモだったものが、現在ではモデルを出荷する標準的な方法となっており、ブラウザがそのほとんどを支えています。
もたらされる利点
| 物件 | ブラウザ内 | サーバー上 |
|---|---|---|
| 画像はデバイスから出る | No 不可能 | Yes 必要 |
| チェックあたりのコスト | Yes ゼロ | No 実際の計算負荷 |
| データ処理契約が必要 | No | Yes |
| 読み込み後はネットワークなしで動作 | Yes | No |
| モデルを非公開に保てる | No ダウンロードされる | Yes |
| 最初のチェックは即座に行われる | No モデルは一度だけダウンロードされる | Yes |
最初の行が、他のすべての理由です。アップロード先エンドポイントが存在しないため、他人の写真が集まることもなく、保存ポリシーを作成する必要も、漏洩の開示も、要求に応じてデータを差し出す必要もありません。
2行目は、なぜ使用量制限なしで無料にできるのかの理由です。チェックにサーバーコストがかからないため、画像ごとのコストを回収する必要がなく、価格設定のあり方が根本から変わります。
代償について
3つの現実的なトレードオフを率直に述べます。利点だけを並べるページは広告に過ぎないからです。
- 最初のチェックは遅いです。 何かが起こる前に40 MBのデータが到着する必要があります。高速接続なら数秒ですが、低速な環境ではそれ以上かかります。以降のチェックではキャッシュされたモデルを再利用するため、すぐに開始されます。
- 古いデバイスでは動作が困難です。 推論にはメモリと処理能力が必要であり、5年前のスマートフォンでは快適に動作しない場合があります。サーバーであればデバイスを問いません。
- モデルは公開されています。 ブラウザにダウンロードされたものは保存可能です。サーバー側のモデルは独自技術として保護できますが、このモデルはそれができず、重みデータはそもそもオープンな研究用チェックポイントです。
3点目は率直に述べる価値があります。モデルをクライアントに配布するということは、それを公開するということです。ここでは重みデータが既に公開されているため、このトレードオフは許容範囲です。このツールを有用にするのは、その周辺に構築されたキャリブレーション、タイル分割、解釈の技術です。
知っておくべきエンジニアリング上の課題
巨大ファイルの分割
静的ホスティングプラットフォームは個別のファイルサイズに制限を設けています。40 MBのモデルはその制限を超えるため、決定論的な2つのパーツに分けて出荷されます。これらはブラウザ内で再構成され、使用前にマニフェストハッシュと照合されます。破損や置き換えが発生した場合は、誤ったスコアを生成するのではなく、エラーとして通知されます。
必要になるまで何も読み込まない
モデル、ランタイム、認証情報リーダーは、ページ読み込み時には取得されません。最初の実行時に初めて到着するため、記事を読むだけのユーザーは何もダウンロードしません。これにより、チェックを行わない大半の訪問者にとってページは高速に保たれます。
扱いにくいフォーマットのデコード
iPhoneのHEIC、AVIF、TIFF、JPEG XLなどは、スコアリングの前にデコードが必要です。現在ではブラウザがこれらをネイティブで処理するため、この種のツールにおけるクライアントサイドの作業の大部分が不要になりました。
このアーキテクチャが不適切な場合
常に最適とは限りません。モデルが独自の機密技術である場合、出荷するには大きすぎる場合、人ではなくバックエンドパイプラインで結果が必要な場合、あるいはデバイスに関係なく応答時間を保証する必要がある場合は、サーバー型の方が理にかなっています。
怪しい写真を1枚チェックするために人が開くツールであれば、それらの制約は適用されず、プライバシーの利点がサーバーで得られるすべてを上回ります。
この選択肢が除外するもの
クライアントサイドでの実行を選択することにはプライバシー以外の結果も伴います。それらの中には、機能ではなく制限と呼ぶべきものもあります。
履歴は残りません。結果は生成されたタブ内にのみ存在するため、エクスポートしない限り後で確認することはできません。これはアカウントを持たないことの直接的な代償であり、このアーキテクチャにおいて最も多く要望される不便な点です。
共有状態はありません。2人が同じキューを見ることはできず、チームでチェックを確認し合うこともできません。共有リンクは単一の結果を示すのみであり、ワークフロー全体ではなく会話の断片を扱うものです。
APIはありません。ブラウザタブ内で実行されるものはバックエンドパイプラインから呼び出すことができず、大量処理が必要な用途は完全に除外されます。これらは現実の欠点ですが、最も重要な性質を得るための対価として受け入れるのが誠実な立場です。