Skip to content

ClasCat® AI Research

クラスキャット – 生成 AI, AI エージェント, MCP

Menu
  • ホーム
    • ClassCat® AI Research ホーム
    • クラスキャット・ホーム
  • OpenAI API
    • OpenAI Python ライブラリ 1.x : 概要
    • OpenAI ブログ
      • GPT の紹介
      • GPT ストアの紹介
      • ChatGPT Team の紹介
    • OpenAI platform 1.x
      • Get Started : イントロダクション
      • Get Started : クイックスタート (Python)
      • Get Started : クイックスタート (Node.js)
      • Get Started : モデル
      • 機能 : 埋め込み
      • 機能 : 埋め込み (ユースケース)
      • ChatGPT : アクション – イントロダクション
      • ChatGPT : アクション – Getting started
      • ChatGPT : アクション – アクション認証
    • OpenAI ヘルプ : ChatGPT
      • ChatGPTとは何ですか?
      • ChatGPT は真実を語っていますか?
      • GPT の作成
      • GPT FAQ
      • GPT vs アシスタント
      • GPT ビルダー
    • OpenAI ヘルプ : ChatGPT > メモリ
      • FAQ
    • OpenAI ヘルプ : GPT ストア
      • 貴方の GPT をフィーチャーする
    • OpenAI Python ライブラリ 0.27 : 概要
    • OpenAI platform
      • Get Started : イントロダクション
      • Get Started : クイックスタート
      • Get Started : モデル
      • ガイド : GPT モデル
      • ガイド : 画像生成 (DALL·E)
      • ガイド : GPT-3.5 Turbo 対応 微調整
      • ガイド : 微調整 1.イントロダクション
      • ガイド : 微調整 2. データセットの準備 / ケーススタディ
      • ガイド : 埋め込み
      • ガイド : 音声テキスト変換
      • ガイド : モデレーション
      • ChatGPT プラグイン : イントロダクション
    • OpenAI Cookbook
      • 概要
      • API 使用方法 : レート制限の操作
      • API 使用方法 : tiktoken でトークンを数える方法
      • GPT : ChatGPT モデルへの入力をフォーマットする方法
      • GPT : 補完をストリームする方法
      • GPT : 大規模言語モデルを扱う方法
      • 埋め込み : 埋め込みの取得
      • GPT-3 の微調整 : 分類サンプルの微調整
      • DALL-E : DALL·E で 画像を生成して編集する方法
      • DALL·E と Segment Anything で動的マスクを作成する方法
      • Whisper プロンプティング・ガイド
  • Gemini API
    • Tutorials : クイックスタート with Python (1) テキスト-to-テキスト生成
    • (2) マルチモーダル入力 / 日本語チャット
    • (3) 埋め込みの使用
    • (4) 高度なユースケース
    • クイックスタート with Node.js
    • クイックスタート with Dart or Flutter (1) 日本語動作確認
    • Gemma
      • 概要 (README)
      • Tutorials : サンプリング
      • Tutorials : KerasNLP による Getting Started
  • Keras 3
    • 新しいマルチバックエンド Keras
    • Keras 3 について
    • Getting Started : エンジニアのための Keras 入門
    • Google Colab 上のインストールと Stable Diffusion デモ
    • コンピュータビジョン – ゼロからの画像分類
    • コンピュータビジョン – 単純な MNIST convnet
    • コンピュータビジョン – EfficientNet を使用した微調整による画像分類
    • コンピュータビジョン – Vision Transformer による画像分類
    • コンピュータビジョン – 最新の MLPモデルによる画像分類
    • コンピュータビジョン – コンパクトな畳込み Transformer
    • Keras Core
      • Keras Core 0.1
        • 新しいマルチバックエンド Keras (README)
        • Keras for TensorFlow, JAX, & PyTorch
        • 開発者ガイド : Getting started with Keras Core
        • 開発者ガイド : 関数型 API
        • 開発者ガイド : シーケンシャル・モデル
        • 開発者ガイド : サブクラス化で新しい層とモデルを作成する
        • 開発者ガイド : 独自のコールバックを書く
      • Keras Core 0.1.1 & 0.1.2 : リリースノート
      • 開発者ガイド
      • Code examples
      • Keras Stable Diffusion
        • 概要
        • 基本的な使い方 (テキスト-to-画像 / 画像-to-画像変換)
        • 混合精度のパフォーマンス
        • インペインティングの簡易アプリケーション
        • (参考) KerasCV – Stable Diffusion を使用した高性能画像生成
  • TensorFlow
    • TF 2 : 初級チュートリアル
    • TF 2 : 上級チュートリアル
    • TF 2 : ガイド
    • TF 1 : チュートリアル
    • TF 1 : ガイド
  • その他
    • 🦜️🔗 LangChain ドキュメント / ユースケース
    • Stable Diffusion WebUI
      • Google Colab で Stable Diffusion WebUI 入門
      • HuggingFace モデル / VAE の導入
      • LoRA の利用
    • Diffusion Models / 拡散モデル
  • クラスキャット
    • 会社案内
    • お問合せ
    • Facebook
    • ClassCat® Blog
