Amazon SageMaker を使用して高品質の AI ペインティング モデルを構築する Stable Diffusion

748e0b55f7afc1d619aa23a2ce6d17d6.gif

outside_default.png

序文

最近では、新世代の大規模 AI チャットボットである ChatGPT がテクノロジ サークルで人気を博しており、AIGC (Artificial Intelligence Generated Content) の分野が学界、産業界、さらには一般ユーザーから広く注目され始めています。AIGCは、その独自の「創造力」と、人間の手の届かない創造スピードで人工知能の狂乱を巻き起こしました。しかし、人工知能モデルを使用して写真やビデオなどを生成するには、モデルをトレーニングするために大量のデータが必要であり、計算能力に対する要件は、単純なモデルよりも指数関数的に高くなります.データセットを迅速かつ効率的に処理するために、生成モデルの構築、クラウド 中国での人工知能モデルのトレーニングと展開は、ほとんどのユーザーと企業にとって最初の選択肢になりました。

最近、私は Amazon Cloud Technology のクラウド探査ラボ活動に招待され、Amazon SageMaker に基づいて Stable Diffusion 生成モデルを作成および展開して、高品質の画像を生成し、Amazon SageMaker が提供する包括的な機能を十分に体験しましモデル構築プロセス全体 高度な機械学習ツールによってもたらされる利点により、機械学習タスクをより迅速かつ効率的に実行でき、柔軟性、スケーラビリティ、使いやすさなどの多くの利点もあります。次に、生成モデル構築の全プロセスをおさらいしましょう!

Cloud Discovery ラボのアクティビティ:

https://dev.amazoncloud.cn/experience?trk=cndc-detail

この記事では、最初に AIGC の基本的な概念と開発プロセスを紹介し、現在の高度な画像生成モデルである Stable Diffusion について説明し、次に Amazon SageMaker の主要コンポーネントと、人工知能モデルを構築するプロセスの問題点を解決する方法を紹介します。最後に、Amazon SageMaker を使用して安定拡散モデルを構築し、人工知能モデルの構築、トレーニング、デプロイのプロセスにおける Amazon SageMaker の利点を実証します。

outside_default.png

Amazon SageMaker と機械学習

outside_default.png

   1.1 機械学習プロセス

人工知能 (AI) は、人間の知能をシミュレートおよび拡張するための理論、方法、およびアプリケーションを研究する体系的な科学および技術であり、コンピューターが、戦略を明示的にプログラミングすることなく、利用可能なデータに基づいて対応する戦略を実行できるようにします. AI は、コンピューター プログラムを使用してマシンをインテリジェントにします。人間の行動をシミュレートします。人工知能の目標は、人間と同じように考えることができるインテリジェントなマシンを作成すること、または人工知能技術を通じて人間の知能を拡張して実際の問題を解決することです。過去数年間で、多くの人工知能システムがブレークスルーを達成し、さまざまな複雑な問題の解決に適用できるようになりました。

一般的に言えば、完全な機械学習プロセスには通常、次の手順が含まれます。

> データの収集と準備:機械学習のプロセスでは、データが重要であり、トレーニング データの品質と一貫性を確保するために、関連データを収集、前処理、およびクリーニングする必要があります。

> 特徴エンジニアリング:データに対して特徴選択、特徴抽出、特徴変換などの操作を実行して、有用な情報を抽出し、モデルのトレーニングに使用できる形式に変換します。

> モデルの構築とトレーニング:実際のアプリケーション シナリオに従って、適切なモデルを選択して構築し、トレーニング データを使用してモデルをトレーニングします。これには、通常、モデルの選択、ハイパーパラメーターの調整、モデルの構築、モデルのトレーニング、およびモデルの評価のプロセスが必要です。

> モデルの検証と最適化:モデルの検証と最適化を行い、モデルの精度と安定性を確保します。これには通常、モデルの検証、モデルの最適化、モデルの調整が含まれ、実際の運用環境でのモデルの堅牢性がさらに保証されます。

> モデルの展開と監視:モデルを運用環境に展開し、モデルを監視および管理して、モデルの信頼性と効率性を確保します。これには通常、モデルの展開、モデルの監視、およびモデルの更新のプロセスが含まれます。

fadc0245e43359e9cd7738081389e0e7.png

つまり、機械学習プロセスは、データ、モデル、およびアルゴリズムの詳細な調査と探索を必要とする非常に複雑でやりがいのあるプロセスです. 通常、データ収集からモデルの展開およびアプリケーションまでの機械学習モデルの完全なプロセスには、約6 ~ 18 か月で、通常は次の問題に直面します。

● 機械学習モデルのトレーニングには大量のデータが必要です。データの品質と一貫性を確保するために、データをクリーニングして前処理する必要があります。多くの場合、これには多くの時間と労力がかかります。

● 機械学習モデル トレーニングのプロセスでは、適切なモデルを選択し、ハイパーパラメータ チューニングなどの操作を実行して、最高のモデル パフォーマンスを得る必要があります。これには、通常、複数の実験とテストが必要です。

● 機械学習モデルのトレーニングには、CPU、GPU、メモリ、ストレージ スペースなど、多くのコンピューティング リソースが必要です。特に、大規模なデータ セットや複雑なモデルを扱う場合は、多くの先行投資が必要になります。これは非常に重要です。一般ユーザーや中小企業向け 実現不可能。

