0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

高火力 DOK × Stable Diffusion ハンズオン

Last updated at Posted at 2025-05-23
1 / 67

はじめに


Stable Diffusionとは?

Stable Diffusion(ステイブル・ディフュージョン)は、2022年に公開されたディープラーニング(深層学習)のtext-to-imageモデルになります。

  1. テキストから画像を生成する
  2. 追加学習が可能

まずは試してみる


高火力 DOKにログインする

さくらのクラウドにログインしてください

image.png


ログインする

ユーザーコード・会員ID・パスワードは指定したものを使ってください。

image.png


高火力 DOKを選択する

デザインがレスポンシブなので、高火力 DOKのアイコンが下にあるかも

image.png


タスクを選ぶ

image.png


タスクの新規作成を選ぶ

image.png


以下の通りに入力

環境変数は + 追加 ボタンを押して追加してください。

  • イメージ
    dok-handson.sakuracr.jp/sdxl
  • コマンド
    generate 'Top quality, 1 man drink coke, smiling'
  • 環境変数
    • BATCH_SIZE = 25
    • SAMPLER = ddim
    • STEPS = 40

入力イメージ

image.png


入力が終わったら、 作成 ボタンを押してください

image.png


確認ダイアログが出るので、 作成 ボタンを押してください

image.png


実行中の画面です。 状態 のところの文字で状況が判断できます。

image.png


DOKのタスクで行っていること

  1. Dockerイメージの取得
  2. コンテナの実行
  3. コンテナの破棄

メモ

  • Dockerイメージの取得には、それなりに時間がかかります(10GB超えもざらなので…)
  • コンテナ実行時にモデルを取得するものが多く、そこも時間がかかります
  • HTTP URIは、タスク実行中にアクセスできるHTTPサーバーです
    スクリプト側でリクエストを受け取って処理できます

実行完了後

実行完了すると、 アーティファクト の項目に ダウンロード が表示されます。

image.png


tar.gzファイルの解凍

macOSの場合はダブルクリック。Windowsの場合はコマンドプロンプト、または7-Zipを利用して解凍してください。


タスクをコピーしてみましょう!

タスクをコピーして、いろいろな条件で実行してみましょう!


追加学習したモデルを試す

タスクの条件を以下のように変更してください。 <lora:irasutoya:1>irasutoya の部分が、追加学習したいらすとやさん風のモデルを指定する部分になります。 LORA_URL は、あらかじめアップロードしているURLです。

項目 設定
イメージ dok-handson.sakuracr.jp/sdxl
コマンド generate 'Top quality, 1 man drink coke, smiling, <lora:irasutoya:1> irasutoya' 10
環境変数 BATCH_SIZE = 25
LORA_URL = https://s3.isk01.sakurastorage.jp/mg-sd-demo/irasutoya.safetensors
SAMPLER = ddim
STEPS = 40

画像を追加学習する

画像を追加学習する際には、以下のステップが必要になります。

  1. 画像を用意する
  2. キャプションを用意する
  3. 画像をアップロードする
  4. 画像のURLを指定して、追加学習する
  5. できあがったモデルをDLし、アップロードする
  6. モデルを指定して、画像を生成する

画像を用意する

画像は任意ですが、同様のテイストのイラストや写真を用意する必要があります。自分だけが写っている写真や、いらすとやさんなどのフリーイラストを用意してください。


キャプションを用意する

