[CMP302] Stable Diffusion 用の環境を構築するワークショップに参加してきた #AWSreInvent

2023.12.31

はじめに

CX事業本部 Delivery部 の田中孝明です。

Fine-tune & deploy Stable Diffusion on AWS Trainium & AWS Inferentia という ワークショップに参加してきました。

Stable Diffusion の実行とファインチューニングを実施する環境を AWS Trainium と AWS Inferentia を使って構築していく手順を体験できました。

ワークショップについて

CMP302 | Fine-tune & deploy Stable Diffusion on AWS Trainium & AWS Inferentia

Stable Diffusion は、テキスト プロンプトから画像を生成できる革新的な基礎モデルです。安定した拡散モデルは、AWS Trainium と AWS Inferentia2 を使用して微調整してデプロイでき、トレーニング コストを最大 50% 節約し、推論あたりのコストを最大 40% 削減できます。このワークショップでは、Trainium で主要な安定拡散モデルを微調整し、それを Inferentia2 にデプロイしてカスタム キャラクターを作成する方法を学びます。このセッションでは、Hugging Face の Optimum Neuron インターフェイスを使用して、50 セント未満で 1,000 枚の画像を生成する方法について説明します。参加するにはラップトップを持参する必要があります。

ワークショップ

Neuron ツールのセットアップ

ワークショップ用に Pytorch と Neuron SDK がセットアップ済みのインスタンスが用意されているので、こちらの環境を実行し、Python の仮想環境をアクティブにしてパッケージをインストールしていきます。

neuron-ls コマンドで Neuron のコア数を確認します。

neuron-top コマンドで Neuron アプリケーションの vCPU の使用率、メモリ使用量を確認しながら進めます。

Stable Diffusion の実行

Stable Diffusion 1.5 を実行してみた例です。プロンプトに指定されたものを画像として生成できるようになっています。

Optimum Neuron でモデルのコンパイル時間を節約

Neron Model Cache 機能を試すところまでワークショップでやりました。 リモートキャッシュ機能によって、トレージング実行時にモデルをコンパイルする時間を節約できるようになります。

Optimum Neuron を Github からクローンし、スクリプトを実行します。

まとめ

ワークショップ用の環境構築自体はすぐできるので、隣の参加者と誰がとある会社のロゴに近い画像を生成できるかなど、ほぼ Stable Diffusion で楽しむ場となったのも面白かったです。