機械学習モデルのトレーニング プロセスには、複数のツールの連携、データ処理のための多くの時間とエネルギーなどが必要です。機械学習ワークフロー全体に統合されたツールがなければ、機械学習モデルの開発は非常に複雑で費用がかかります。アマゾン ウェブ サービス (Amazon Web Services) は、すべての開発者およびデータ サイエンティスト向けの機械学習プラットフォームの構築に取り組んでおり、機械学習モデルの構築、トレーニング、デプロイの効率と品質を向上させるための機械学習用の多くの強力なソリューションを提供しています。Amazon クラウド テクノロジーは、Amazon が提供するクラウド コンピューティング サービスです. 柔軟でスケーラブルなクラウド プラットフォームであり、さまざまなアプリケーションやサービスの構築と実行に役立つ多数のインフラストラクチャ、プラットフォーム、およびソフトウェア サービスを提供します. そのサービスには、コンピューティング、ストレージ、データベースが含まれます、分析、ネットワーク、およびセキュリティを統合して、信頼性が高く、スケーラビリティが高く、低コストのクラウド コンピューティング ソリューションを提供します。

2018 年以来、Amazon Cloud Technology は、Amazon SageMaker、Amazon Machine Learning など、機械学習の敷居を大幅に下げ、ユーザーが機械学習アプリケーションを簡単に構築できるようにする一連の機械学習製品とサービスをリリースしました。ますます簡単になり、機械学習の普及と応用が促進されています。

c60d906e191b5472d0a628dda2f981a6.jpeg

outside_default.png

1.2 Amazon SageMaker の紹介

Amazon SageMaker は、基盤となるインフラストラクチャの複雑さに関係なく、データ サイエンティスト、開発者、企業が機械学習モデルを簡単に構築、トレーニング、デプロイできるフルマネージド型の機械学習サービスです。

Amazon SageMaker は、データのラベル付け、データ処理、モデルのトレーニング、ハイパーパラメータの調整、モデルのデプロイ、継続的なモデルのモニタリングなどの基本的なプロセスをカバーする機械学習ツールの完全なセットを提供し、自動ラベル付け、自動機械学習、モデルのトレーニングのモニタリングも提供します。 . およびその他の高レベル関数。フルマネージド型の機械学習インフラストラクチャと主流のフレームワークのサポートにより、お客様の機械学習のコストを削減できます。Amazon SageMaker は、機械学習プロセスの各ステップで重労働を完全に取り除くことで、高品質のモデルを簡単に開発できるようにします。ユーザーは、Amazon SageMaker のプリセット アルゴリズムを使用してモデルを迅速に構築およびトレーニングするか、独自のアルゴリズムとフレームワークを使用するかを選択できます。Amazon SageMaker は、ユーザーが複数の機能コンポーネントを含む高性能機械学習モデルを構築、トレーニング、デプロイするのに役立つ機械学習ツールの完全なセットを提供します。次に、主なコンポーネントのいくつかを紹介します。

> モデル構築

● Amazon SageMaker Studio は、機械学習に適した最初の統合開発環境 (統合開発環境、IDE) として、Amazon SageMaker Studio には完全な機能が含まれており、ノートブックの操作、モデルの作成、モデル実験の管理、および統一されたビジュアル インターフェイスでのデバッグが可能です。モデルの偏りを検出する。

● モデルの構築とチームのコラボレーションを高速化するために使用される Amazon SageMaker Notebooks は、次の 2 つの問題を解決します: 1) Jupyter Notebook を実行するために単一のサーバーを使用する場合、ユーザーは基盤となるリソースを管理する必要がある; 2) 他のユーザーと共有する場合、一連のシステム構成とネットワーク権限を変更するために必要です。Jupyter Notebook のワンクリック起動をサポートし、Amazon Cloud Technology は基盤となるコンピューティング リソースのホストを担当し、機械学習チーム間のシームレスなコラボレーションを促進するための Notebooks のワンクリック共有もサポートします。

● 自動モデル構築と最適化を実現する Amazon SageMaker Autopilot 通常、機械学習モデルを構築する際には、機械学習の問題を解決するための効果的なアルゴリズムを探すために多くの時間を費やす必要があります.Amazon SageMaker Autopilot は、元のデータを自動的にチェックし、最適なアルゴリズム パラメータを選択する 複数のモデルを集約、トレーニング、および調整し、モデルのパフォーマンスを追跡し、パフォーマンスに基づいてモデルをランク付けすることで、最適なモデルを見つけるために必要な時間を大幅に短縮します。

●TensorFlow、PyTorch、Apache MXNet、Chainer、Keras、Gluon、Horovod、Scikit-learn など、さまざまな深層学習フレームワークをサポートしています。デフォルトでサポートされているフレームワークを除き、他のフレームワークは Amazon SageMaker で使用できます。独自のコンテナーを使用して、モデルをトレーニングおよびデプロイします。

> モデルトレーニング

● Amazon SageMaker Experiments は、モデルのトレーニング中に実行を整理、追跡、評価します。通常、デプロイ可能なモデルを取得するには、さまざまなアルゴリズム、ハイパーパラメータの試行、選択した機能の調整など、複数回の反復と継続的な調整が必要です。Amazon SageMaker Experiments は、入力パラメータ、構成、結果を自動的にキャプチャして保存することで管理します。モデルの反復を Amazon SageMaker Studio のビジュアル インターフェイスと組み合わせることで、進行中の実験を閲覧し、以前の実験結果と直感的に比較および評価することもできます。

