読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

Gemini in Chromeのショートカットに💢

最近、Geminiがお気に入りです。実際、無課金勢には今一番性能がいい気がします。

で、しばらく使っていたSafariをやめてChromeに戻りました。Gemini in Chromeのためです。
見ているサイトの話ができるっていいですよね。AIアプリにURL貼っても読めないことが多いし。

ところが、Gemini in ChromeはグローバルにCntl-Gをフックしてショートカットにします。
Cntrl-Gってエディタの必須ショートカットですよ??何してくれるん?です。

Chromeの設定の「AIイノベーション」から「Gemini in Chrome」の設定を開くことができます。
そこにショートカットの設定があるので、他のキーかショートカットなしにすればOKです。

AFM 3 Core Advancedって結局何?

WWDC 2026で一番気になったのがAFM 3 Core Advancedでした。
どうも、12GB以上のDRAMを持つ端末限定で、20B級VLMが動くようです。
20B級は知識としても相当です。これはすごい!
ウェイトをDRAMに全部置かずに決めたMoE分SSDから読むとか。

でも、なんかもやもやするんですよねぇ。
少なくともApple純正機能としては、そのAFMを使うかをユーザーに選ばせる気はなさそうです。
必要に応じて適したモデルを使う。
ということは、Core Advanced未対応の端末の場合、処理はPCC(Private Cloud Compute)が処理することになりそう。
Cloudなので当然、レイテンシーとか悪くなり、プライバシーも若干心配になります。
でも応答が稚拙になることはなさそう。
もしかしたらPCCではなくCoreにフォールバックするかもしれなくてその場合、応答は稚拙になるはずですが。

もしCoreにフォールバックしなかったら、なんかレイテンシーを忘れると、Core Advancedって、クラウド代大変だから12GB DRAM端末は自分で計算してくれっていうせこいサービスに思えませんか?

もしかしたら、Core Advanced未対応端末を使うことがApple Intelligence勝ち組かもしれません🤪

Zigがいい!

Swiftでガチガチのチューニングに挑戦して挫折しました。
今更C++も大変だし、Rustもアイデアは素敵と思ってもコーディングは何かしんどいという感じ。
諦めかけていたところ、Zigを知りました。

Rust is a better C++, Zig is a better C.

だそうで、その通りの言語仕様です。
メモリモデルがRustのように目新しくないので、文法さえ知れば普通に書けます。

まだ、バージョン1に到達していなくて破壊的な改良が続いているのでプロダクションに使うのは難しいと思いますが、正式版が出たら一定の層に流行ると思います。

Python/Swift/Zigの3つの言語がそれなりに使えたら大体満足できそう。
Python, Swiftの代替候補は色々ありますが、3つ目のC/C++/Rust層がつらかったんだよねぇ。
「俺の最強言語」という厨二病を持ちながら3つの言語で頑張ればいい😁

というわけで、Zigが無事正式リリースを迎えることを心から願います。
できれば貢献したいな。何かツール作ろうかな?

やっぱりMac Studioじゃない?

今年1月のProject DIGITSの発表から10ヶ月弱、ようやくDGX Sparkが出荷され始めました。

LLMについて色々調べて、特にToken Generationはメモリ帯域律速だということもわかって、DGX Spark、1PFLOPSの割にきついんじゃないかという気がしていました。
ベンチマーク結果は、M3 Maxと同じぐらいのようです。メモリ帯域(Spark 273GB/s, M3 Max 400GB/s)を考えると善戦。
(というか、M3 Maxチューニング足りてないのかも)

さて、値段ですが、日本では代理店経由で価格未公開が多いですが、公開しているところを参考にすると、税込70万円かそれ以上。
同等のスペックをMac Studioでカスタマイズすると、

で、税込733,800円。

AppleSSDは高速ですが、Apple税が入っているので?節約コースを考えると、

583,800円+40,000円=623,800円。DGX Sparkより安いです。

CUDAに慣れていてLLMをゴリゴリしたい人にはDGX Sparkはいいかもしれませんが、その辺りはお任せ、大きなLLMを動かして使いたいだけという人には、Mac Studioがお値打ちなようです。

一番に最初に、LLMにはMacがいいと言った人の先見の名に感心します。
当時、私も、LLMと言えばNVIDIA GPU必須やろ、さすがにMacがいいは言い過ぎと思いました。

AI PC/Copilot+ PCも基本UMAですが、Macほどその自由度が高くないようです。
NPUがメモリをフルにアクセスできなかったり帯域が絞られていたり。

というわけで、DGX Spark欲しい熱が冷めて、Mac Studioいいなぁと思いながらIntel iMacでブログを書いている今日この頃です。

Swiftが嫌いになりました

struct InlineArray<let count : Int, Element> where Element : ~Copyable

InlineArrayのシグニチャを見て、「え?Elementはコピーできないの?なんのこっちゃ」と思ったのですが、今時のLLMに聞くとこれは「コピーできてもできなくてもいい」という意味らしいです。
そして、whereでElementがコピーできないという制約は書けないらしいです。

