2026年5月14日木曜日

スペック不足で現実的ではない物の…

そういえばggmlとかllama.cppって同時に起動して、どれもGPUを使用した場合はどうなるんでしょうね?

SYCLの場合はオーバーフロー問題があるので、根本的に解決しないとダメだと思いますが、メモリーがもてば、ちゃんと動いちゃうのかな?

デバイスの占有ができなくても、仕組み的には大丈夫だと思うんだけど、ことキューに関してはどうなるのだろう…メモリ管理とかSYCL側で管理できてるからいいのかな?なんか行けそうな気がしてきた…どうやって試そう…小さいモデルを同時に動かせばいいかな?なかなか気が滅入りそうw

ほんと、いままでSYCLがハングしてしまうので積極的に使用しない様に扱ってたのですが、安定したなら積極的に使っていこうと思うんですが、どうなんだろうなぁ…気になりますよねぇ… 

2026年5月13日水曜日

移動中に気づいたんですがv4.2.3がリリースされてました

backend元のcommit具合でリリースが頻繁に行われているのはとてもいいと思いますw

寝る前に今日こそビルドできたらいいかな…。llama-cppにもSYCLパッチあてて試してみたいし… 

と言うよう愚痴は置いておいてw

いざ、実際にちゃんと動き出してみると気になるポイントがいくつかで来るもので…

まず1Step目の処理の間、消費電力が15Wとか表示の上で17Wとかも飛び出したことも。
しかもCPU温度が正直見たことのない85度を超えるような温度とか…壊れないかな?壊れないよね😅
そして2Step目以降はちゃんと10W前後の見慣れた消費電力にCPUも安定の64度とか62度とか安心する温度に。

なんかヤバそうな問題だから多少実効速度がおとてもいいから対処方法を知りたい…CPUスレッドを減らして対処してもいいかもな…

2つ目の気になるポイントは、GPUで実行する時のメモリ消費量が倍化してる気がする問題。
モデルをオフロードするとか言う表現が未だにしっくりきてなかったりしますが、ふつうに考えると1つのテンソルレイヤ分の大きさはメインメモリとGPUメモリに2重持ちしないとだめではないかとは思うんですが、感覚としてモデル丸ごと二重持ちしてる気がします。
しかしCPU単体で動かすと、これがそこまで大きくならない。と、いうかモデルのファイルサイズ分の綺麗に消費してる感じです。

先日llama.cppでファイルから直接GPUメモリーにロードできるようにしたとかそんな記憶がありますが、その辺の実装も気になるのと、それは各GPUで対応する必要があるのか無いのかとか…

メモリー消費量は結構直近でスッキリさせたいところですかねぇ…でもハード的に熱問題もw

cuda だとどうなるのか?


かなり気になったので見てみると、ハード的な制約は無さそうといった印象
ただ、非同期処理で

            std::lock_guard<std::mutex> lock(ggml_cuda_lock);

と、なってるのでミューテックスを取得するまで待機しちゃうように思える。やべぇこの辺全く記憶にないやw検索だな
やっぱミューテックスじゃ確実にロックがかかっちゃうねぇ…

この辺は実装でどうにでもなるから、まぁいいんだろうけど、対してSYCLではqueueにぶち込んで終わりなので簡単だけど、このqueueがポンコツすぎ。
何が非同期だから取得できないだよ。制限ありきで参照させりゃぁいいのに…

厳密にやるかどうかだけど。

と、ざっくり見た感じロックしちゃってもいいんじゃね?っていうのが、現時点での結論だったり。
リアルタイムでcompute()かけたければそれこそワーカースレッド内で処理させるべきなんだろうな。


あくまでもGPU演算が非同期処理で実装されてるからそれに合わせてるだけと考えればいいのかな?

SYCL 最大グループサイズ

検索したらこんなQAがありました。

自動翻訳の上、言葉を良く分かってないのですが、やはり上限は今どきの環境としては低い数字ですね。