2026年9月20日日曜日

error: use of undeclared identifier 'ggml_mul_mat_i8_tensorwise'; did you mean 'ggml_ext_linear_i8_tensorwise'?

あまり時間が取れなかったので、1ヵ月程度sycl関連のソースで遊んでいませんでした。

その間も、llama.cppにはggml-syclに対してパッチを行ってビルドしていましたが、stable-diffusion.cppは完全放置していました。手元のソースを確認すると、8/11から触っていない感じでしたが、どうもこの直後にggmlを拡張してint8をベースにした量子化フォーマットに対応するために色々とテコ入れを行っているようで、素のggmlではビルドできない状態になっているようです。

ディスカッションにも記録が残っていて、8/12に

[Bug] Build Failure: INT8 ConvRot code on master uses undeclared ggml functions #1870

という書き込みが行われていました。

リリースを見てみると、

master-817-bcc7e29 feat: support INT8 ConvRot safetensors (#1857)

となっていて、ここのリリースからINT8への対応が始まっているようです。 

具体的にggmlをフォークして機能を拡張したggmlを使用する形で実装されています。

この拡張はメインストリームに乗せるように動いているようですが、現状の感触としては、相当な需要がなければ受け入れられないような気はします。 

ggml-org/llama.cppにはggml : add native INT8 convrot support - #26914

としてリクエストされています。


 

さて、ここまでが経緯ですが、現実問題として、個人的にはどうやって対応するべきか?と言う点です。

現状は、ggml-org/ggmlをフォークしたリポジトリをベースとしてllama.cppとstable-diffusion.cpp内の/ggml部分を挿げ替える形でggml-sycl部分のパッチソースを展開しています(建前としてですがw)。実際にはstable-diffusion.cppは/ggml以下を挿げ替えてビルドして、llama.cppは直接llama.cppの/ggml/src/ggml-syclへ直接パッチを当てています。

とは言え、同期のタイミングによってはllama.cppもstable-diffuion.cppのように挿げ替えても大丈夫なはず…。

どうせ2カ所にパッチしているのであれば、ggm-org/ggmlからフォークしたリポジトリではなく、stable-diffusion.cppのベースのjetlee/ggmlをフォークしてパッチを当ててもいいような気もします。

現時点で、最新のstable-diffusion.cppを動かす必要はないので、ひとまず master-816-487de75(2026/8/12) をベースとしてビルドすることに…。奇しくも触らなくなった翌日ぐらいのリリースのバージョンです(笑)

0 件のコメント:

コメントを投稿