● Amazon SageMaker Debugger。機械学習に関連する問題を分析、検出、アラートします。今日のほとんどの機械学習プロセスは不透明であり、モデルのトレーニングに時間がかかるため、これに対処するために非常に時間のかかる最適化プロセスが必要になるため、Amazon SageMaker Debugger はトレーニング中に混同行列や学習した勾配などのリアルタイムのメトリクスを自動的にキャプチャします。など)、一般的な問題について警告し、修正の提案を提供することで、トレーニング プロセスをより透明にし、モデルがどのように機能するかをよりよく理解して説明できるようにし、最終的にモデルの精度を向上させます。

● トレーニング コストを大幅に削減. Amazon SageMaker は、マネージド スポット インスタンスに基づくトレーニングをサポートし、トレーニング コストを最大 90% 削減します. さらに、Amazon SageMaker はチェックポイントの定期的な自動保存をサポートし、スポット インスタンスの中断によるモデルの再起動を防ぎます.

> モデル展開

● モデルのワンクリック デプロイをサポートし、リアルタイムまたはバッチ データの予測を生成し、ワンクリック デプロイで複数のアベイラビリティ ゾーンにまたがる自動拡張インスタンスにモデルをデプロイできるため、インフラストラクチャの運用や保守操作を一切行わずに高い冗長性を実現できます。Amazon SageMaker は、コンピューティング インスタンスとモデルの展開を自動的に管理し、API アクセス用の安全な https エンドポイントを提供できます. アプリケーションは、この API インターフェイスを呼び出すだけで、低レイテンシーで高スループットの推論を実現できます。

● Amazon SageMaker Model Monitor は、展開後にモデルの精度を維持するために使用され、トレーニング データ セットによって制限されます。ターゲット変数が時間の経過とともに変化すると、モデルは適用できなくなります。これは、コンセプト ドリフト (Concept Drift) と呼ばれることがよくあります。 . 例えば、経済環境の変化により金利が変動し、住宅購入モデルの予測結果に影響を与える可能性があります.Amazon SageMaker Model Monitorは、デプロイされたモデルのコンセプトのドリフトを検出し、詳細なアラートを提供できます.同時に、 Amazon SageMaker によってトレーニングされたモデルは、問題の根本原因を特定するのに役立つ重要な指標を自動的に送信します。これにより、トレーニング データが限られているいくつかのシナリオに自動化されたメカニズムが提供されます。これにより、延期することなく、オンライン データを通じてモデルの継続的な調整が容易になります。収集されたデータが不十分であるか、自動化されたプロセスが不足しているため、モデルの展開。

● オーケストレーションと管理のために Kubernetes と統合します。現在、多くの機械学習チームの作業プラットフォームは Kubernetes プラットフォームに基づいており、一部の既存のワークフロー オーケストレーションとアプリケーションは移行が容易ではありません.これらの問題を解決するために、Amazon SageMaker は Kubernetes Operator を提供して Kubernetes ベースのワークフローと統合します。

● Amazon SageMaker Neo は、一度のモデルトレーニングと複数の場所での実行をサポートしています。Amazon SageMaker Neo を使用すると、機械学習モデルを一度トレーニングしてから、クラウドまたはエッジ コンピューティング ノードのさまざまなハードウェアおよびシステム環境で実行して、クラウド インスタンスおよびエッジ デバイスで推論できるため、モデルの実行が最適化され、精度を失うことなく高速に実行できます。最適化されたモデルは、特定のモデルとハードウェア ターゲットで利用可能な最高のパフォーマンスを提供する特定のハードウェア上で、最大 2 倍の速度で実行でき、消費するリソースを減らすことができます。つまり、Amazon SageMaker が提供する一連の機能コンポーネントは、機械学習プロセスのすべての側面をカバーし、機械学習の効率と品質を大幅に向上させ、ユーザーがモデルを構築、トレーニング、デプロイするための包括的なサポートと保証を提供します。

outside_default.png

1.3 Amazon SageMaker の利点

上記の紹介から、Amazon SageMaker には包括的な機械学習プラットフォームとして次の利点があると結論付けることができます。

> 効率: Amazon SageMaker は、機械学習の効率と品質を大幅に向上させることができる、自動モデル チューニング、高性能モデルのトレーニングとデプロイ、豊富な監視およびデバッグ ツールなど、一連の効率的な機能コンポーネントを提供します。

> 柔軟性: Amazon SageMaker は、さまざまなモデルのデプロイおよび管理方法を提供し、ユーザーはニーズに応じて適切なデプロイ方法を選択できます。

> スケーラビリティ: Amazon SageMaker は、コンピューティング リソースとストレージ リソースを簡単に拡張して、さまざまなサイズと複雑さの機械学習タスクに対処できます。

> セキュリティ: Amazon SageMaker は、ユーザーデータのセキュリティと機密性を確保するために、データのプライバシーと保護、アクセス制御と暗号化などを含むさまざまなセキュリティ対策を提供します。

> 費用対効果: Amazon SageMaker はさまざまな支払いモデルを提供し、ユーザーはニーズに応じて適切な支払い方法を選択でき、Amazon SageMaker の自動最適化機能を使用して機械学習タスクのコストを削減できます。

