Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-Forgeと...

CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-ForgeとFastSD CPU,Draw Things他など。練習例題あり初心者向け講座。LCM-LoRa高速化,LLMと組み合わせ技などあり。NetBSDもOK

OSC京都2024の発表資料です。生成AIのローカル画像生成AI Stable-diffusionを対象です。

kapper1224

August 04, 2024
Tweet

More Decks by kapper1224

Other Decks in Technology

Transcript

  1. CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-Forge とFastSD CPU,Draw Things他など。練習例題あり初心者向け講座。 LCM-LoRa高速化,LLMと組み合わせ技などあり。NetBSDもOK。 発表者:Kapper ガジェットハッキング ユーザーグループ This Presentation:

    Slideshare & PDF files publication of my HP http://kapper1224.sakura.ne.jp Gadget Hacking User Group Speaker:Kapper 1.準備 2.ローカル画像生成AIとLLM 3. Stable-Diffusion演習 4.LCM-LoRa高速化他 5.その他 OSC京都2024 2024年7月27日 Place: 中小企業振興会館 メインテーマ「ガジェット&生成AI」
  2. 自己紹介 Self Introduction • My name: Kapper • Twitter account:@kapper1224

    • HP:http://kapper1224.sakura.ne.jp • Slideshare: http://www.slideshare.net/kapper1224 • Mastodon:https://pawoo.net/@kapper1224/ • Facebook:https://www.facebook.com/kapper1224/ • My nobels:https://ncode.syosetu.com/n7491fi/ • My Togetter:https://togetter.com/id/kapper1224 • My Youtube:http://kapper1224.sakura.ne.jp/Youtube.html • My Hobby:Linux、*BSD、and Mobile Devices • My favorite words:The records are the more important than the experiment. • Test Model:Netwalker、Nokia N900、DynabookAZ、RaspberryPi、Nexus7、Nexus5、Chromebook、GPD-WIN、GPD- Pocket、Macbook、NANOTE、Windows Tablet、SailfishOS、UBPorts、postmarketOS、NetBSD and The others... • Recent my Activity: • Hacking Generative AI (Images and LLM) in a lot of devices. • Hacking Linux on Windows10 Tablet (Intel Atom) and Android Smartphone. • Hacking NetBSD and OpenBSD on UEFI and Windows Tablet. • I have over 200 Windows Tablet and 120 ARM Android, and test it now. • 後、最近小説家になろうで異世界で製造業と産業革命の小説書いていますなう。
  3. 事前ご連絡 • 今回は画像生成AIの使い方練習講座です • 演習にStable-Diffusion-Webui Forge, FastSD CPU,Stable-Dffusion.cppを使用します • Githubからダウンロードお願いします

    Win,Linux,*BSD,Mac,Android対応 • iOSの方はDraw Thingsをご使用ください • GPUは必ずも必須ではなく、CPUは遅いだけ AMD RadeonやIntel Arcでも動く
  4. 生成AIとは? • テキストなど 小さい情報から画像、動画、文章などを生成 • 短時間で複雑なデータを生成可能で生産性が良い • 複雑な計算が必要なので高性能なCPU、GPUが必要 • 大規模言語モデル(Large

    Language models)が最近有名 • 最近はAndroidやiPhoneでもOK • 他にも画像生成AIなど 定番モデルpony diffusion、Animagine XL他 参考としあき wiki https://wikiwiki.jp/sd_toshiaki/SDXLモデル もちろぐ blog https://chimolog.co/bto-gpu-stable-diffusion-specs/
  5. 最近の画像生成AIとは? • 画像生成AIとはStable-Diffusion類似品の総称でText to Image • 業務用は主に広告業界。5秒の動画を繋いで短いCMも低コストで作成 • 様々なオープンソースモデルが作られ色々な種類の画像生成。動画も。 •

    LCM-LoRAにより少ないステップ数で短時間画像生成 • 出力される情報を他のAIと組み合わせ活用範囲が拡大 • 計算するGPUコストかかるが、CPUやNPUでも計算出来る様になった • 英語圏中心でキーワードは英語。 • 本質的に何でも出来るAIの必要は無い。高コスト • 自由に改変出来て、自由に使えるライセンスのモデルに注目 • CPUで動かすならWebサーバ、ブラウザも重し。Xさえ不要
  6. しかし何故今更ローカル生成AI? • 手元の機種で 学習し自由に動かせるというロマン • ライセンスを侵害しない範囲で自由に学習・改造出来る • 今後 厳しくなるであろう規制が無い。API無料。有料化対策。 •

    UNIXなどのマニアックな情報を沢山学習させたい • オリジナルアプリへライセンスフリーで組み込みたいパクりたい • エロいのを作りたい人向け • アンダーグラウンドで危険なLLMを作りたい人向け • キャラクターを模倣させたい人向け • ギャンブル関係のLLMを作りたい人向け • ベンチマークの代わりw しかしChatGPTは 規制用語が入ると・・・
  7. 動作イメージ • 一旦モデルをメモリの中に入れる (大量のメモリが必要) oメモリ CPU,GPU メモリ • 結果出力 モデル

    データ • CPU・GPUで計算 モデル データ LoRa マルチGPU対応 • LoRaがあれば追加
  8. OS別Stable-Diffusion この手の亜流は山ほどあるので一部 Linux Windows Mac iOS Android (Termux) Free BSD

    Open BSD Net BSD コメント Stable-Diffusion-WebUI A1111 ◎ ◎ ◎ ー ◎ △ ー ー Stabel-Diffusion-WebUI-reForge ◎ ◎ ◎ ー ◎ ー ー ー 省メモリGPU Stable-Diffusion-WebUI-amdgpu ◎ ◎ ◦ ー ー ー ー ー DirectML,ROCm SD.Next ◎ ◎ ◎ ー ー ー ー ー IntelGPU他 FastSD CPU ◎ ◎ ◎ ー ◎ ー ー ー OpenVINO Stable-Diffusion.cpp ◎ ◎ ◎ ー ◎ ◦ △ △ GCC,cmake sd.cpp-webUI ◎ ◎ ◎ ー ? ー ー ー Python OnnxStream ◎ ◎ ◎ ー △ ? ? ? 512MB RAM,GCC Koboldcpp ◎ ◎ ◎ ー ◎ ー ー ー 簡単 Stablity Matrix ◎ ◎ ◎ ー ー ー ー ー 簡単 Draw Things ー ー ◎ ◎ ー ー ー ー A12,M1以降 UNIX系が使いにくいのはPip,CondaとCUDAとPytorchの依存性の関係 ◎: 公式サポート,◦:公式非サポート, △:動作報告あり
  9. ハードウェア目安 • 最低(動くだけ。速度は一切考慮しない。QemuなどPCエミュレーション環境も想定) x86:SSE3搭載CPU、メモリ+Swap:3.7GB以上(2.7GB+OS:モデル量子化の例外あり) Android メモリ+Swap 3.7GB以上(2.7GB+OS:モデル量子化の例外あり) iPhone SE2以降​(2020年度〜 A12,M1以降)

    RapsberryPi4,5 メモリ+Swap 3.7GB以上 • 必要 x86:第8世代Intel、AMD Ryzen以降、メモリ+Swap 13GB以上(WebUIを使う場合必須) Android メモリ+Swap 13GB以上 GPU:メモリ4GB以上 • 推奨(GPU前提) x86:第8世代Intel、AMD Ryzen以降、メモリ16GB以上(GPUを使う場合、CPUは重要ではない) GPU:NVIDIA RTX3050、1660Ti以降 メモリ6GB以上(12GB以上が望ましい) 詳しくは、「もちろぐ」さんのブログを参照
  10. 人気あるStable Diffusionモデルデータ • 主にckpt,safetensorsファイルをCivitaiやHuggingfaceなどからダウンロードして models/Stable-diffusion/のフォルダに保存して使用 高画質系 • ベース基本:SD1.5系、SD XL系 •

    風景:A Regular Deep Background、architecture_Urban_SDlife_Chiasedamme他 • アニメ系最強クラス:Anything-XL、AnimagineXL、Anime Pastel Dream • 実写+アニメ:Pony Diffusion • 実写日本人:fuduki_mix、ChilloutMix 高速化系 • 実写幻想風高速LCM 4〜8 step:LCM_Dreamshaper • アニメ系高速化LCM 4〜8 step:Anything LCM • 高速1〜8step:SDXL-Lightning、 • 高速1〜8step:Hyper-SD、SDXL-Turbo モデルは数え切れないほどありますので、おすすめサイトをググって色々と試してみてください
  11. LLMモデルと混迷するオレオレライセンス • LLMモデルはオープンソース化したMetaのLLaMaを中心。オレオレライセンス注意 • Huggingfaceダウンロード方法:一例 wgetは使えないので注意。間に - を入れる事 curl -LOC

    - https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors ・Civitaiダウンロード方法: wget "https://civitai.com/api/download/models/####?type=Model&format=SafeTensor&token=****" #### はモデル番号、 **** は api key Curl curl -Lo add-detail-xl.safetensors https://civitai.com/api/download/models/135867?token=$CIVIT_TOKEN Wget wget -O add-detail-xl.safetensors https://civitai.com/api/download/models/135867?token=$CIVIT_TOKEN
  12. Stable-Diffusionの使い方 • Windowsの場合。webui-user.batを実行 • Unix系の場合。chmod +x ファイル名で実行形式にして chmod +x webui.sh

    • ./webui.sh で実行。ブラウザで操作 • モデルを追加する時はmodels/Stable-diffusion/に保存して更新 • LoRaを追加する時はmodels/lora/に保存して更新 • CPUで動かす人はコマンドラインならメモリ節約、高速化
  13. アプリ紹介 Stable-Diffusion-webui-forge/reForge • 現在人気の高いStable-Diffusion改良版 • 少ないGPUのVRAMで生成出来る様にチューニング、高速化 • VRAM 4GB GTX1650〜

    VRAM 6GB GTX1660Ti,Super〜 こんな古い世代でも512x512なら十分使える • インストール方法 git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git • cd stable-diffusion-webui-forge • python -m venv venv • source venv/bin/activate • pip3 install --upgrade --force-reinstall torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu125 • deactivate • ./webui.sh 注)CUDAを使わない場合は ./webui.sh --skip-torch-cuda-test
  14. インストール時のトラブル • PythonとPipのPathが通っていない(Windows)・・・設定必要 • Pipのプロキシが通っていない(Windows他)・・・必要なら設定必要 • Python3-venv仮想環境が入っていない・・・venvを入れる • TorchのCUDAエラー・・・CUDAを使わない場合は、./webui.sh --skip-torch-cuda-testオプ

    ション • Torchのバージョンエラー・・・A1111はPytorch3.12をまだサポートしていない。 Python3.10を使う必要がある。 sudo add-apt-repository ppa:deadsnakes/ppa • sudo apt update sudo apt install python3.10 python3.10-venv python3.10 -m venv "venv" • webui.sh に python_cmd="python3.10"を修正
  15. アプリ紹介 FastSD CPU • CPU向けに最適化されたStable-Diffusion モデル自動ダウンロード、初心者向け • SDXL Lightningを使えば1〜4stepで生成可能で4.8秒/枚程度まで高速化可能 ARMでも40秒/枚前後とかなり高速

    • Termuxを使えばAndroidでも動くはず • インストール git clone https://github.com/ruphes/fastsdcpu.git cd fastsdcpu chmod +x install.sh ./install.sh chmod +x start-webui.sh ./start-webui.sh • インストールエラーが出たらrequirement.txtのバージョン指定削除 (作者はWindowsのため環境が古い)
  16. アプリ紹介 Stable-Diffusion.cpp • 生成AIのLlama.cppを参考にC,C++で作られたStable-Diffusion。 • Python,CUDA,Pytorchに依存しないので、色々なOSで動かせる *BSDで動かすなら最適。消費メモリ小さい • 使用できるモデルは登録されていないと使えない。限定あり •

    llama.cpp同様にAMD GPUやIntel GPU、vulkan、CUDA対応 • WebUIはないのでコマンドライン使用。中級者向け • 初期設定ではSeedは42固定。-s -1などマイナスオプションでランダム動作 • -b オプションでbatch count回数指定するか、zshのRepeat機能で放置プレイ推奨。 • インストール方法 git clone --recursive https://github.com/leejet/stable-diffusion.cpp • cd stable-diffusion.cpp mkdir build • cd build • cmake .. • cmake --build . --config Release CPUの場合はFlash Attention オプションを使用して更に省メモリ化 cmake .. -DSD_FLASH_ATTN=ON cmake --build . --config Release
  17. アプリ紹介 OnnxStream • RaspberryPiで動かすために少ないメモリとC,C++で作られたStable- Diffusion,Local-LLM • 〜512MBのRAMで動かせる様に分割して計算。その代わりに遅い • WebUIはないのでコマンドライン使用。上級者向け •

    インストール方法 git clone https://github.com/vitoplantamura/OnnxStream.git cd OnnxStream cd src mkdir build cd build cmake -DMAX_SPEED=ON -DOS_LLM=OFF -DOS_CUDA=OFF - DXNNPACK_DIR=<DIRECTORY_WHERE_XNNPACK_WAS_CLONED> .. cmake --build . --config Release
  18. アプリ紹介 Draw Things • iOS用Stable-Diffusion互換 • IOS 15.4かつA12 bionic以降 •

    IPhone SE2,3推奨。高速。 • Apple storeよりインストール
  19. アプリ紹介 Stability Matrix • 簡単インストールStable-Diffusionパッケージ • オールインワンタイプ。容量注意 • 初心者にオススメ。インストールにFuse必要 •

    インストール方法 公式サイトからAppImageファイルダウンロードして展開 sudo apt install fuse chmod +x StabilityMatrix.AppImage ./StabilityMatrix.AppImage • Linuxの場合、フォントが表示されない現象あり注意
  20. NVIDIA CUDAインストール • Ubuntu22.04の場合 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda- ubuntu2204.pin • sudo mv

    cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600 • wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda-repo- ubuntu2204-12-0-local_12.0.0-525.60.13-1_amd64.deb • sudo dpkg -i cuda-repo-ubuntu2204-12-0-local_12.0.0-525.60.13-1_amd64.deb • sudo cp /var/cuda-repo-ubuntu2204-12-0-local/cuda-*-keyring.gpg /usr/share/keyrings/ • sudo apt-get update • sudo apt-get -y install cuda sudo nano .bashrc テキストエディタで下記を保存 export PATH="/usr/local/cuda/bin:$PATH" • export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH" • https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
  21. お仕事で生成AI • プログラムレスで色々 • 翻訳、メール作成 • 対話型業務をAIチャットで • 画像、資料を作成 •

    いつのまにかRPAはどこにいった? 今後のビジネスの中心 • 賢さ ≠ 語彙力、情報量
  22. NetBSD,低メモリPCでStable-Diffusion.cppを使う • 本資料P7で書いた様にgitからビルドしたらモデルデータをどこかにダウンロード cd stable-diffusion.cpp/ curl -LOC - https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned- emaonly.safetensors

    • Stable-diffusion.CPPをコマンドラインで実行 cd build/ ./bin/sd -m ../v1-5-pruned-emaonly.safetensors --cfg-scale 1 --steps 20 -p "a lovely cat" -o output_test1.png -v • 出力されたoutput_test1.pngを移動して保存。画像ビュアーで見る。 • Batch Count指定には -b 10 などオプション追加
  23. NetBSD,低メモリPCでStable-Diffusion.cppを使う • せっかくなのでダウンロードしたモデルを量子化して小さく ./bin/sd -M convert -m ../v1-5-pruned-emaonly.safetensors -o ../v1-5-pruned-emaonly.q8_0.gguf

    -v --type q8_0 • 量子化したGGUFモデルをStable-diffusion.CPPをコマンドラインで実行 ./bin/sd -m ../../v1-5-pruned-emaonly.q8_0.gguf --cfg-scale 1 --steps 20 -p "a lovely cat" - o output_test2.png -v • 出力されたoutput_test1.pngを移動して保存。画像ビュアーで見る。
  24. NetBSD,低メモリPCでStable-Diffusion.cppを使う • 高速化としてLCM-LoRaを使う。LCMモデルをlcmフォルダに保存。 mkdir ../lcm curl -LOC - https://huggingface.co/latent-consistency/lcm-lora-sdv1- 5/resolve/main/pytorch_lora_weights.safetensors

    mv pytorch_lora_weights.safetensors ../lcm • 保存したLCMモデルを指定して再びStable-diffusion.cppを実行 ./bin/sd -m ../../v1-5-pruned-emaonly.safetensors --lora-model-dir ../lcm/ --sampling-method lcm --cfg-scale 1 --steps 4 -p "a lovely cat<lora:pytorch_lora_weights:1>" -o output_lcm_text1.png -v • 出力されたoutput_clm_test1.pngを移動して保存。画像ビュアーで見る。 一例) 20 step(421 sec/枚) → 4step(91 sec/枚)へ高速化しました。 • LCMを使うと、出力される画像が変わりますw • Seedをランダムは -s -1 オプション追加 FP32 Q4_1
  25. Stable-Diffusionのプロンプト(キーワード) • プロンプトは非常に多い。専用サイトを見ると良い 高画質化のプロンプトはほぼ必須 一人ポーズ:1 girl, 1 man 髪型:long hair,short

    hair, gold hair, sliver hair 年齢:18 years old,など 背景:clear sky, midnight,nature,river,cave,inside,outsides,bed room 指 :beautiful fingers, beautiful hands 高画質:masterpiace,hyper detailed, high quallity • ネガティブプロンプト 指:extra hands,extra fingers,bad hands, bad fingers,extra arms,
  26. Stable-diffusionの高画質化 • Step数を増やしてみる • cfg-scaleを調整7〜20へ • VAEを入れ替えてみる • モデルを変更 •

    Samplerを変更してみる • 高画質プロンプトを入れる masterpiace,hyper detailed, high quallity
  27. Stable-Diffusionの高速化 • GPUを使う • LCM-LoRaモデルなどでstep数を減らす • Tiny Encoderを使う • サンプラーをLCMなどする

    • CPU計算ならOpenVINOを使う • モバイルPCなら電源コンセント繋いでターボブーストON推奨
  28. CPU VS GPU • 現在高速化としてGPUを使うのが主流 • CPU VS GPUの速度は1:20〜100くらいの速度差 •

    WebサーバとブラウザはCPU、計算はGPUで分担している • CPUで計算するとWebサーバとブラウザの分だけ負担が増える OllamaなどCUIで使うのも良い(Xも不要) • AI 学習は完全にGPU優位。GPUはメモリ確保が大変高価
  29. よくある質問・疑問点 • CPUではだめなんですか? --- 遅いだけです。その分CPUメモリは安い。 • 自動で放置プレイしたい --- BatchCountを指定。zshのRepeatコマンドでも •

    AndroidスマホのGPUは動きますか?--- GPUメモリが小さくてほぼ使われていない • NVIDIA以外のGPUは動くのですか? --- ROCm,DirectML,Metal,OpenVINOでも動く • なぜIntel Arcは生成AIであまり使われないの? --- 動作問題なし。モデルをOpenVINOに変換 • Intel NPUでも動きますか?--- OpenVINOを使えば動くはずだが動作実例なし • ノートパソコンの内蔵GPUは使えますか? ---メモリ500MB設定なのできつい • GPUは借りた方が安いですか? --- 学習させるなら時間に応じて • 指や体が奇形になります --- ネガティブプロンプトを工夫。サイズを縦長へ調整。 手を隠すとかもあり。 • そもそもローカルで生成AIを使う意味は? ---ロマン、商売用、独自絵 • モバイル中に計算が遅いんですが --- 節電設定。電源繋いでターボブーストON推奨