
目次
作業内容
Core ML Stable Diffusionにモデルデータを追加する
前回作業(https://taiyos.matrix.jp/articles/5)の続き
参考:https://note.com/atatakun/n/n2ed8497d0ab7
手順1:事前準備
1. Xcode確認、準備
ターミナルから下記のコマンド操作を行う
(base) taiyo@Mac-mini ~ % xcodebuild -version
Xcode 15.3
Build version 15E204a
(base) taiyo@Mac-mini ~ % sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
Password:
2. モデルデータのダウンロード
下記URLからモデルデータをダウンロードする
URL:https://civitai.com/models/65203/disney-pixar-cartoon-type-a
モデル名:Disney Pixar Cartoon Type A
ファイル名:disneyPixarCartoon_v10.safetensors
手順2:Stable Diffusionの設定
1. conda仮想環境を有効にする
ターミナルから下記のコマンド操作を行う
(base) taiyo@Mac-mini ~ % conda activate coreml_sd
2. omegaconfライブラリを取得する
ターミナルから下記のコマンド操作を行う
(coreml_sd) taiyo@Mac-mini ml-stable-diffusion % pip install safetensors
Requirement already satisfied: safetensors in /opt/homebrew/Caskroom/miniforge/base/envs/coreml_sd/lib/python3.9/site-packages (0.4.2)
4. モデルデータの変換スクリプトを取得する
ターミナルから下記のコマンド操作を行う
(coreml_sd) taiyo@Mac-mini ml-stable-diffusion % cd ..
(coreml_sd) taiyo@Mac-mini coreml_sd % wget https://github.com/huggingface/diffusers/raw/main/scripts/convert_original_stable_diffusion_to_diffusers.py
5. スクリプト実行エラーの対策
ターミナルから下記のコマンド操作を行う
(coreml_sd) taiyo@Mac-mini coreml_sd % pushd /opt/homebrew/Caskroom/miniforge/base/envs/coreml_sd/lib/python3.9/site-packages/transformers/models/clip/
/opt/homebrew/Caskroom/miniforge/base/envs/coreml_sd/lib/python3.9/site-packages/transformers/models/clip ~/coreml_sd
(coreml_sd) taiyo@Mac-mini clip % cp -a feature_extraction_clip.py feature_extraction_clip.py.`date +%Y%m%d-%H%M%S`
(coreml_sd) taiyo@Mac-mini clip % vim feature_extraction_clip.py
(coreml_sd) taiyo@Mac-mini clip % diff -U 0 feature_extraction_clip.py.20240324-115609 feature_extraction_clip.py
--- feature_extraction_clip.py.20240324-115609 2024-03-23 10:16:25
+++ feature_extraction_clip.py 2024-03-24 11:57:21
@@ -28,5 +28,5 @@
-- warnings.warn(
-- "The class CLIPFeatureExtractor is deprecated and will be removed in version 5 of Transformers. Please"
-- " use CLIPImageProcessor instead.",
-- FutureWarning,
-- )
+# warnings.warn(
+# "The class CLIPFeatureExtractor is deprecated and will be removed in version 5 of Transformers. Please"
+# " use CLIPImageProcessor instead.",
+# FutureWarning,
+# )
(coreml_sd) taiyo@Mac-mini clip % popd
~/coreml_sd
手順3:モデルデータ変換
1. safetensors形式をdiffusers形式に変換する
ターミナルから下記のコマンド操作を行う
(coreml_sd) taiyo@Mac-mini coreml_sd % python -m python_coreml_stable_diffusion.torch2coreml \
--convert-unet --convert-text-encoder \
--convert-vae-decoder --convert-vae-encoder --convert-safety-checker \
--bundle-resources-for-swift-cli --latent-w 96 --latent-h 96 \
--model-version ./models/v1.5/disneyPixarCartoon_v10.diffusers \
-o ./models/v1.5/disneyPixarCartoon_v10
scikit-learn version 1.4.1.post1 is not supported. Minimum required version: 0.17. Maximum required version: 1.1.2. Disabling scikit-learn conversion API.
Torch version 2.2.1 has not been tested with coremltools. You may run into unexpected errors. Torch 2.1.0 is the most recent version that has been tested.
INFO:__main__:Initializing DiffusionPipeline with ./models/v1.5/disneyPixarCartoon_v10.diffusers..
[以下略]
手順4:動作確認
1. 画像生成
ターミナルから下記のコマンド操作を行う
(coreml_sd) taiyo@Mac-mini coreml_sd % python -m python_coreml_stable_diffusion.pipeline \
--prompt "a high quality anime of a black-haired girl wearing a bikini swimsuit. Her eye color is black." \
-i ./models/v1.5/disneyPixarCartoon_v10/Resources \
-o ~/Pictures --compute-unit CPU_AND_GPU --seed 65535 \
--model-version runwayml/stable-diffusion-v1-5 --model-sources compiled
WARNING:coremltools:scikit-learn version 1.4.1.post1 is not supported. Minimum required version: 0.17. Maximum required version: 1.1.2. Disabling scikit-learn conversion API.
WARNING:coremltools:Torch version 2.2.1 has not been tested with coremltools. You may run into unexpected errors. Torch 2.1.0 is the most recent version that has been tested.
INFO:__main__:Setting random seed to 65535
INFO:__main__:Initializing PyTorch pipe for reference configuration
[以下略]
2. conda仮想環境を無効にする
ターミナルから下記のコマンド操作を行う
(coreml_sd) taiyo@Mac-mini coreml_sd % conda deactivate