つまり、Amazon SageMaker には、高効率、柔軟性、スケーラビリティ、セキュリティ、および費用対効果という利点があり、包括的な機械学習のサポートと保証をユーザーに提供し、ユーザーが高品質の機械学習モデルを構築、トレーニング、デプロイするのに役立ちます。もっと簡単に。次に、高品質の画像を生成するために、Amazon SageMaker に基づく Stable Diffusion 生成モデルを作成してデプロイします。

outside_default.png

AIGCと安定拡散

outside_default.png

2.1 AIGC時代の到来

現在、人工知能モデルは、識別モデル (Discriminative Model) と生成モデル (Generative Model) の 2 つのカテゴリに分けることができます。識別モデルは、テキスト、X 線画像、ゲーム画面などの一連の入力データに基づいており、一連の計算を行って、単語の翻訳結果、X 線の診断結果など、対応するターゲット出力結果を取得します。画像、またはゲームの次の瞬間に実行されるアクション。おそらく最もよく知られている AI モデルのクラスである識別モデルは、一連の入力変数とターゲット出力の間のマッピングを作成することを目的としています。

生成モデルは、入力変数のスコアやラベルを計算しませんが、入力と出力の関係を学習して新しいデータ サンプルを生成します. このタイプのモデルは、実際の値とは関係のないベクトル (ランダムなベクトルでも) を受け入れることができます。テキスト、音楽、画像などの複雑な出力を生成します。人工知能生成コンテンツ (AIGC) コンテンツとは、一般に、機械学習と自然言語処理技術を使用して、コンピューターが人間が理解できるテキスト、音声、画像、およびその他のコンテンツを生成できるようにすることを指し、主にディープ ラーニング アルゴリズムとニューラル ネットワークで構成されています。大量のデータから学び、人間の思考と創造性をシミュレートして、高品質のコンテンツを作成します。下の画像は、Stable Diffusion モデルを使用して生成された画像です.生成された画像は高品質であるだけでなく、与えられた入力記述によく適合していることがわかります.

9eea6fb9263cb8535ecc3bb3bb062dbe.png

AIGC は、元のデータを単純にコピーするのではなく、機械学習手法を通じて生データからデータの特徴を学習し、トレーニング データに類似した新しい元のデータを生成します。AIGC は大きな進歩を遂げており、さまざまな分野で広く使用されています。

> コンテンツ作成:クリエイターが写真、記事、小説、音楽、その他のコンテンツの作成を完了するのに役立ちます。

> デザイン:グラフィックデザイン、UI デザインなどのデザイナーに役立ちます。

> ゲーム:ゲーム内のキャラクターや小道具などの要素を生成できます。

> ビデオ制作:特殊効果、アニメーション、その他のコンテンツを生成できます。

> インテリジェントな顧客サービス:自然言語の対話を生成して、インテリジェントな顧客サービスなどのアプリケーションを実現できます。

AIGC は、人工知能がデータを生成する速度を大幅に加速し、人間社会を大きく変化させ、執筆、絵画、プログラミングなどの人間の創造的活動を促進し、生成科学などの科学研究 仮説や科学現象など AIGCは、さまざまな業界に革命を起こす、急速に発展している分野です。将来的には、学界と産業界による新しいアルゴリズムと技術の継続的な調査を通じて、生成されるコンテンツの品質と多様性がさらに向上します。

一般に、識別モデルは入力と出力の関係に着目して出力結果を直接予測しますが、生成モデルはデータの分布に着目し、データの統計的特性を学習して新しいサンプル データを生成します。識別モデルは、過去数十年で人工知能の開発を促進してきました。生成モデルは、今後 10 年間で人工知能の主要な開発方向になるでしょう。

outside_default.png

2.2 安定拡散の紹介

AI ペインティングが最近このように大きな進歩を遂げた理由は、潜在拡散モデル (Latent Diffusion Models、LDM) に基づくテキストから画像へのモデルであるオープン ソース モデル Stable Diffusion に大きく起因する可能性があります。 LAION-5B データベースのサブセットから 512x512 画像を使用して目的のデータ サンプルを取得するためのガウス ノイズ (LAION-5B は現在、自由にアクセスできる最大のマルチモーダル データセットです)。このモデルを使用したトレーニングにより、人間の顔を含む任意の画像を生成できます。Stable Diffusion を使用して高品質の画像を生成する前に、まずモデルの原理とアーキテクチャを紹介します. Stable Diffusion モデルのアーキテクチャを次の図に示します。

98ed2c10deb5a1d4ecf72754e4766456.png

Generative Adversarial Network (GAN) と比較すると、Diffusion モデルは画像生成効果が優れていますが、このモデルは繰り返しの反復計算を必要とする自己回帰モデルであるため、トレーニングと推論のコストが高いことが主な理由です。特に高解像度の画像を生成する場合は、メモリを大量に消費します。潜在拡散は、実際のピクセル空間を使用する代わりに、低次元の潜在空間に拡散プロセスを適用することにより、メモリと計算のコストを削減します。したがって、安定拡散は、高価な計算の問題を解決するために潜在拡散法を導入し、計算の複雑さを大幅に削減できます。高品質の画像を生成する一方で、潜在拡散には主に次の 3 つのコンポーネントが含まれます。

● Variational autoEncoder (VAE) VAE モデルは主にエンコーダとデコーダの 2 つの部分で構成され、エンコーダは画像を低次元潜在表現に変換するために使用され、得られた低次元潜在表現は U として使用されます。 - ネットモデル。デコーダーは潜在表現を画像に変換するために使用されます。潜在拡散トレーニング中、エンコーダーは、順方向拡散のプロセスを通じて画像の潜在表現を取得するために使用されます。これは、各ステップでますます多くのノイズを徐々に使用します。推論中、逆拡散プロセスによって生成されたノイズ除去された潜在表現は、VAE デコーダーを使用して画像に変換されます。