Menu

SDXL : RunPod で LoRA トレーニング

Posted on 10/04/202410/04/2024 by Masashi Okumura

SDXL の LoRA トレーニングを kohya-ss/sd-scripts を使用して RunPod 上で行います。

SDXL : RunPod で LoRA トレーニング

作成 : Masashi Okumura (@ClassCat)
作成日時 : 10/04/2024

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス ⭐️ リニューアルしました 😉

◆ クラスキャット は人工知能に関する各種サービスを提供しています。お気軽にご相談ください :

  • 人工知能導入個別相談会(無償)実施中! [詳細]

  • 人工知能研究開発支援 [詳細]
    1. 自社特有情報を含むチャットボット構築支援
    2. 画像認識 (医療系含む) / 画像生成

  • PoC(概念実証)を失敗させないための支援 [詳細]

◆ お問合せ : 本件に関するお問合せは下記までお願いします。

  • クラスキャット セールス・インフォメーション
  • sales-info@classcat.com
  • ClassCatJP

 

 

SDXL : RunPod で LoRA トレーニング

今回は SDXL の LoRA トレーニングを kohya-ss/sd-scripts を使用して RunPod 上で行います。

kohya-ss/sd-scripts による LoRA トレーニングについては、以前に Google Colab 上での基本的な手順は紹介しています ( SDXL 用 LoRA 訓練 (on Google Colab) ) ので、今回は具体例を示しながら RunPod 上で実行します。

 

RunPod

使用したポッド仕様は以下です :

  • テンプレート: RunPod Pytorch 2.4.0 (runpod/pytorch:2.4.0-py3.11-cuda12.4.1-devel-ubuntu22.04)

  • 1x A40 (48 GB VRAM)
  • 9 vCPU 50 GB RAM
  • ~50 GB Disk
  • ~50 GB Pod Volume

  • Start Jupyter Notebook

 

トレーニングデータ

トレーニングデータは、東北ずんこ・ずんだもんプロジェクト の AI画像モデル用学習データ を使用させていただきました。

記載されている使用規約は :

  • 公式が配布する 東北3姉妹のイラストは非商用、もしくは東北企業であれば自由に使える そうです。
  • また、AI画像モデル用学習データについては :

    ずんずんPJ公式イラストを学習したデータのLoRAの配布はなどは大丈夫です(2次創作のデータが入る場合は2次創作者への配慮[2次創作者のガイドライン確認など]が別途必要になります)

 

実践

上記の仕様でポッドを起動し、Jupyter ノートブックでアクセスします。

 

ポッドの確認

最初にポッドの仕様を簡単に確認しましょう :

!nvidia-smi
!echo ""
!nvcc --version
!echo ""
!free -h
Fri Oct  4 03:12:16 2024       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.90.07              Driver Version: 550.90.07      CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA A40                     On  |   00000000:98:00.0 Off |                    0 |
|  0%   30C    P8             22W /  300W |       1MiB /  46068MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Mar_28_02:18:24_PDT_2024
Cuda compilation tools, release 12.4, V12.4.131
Build cuda_12.4.r12.4/compiler.34097967_0

               total        used        free      shared  buff/cache   available
Mem:           503Gi       115Gi        44Gi       7.9Gi       343Gi       376Gi
Swap:             0B          0B          0B

 

環境構築 (kohya-ss/sd-scripts)

レポジトリ kohya-ss/sd-scripts を複製して依存関係をインストールし、xformers と bitsandbytes をインストールするだけです。

※ 必要なら、SDXL 用 LoRA 訓練 (on Google Colab) を参照してください。

 

トレーニングデータの準備

次にトレーニングデータを準備します。前述の「東北ずんこ・ずんだもんプロジェクト」の AI 画像モデル用学習データから 東北イタコ のデータを使用しましたが、お好みでどうぞ。

zip ファイルをアップロードして解凍してから :

!unzip -q /workspace/itako.zip

以下のようなディレクトリ構成にします :

/content/LoRA
├── config
│   └── dataset_config.toml
└── train_data
    ├── itako(1).png
    ├── itako(1).txt

    ├── itako(9).png
    └── itako(9).txt

toml 設定ファイルは少なくとも以下の内容があれば動作します :

[general]
shuffle_caption = true
enable_bucket = true
caption_extension = ".txt"

[[datasets]]
resolution = 1024
min_bucket_reso = 768
max_bucket_reso = 1280

[[datasets.subsets]]
image_dir = "/workspace/LoRA/train_data"
class_tokens = "itako "
num_repeats = 1

 

Hugging Face Accelerate

Accelerate 用の設定ファイルも /workspace/LoRA/config に配置することにします :

import os

accelerate_config = "/workspace/LoRA/config/accelerate_config.yaml"

from accelerate.utils import write_basic_config

if not os.path.exists(accelerate_config):
    write_basic_config(save_location=accelerate_config)

その結果、以下のようなディレクトリ構成になります :

/workspace/LoRA
├── config
│   ├── accelerate_config.yaml
│   └── dataset_config.toml
└── train_data
    ├── itako(1).png
    ├── itako(1).txt

    ├── itako(9).png
    └── itako(9).txt

 

