Alibaba Cloud の PAI-DSW を使った Stable Diffusion での画像生成


[前回](https://qiita.com/sutoh/items/b67481424e154e381d4e)では、PAI-EASでLLaMaモデルを利用したLangChainを動作させました。

今回は、PAI-DSW (Data Science Workshop) を用いて、Stable Diffusion を動作させていきます。

## PAI-DSW とは？

ノートブック形式で開発が行える環境です。有名どころでいうと、Google ColaboratoryやAmazon SageMaker，Azure Databricksが各社クラウド企業の競合になりえる製品になります。

PAI-DSWの利用には以下の3つのメリットがあります。

まず1つ目は、ノートブック形式による開発です。これは直感的で柔軟な開発を可能にします。ユーザーはコードを書き、結果をすぐに確認しながら進めることができます。

2つ目のメリットは、クラウド上で高性能な計算リソースを利用できる点です。これにより、大規模なデータセットや複雑な計算タスクにも対応可能です。

最後の3つ目のメリットは、一貫したデータ管理と共有の実現です。これにより、チームメンバー間でのデータや結果の共有、再現性の確保が容易になります。

DSW Galleryというものが存在しており、これはあらかじめ作成されたノートブックのテンプレートを提供する機能です。これにより、ユーザーは新たにゼロからノートブックを作成する必要なく、特定の問題に対する解決策をすぐに試すことができます。また、自分自身が作成したノートブックを他のユーザーと共有することも可能です。

![100.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/b016bca4-865d-02d3-3f8b-5260329ff2bb.png)

今回は、この中でも眺めていたら面白そうなnotebookがありましたので、試していきます。

# PAI-DSWによるStable Diffusionの起動

これはStable DiffusionのWeb UIをPAI-DSW上で気軽に実行しています。

**[AI Image Expander: Let Your Imagination Soar](https://pai.console.aliyun.com/?regionId=cn-shanghai&workspaceId=437126#/dsw-gallery-workspace/preview/deepLearning/cv/stable_diffusion_inpaint)**

`Open in DSW` を押すと、ワークスペースとインスタンスの選択を行います。

ワークスペースはデフォルトで存在していましたが、DSW Instanceは作成する必要がありました。  `here` のリンクから作成していきます。

![101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/04d5c7a4-d0eb-ff0e-f544-bcd86ab5d062.png)

## インスタンスの作成

各入力を行っていく。

| Region and Zone | China (Shanghai) を今回は利用 |
| --- | --- |
| Instance name | 任意の名前 |
| Resource Quota | GPU Specifications |

Instance Typeは、V100かA10をオススメされているので、今回はコスト的にもA10が空いていたのでコレを利用。

| Instance Type | CPU | Memory (Unit: GB) | GPU | Memory | Bandwidth | Price |
| --- | --- | --- | --- | --- | --- | --- |
| ecs.gn7i-c32g1.8xlarge | 32 vCPU | 188 GB | 1 * NVIDIA A10 | 1 * 24GB | 16 Gbps | $ 2.09 /Hour |

`Select Image` も自動で選択されている、 `stable-diffusion-webui-develop:1.0-pytorch2.0-gpu-py310-cu117-ubuntu22.04`  が選択されていることを確認。

`Next` を押下して次へ。確認画面も出るので、 `Create Instance` ボタンを押します。

![102.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/f179d3d4-849e-231c-f756-feb96b8bd727.png)

作成が完了すると、 `Running` になっていることを確認。

![103.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/95e8adf0-5fd9-08cb-df87-6d8d4911c736.png)

## Notebookの作成

改めて `Open in DSW` を行うと、 `DSW Instance` が増えました。

Resource Typeに `Running Requirements Specification` の警告がありましたが、上位のインスタンスのようなので、問題無さそうです。そのまま `OK`。

![104.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/788d7474-17fd-4577-d407-6d6b64295546.png)

デプロイが完了して、Notebookも開かれました。

（英語のページだと思っていたけど、中国語のNotebookが出てきましたが、同じもののようです）

![105.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/cf3445da-1c8a-2273-5c61-f5ae762773b6.png)

あとは普通のPython Notebookのように、再生マークをぽちぽち押していきます。

3章まで進み、実行中の状態になりました。あとはStable DiffusionのWeb UIを出します。

`Web IDE` のタブに移動すると、よく見たことのあるVS Codeが表示されます。

![106.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/4a29e8c0-6853-bf4b-5750-85cf7a14ed8a.png)

WebUIが実行がしていると、右下にOpen In Browser が出てくるので、それでWebUIのURLへ飛びます。

これはとても便利で親切だなと感じました。

![107.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/691eef24-f74c-e07f-6a9b-2056af70331f.png)

中国語にローカライズされたStable DiffusionのWebUIが出てきました。凄い。。

![108.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/b037b2b8-cb44-73ac-967d-2b0de40f6767.png)

# 画像の生成を試してみる

大空に舞う気球を生成しようと思ったのですが、エラーやスタイルが当たっていないようで、うまくいきませんでした。

![dsw-gateway-cn-shanghai.data.aliyun.com_dsw-337990_ide_proxy_7860_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/cb586552-4ec7-9c0d-e0e5-9e9b471a190c.png)

今回試したNotebookはうまくいきませんでしたが、 PAI-DSWでは簡単にインスタンスの立ち上げから公開済みのDSWを元に個人で試せる環境が用意されているのが分かりました。

使い勝手は他のNotebookサービスよりも意外と使いやすさを感じました。

# 後日試してみた

上手く動かなかった点を他の方に試して貰ったら動作できました。

![200.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/25772/ca3ca67f-1bae-3938-b72d-f23dea790455.png)