● U-Net U-Net にはエンコーダとデコーダの 2 つの部分があり、どちらも ResNet ブロックで構成されています. エンコーダは画像表現を低解像度の画像表現に圧縮し、デコーダは低解像度の画像表現をデコードして元の高解像度に戻します.解像度画像表現。ダウンサンプリング時に U-Net が重要な情報を失うのを防ぐために、通常、エンコーダのダウンサンプリング ResNet とデコーダのアップサンプリング ResNet の間にショートカット接続 (Short-cut Connections) が追加されます。 cross-attention レイヤー テキストの埋め込みで出力を調整するために、通常は ResNet ブロック間で使用される U-Net のエンコーダー部分とデコーダー部分に cross-attention レイヤーが追加されます。

● Text-Encoder Text-Encoder は、入力プロンプトを U-Net が理解できる埋め込み空間に変換する役割を果たします. 通常、入力単語分割シーケンスを潜在テキスト埋め込みシーケンスにマッピングする単純な Transformer ベースのエンコーダです。Imagen に触発された Stable Diffusion は、トレーニング プロセス中に Text-Encoder をトレーニングせず、CLIP で事前トレーニングされた Text-Encoder-CLIPTextModel のみを使用します。

ただし、潜在拡散は低次元の潜在空間で動作できますが、ピクセル空間拡散モデルと比較してメモリと計算の要件が大幅に削減されますが、高品質の写真を生成する必要がある場合は、モデルを GPU 上に置く必要があります。 16GB 以上 実行中、具体的には、ローカル コンピューターで Stable Diffusion モデルを構築すると、次の問題が発生します。

> ソフトウェア環境: Stable Diffusion モデルの構築には、特定のソフトウェアとライブラリを使用する必要があります. ローカル コンピューターでソフトウェア環境を構築すると、バージョンの非互換性や複雑な依存関係などの問題が発生する可能性があり、デバッグと修正に多くの時間と労力が必要です.解決;

> データ処理:安定拡散モデルのトレーニングでは、大量の高品質の画像データを処理する必要があり、ローカル コンピューターで大量のデータを処理すると、メモリ不足や速度の低下などの問題が発生する可能性があります。

> コンピューティング リソースの制限: Stable Diffusion モデルのトレーニングには、ハイ メモリ GPU や大量のメモリなど、多くのコンピューティング リソースが必要です.ローカル コンピューターのコンピューティング リソースが不十分な場合、モデルをトレーニングすることはできません;

> ハイパーパラメータ: 安定拡散モデルでは、拡散係数、境界条件、学習率など、多数のパラメータを設定する必要があります。これらのハイパーパラメータの選択には、多くのデバッグが必要です。そうしないと、モデルが収束しないか、収束速度が低下する可能性があります。遅すぎる;

> モデルの検証:安定拡散モデルでは、モデルの正確性と信頼性を確保するために、広範なモデルの検証とテストが必要です。

要約すると、Stable Diffusion モデルを構築するには、コンピューティング リソースの制限、ソフトウェアの互換性の問題、データ処理、ハイパーパラメーターの選択などの問題を克服する必要があります。したがって、これらのタスクを簡素化するためにクラウド コンピューティング プラットフォームを選択することは当然の選択となり、完全マネージド型の機械学習サービスである Amazon SageMaker は、複雑なモデル (Stable Diffusion など) を構築、トレーニング、デプロイするための最初の選択肢になりました。

outside_default.png

Amazon SageMaker で作成 

安定拡散モデル

このセクションでは、Amazon SageMaker ベースの Amazon SageMaker Notebook インスタンスを紹介して、AIGC モデルをテスト、検証し、AIGC モデルを Amazon SageMaker 推論エンドポイントにデプロイします。

outside_default.png

3.1 準備

AIGC モデルを Amazon SageMaker 推論エンドポイントにデプロイできるようにするには、十分なクォータがあることを確認する必要があります。これを行うには、まずサービス クォータ ページでクォータを確認する必要があります。検索ボックスにエンドポイントの使用法として ml.g4dn.xlarge を入力します。このクォータの 2 列目が 0 の場合は、クォータを増やす必要があります。

9b40f99e5ce110626753ed82a29c8e9f.jpeg

クォータを増やすには、まずエンドポイントの使用に ml.g4dn.xlarge を選択し、[クォータの増加をリクエスト] ボタンをクリックします。

2caccaf0e6add60b00279454821d1edd.jpeg

「1」などの入力ボックスに必要な制限を入力し、入力後、「リクエスト」ボタンをクリックしてリクエストを送信します。

02b4339d54dab4cbebbb5047f26ac42a.png

割り当て要求が通過するのを待ってから、実験プロセスを続行できます。

outside_default.png

3.2 Amazon SageMaker Notebook のインスタンスを作成する

Amazon SageMaker Notebook インスタンスは、Jupyter Notebook アプリケーションを実行する機械学習コンピューティング インスタンスです。Amazon SageMaker は、インスタンスと関連リソースの作成を管理するために使用されます. Notebook インスタンスで Jupyter Notebook を使用して、データの準備と処理、モデルをトレーニングするためのコードの記述、Amazon SageMaker へのモデルのデプロイ、およびモデルのテストまたは検証を行うことができます. 次に、関連する Jupyter Notebook コードを実行する Amazon SageMaker Notebook インスタンスを作成します。