SDXL モデルファイルの配置

モデルファイルは stabilityai/stable-diffusion-xl-base-1.0 から取得できます。
/content/pretrained_model に配置しました :

!mkdir -p /content/pretrained_model
!wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors \
   -O /content/pretrained_model/sd_xl_base_1.0.safetensors

 

トレーニングの実行

必要最小限の引数とともに訓練を実行します。出力先は /workspace/LoRA/output です。

%cd /workspace/sd-scripts

!accelerate launch \
    --config_file=/workspace/LoRA/config/accelerate_config.yaml \
    sdxl_train_network.py \
    --dataset_config=/workspace/LoRA/config/dataset_config.toml \
    --pretrained_model_name_or_path=/workspace/pretrained_model/sd_xl_base_1.0.safetensors \
    --network_module=networks.lora \
    --mixed_precision="fp16" \
    --network_dim=8 \
    --network_alpha=4 \
    --learning_rate=1e-4 \
    --optimizer_type="AdamW8bit" \
    --output_dir=/content/LoRA/output \
    --output_name="itako" \
    --save_precision="fp16" \
    --save_every_n_epochs=1 \
    --save_model_as=safetensors \
    --max_train_epochs=5 \
    --train_batch_size=1 \
    --xformers \
    --no_half_vae \
    --lowram

最終的なディレクトリ構成は以下のようなものです :

/workspace/LoRA
├── config
│   ├── accelerate_config.yaml
│   └── dataset_config.toml
├── output
│   ├── itako-000001.safetensors

│   └── itako.safetensors
└── train_data
    ├── itako(1).png
    ├── itako(1).txt

    ├── itako(9).png
    └── itako(9).txt
/workspace/pretrained_model
└── sd_xl_base_1.0.safetensors

以下は、モデルファイル Lykon/AAM_XL_AnimeMix を使用した際のトレーニング過程です :

 
1 epoch

 

5 epoch

 
10 epoch

 

推論

トレーニングが完了したら、Hugging Face Diffusers を使用してサンプリングしてみます :

import torch
from diffusers import StableDiffusionXLPipeline

pipeline = StableDiffusionXLPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    #"Lykon/AAM_XL_AnimeMix",
    torch_dtype=torch.float16,
)
pipeline.enable_model_cpu_offload()
pipeline.load_lora_weights("/workspace/LoRA/output/itako.safetensors")
prompt = "itako, 1girl, solo, kimono, hagoromo, tabi, animal ear fluff, hair ornament, dancing"

out = pipeline(
    prompt=prompt,
    guidance_scale=7.0,
    width=1024,
    height=1024,
    num_inference_steps=20,
).images[0]

out.save("/workspace/image.png")

 

以上



クラスキャット

最近の投稿

  • LangGraph 0.5 : エージェント開発 : prebuilt コンポーネントを使用したエージェント開発
  • LangGraph 0.5 : Get started : ローカルサーバの実行
  • LangGraph 0.5 on Colab : Get started : human-in-the-loop 制御の追加
  • LangGraph 0.5 on Colab : Get started : Tavily Web 検索ツールの追加
  • LangGraph 0.5 on Colab : Get started : カスタム・ワークフローの構築

タグ

AutoGen (13) ClassCat Press Release (20) ClassCat TF/ONNX Hub (11) DGL 0.5 (14) Eager Execution (7) Edward (17) FLUX.1 (16) Gemini (20) HuggingFace Transformers 4.5 (10) HuggingFace Transformers 4.6 (7) HuggingFace Transformers 4.29 (9) Keras 2 Examples (98) Keras 2 Guide (16) Keras 3 (10) Keras Release Note (17) Kubeflow 1.0 (10) LangChain (45) LangGraph (24) MediaPipe 0.8 (11) Model Context Protocol (16) NNI 1.5 (16) OpenAI Agents SDK (8) OpenAI Cookbook (13) OpenAI platform (10) OpenAI platform 1.x (10) OpenAI ヘルプ (8) TensorFlow 2.0 Advanced Tutorials (33) TensorFlow 2.0 Advanced Tutorials (Alpha) (15) TensorFlow 2.0 Advanced Tutorials (Beta) (16) TensorFlow 2.0 Guide (10) TensorFlow 2.0 Guide (Alpha) (16) TensorFlow 2.0 Guide (Beta) (9) TensorFlow 2.0 Release Note (12) TensorFlow 2.0 Tutorials (20) TensorFlow 2.0 Tutorials (Alpha) (14) TensorFlow 2.0 Tutorials (Beta) (12) TensorFlow 2.4 Guide (24) TensorFlow Deploy (8) TensorFlow Get Started (7) TensorFlow Graphics (7) TensorFlow Probability (9) TensorFlow Programmer's Guide (22) TensorFlow Release Note (18) TensorFlow Tutorials (33) TF-Agents 0.4 (11)
2024年10月
月 火 水 木 金 土 日
 123456
78910111213
14151617181920
21222324252627
28293031  
« 9月   12月 »
© 2025 ClasCat® AI Research | Powered by Minimalist Blog WordPress Theme