2026年5月3日日曜日

分割されたsafetensorsファイルの結合

ちょっとした予想はしてました。全体がメインメモリーを超える大きさのsafetensorsファイルの結合って結構厄介カモということを…

現状を踏まえると、stable-diffusion.cppが分割されたsafetensorsファイルを直接読み込めればいいのですが、どうもダメそうなので、結合作業を事前に行う必要があります。

で、元となる方法は、ザックリ言えばPyTorch上で読み込んで、一つのファイルに出力すればよいのですが、読み込む先が問題だったりします。基本的にはメインメモリー上で一回読み込んでから出力するわけですが…今ほぼswap捨ててる環境なので16GiBを超えるファイルは扱えないわけで…。

で、geminiさんに聞いてみました!が、まぁそうだよね? っていう回答しか得られず…。

ちょっとググっただけでもあまりないですね。実際、ストレージの劣化や時間を犠牲にすれば、swapファイルを大きくすればいいだけですからね…w

ただ、量子化にしても何にしてもレイヤーサイズよりは小さく分割はできないとは思えないのですが、逆にいえばレイヤーサイズでファイル分割されていても問題ないと思うんですよね…。ですが、PyTorchだとどうしても全体を読み込むというのが前提の様で。話題に上がってたのはメモリーに読み込まずに直接GPUに展開するという点に関しては話が出ていて、実装された経緯があるようですが。

結局stable-diffusion.cppで分割されたsafetensorファイルを扱えるようにするのがいろいろと都合がよさそうな気配がしますが…ほとんどソース見てないから何とも言えないw

で、結局力業のswapファイルで対応しました。

ただ、ストレージも結構いっぱいいっぱいの運用なので、作業中に結構緊迫した状態でファイル削除に追われてたりしました(笑)

すでに使っていないdockerのimageやコンテナは昨日削除したので、消せるものがだんだんと身を切る思いで使わなさそうなggufファイルの削除ぐらいしか手が無くなってきています。こうなると、SSDの劣化も気になりますよね…どーしよw 

0 件のコメント:

コメントを投稿