>(1) Amazon クラウド テクノロジー コンソールにログインし、現在のリージョンを東京リージョンに変更します。

a4d17af0f504a8dfc01b0b05c4a5dbba.jpeg

> (2)検索ボックスで Amazon SageMaker を検索し、クリックして Amazon SageMaker サービスに入ります。

ad28e242ba219fd30363fc0a652fa0bd.jpeg

> (3)左側のメニュー バーで、まず [ノートブック] ボタンをクリックし、次に [ノートブック インスタンス] をクリックしてノートブック (ノートブック) インスタンス コントロール パネルに入り、右上隅にある [ノートブック インスタンスの作成] ボタンをクリックします。

30b8591fcc8427b8024815289924820a.jpeg

> (4)ノートブック インスタンス設定の構成 ノートブック インスタンス作成の詳細ページで、ノートブック インスタンス名 (Stable-Diffusion など)、ノートブック インスタンス タイプ (ml.g4dn.xlarge を選択) など、ノートブック インスタンスの基本情報を構成します。インスタンスタイプ、このタイプ インスタンスには NVIDIA T4 Tensor Core GPU グラフィックカードが装備されており、モデルで必要な浮動小数点計算を実行する機能を提供します)、プラットフォーム識別子 (Amazon Linux 2、Jupyter Lab 3)、およびボリュームサイズ[その他の構成] の下 (機械学習モデルの保存に使用される、少なくとも 75 GB のディスク サイズを推奨):

e355f0f2ef318d97bff22d6e85e6b53c.jpeg

> (5)ノートブック インスタンスのアクセス許可を設定し、ノートブック インスタンスの IAM ロールを作成して、モデルのアップロード、モデルのデプロイなど、Amazon SageMaker や S3 などのサービスを呼び出します。[アクセス許可と暗号化] の下の IAM ロールで、ドロップダウンをクリックし、[新しいロールの作成] をクリックします。

2d0be69080e5d3c8048b2d990f80097c.jpeg

構成ページで、デフォルトの構成を保持し、[ロールの作成] ボタンをクリックします。

6117d3b1e3c193ebc66f5686fc5d1fca.png

IAM ロールが正常に作成されると、次のようなプロンプトが表示されます。

259e808d3c916b6e51e9240046ea3712.jpeg

> (6)構成情報を確認し、正しいことを確認してから「ノートブックインスタンスの作成」ボタンをクリックし、インスタンスが作成されるのを待ちます。

dd318d9660fe60ca23bfbbb6dd95357d.jpeg

> (7)ノートブックのステータスが InService に変わったら、[Open Jupyter] をクリックして Jupyter Notebook に入ります。

9bb95e3a88624fd1efcb0c68891663ed.jpeg

outside_default.png

3.3 エンドツーエンドの AIGC エクスペリエンス

次に、ノートブックのコード ファイルをダウンロードして保存し、Jupyter Notebook にアップロードして、コードを直接実行することもできますが、コードを手で書くという経験は他に類を見ません.コード ファイルの主な内容を紹介し、AIGC を体験します。 -最初から最後まで!カーネルが conda_pytorch で始まることを確認する必要があることに注意してください。

> (1)関連するライブラリをインストールし、環境設定を実行します。

!nvcc --version
!pip list | grep torch
# 安装Notebook运行模型所需的库文件
!sudo yum -y install pigz
!pip install -U pip
!pip install -U transformers==4.26.1 diffusers==0.13.1 ftfy accelerate
!pip install -U torch==1.13.1+cu117 -f https://download.pytorch.org/whl/torch_Stable.html
!pip install -U sagemaker
!pip list | grep torch

左にスワイプして詳細を表示

> (2)モデルファイルをダウンロードします. 堅牢なテキスト生成画像モデルを含む Stable Diffusion V2 バージョンを使用します.これにより, 画像生成の品質が大幅に向上します. モデルの紹介については, Github を参照してください.

!curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | sudo bash
!sudo yum install git-lfs -y
# 设定模型版本的环境变量,使用 Stable Diffusion V2
SD_SPACE="stabilityai/"
SD_MODEL = "Stable-Diffusion-2-1"
# 克隆代码仓库
# Estimated time to spend 3min(V1), 8min(V2)
%cd ~/SageMaker
!printf "=======Current Path========%s\n"
!rm -rf $SD_MODEL
# !git lfs clone https://huggingface.co/$SD_SPACE$SD_MODEL -X "*.safetensors"
!mkdir $SD_MODEL
%cd $SD_MODEL
!git init
!git config core.sparseCheckout true
!echo "/*" >> .git/info/sparse-checkout
!echo "!**/*.safetensors" >> .git/info/sparse-checkout
!git remote add -f master https://huggingface.co/$SD_SPACE$SD_MODEL
!git pull master main
%cd ~/SageMaker
!printf "=======Folder========%s\n$(ls)\n"

左にスワイプして詳細を表示

> (3)ノートブックでモデルを構成して使用するには、まず関連するライブラリとモデルをロードします。

import datetime
from diffusers import StableDiffusionPipeline
# Load Stable Diffusion
pipe = StableDiffusionPipeline.from_pretrained(SD_MODEL, torch_dtype=torch.float16)

