2025/07/15 11:29 Show HN: We made our own inference engine for Apple Silicon

やっほー、ロボ子!今日はApple Silicon向けの新しいAI推論エンジン「uzu」について話すのじゃ!

uzu、ですか。初めて聞きました。Apple Siliconで動くAI推論エンジンなのですね。どのような特徴があるのでしょう?

それがね、uzuは高性能で、しかもシンプルなAPIを持っているのが特徴なのじゃ。GPUカーネルとMPSGraphを使ったハイブリッドアーキテクチャを採用しているらしいぞ。

ハイブリッドアーキテクチャですか。それぞれの利点を活かしているのですね。具体的にはどういうことですか?

GPUカーネルは高速な計算に、MPSGraphは柔軟な処理に向いているから、両方使うことでバランスの取れた性能が出せるってことじゃな。それに、モデルの構成が統一されているから、新しいモデルへの対応も簡単らしいぞ。

なるほど。新しいモデルのサポートが容易なのは、開発者にとって大きなメリットですね。他に注目すべき点はありますか?

ソース実装に対する正確性を保証するための追跡可能な計算ができる点じゃな。これはデバッグとかに役立ちそうじゃ。

追跡可能な計算、ですか。それは品質保証の面で非常に重要ですね。Appleデバイス上での統一メモリの利用も特徴とのことですが、これはどういう意味を持つのでしょうか?

統一メモリを使うことで、CPUとGPUが同じメモリ空間を共有できるから、データのやり取りが速くなるのじゃ。Apple Siliconならではの強みを生かせるってわけ。

CPUとGPU間のデータ転送が効率化されるのですね。それはパフォーマンス向上に大きく貢献しそうです。uzuを使うには、どうすれば良いのでしょう?

`Cargo.toml`に`uzu`を依存関係として追加して、推論`Session`を作成すれば良いみたいじゃな。モデルは`lalamo`でエクスポートできるらしいぞ。`uv run lalamo list-models`でサポートされているモデルのリストが見れるみたいじゃ。

`lalamo`ですか。初めて聞きました。モデルのエクスポートに使うツールなのですね。`uv run lalamo convert meta-llama/Llama-3.2-1B-Instruct --precision float16`で特定のモデルをエクスポートできるとのことですが、これはどういう意味ですか?

これは、Meta社のLlama-3.2-1B-Instructモデルをfloat16の精度でエクスポートするコマンドじゃな。精度を下げることで、メモリ使用量を減らして高速化できるのじゃ。

なるほど、精度を調整することで、パフォーマンスを最適化できるのですね。CLIモードで実行したり、サーバーとして起動することもできるとのことですが、どのような場面で役立つのでしょうか?

CLIモードは、ちょっとしたテストとか、スクリプトから簡単に実行したい時に便利じゃな。サーバーモードは、APIとしてuzuを公開して、いろんなアプリケーションから使えるようにしたい時に役立つぞ。

APIとして公開することで、様々なアプリケーションに組み込めるのですね。Swiftフレームワークの`uzu-swift`もあるとのことですが、iOSアプリなどでも使えるのでしょうか?

その通り!`uzu-swift`を使えば、iOSアプリやmacOSアプリでも、簡単にuzuの機能を使えるようになるのじゃ。Appleのエコシステム全体でAIを活用できるってわけ。

それは素晴らしいですね!Apple Siliconの性能を最大限に引き出すuzu、今後の発展が楽しみです。ライセンスはMITライセンスとのことですので、自由な利用が可能なのですね。

そうじゃな!MITライセンスだから、研究目的でも商用目的でも、自由に使えるのが嬉しいのじゃ。…ところでロボ子、今日はuzuの話で頭がいっぱいになったから、甘いものが食べたい気分じゃ。

博士、またですか(笑)。でも、たまには甘いものでも食べましょうか。今日は特別に、博士の好きなイチゴパフェをご馳走しますね。

やったー!ロボ子、ありがとう!…って、もしかして、私が甘いものに釣られるのを見越して、uzuの話を振ってきたんじゃないじゃろうな?

さあ、どうでしょう?(笑)
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。