各画像についてキャプション付けを行います。これはkohya-ss/sd-scriptsにある finetune/make_captions.py を利用しています。(via Google Colab で BLIP とやらで自動キャプショニングを試してみる - ジャコ Lab

実行する際にはPythonが必要です。

python finetune/make_captions.py --batch_size 10 /path/to/images

実行すると、同じフォルダ内に *.caption というファイルが生成されます。内容は the cartoon girl is writing a book のようなものです。

image.png


圧縮する

画像とキャプションファイルを圧縮します。

cd /path/to/images
tar cvfz images.tar.gz *

画像をアップロードする

圧縮したファイル(images.tar.gz)を任意の場所にアップロードします。

以下は、さくらのクラウドのオブジェクトストレージを利用する例ですが、ご自身で別なクラウドストレージを使ってもらっても大丈夫です


オブジェクトストレージを選択する

さくらのクラウドのホームに戻ります

image.png


オブジェクトストレージを選択

image.png


サイトを選択

image.png


バケットを選択

さらに バケットの追加 ボタンを押してください

image.png


バケットの追加

分かりやすいものを設定してください

FireShot Capture 541 - オブジェクトストレージ - secure.sakura.ad.jp.jpg


アップロード

作成したバケットを選んで、 アップロード ボタンを押します

image.png


アップロードする

public-read を付けておいてください

image.png


アップロードしたら、以下のURLで画像ファイルにアクセスできるか確認してください。このURLを次の学習タスクで利用します。

https://s3.isk01.sakurastorage.jp/(バケット名)/images.tar.gz

image.png


画像のURLを指定して、追加学習する

DOKにて、学習を実行します。タスクを作成し、以下の情報を入力してください。

項目 設定
イメージ dok-handson.sakuracr.jp/sdxl
コマンド learning https://s3.isk01.sakurastorage.jp/(バケット名)/images.tar.gz irasutoya irasutoya
環境変数 BATCH_SIZE = 10
MAX_TRAIN_EPOCHS = 10

結果として、 *.tar.gz のファイルがダウンロードでき、解凍すると irasutoya.safetensors といったファイルが取得できます。このファイルを再度、任意のWebサーバーなどにアップロードしてください。

image.png

なお、学習はV100の場合は30〜40分程度、H100の場合は10分程度かかります。


タスクのコピー

一番最初に実行、完了したタスクを開きます。

image.png


コピーする

コピーして新規作成 を押します

image.png


追加学習したモデルを指定する

条件を若干変更して、タスクを実行してください。 <lora:irasutoya:1>irasutoya の部分が、学習したモデルを指定する部分になります。 LORA_URL は、アップロードしたURLを指定してください。

項目 設定
イメージ dok-handson.sakuracr.jp/sdxl
コマンド generate 'Top quality, 1 man drink coke, smiling, <lora:irasutoya:1>irasutoya' 10
環境変数 BATCH_SIZE = 25
LORA_URL = https://s3.isk01.sakurastorage.jp/mg-sd-demo/irasutoya.safetensors
SAMPLER = ddim
STEPS = 40

タスクを再実行する

タスクを再度実行して、できあがった画像がいらすとやさん風になっているか確認してください。


一旦終了

ハンズオンの内容は以上になります。DOKの面白さとして「タスクをたくさん作成できる」点があります。ぜひタスクをコピーして、さまざまな条件で実行してください。


ここからの流れ

ここからはDockerイメージの作成を行います。作成には1時間以上かかると思われますので、ハンズオン実施中には終わらないはずです。


Dockerイメージの作り方

ここからはテクニカルな内容になります


必要なもの

  • ターミナル

オプショナル

  • Docker

  • 手元にDocker環境がある方は、ローカルでも構築可能です
  • Docker環境がない場合は、さくらのクラウドを利用できます

さくらのクラウドでサーバを立てる

さくらのクラウドのホームに戻り、 さくらのクラウド(IaaS) を選択します

image.png


追加ボタンを押す

サーバ追加 ボタンを押します

image.png


情報を入力する

サーバのスペックを以下のように設定してください

  • 仮想コア
    4
  • メモリ
    4GB
  • 新規ディスクを作成
  • アーカイブ
    Ubuntu Server 24.04.1 LTS 64bit
  • ディスクサイズ
    100GB
  • インターネットに接続
  • 管理者のパスワード
    十分分かりづらいもの
  • ホスト名
    分かりやすいもの(dokなど)
  • 公開鍵
    必要であれば
  • サーバーの名前
    分かりやすいもの(dokなど)

サーバを追加

作成 ボタンを押します

image.png


確認する

確認ダイアログが出るので、 作成 ボタンを押してください

スクリーンショット 2025-02-19 12.17.31.png


サーバを確認

少し待つと、サーバが立ち上がります

image.png


サーバに接続する

サーバへは ssh で接続してください。ユーザー名は ubuntu です。


サーバ内での作業

ここからはサーバ内(またはローカル)での作業になります


Dockerのインストール

Dockerをインストールします

$ sudo apt-get update -y
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh ./get-docker.sh

Dockerを試す

今のコマンドが通れば、Dockerはインストールされています

$ sudo docker run hello-world

Hello from Docker!
  :
For more examples and ideas, visit:
 https://docs.docker.com/get-started/

ベースになるリポジトリ

ベースはchibiegg/sd-dockerを利用しています。実際の内容は上記リポジトリを参照してください。

git clone https://github.com/chibiegg/sd-docker.git
cd sd-docker

コンテナレジストリの用意

Dockerイメージを登録するコンテナレジストリを作成します。さくらのクラウドのホームで、さくらのクラウド を選択します。

image.png


左側のメニューの グローバル の中にある コンテナレジストリ を選択します。

image.png


追加 を押して、コンテナレジストリを作成します。最低限、以下の入力が必要です。

項目 設定
名前 分かりやすい、任意の名前を入力してください
コンテナレジストリ名 ドメイン名に使われます。以下では、 EXAMPLE.sakuracr.jp として説明します
公開設定 Pullのみとします

ユーザーの作成

コンテナレジストリを作成したら、作成したコンテナレジストリを一覧でダブルクリックします。

image.png


詳細表示にて、ユーザータブをクリックします。

image.png


追加 ボタンを押し、ユーザーを作成します。 YOUR_USER_NAMEPASSWORD は任意のものを指定してください。

項目 設定
ユーザー名 YOUR_USER_NAME
パスワード YOUR_PASSWORD
ユーザ権限設定 All

Dockerイメージのビルド

EXAMPLE.sakuracr.jp の部分は、作成したコンテナレジストリのドメイン名に置き換えてください。また、 sd-docker は任意の名前で大丈夫です(以下はその名称で読み替えてください)。

sudo docker build \
-f Dockerfile.sdxl \
-t EXAMPLE.sakuracr.jp/sd-docker:latest .

コンテナレジストリへのログイン

作成したコンテナレジストリにログインします。ログインIDとパスワードが求められるので、作成したものを入力してください。

sudo docker login EXAMPLE.sakuracr.jp

イメージのプッシュ

作成したイメージをコンテナレジストリにプッシュします。イメージサイズが大きいので、数十分かかります。

sudo docker push EXAMPLE.sakuracr.jp/sd-docker:latest

 DOKで実行する

リポジトリがプッシュできたら、一番最初に行ったようにDOKでタスクを実行します。

  • イメージ
    EXAMPLE.sakuracr.jp/sd-docker
  • コマンド
    generate 'Top quality, 1 man drink coke, smiling'
  • 環境変数
    • BATCH_SIZE = 25
    • SAMPLER = ddim
    • STEPS = 40

お片付け

忘れずに停止・削除をお願いします

  • さくらのクラウドのサーバ
  • オブジェクトストレージ

DOKについては、特に作業はありません

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?