狂っている。控えめに言って狂っている。

この瞬間、Swiftの嫌なところがどっと湧いてきました。

classとstructって何?最初は参照型か値型かでメンタルモデルも作りやすかったです。しかし今では特に大きなデータの場合、結局どっちで作るのがいいか、ほぼどうでもいいのに決定しなければいけない無駄な意思決定を要求されます。

DispatchQueueかasync/awaitか。async/awaitのほうが効率良さそうなのはわかります。しかし移行するのにHaskellモナドぐらい敷居があります。一つasyncで書くと、利用しているメソッド群を雪崩式にどどどっと書き直さないといけない。過去のリソースを使わない新規プロジェクトならいいですが、そうじゃない場合、結局両方書けっていうこと?

SwiftUIって結局、ロジックとUIの分離が難しくなってない?MVCかMVVMかTCA?もうええって。

ずっと、Swiftラブだったのに。愛はいつか冷めるもんですね。
ああ美しい言語と出会いたい。

Gemma 3nは一体どうやって使うの?

5月にプレビュー版が公開されていたGemma 3nが正式公開です。

developers.googleblog.com

プレビュー版では.task(LiteRT (TensorFlow Liteのリブランディング))ファイルが公開されて、Androidでは一応動かせたようですが、正式公開では、各機械学習ライブラリ向け.safetensorsが公開されただけです。
モバイルで動くことが一番のアピールポイントなのにモバイル向けカスタマイズはサードパーティさん頑張ってと。
音声や動画まで扱えるマルチモーダルLMってサードパーティでどこも実現していないような…

研究段階だったLLMがいきなりイノベーションの先端に立って3年弱。研究者が製品を出荷するような状況で大変なんでしょうね。
そろそろ、ライセンス含めて使いやすいローカルLLMが出てきて欲しいです。

Project DIGITSかMac Studioか、それが問題だ

1年ぶりの投稿です。

AlphaGo以来、HPC(ゲーミングPCとも言う)が欲しいと言い続けながら購入しませんでした。
(iPadのNeural Engineで満足していた)


LLM時代に入って、AI用PCのスペックが一変しました。演算力よりメモリとメモリ帯域。巨大なニューラルネットワークのウェイトをメモリ上に置きそこからリードすることがボトルネックになるとは。

みなさん、LLMは利用されていますか?
私は、プログラミングには不可欠になりつつありますし、情報が知りたいというより対話したい時にはGoogleよりよい相手になりました。ChatGPTを無料の範囲で使っています。
VSCodeにもCopilotを入れましたが、編集中のコードがサーバーに上がっていそうでちょっと怖いです。

なのでローカルLLMが欲しい!

さて、民生価格で巨大なLLMモデルを動かすとなると選択肢はUMAのてんこ盛りMacか5月に発売予定のProject DIGITSか。
今まで欲しくてしかたなかったNVIDIAGPUはメモリの観点からは1枚では足らなく複数枚となると民生の値段ではなくなります。

昨日発表されたM4 Max Mac StudioとProject DIGITSを比較したいと思います。
コスパの比較をしたいのでカスタマイズ可能な部分はできるだけ近づけます。

Project DIGITS Mac Studio (M4 Max) Mac Studio (M3 Ultra) Framework Desktop
メモリ 128GB 128GB 96GB 128GB
メモリ帯域 273GB/s 546GB/s 819GB/s 256GB/s
GPU(FP32) 45TFLOPS 17.04TFLOPS 21.3TFLOP 21TFLOP
Tensor Core / NPU(密INT8) 250TOPS/125TFLOPS 38TOPS/16TFLOPS 36TOPS/36TFLOPS 50TOPS
ARMコア数 20(10) 16(12) 28(20) 16
SME(AMX)ユニット数 0 2 4 0
SSD 1TB 1TB 1TB 1TB
価格 $3000 $3699 $3999 $2279

Project DIGITSも同じUMAで、となるとTensor Coreの250TOPS(FP4で1000TFLOPSが歌われているが多分sparseで、denseならその半分、そしてINT8換算にするとさらにその半分)の実力が発揮できるどうか。512GB/sはVRAMよりも遅いですが、PCとしては相当の数字。
Apple Siliconは現状、Neural EngineのDMAが速度を出せず38TOPSすら活かせていない状況です。なのでLLMはほぼGPU/CPU実装。

NVIDIAUMAでもTensor Coreをフルに活用できるような効率のいいメモリアクセスを実装できたらびっくりするような数字が出そうです。逆にその辺りはAppleに1日の長があるなら、Project DIGITSはスペックの数字だけよくて性能はイマイチの可能性も。

いずれにしても5月が楽しみですねぇ。

追記。
ChatGPTに聞いたら、LLMのトークン/秒はFP16でTOPS = 0.05 * メモリ帯域がざっくり最適で、そこからずれるとどちらかが律速段階になるそうです。
512GB/sならFP16で25.6FLOPS。INT8なら51.2TOPS、FP4なら102.4FLOPS。Project DIGITSに搭載されるGB10はLLMにはオーバースペックかも。