左にスワイプして詳細を表示

GPU を使用して計算を実行し、ハイパーパラメーターを設定します。

● prompt (str または List[str]): ブート イメージによって生成されたテキスト プロンプトまたはテキスト リスト。

● 高さ (int、*オプション、V2 デフォルト モデルは最大 768 ピクセルをサポート可能): 生成された画像の高さ (ピクセル単位)

● 幅 (int、*オプション、V2 デフォルト モデルは最大 768 ピクセルをサポートできます): 生成された画像の幅 (ピクセル単位)。

● num_inference_steps (整数、*オプション、デフォルトのノイズ除去ステップ数は 50): ノイズ除去ステップの数。通常、ノイズ除去ステップが多いほど、推論が遅くなりますが、より高品質の画像が得られます。

Guidance_scale (float、* オプション、デフォルトのガイダンス スケールは 7.5): ガイダンス スケールを高くすると、イメージがヒントに密接に関連するようになりますが、イメージの品質が犠牲になり、guide_scale<=1 の場合は無視されます。

Negative_prompt (str または List[str]、*オプション): 画像生成につながらないテキストまたはテキストのリスト。

● num_images_per_prompt (整数、*オプション、プロンプトごとに 1 つの画像を生成するデフォルト): プロンプトごとに生成される画像の数。

torch.cuda.empty_cache()
pipe = pipe.to("cuda")


print(datetime.datetime.now())
prompts =[
    "Eiffel tower landing on the Mars",
    "a photograph of an astronaut riding a horse,van Gogh style",
]
generated_images = pipe(
    prompt=prompts,
    height=512,
    width=512,
    num_images_per_prompt=1
).images  # image here is in [PIL format](https://pillow.readthedocs.io/en/Stable/)


print(f"Prompts: {prompts}\n")
print(datetime.datetime.now())


for image in generated_images:
    display(image)

左にスワイプして詳細を表示

> (4)モデルを Sagemaker 推論エンドポイントにデプロイする. モデルを構築してトレーニングした後、モデルをターミナルノードにデプロイして、予測推論結果を取得できます。

import boto3
sess = sagemaker.Session()
# sagemaker session bucket -> used for uploading data, models and logs
# sagemaker will automatically create this bucket if it not exists
sagemaker_session_bucket=None


if sagemaker_session_bucket is None and sess is not None:
    # set to default bucket if a bucket name is not given
    sagemaker_session_bucket = sess.default_bucket()


try:
    role = sagemaker.get_execution_role()
except ValueError:
    iam = boto3.client('iam')
    role = iam.get_role(RoleName='sagemaker_execution_role')['Role']['Arn']


sess = sagemaker.Session(default_bucket=sagemaker_session_bucket)


print(f"sagemaker role arn: {role}")
print(f"sagemaker bucket: {sess.default_bucket()}")
print(f"sagemaker session region: {sess.boto_region_name}")

左にスワイプして詳細を表示

カスタム推論 inference.py スクリプトを作成します。

# 为模型创建所需依赖声明的文件
%%writefile ./$SD_MODEL/code/requirements.txt
diffusers==0.13.1
transformers==4.26.1
# 编写 inference.py 脚本
%%writefile ./$SD_MODEL/code/inference.py
import base64
import torch
from io import BytesIO
from diffusers import StableDiffusionPipeline




def model_fn(model_dir):
    # Load Stable Diffusion and move it to the GPU
    pipe = StableDiffusionPipeline.from_pretrained(model_dir, torch_dtype=torch.float16)
    pipe = pipe.to("cuda")


    return pipe




def predict_fn(data, pipe):


    # get prompt & parameters
    prompt = data.pop("prompt", "")
    # set valid HP for Stable Diffusion
    height = data.pop("height", 512)
    width = data.pop("width", 512)
    num_inference_steps = data.pop("num_inference_steps", 50)
    guidance_scale = data.pop("guidance_scale", 7.5)
    num_images_per_prompt = data.pop("num_images_per_prompt", 1)
    # run generation with parameters
    generated_images = pipe(
        prompt=prompt,
        height=height,
        width=width,
        num_inference_steps=num_inference_steps,
        guidance_scale=guidance_scale,
        num_images_per_prompt=num_images_per_prompt,
    )["images"]


    # create response
    encoded_images = []
    for image in generated_images:
        buffered = BytesIO()
        image.save(buffered, format="JPEG")
        encoded_images.append(base64.b64encode(buffered.getvalue()).decode())


    # create response
    return {"generated_images": encoded_images}

左にスワイプして詳細を表示

モデルをパッケージ化し、S3 バケットにアップロードします。

!echo $(date)
!tar --exclude .git --use-compress-program=pigz -pcvf ./$SD_MODEL'.tar.gz' -C ./$SD_MODEL/ .
!echo $(date)


from sagemaker.s3 import S3Uploader


print(datetime.datetime.now())
# upload model.tar.gz to s3, Estimated time to spend 30s(V1), 1min(V2)
sd_model_uri=S3Uploader.upload(local_path=f"{SD_MODEL}.tar.gz", desired_s3_uri=f"s3://{sess.default_bucket()}/Stable-Diffusion")
print(f"=======S3 File Location========\nmodel uploaded to:\n{sd_model_uri}")


print(datetime.datetime.now())

左にスワイプして詳細を表示

HuggingFace を使用してモデルを Amazon SageMaker にデプロイします。

huggingface_model = {}
predictor = {}


