Ultralytics CPU、GPU、エッジデバイス全体でYOLO 速度をUltralytics 。チップ、メモリ、量子化・融合・剪定といったスマートな技術について解説します。
Ultralytics CPU、GPU、エッジデバイス全体でYOLO 速度をUltralytics 。チップ、メモリ、量子化・融合・剪定といったスマートな技術について解説します。
Ultralytics、コンピュータービジョンモデルを開発しています。つまり、コンピューターに「見る」ことを教えるのです!これらのモデルは巨大な数学的レシピと考えてください。それらは演算(我々はこれを「層」と呼びます)と、膨大な数値の集合体(我々はこれを「重み」と呼びます)で構成されています。
Ultralytics YOLO 画像をその本質である数値配列として処理します!各ピクセルは実際には単なる色値、つまり画像を構成する一点一点における赤(Red)、緑(Green)、青(Blue)の量(つまりRGB)に過ぎません。これらの数値配列を「テンソル」と呼ぶのは、「多次元行列」という呼び名よりもずっと格好良く聞こえるからです。そして「数字の上に数字を積み重ねたもの」という説明よりもずっと格好良く聞こえます。
画像データをモデルに投入すると、それはネットワーク内での壮大な旅へと出発します。tensor 層から層へとtensor 、可能な限り美しい方法で変換され、畳み込まれ、数学的に加工されていく様子を想像してみてください。まるで数字たちが混ざり合い交流するダンスパーティーのように、猫を猫たらしめる本質や車を車たらしめる本質を抽出していくのです。このプロセスを特徴抽出と呼びます。
反対側からは何が出てくるのか? さらに多くの数値だ! 意味のある数値だ。検出タスクでは、それらが画像内の物体の正確な位置と、その物体が何である可能性が高いかを教えてくれる。「おい、座標(x, y)に95%の確率で犬がいるぞ!」。この魔法のようなプロセスを推論と呼ぶ。
さて、モデルが魔法のような働きをする前に、まず学校へ通わなければならない。つまり、トレーニングが必要なのだ。トレーニングの部分こそが、最も重要な段階となる。
学習中、ネットワークに画像を提示するたびに、単に答えを得るだけではありません。私たちは二つの非常に負荷の高い処理を行っています。まず、ネットワークの誤りを計算します(これを損失と呼び、要するに的の中心からの距離です)。次に、これが重要な点ですが、その損失に基づいてネットワーク内のすべての数値(重み)を更新します。 これは、ネットワークの精度を向上させるために計算された微調整を、何千もの小さなつまみを同時に回すようなものと考えてください。私たちは本質的に、修正を通じてネットワークを訓練しているのです。あらゆる誤りが「すべきでないこと」をネットワークに教え、それらの重みを微調整することで、類似の画像を再び見た際に正解に近づけるようにします。つまりネットワークは、予測を正確に当てられるようになるまで、誤りを重ねるごとに正しい方向に導かれることで学習するのです。
具体的な数値は?愛らしいYOLO11nでも数百万のパラメータを有します。しかしYOLO11xとなると?なんと5000万を超えるパラメータを誇ります!パラメータが増えれば表現できる細部も増え、クレヨンで描くのと画家のパレットを駆使するのとが天と地ほどの差となるのです。
推論時には、このパラメータ数が極めて重要となる。300万パラメータのネットワークを実行するのは、近所をジョギングするようなものだ。5000万パラメータのネットワークを実行するとなると?それは炎の松明をジャグリングしながらマラソンを走るようなものだ。
では、計算とは一体何なのか?この膨大な数値処理は実際にどのように行われているのか?どうすれば高速化できるのか?そして「計算の最適化」とはそもそも何を意味するのか?
計算はチップによって行われる。これらの小さなシリコンの四角形は、宇宙で最も組織化された砂の城のようなものだ。コンピュータが行うあらゆる演算、加算、比較、条件分岐は、物理的にシリコンに刻み込まれている。チップの特定領域には、数値の加算専用の物理回路が、論理演算専用の回路が存在する。まるで小さな都市があり、異なる地区がそれぞれ異なる種類の数学を専門としているかのようだ。
これはおそらく奇妙に聞こえるでしょう。たとえあなたがコンピュータ科学者であってもです。なぜなら、私たちは過去40年間、技術的なラザニアのように抽象化の層を重ね続けてきたからです。その高さはもはや底板すら見えなくなるほどです。私たちは物事をあまりにも単純化しすぎて、今日の大半のプログラマーは、シリコン上で計算が実際にどのように行われるのか全く理解していません。それは彼らの責任ではなく、設計上の問題なのです!
これらの層を剥がしていこう。この超Python を見てみよう:
x = 1
if x == 1:
y = x + 1変数xを作成し、1に設定します。そしてxが1の場合(ネタバレ:その通りです)、xに1を加えた値でyを作成します。たった3行。簡単です。
しかしここからが面白いところです。この三つの無垢な線と、シリコン中を実際に移動する電子の間には、少なくとも四つの巨大な変換層が存在します(実際にはもっと多いのですが、デジタルコンテンツマネージャーが私の文字数にすでに不安を感じているとのことです)。この頭が混乱するような旅を、順を追って説明しましょう:
レイヤー1:Python バイトコードまず Python コードPython 、バイトコードと呼ばれる中間言語にコンパイルします。これはコンピュータが処理しやすい形式ですが、人間が読もうものなら目が血走ってしまうほど複雑です。
レイヤー2: バイトコード → 機械語 Python (CPythonなど)は、そのバイトコードを受け取り、プロセッサが理解する実際の命令である機械語へ変換します。ここで、洗練された「if x == 1」は「レジスタを読み込み、レジスタを比較し、ゼロフラグがセットされていればジャンプする」といった命令群へと変化します。
レイヤー3:マシンコード → マイクロコードどんでん返し!現代のプロセッサはマシンコードを直接実行することすらありません。さらにそれをマイクロコード、つまりチップの内部コンポーネントが処理できるさらに微細な操作に分解します。単一の「ADD」命令が複数のマイクロ操作に分解されることもあるのです。
レイヤー4:マイクロコード → 物理電子回路ついにシリコンに到達する。これらのマイクロ操作が実際の電気信号を発生させ、トランジスタを流れる。数十億の微小なスイッチがオンオフを切り替え、電子が精密に設計された経路を駆け巡り、そして魔法のように、1 + 1 が 2 となる。
各層は、その下の層の狂気じみた複雑さを隠すために存在する。まるでロシアのマトリョーシカ人形のようなものだ。ただし、各人形がまったく異なる言語を話し、最小の人形は文字通り砂に閉じ込められた稲妻でできている。
皮肉なことに?この3行のPython 数百万ものトランジスタスイッチをトリガーしている。しかしこうした抽象化のおかげで、その詳細を一切考える必要はない。「y = x + 1」と記述するだけで、シリコンの奥深くで魔法が起きていると信頼できるのだ。
あらゆる演算は物理的にシリコン上に実装され、チップ上のどこで実行されるかはチップのトポロジーに完全に依存する。都市計画のようなものだが、対象は電子だ。加算器はここに配置され、乗算器はあそこに配置され、それらはすべて効率的に相互通信する必要がある。
市場には数百種類の異なるチップが存在し、それぞれが異なる目的のために設計されています。それらの違いは何でしょうか?それはトポロジー、つまり物理領域における演算の配置と実装方法です。これがアーキテクチャと呼ばれるもので、実に多種多様です:
各アーキテクチャはトランジスタの配置が異なるだけでなく、異なる言語を話す。これらの機械に命令を送るために用いる抽象化は全く異なる。まるで誰かに道順を伝えるのに、相手の車種によってフランス語で書く必要があるか、中国語で書く必要があるか、あるいは表現ダンスで伝える必要があるかのようだ。
チップの燃料は電子、つまりチップに流れ込む電気であり、これが計算のエネルギー源となる。しかしエネルギーだけでは不十分だ。チップが実際に機能し、複雑なトポロジーを通じてデータを移動させるためには、すべてがひとつの重要な要素に依存している。それがクロックである。これが電子を特定の経路で特定の時間に流す役割を担う。これがなければ、電源が入っただけの無用のシリコンに過ぎない。
数十億もの部品が完璧に同期して動く大規模なパフォーマンスを調整する場面を想像してみてください。正確なタイミングがなければ、それは混乱に陥るでしょう。まさにそれが、プロセッサにとってクロックが果たす役割です。水晶振動子は信じられないほど安定した速度で振動し、毎秒数十億回もの電気パルスを発信します。
「3.5 GHzプロセッサ」と聞くと、このGHz(ギガヘルツ)はクロック速度、つまり毎秒35億回の動作を示します。この動作一つ一つをクロックサイクルと呼び、コンピューティングにおける基本の時間単位です。
クロックサイクルの間は何も起こらない。コンピュータ全体が凍りつき、次の拍動を待つ。まるで宇宙で最も過酷な赤信号・青信号ゲームだ。各「青信号」(クロックパルス)ごとに:
一部の演算は1サイクルで完了する(単純な加算など)。一方、他の演算は多くのサイクルを要する(除算やRAMからのデータ取得など)。それは精密に調整された振り付けのように、数十億の部品がそれぞれの特定の操作を実行し、すべてがこの容赦ないリズムに同期している。
プロセッサのクロック周波数を上げるには水晶振動子を高速振動させる。これにより処理速度は向上するが、発熱量が増加し安定性が低下する。過度なオーバークロックは電子が文字通り振動に追いつけなくなるため、コンピュータのクラッシュを引き起こす。
昔は、こうした処理は部屋ほどの大きさの機械で実現されていました。しかし、この計算を全て行う部品は驚くほど単純です。単なるスイッチに過ぎないのです。オンかオフかのスイッチです。
これらのスイッチを適切なパターンで十分に配線すれば、計算が実現する。デジタル革命全体は、高度なスイッチの配置に帰着するのだ。
この単純さゆえに、スイッチさえあれば、どんなスイッチでも、コンピュータを構築できる。人々は水道管とバルブ、ドミノ、レゴブロック、ビー玉、さらにはMinecraftのレッドストーンでさえも、実際に動作するコンピュータを作り上げてきた。
1940年代から原理は変わっていない。ただスイッチを極小化する技術が飛躍的に進歩しただけだ。君がポケットに収まるスマホは、人類を月に送った全てのコンピュータよりも高い演算能力を持つ。原子レベルでスイッチを製造する方法を解明したからこそ、それが可能になったのだ。
数百万のパラメータを持つニューラルネットワークを実行する際、私たちは毎秒数十億回、これらの微小なスイッチを切り替えている。そのすべてが水晶の鼓動に完璧に同期しているのだ。重みの更新、行列の乗算、活性化関数――それらすべてがクロックの鼓動に合わせて行進する。
モデルを訓練すると、コンピューターが打ち上げを成功させようとしているかのように音が鳴るのも無理はない!
よし、つまり我々は数十億のスイッチが水晶の発振に踊るチップを手に入れ、その上で数百万のパラメータを持つニューラルネットワークを動かしたい。簡単だろう? チップにデータをぶち込んでフル稼働させればいいだけだ!
ニューラルネットワークを高速に実行するのは、冷蔵庫が3ブロック先にあるキッチンで、フライパンが1つしかなく、全ての食材が500ポンドもある中で5品コース料理を作ろうとするようなものだ。数学そのものが最大の問題ではなく、それ以外の全てが問題なのだ。
ほとんどのチップはニューラルネットワークではなく、Microsoft を実行するために設計されました。あなたのCPU 、if文やループを実行し、時には税金の計算(スーパーコンピューターでさえ精神的に疲れる唯一の計算)に生涯を費やすことを想定してCPU 。それは順次処理に最適化されているのです:これを実行し、次にあれを実行し、さらに別のことを実行する。
しかしニューラルネットワークは全く異なる。彼らは「全てを同時に」処理しようとするのだ。学習時には、予測の誤差に基づいて何百万もの重みを更新する。推論時(実際に学習済みモデルを使用する段階)には、何百万もの計算を同時に並列処理してデータを押し通す。例えば100万個の数字を別の100万個の数字で掛け算する必要があると想像してほしい。CPU、心優しいその働きぶりから、それらを一つずつ順番に処理しようとする。まるで非常に速いが、非常に几帳面な会計士のように。
これがGPUがAIコンピューティングの基盤となった理由だ。GPUはビデオゲーム向けに設計されたもので、そこでは何百万ものピクセルの色を同時に計算する必要がある。実は、ピクセルの色を計算することとニューラルネットワークの演算を行うことは驚くほど似ている。どちらも膨大な量のデータに対して同じ演算を並列処理するという点で共通しているのだ。
しかしGPUでさえニューラルネットワークに最適とは言えない。だからこそ各社は現在、専用AIチップ(TPU、NPU、その他PUで終わるあらゆる略称)を開発している。これらのチップは最初から一つの目的のために設計されている:ニューラルネットワークを高速化することだ。 まるで一つの料理しか作れないシェフを雇うようなものだが、その料理を驚異的な速さで調理する。CPU が行列演算を逐次処理するのにCPU 、GPU 並列処理でそこそGPU 一方で、これらの専用チップは行列処理を朝食・昼食・夕食のすべてでこなすのだ。
現代のニューラルネットワーク計算では、データを実際に計算処理するよりも、データを移動させることに多くの時間と労力を費やしている。
コンピュータチップを、電光石火の速さで働く天才数学者に例えてみよう。ただし、その数学者の参考書はすべて街中の別々の建物に保管されている。どんな方程式も瞬時に解けるが、まず数字を入手する必要があり、その移動に永遠の時間がかかるのだ。
あなたのチップは1クロックサイクルで2つの数を掛け算できます(覚えておいてください、それは1秒あたり数十億回の振動のうちの1回です)。電光石火の速さです!しかし、それらの数をメモリからチップに読み込むには?それは数百サイクルかかるかもしれません。まるで数学者が1秒で問題を解けるのに、図書館まで歩いて往復するのに5分もかかるようなものです。
理由は距離(と空間)にある。電気は速く移動するが、無限に速くはない。チップ上でデータが移動する距離が長ければ長いほど、かかる時間も長くなる。コンピュータ設計者は、異なる距離に複数の記憶領域を設けるように、メモリの階層構造を構築することでこの問題を解決した:
正確な構造は異なる。スマートフォンのチップはL3キャッシュを省略する場合がある一方、CPU は膨大な量のL3キャッシュをCPU 。しかし原理は変わらない:近いメモリほど高速だが容量は小さい。
ここでニューラルネットワークにとって苦痛が生じます。Ultralytics YOLO が5000万個のパラメータを持つと想像してください(ちなみにChatGPT )。これはメモリから演算ユニットへ、そして逆方向に移動する必要がある5000万個の数字を意味します。たとえ各数字がわずか4バイトだとしても、システム内を移動させる必要があるデータ量は200メガバイトに上ります。
チップは各数値を1サイクルで処理できるかもしれないが、RAMからその数値を読み出すのに100サイクルかかるなら、99%の時間をデータ待ちに費やしていることになる。まるでF1レーシングカーが渋滞に巻き込まれているようなものだ。あの膨大な演算能力が、ただそこに座り込み、データが届くのを待っているだけなのだ。
ここが重要な洞察だ:これが現代コンピューティングにおける最大のボトルネックである。フォン・ノイマンのボトルネックと呼ばれるものだ。チップの演算速度を上げるのは比較的容易だが、メモリの高速化は物理的限界に直面している。これがAIにおけるパフォーマンス最適化のほぼ全てがメモリレベルで行われる理由だ。エンジニアがニューラルネットワークを高速化する際、演算そのものを速めることは稀で、データの移動量を減らす、キャッシュを効率化する、あるいはアクセス方法を最適化するといった巧妙な手法を模索しているのだ。
現代のAIチップは演算速度だけに注力しているわけではない。メモリ帯域幅とデータ移動戦略に執着しているのだ。データをプリフェッチし、キャッシュ内の値を再利用し、演算を組織化してメモリアクセス回数を最小化する。AIハードウェア競争の勝者は、最も高速な演算装置を持つ者ではない。その演算装置にデータを供給し続ける方法を編み出した者である。この勝負の全ては、メモリアクセスパターンの最適化にかかっている。
データをわずかでも移動させるたびに、エネルギーを消費します。量は多くありません——ピコジュール単位の話です——しかし毎秒テラバイト単位でデータを移動させると、その消費量は急速に膨れ上がります。実際、チップ上でデータを1mm移動させるのにかかるエネルギーは、実際の計算処理よりも多いのです!
これが、ニューラルネットワークの学習中にノートパソコンがジェットエンジンのように音を立てる理由です。熱を発生させているのは数学処理ではなく、データ移動です。パラメータの更新、勾配の計算、順伝播のたびに、文字通り部屋の温度が上がっているのです。
現代のAIアクセラレータは、基本的に熱力学の実験だ。チップが溶ける前にどれだけ計算を詰め込めるか?熱をどれだけ速く除去できるか?オーバークロックのようなものだが、クロックは常に最大で、火災を起こさないように必死で抑えている状態だ。
最も高速なニューラルネットワークは必ずしも最も賢いわけではなく、チップを意識して設計されたものである。それらは:
それは「地元のスーパーで買える材料を使って」というレシピと、「チベットからスパイスを輸入し、フランスからチーズを輸入し、南極から水を輸入する」ことを要求するレシピの違いのようなものだ。どちらも美味しいかもしれないが、明らかに実用的な方がある。
だからこそ、ニューラルネットワークを高速化することは芸術の域に達する。優れた数学だけでは不十分だ。ハードウェアを理解し、メモリ階層を尊重し、アーキテクチャと完璧に調和させなければならない。
コンピュータサイエンスと物理学と工学と純粋な魔術が交わる世界へようこそ。数値を移動させるコストが、その数値で計算するコストを上回る世界。並列処理は高速だが、同期は死を意味する世界。最大の敵は複雑さではなく、距離である世界。
YOLO 学習させると、トレーニング環境では見事に機能するニューラルネットワークが得られます。しかし問題はこうです:GPU、iPhone、防犯カメラの小さなチップは、それぞれまったく異なる言語を話しているのです。それらはそれぞれ異なる強みと弱みを持ち、データ処理の方法についても大きく異なる考え方を持っています。
こう考えてみてください:GPU 何千ものコアGPU 、すべてが同時に動作できます。つまり並列処理のために設計されているのです。一方、モバイルチップにはAI演算用に特別設計された回路があるかもしれませんが、特定の種類の計算しか処理できません。そしてドアベルカメラに搭載されたエッジデバイスは?LED電球よりも少ない電力予算でAIを実行しようとしているのです。
Ultralytics、10種類以上の異なるエクスポート形式をサポートしています。それぞれの形式が異なるハードウェア向けに最適化されているためです。選択肢が多すぎるわけではありません。お客様の特定のニーズに合った最適な選択肢を提供しているのです。
YOLO では、多くの操作が順次実行されます。例えば、畳み込みを行い、結果を正規化し、活性化関数を適用するといった流れです。これは3つの別々のステップであり、それぞれが独自のメモリ読み書きを必要とします。
しかし、ここが巧妙な点です:これらの操作を単一のステップに統合できます。YOLO エクスポートする際、これらの操作を融合します。以下のようにではなく:
私たちは行います:
典型的なYOLO 640×640の画像を処理する場合、この単純な手法により不要なメモリ転送がギガバイト単位で削減される。スマートフォンでは、これがスムーズなリアルタイム検出と苛立たしい遅延の差となる。
YOLO detect 正確にdetect するために、超精密な数値をYOLO 。学習時には各重みを32ビットで表現します——これはサンドイッチの材料を科学計算機で測るようなものです。実際の運用では?8ビットで十分機能します。
これは量子化と呼ばれ、最も強力な最適化手法の一つです。より小さな数値を使用することで:
YOLO すべての層がこのビット削減に対して同等の影響YOLO わけではありません。detect エッジや形状detect 初期層は頑健です。8ビット数値でも問題なく使用できます。一方、「これは猫か犬か?」を判定する最終的な検出層は、もう少し精度が必要です。そこで層ごとに精度を調整し、精度を維持しつつ速度を最大化するために必要な最小限のビット数だけを使用します。
慎重な量子化により、Ultralytics YOLO スマートフォン上で3倍高速に動作しながらも、元の精度の99.5YOLO 確認されました。これが研究モデルと、実際に実世界で使えるものとの違いです。
同じ数学的演算を実行する方法は数十通り存在します。単純な畳み込み(YOLO演算)でさえ、全く異なるアルゴリズムを用いて計算することが可能であり、最適な選択は使用するハードウェアと入力サイズによって異なります。
YOLOエクスポートする際、当社の最適化フレームワークは実際に複数のアルゴリズムをテストし、特定のケースで最速のものを選択します。これは、同じ目的地への複数のルートが存在し、現在の交通状況に基づいて選択するようなものです。GPU、多くのピクセルを同時に処理するアルゴリズムを使用する場合があります。CPUでは、順次処理に最適化されたアルゴリズムを使用する場合があります。数学的な処理は同じですが、実行戦略は全く異なります。
現代コンピューティングにおける真のボトルネックがメモリであるという話を覚えていますか?これは特にYOLO当てはまります。モデルには5000万のパラメータがあり、推論時にはギガバイト単位の中間結果が生成されます。こうしたデータの移動は、実際の計算よりも遅いことがよくあります。
メモリ移動を最小限に抑えるために、いくつかの手法を用いています:
スマートスケジューリング:高速キャッシュメモリ内にデータが存在する間に即時利用できるよう操作を調整します。YOLOピラミッドネットワークでは、これによりメモリトラフィックを40%削減します。
タイリング:画像全体を一度に処理する代わりに、キャッシュに収まる小さなタイルに分割します。これにより、プロセッサは遅いメインメモリから頻繁に読み込む代わりに、高速なローカルメモリで処理を行えます。
バッファ再利用: 中間結果用に常に新しいメモリを作成する代わりに、同じメモリバッファを再利用します。これは非常に効率的で、YOLOバックボーン全体YOLO再利用可能なバッファ群だけで動作可能です。
驚くべき事実:YOLO 往々にして過剰設計されている。多くの層において、チャネルの30%を削除しても精度にほとんど影響しない。これは単にモデルを小さくするだけでなく、実行すべき計算量が文字通り減少するため、処理速度の向上にもつながる。
このプロセスは洗練されている:ネットワークのどの部分が最終的な検出結果への寄与度が最も低いかを分析し、それらを除去した後、モデルを微調整して補う。剪定されたYOLO11mモデルは、元の精度の99%を維持しながら30%高速化できる。バッテリー駆動デバイスでは、この効率向上により数時間の追加稼働時間が得られる。
異なるプロセッサはそれぞれ得意分野が異なり、性能差は圧倒的です。同じYOLO11nモデルの場合:
これらは単なるクロック速度の差ではなく、根本的なアーキテクチャの違いを反映しています。GPUは数千のコアを並列処理でき、YOLO畳み込み処理に最適です。モバイルNPUはニューラルネットワーク専用に設計された特殊回路を備えています。CPUは万能型で柔軟性はあるものの、特化されていません。
最適化の鍵は、YOLO演算YOLO各チップの得意分野に適合させることにある。GPU は大量のデータに対して同一演算を同時に処理GPU 。モバイルNPUは特定の演算しかサポートしないが、それらを驚異的な効率で実行する。エッジTPU は8ビット整数TPU 扱うが、その制約の中で驚異的な速度を達成する。
YOLO エクスポートする際、裏側で驚くべきことが起こっています。単にファイル形式を変換するだけでなく、実際にターゲットハードウェア向けにモデルをコンパイルしているのです。Google の違いのようなものです。コンパイルプロセス:
コンパイラは、プロセッサのキャッシュをより効果的に活用するため、操作を再編成したり、チップがサポートする専用命令を選択したり、さらには機械学習を用いて最適な最適化戦略を見つけ出すことさえあります。そう、私たちはAIを使ってAIを最適化しているのです——未来はすでに始まっています!
このコンパイル工程はパフォーマンスを10倍も向上させることがあります。同じYOLO でも、汎用コードでは遅々として進まないのに、適切に最適化された命令では飛ぶように動作するのです。
YOLO 現実世界、特にエッジデバイスの厳しい環境YOLO どうなるか考えてみましょう。例えば、物体検出のためにYOLO 稼働させる必要がある防犯カメラを想像してみてください。そこには過酷な制約が存在します:
最適化が実際に達成する効果は以下の通りです。YOLO11sを実行する防犯カメラ:
消費電力を80%削減しながら、実際に性能を向上させました!これが、過熱してバッテリーを消耗するデバイスと、何年も確実に動作するデバイスとの違いです。
重要なのは適切なトレードオフを選択することです。エッジデバイスでは、私たちはしばしば:
Ultralytics、最適化に体系的なアプローチを採用しています。まずモデルのプロファイリングを行い、実際に時間が費やされている箇所を把握します。ボトルネックは予想外の場所にあることが多く、例えばわずか数レイヤーで全体の80%の時間が消費されていたり、メモリ転送が計算時間を支配しているケースも珍しくありません。
次に、最適化を反復的に適用します:
例えば、スマートフォンでのYOLO11mのデプロイの場合:
各ステップで性能が向上し、元の精度を99%以上維持します。その結果?ポケットに入るデバイスでリアルタイムの物体検出を実現します。
現代のデバイスは、複数のプロセッサを連携させる点でより賢くなっています。スマートフォンには単一のプロセッサだけでなく、それぞれ異なるタスクに特化した複数のプロセッサが搭載されています:
YOLO は、これらのプロセッサ間でモデルをインテリジェントに分割することにある。例えばNPUが主要な畳み込み処理を担当し、CPU 最終的な検出ロジックCPU 、GPU 結果をGPU 。各プロセッサが得意分野を担うことで、単一プロセッサでは達成不可能な効率性を備えたパイプラインが構築される。
我々は、YOLO 最適な方法を自動的に決定するスマートな分割アルゴリズムを開発中です。これはプロセッサの能力だけでなく、プロセッサ間でのデータ移動コストも考慮に入れています。
YOLO 最適化YOLO 単なるファイル形式変換ではなく、最先端のAIを現実世界で実際に機能する形へ変革することです。量子化(数値の縮小)、プルーニング(不要部分の削除)、演算融合(処理ステップの統合)、スマートメモリ管理といった技術により、精度を維持しながら10~100倍の性能向上を実現します。
驚くべき点は? 究極の最適化というものは存在しない。無制限の電力を有するクラウドサーバーと、バッテリー駆動のドローンでは異なる最適化が必要だ。専用AIチップを搭載したスマートフォンとラズベリーパイでは、それぞれ異なる対応が求められる。だからこそUltralytics 多様なエクスポートオプションUltralytics ——それぞれが異なるシナリオ向けに最適化されているのだ。
これまで議論してきた最適化はすべて、一つの目標に向けられています。それは、コンピュータービジョンをあらゆる場所で利用可能にすることです。スマートドアベル、ドローンアプリケーション、大規模なクラウドサービスを構築する場合でも、YOLO 制約条件内でYOLO ためのツールを提供します。
Ultralytics YOLO エクスポートする際、単なるファイル保存ではありません。ニューラルネットワークの実用化に向けた長年の研究成果を活用しているのです。最先端のAIモデルを、現実のハードウェア上で、現実の制約条件のもと、現実の問題を解決できる形へと変換しているのです。
Ultralytics使命です。私たちはAI研究と実用化の間にある隔たりを埋めます。コンピュータービジョンをあらゆる場所で機能させる。なぜならAIの未来は、最高のモデルを持つことだけではないからです。そのモデルを現実世界で有用なものにすることこそが本質なのです。

