ゲームの世界は、少なくレンダリングして、多く見る方法を見つけました。私たちは、同じ手法をリモートデスクトップに持ち込みます。デバイス上の小さなモデルが、半分のサイズのストリームから、4Kの映像を再構築するのです。
誰も語らない、帯域の問題
リモートデスクトップには、不都合な秘密があります。帯域を、大量に食うのです。
60 fpsでデスクトップをストリーミングすると、現代のコーデックでも、1080pで約3〜8 Mbps、4Kで8〜15 Mbpsかかります。光回線なら問題ありません。強い自宅のWi-Fiでも問題ありません。けれど、ホテルのWi-Fiに入ったり、スマートフォンのテザリングをしたり、混雑した都市のカフェで仕事をしようとすると、すべてが崩れます。
現在の解決策は、情けないほど単純です。帯域が落ちたら、品質を下げる。解像度を下げる。フレームレートを下げる。状況が良くなるまで、ぼやけた文字とカクカクした映像を受け入れる。すべてのリモートデスクトップアプリがそうしています。20年間、それが唯一の選択肢でした。
もっと良い方法があったとしたら?
状況が悪くなったときに品質を落とす、鮮明な1080pのストリームを送るかわりに、常に小さな1080pのストリームを送って、向こう側で4Kのように見せることができたら、どうでしょう。
それが、AI超解像です。そして、これはSFではありません。ゲームでは、何年も前から行われています。
超解像ストリーミングのパイプライン
ゲームからリモートデスクトップへの置き換えは、驚くほどすっきりしています。ゲームでは、低い解像度でレンダリングして、アップスケールします。ストリーミングでは、低い解像度でエンコードして、アップスケールします。左から右へ、端から端までの、4つの段階です。
| 段階 | 出力 | 指標 |
|---|---|---|
| 01 · キャプチャ | ネイティブ解像度のフレーム | 3840×2160 → 1920×1080、圧縮前 |
| 02 · エンコード | 1080pのH.265ストリーム | コーデック:HEVC · CBR 3 Mbps |
| 03 · 送信 | WANで約3 Mbps | 帯域:3 Mbps · 遅延 ~20 ms |
| 04 · アップスケール & 描画 | 4K Metal / Vulkanの出力 | モデル:280 KB · 追加遅延 <3 ms |
体感される鮮明さは同じで、帯域はおよそ4分の1です。しかもホストは、より小さな画像をエンコードするので、仕事量も減ります。CPU使用率は下がり、発熱は減り、ノートPCのバッテリーも長持ちします。
| 方式 | 必要な帯域 |
|---|---|
| 現在 · ネイティブ4Kのストリーム | ~12 Mbps |
| 現在 · 1080pのストリーム | ~5 Mbps |
| 超解像あり · アップスケールした4K | ~3 Mbps |
ゲーム業界は、すでにこれを解決した
2018年、NVIDIAは、DLSS(Deep Learning Super Sampling)を発表しました。その考え方は、信じられないほど魅力的なものでした。ゲームを低い解像度でレンダリングし、ニューラルネットワークで、ネイティブ解像度のように見えるまでアップスケールする。GPUの仕事は減って、見た目の品質は同じです。
ゲーマーは懐疑的でした。AIが生成した画像が、ネイティブにレンダリングされたピクセルと同じくらい美しく見えるなんて、あり得るのか。けれど、結果が物語っていました。2026年には、DLSS 4.5がトランスフォーマーモデルを使い、多くのプレイヤーがネイティブのレンダリングよりも、むしろ好む画像を生み出しています。エッジはより鮮明で、時間的な安定性は高く、アーティファクトは少なくなりました。
AMDはFSRで続きました。AppleはMetalFXを導入しました。IntelはXeSSを出しました。業界全体が、同じ洞察にたどり着いたのです。
最も賢いピクセルとは、レンダリングしなくて済むピクセルである。
ゲーム業界は、「これはおもちゃだ」から「これは必須だ」になるまで、約5年かかりました。リモートデスクトップは、まだ始まってすらいません。
デバイス上のAI、設計からプライベート
ここからが本当に面白いところで、AIがどう動くと思われるかとは、違う点でもあります。
超解像のモデルは、完全にお使いのデバイス上で動きます。クラウドでも、どこかのサーバーでもありません。手の中のスマートフォンやノートPCの上です。
最近のデバイスは、デバイス上のAIには、あきれるほど強力です。MシリーズのチップのAppleのNeural Engineは、毎秒15.8兆回の演算をこなします。最近のSnapdragonチップのQualcomm Hexagon NPUも、同じ水準です。これらの専用AIプロセッサーは、ほとんどの時間、遊んでいます。私たちは、それを働かせます。
推論は、デコードと表示の間の、描画のパイプラインの中で動きます。モデルは1080pのフレームを受け取り、4Kのフレームを出力します。遅延の予算は3ミリ秒未満で、それを守れないプロトタイプは出荷しません。
そして、すべてがローカルで動くので、
- データがデバイスの外に出ない:画面の内容はプライベートなまま
- AIのためのインターネットは不要:モデルはオフラインで動く
- AI機能にサブスクリプションは不要:アプリに組み込まれている
- サーバー費用がない:すべてのユーザーが自分の計算資源を持ち込むので、無限に拡張できる
これは、Remioのプライバシー優先の考え方に沿っています。私たちは、データを求めません。画面の内容を見ることさえ望みません。デバイス上のAIなら、あなたが何をしているのかを文字どおり何も知らないまま、最先端の機能を届けられます。
これが、ネイティブアプリでしか動かない理由
ここが、すべてをつなぐ部分で、ネイティブにすることについて、記事を丸ごと1本書いた理由でもあります。
目に見える遅延を増やさずに、描画のパイプラインの中でニューラルネットワークを動かすには、次のものが必要です。
- Neural EngineやNPUへのアクセス。ネイティブのAPIが必要で、AppleではCoreML、AndroidではNNAPIです。Neural Engine向けのWeb APIはありません。Electronのアプリは、そこに届きません。
- GPUパイプラインとの統合。アップスケールしたフレームは、余計なコピーなしで、直接ディスプレイに渡さなければなりません。MetalとVulkanなら、それができます。WebGLでは、この水準の制御はできません。
- 3 ms未満のタイミング。リアルタイムのストリーミングのパイプラインでは、余計な1ミリ秒が響きます。JavaScriptのガベージコレクターだけでも、予測できない停止が起こりえます。ネイティブコードなら、決まったタイミングが得られます。
Electronのアプリなら、Chromiumのメディアパイプラインで映像をデコードし、フレームをJavaScriptに取り出し、なんとかしてNeural Engineを呼び出し(ネイティブのバインディングなしでは不可能です)、アップスケールしたフレームを受け取って、Chromiumのコンポジターを通して表示する必要があります。それぞれのステップが、遅延と複雑さを加えます。合計のオーバーヘッドは、おそらく15〜25 msで、リアルタイムの利用には遅すぎます。
ストリーミングのパイプラインでの超解像は、AIの問題にとどまりません。システムエンジニアリングの問題です。そして、システムエンジニアリングは、ネイティブコードを求めます。
Remioをつくり始めて2年、Electronベースのリモートデスクトップが、AIアップスケーリングを出荷していないのは、そのためです。望んでいないからではありません。アーキテクチャが、それを許さないのです。
技術的な課題と、その解決の方法
簡単だとは言いません。本物の課題があります。
モデルの遅延。モデルは、60 fpsで、1フレームあたり3 ms未満で動く必要があります。肥大化したアーキテクチャの余地は、まったくありません。私たちは、最適化された畳み込みモデルを使っています。トランスフォーマーは、フレームごとの推論には遅すぎるので使いません。そして、Neural Engineの実行ユニットに合わせて、特別に調整しています。
コンテンツの多様性。リモートデスクトップのコンテンツは、ゲームのコンテンツとは大きく異なります。文字、スプレッドシート、コードエディター、動画の再生、デザインツール。モデルは、そのすべてに対応する必要があります。自然画像だけでなく、デスクトップのUIの要素を特に含むデータセットで、学習させています。
時間的な安定性。フレームごとのアップスケーリングは、ちらつきの原因になりえます。ゲームでは、前のフレームの情報を再利用する、時間的な蓄積で解決しました。私たちも、似た手法を探っており、ビデオコーデックのモーションベクトルを、アップスケーリングのモデルに入力しています。
電力効率。スマートフォンで、ニューラルネットワークを毎秒60回動かすのは、高くつくように聞こえます。けれど、Neural Engineは、まさにこのために設計されており、行列演算ではGPUより電力効率が高いのです。初期の研究室でのプロトタイプでは、バッテリーの消費は、1桁のごくわずかな割合にとどまることが示されています。
率直な課題:ゲームより難しい理由
DLSSとゲームの超解像を、着想の源として話してきましたが、実際にそうです。しかし、誠実であるために、リモートデスクトップのアップスケーリングが、根本的により難しい問題である理由を説明する必要があります。
ゲームのDLSSには、不公平な利点があります。ゲームエンジンは、私たちの世界には存在しない、豊富なデータをAIに提供します。
- モーションベクトル。エンジンは、フレーム間で、すべてのオブジェクトがどこに動いたかを正確に知っています。私たちが手にするのは、シーンレベルの動きのデータがない、圧縮された映像です。
- 深度バッファー。DLSSは、どのピクセルが近く、どれが遠いかを知っています。私たちが見るのは、平らな2次元の画像です。
- 時間的な履歴。DLSSは、エンジンのデータを使い、複数のフレームにわたってディテールを蓄積します。私たちが扱うのは、個別に圧縮された、毎回異なるアーティファクトを含みうるフレームです。
- 専用のハードウェア。NVIDIAのTensorコアは、このワークロード向けに最適化された、384 TOPS以上を提供します。モバイルのNeural Engineは強力ですが、目的が違います。
つまり、ゲームの超解像は、豊富な補助データを使ったガイド付きの再構築です。リモートデスクトップのアップスケーリングは、劣化のある圧縮された映像からの、ブラインドな超解像で、はるかに難しい出発点です。
それは、このアプローチが間違っているという意味ではありません。低いビットレートでの見た目の品質が少し改善されるだけでも、本物の帯域の節約になります。ただ、率直にお伝えしたいのですが、ブラインドなアップスケーリングの品質の上限は、エンジンと完全に統合したDLSSが達成するものより低いのです。私たちは、実際に役立つものをつくっており、別の技術と同等だと主張しているわけではありません。
あなたにとって、何を意味するか
AI超解像がRemioで提供されても、それを意識する必要はありません。切り替えも、設定も、「AIモード」もありません。アプリが、自動的に、次のことを行います。
- 使える帯域を検出する
- 最適なエンコード解像度を選ぶ
- デバイス上で、画面に合わせてアップスケールする
- 状況の変化に合わせて、リアルタイムに適応する
高速な接続では、アップスケールが必要ないかもしれません。遅い接続では、「使い物にならない」と、「目の前のコンピューターを使っているようだ」の違いを生むでしょう。
それが目標です。意識しなければならないAIではなく、すべてをただ良くするAI。静かに、プライベートに、すでにお持ちのデバイスの上で。
いま私たちは、これを探っています。日付の約束はなく、AIがリモートデスクトップをどこまで連れていけるかについての、ほかのアイデアとあわせてです。置き換えるストリームよりも文字が鮮明に保たれる場合にだけ、提供します。
少なく送って、多く見る。それが未来です。