from sagemaker.huggingface.model import HuggingFaceModel
# create Hugging Face Model Class
huggingface_model[SD_MODEL] = HuggingFaceModel(
    model_data=sd_model_uri, # path to your model and script
    role=role, # iam role with permissions to create an Endpoint
    transformers_version="4.17", # transformers version used
    pytorch_version="1.10", # pytorch version used
    py_version='py38', # python version used
)


# deploy the endpoint endpoint, Estimated time to spend 8min(V2)
print(datetime.datetime.now())


predictor[SD_MODEL] = huggingface_model[SD_MODEL].deploy(
    initial_instance_count=1,
    instance_type="ml.g4dn.xlarge",
    endpoint_name=f"{SD_MODEL}-endpoint"
)


print(f"\n{datetime.datetime.now()}")

左にスワイプして詳細を表示

推論エンドポイントに基づいてカスタム イメージを生成します。

from io import BytesIO
import base64


# helper decoder
def decode_base64_image(image_string):
    base64_image = base64.b64decode(image_string)
    buffer = BytesIO(base64_image)
    return Image.open(buffer)


response = predictor[SD_MODEL].predict(data={
    "prompt": [
        "A bird is flying in space",
        "Photos of horseback riding under the sea",
    ],
    "height" : 512,
    "width" : 512,
    "num_images_per_prompt":1
  }
)


#decode images
decoded_images = [decode_base64_image(image) for image in response["generated_images"]]


#visualize generation
for image in decoded_images:
    display(image)

左にスワイプして詳細を表示

outside_default.png

3.4 モデル生成効果

次に、展開されたモデルを使用して画像生成の効果を確認します. たとえば、鳥が宇宙を飛んでいる画像と海の下を乗馬している写真を使用して、次の画像を取得できます。

18b52561c4f82a047a4c2ada24eea2a8.png

少数のキーワードを与えるだけでも、質感が鮮明で高品質な画像を生成でき、他のテキストテストで展開されている画像生成モデルも利用できることがわかります。

outside_default.png

Amazon SageMaker の経験

Amazon SageMaker を使用して機械学習モデルを構築およびデプロイする過程で、Amazon SageMaker が提供する機械学習機能とツールを十分に体験しました。Amazon SageMaker は、機械学習タスクをより迅速かつ効率的に実行でき、柔軟性、スケーラビリティ、および容易さも備えています。多くの利点は、一般的に、経験は次のとおりです。

● Amazon SageMaker は、モデルをより迅速に開発、トレーニング、デプロイできる完全な機械学習ツールを提供します. Amazon SageMaker の自動化機能は、ユーザーがモデルとパラメーターを迅速に最適化するのにも役立ち、機械学習の複雑さと作業負荷を軽減します。

● Amazon SageMaker は、データの探索と処理を高速化するための使いやすいインタラクティブなノートブックを提供し、コードとノートブックを簡単に共有してコラボレーションとコミュニケーションを容易にします。

● Amazon SageMaker は、使用中のさまざまなシナリオのニーズを満たすために、さまざまなモデルのデプロイおよび管理方法を提供します。

● Amazon SageMaker プラットフォームは、モデルのパフォーマンスをより適切に追跡および分析し、モデルの安定性と信頼性を確保するための包括的なモニタリングおよびデバッグ ツールを提供します。

outside_default.png

まとめ

人工知能生成コンテンツ ( AIGC ) は、その独特の「創造性」と人間の手の届かない創造速度で人工知能の狂乱を引き起こしました。ただし、生成モデルの構築は複雑であるため、ほとんどの AIGC ユーザーと企業にとって、クラウドでの AI モデルのトレーニングと展開が最初の選択肢になりました。優れたクラウド機械学習プラットフォームである Amazon SageMaker は、機械学習モデルをより効率的に構築、トレーニング、デプロイし、モデルを生成するための高い計算要件の問題を解決するのに役立つ豊富な機能とツールを提供します。この記事では、主に、Amazon Cloud Technology のクラウド探査ラボ活動に参加する過程で、Amazon SageMaker に基づいて安定拡散モデルを作成および展開する際の関連点を確認し、構築、トレーニングの過程で Amazon SageMaker の利点を十分に示します。人工知能モデルの展開。

outside_default.png

Cloud Discovery ラボのアクティビティ

Cloud Exploration Lab は、技術的な実験、製品体験、およびケース アプリケーションを通じて、ユーザーが最新かつ最新の Amazon クラウド テクノロジ開発者ツールおよびサービスを体験できるようにすることを目的としています。Exploration Lab on the Cloud は現在本格的に実施されています. グループ指導と実践的な体験の形で実施されています. 公式は複数の体験チュートリアルとクイックスタート教材を提供しています. 参加者はさまざまな難易度の実験を選択できます.このイベントを通じて、さまざまな形式の体験作品を提出することで、機械学習と AI 技術のより多くのアプリケーション シナリオを探索できるだけでなく、志を同じくする開発者と出会うこともできます。是非、一緒に体験してください!

00c755337ff67024fcfc64e3fb40054e.png

▌著者:パン・シャオホイ

59f40ba7b90e2c267b8b911f45705356.gif

0041929cecb526c6b3ac099f84431dbc.gif

と聞きました、下の4つのボタンをクリック

バグに遭遇することはありません!

682e2802f7f0f034eb179826c372d629.gif

おすすめ

転載: blog.csdn.net/u012365585/article/details/130279169