今日の急速に進化するAIの景観では、高品質の注釈付きデータセットとカスタマイズされたモデルの需要はこれまで以上に大きくなっています。このニーズに対処するために、私たちのプロジェクトは、データアノテーションをモデルの微調整とシームレスに統合する革新的なモジュールを開発することを目的としています。このモジュールは、ClaudeやChatGPT-4などの最先端の言語モデルを活用して提供された顧客画像にラベルを付け、その後、これらの注釈を使用して安定した拡散XL(SDXL)モデルを微調整します。
このプロジェクトの目標は、データアノテーションプロセスを自動化し、モデルトレーニングを強化する堅牢で効率的なモジュールを作成することです。高度なAI機能を統合することにより、新しく注釈付きのデータセットで微調整された高度に適応性のある正確なSDXLモデルを作成することを目指しています。
Claude/ChatGPT-4(または同様の)APIを利用して、5〜20の顧客画像のセットに高品質の注釈を生成します。
トレーニング目的で信頼できるデータセットを作成するために、注釈が正確かつ一貫していることを確認してください。
注釈付きデータセットを使用してSDXLモデルを微調整します。
注釈付きデータの特定の特性に基づいて、モデルのパフォーマンスを最適化するために、低ランク適応(LORA)技術を実装します。
このプロジェクトは、重要なプロセスを自動化および統合することにより、AIモデル開発の効率と精度を高めるように設計されています。注釈と洗練された微調整方法の高度な言語モデルの組み合わせは、さまざまなAIアプリケーションの増大するニーズを満たす非常に効果的なソリューションになります。肉体労働を削減し、モデルのパフォーマンスを向上させることにより、このプロジェクトは、生成的AI技術に依存する産業に大きな価値を提供します。

微調整には異なる種類があります。微調整方法の選択は、システムの仕様と使用法によって異なります。 LORA(低ランク適応)モデルは、効率とコンパクトさを高めます。それらは、既存のチェックポイントモデルの上に構築されるアダプターのように機能します。具体的には、LORAモデルはチェックポイントモデルからパラメーターのサブセットのみを更新し、それによりその機能を強化します。このアプローチにより、LORAモデルは通常2MBから500MBの範囲の小さなサイズを維持でき、特定の概念やスタイルに頻繁に微調整できます。
たとえば、DreamBoothを使用して安定した拡散モデルを微調整する場合、モデル全体を特定の概念またはスタイルに適応させるために、結果として生じる大きなモデルサイズ(約2〜7 GB)と集中的なGPU使用のために重要な計算リソースが必要です。対照的に、LORAモデルは、GPU要件が大幅に低いと同等の推論結果を実現します。
Loraは広く採用されている方法ですが、安定した拡散を修正するための代替アプローチがあります。そのような方法の1つは、迅速なテキストをテキストの埋め込みに変換することから導出された入力を処理するCrossAttentionモジュールです。テキストの反転は、ロラよりもさらにコンパクトで速い別のアプローチを表しています。ただし、テキストの反転は、特定の概念やスタイルのための微調整テキストの埋め込みだけに限定されます。画像生成の原因となる根本的なU-NETは、まったく新しい出力を生成することなく、トレーニング中に使用されたものと同様の画像を生成するために、テキストの反転を変更することなく、テキストの反転を制限します。
このプロジェクトでは、2種類の微調整方法があります。最初のオプションは、DreamBoothとLoraの組み合わせを使用することであり、もう1つはLoraのみを使用しています。最初のオプションを使用することが最良の選択であり、このプロジェクトでは好ましい方法です。この選択の理由は次のとおりです。
強化された適応性:DreamBoothは、モデル全体を特定の概念やスタイルに包括的に適応できるようにする微調整方法です。 DreamBoothで微調整することにより、SDXLモデルは、目的の出力と密接に整合する微妙な詳細と特性を学ぶことができます。
効率とコンパクトさ:LORA(低ランクの適応)がDreamBoothの微調整の後に登場します。 LORAモデルは、チェックポイントモデルのパラメーターのサブセットのみを更新することにより、効率を最適化するように設計されています。このアプローチは、DreamBoothのみが変更したモデルなど、完全に微調整されたモデルと比較して、モデルサイズ(通常は2MBから500MB)を大幅に削減します。
計算リソースの削減:DreamBoothとLORAを組み合わせると、トレーニングと推論の両方でGPUリソースが少ないモデルが得られます。 DreamBoothは当初、包括的な微調整プロセスのためにかなりのリソースを必要としますが、Loraのその後のパラメーター削減により、モデルが管理しやすく効率的なままであることが保証されます。
パフォーマンスの保存:効率の向上にもかかわらず、LoraはDreamBoothの微調整を通じて達成される高品質のパフォーマンスを維持しています。この組み合わせにより、モデルは、完全に微調整されたモデルによって生成されるものに匹敵する印象的な出力を生成する能力を保持します。
反復改良のための柔軟性:Dreamboothの反復アプローチとそれに続くLoraは、反復的な洗練と微調整を可能にします。この柔軟性は、モデルの効率やパフォーマンスを損なうことなく、進化する概念やスタイルへの継続的な適応が必要なシナリオで重要です。
上記のように、このプロジェクトでSDXLモデルを微調整する好ましい方法は、DreamBoothとLoraの組み合わせです。 DreamboothとLoraの組み合わせの背後にある理論的根拠は、モデルの適応性と計算効率の間のトレードオフを最適化することにあります。 DreamBoothを使用すると、データまたは目的の出力の特定のニュアンスにモデルのパラメーターを徹底的に適応させることができます。ただし、この包括的な適応は、特にトレーニングと推論中に、より大きなモデルサイズと計算需要の増加につながる可能性があります。一方、Loraはドレアムブース後に介入してモデルを合理化し、パフォーマンスを維持しながらそのサイズを縮小します。この組み合わせは、両方のアプローチの強みを活用します:正確な適応のためのDreamBoothと効率的なパラメーター管理のためのLORA。
この微調整アプローチの主なステップは次のとおりです。
パラメーター調整:DreamBoothを使用して、SDXLモデル内のパラメーターのセット全体を調整して、定義された目標とより密接に合わせます。このプロセスには、ターゲットデータセットまたは目的の出力特性に基づく反復的な更新が含まれます。
トレーニングフェーズ:定義された目的とトレーニングデータを使用して、微調整プロセスを実行します。このフェーズにより、SDXLモデルが、目前のタスクの特定のニュアンスと要件に細かく調整されるようになります。
パラメーターの選択:ドレアムブース後、パフォーマンスの維持または強化に最も重要なパラメーターのサブセットを特定します。このステップでは、微調整されたSDXLモデル内のさまざまなパラメーターの重要性と影響を分析することが含まれます。
低ランク因子化:低ランクマトリックス因数分解などのLORA技術を、これらの選択したパラメーターサブセットに適用します。 LORAは、パラメーターマトリックスを低ランクコンポーネントに分解し、冗長性を低下させ、最も影響力のあるパラメーターに計算リソースを集中させます。
選択的パラメーターの更新:特定された低ランクコンポーネントのみを更新するため、パフォーマンスメトリックを保存または改善しながら、モデルの効率を最適化します。
(トップに戻る)
Accelerateは、さまざまなハードウェアセットアップで機械学習モデルのトレーニングを合理化および展開するために顔を抱きしめることによって設計された、多目的でユーザーフレンドリーなライブラリです。マルチGPUやTPUセットアップなど、さまざまな分散トレーニング環境の構成と管理の複雑さを抽象化する統合インターフェイスを提供します。 Accelerateを使用すると、開発者は基礎となるインフラストラクチャではなくモデル開発に焦点を当てたPytorchコードを簡単に拡大できます。
このライブラリの利点は次のとおりです。
分散トレーニングを簡素化する:複雑な分散セットアップを手動で構成および管理する必要性を排除し、モデルの開発と微調整に集中できるようにします。
リソースの使用率を強化する:利用可能なハードウェアの使用を最大化し、GPUとTPUを効果的に利用してトレーニングと推論プロセスを高速化することを保証します。
大規模なモデルをサポートする:重要なメモリと計算能力を必要とする大規模なモデルの取り扱いを促進し、最先端のニューラルネットワークで動作するためにアクセスできるようにします。
開発オーバーヘッドの削減:分散トレーニングのプロジェクトへの統合、時間の節約、さまざまなハードウェア環境の管理に関連するオーバーヘッドの削減を合理化します。
BitsandBytesは、特にトレーニングと推論のコンテキストで、大規模なニューラルネットワークのパフォーマンスを最適化するために設計された効率的で革新的なライブラリです。精度を犠牲にすることなく、メモリの消費と計算オーバーヘッドを大幅に削減するためのツールとテクニックを提供します。 BitsandBytesの傑出した機能の1つは、8ビット精密オプティマイザーのサポートです。
このプロジェクトでは、8ビットオプティマイザー技術を使用しています。 BitsandBytesの8ビットオプティマイザーは、トレーニングプロセス中に32ビットの浮動小数点数から8ビット整数に重みと勾配の精度を定量化する手法です。 BitsandBytesから8ビットオプティマイザーを利用することは、安定した拡散XL(SDXL)などの生成モデルの微調整など、大規模なニューラルネットワークを含むプロジェクトにとって特に有利です。 8ビットオプティマイザーを使用する主な理由は次のとおりです。
より大きなモデルの処理:より大きなモデルを利用可能なハードウェアメモリに適合させ、それ以外の場合は実行不可能な最先端のアーキテクチャのトレーニングを可能にします。
より高速なトレーニング:計算負荷を削減し、より迅速な実験と反復を可能にすることにより、トレーニング時間を加速します。
リソースの最適化:利用可能なハードウェアの使用を最大化し、コストのかかるアップグレードの必要性を減らし、既存のリソースを効率的に使用します。
パフォーマンスの向上:メモリと計算の要求の削減の恩恵を受けながら、従来の32ビットトレーニング方法に匹敵する精度とパフォーマンスを達成します。
Faceのハグによって開発されたTransformersライブラリは、自然言語処理(NLP)およびその他のタスクのための最先端の事前訓練モデルを提供するオープンソースライブラリです。 Bert、GPT、T5、Robertaなど、さまざまな変圧器アーキテクチャをサポートしています。ライブラリは、テキスト分類、翻訳、質問応答など、さまざまなアプリケーションにこれらの強力なモデルを簡単に使用できるように設計されています。
このライブラリを使用する利点は次のとおりです。
最先端のモデルへのアクセス:NLPおよびそれ以降の最も高度なモデルの一部に簡単にアクセスして実装して、最高のパフォーマンスのアーキテクチャを使用していることを確認してください。
迅速な開発:ライブラリの簡単なAPIにより、迅速なプロトタイピングと実験が可能になり、開発プロセスが大幅に高速化されます。転送学習機能:特定のタスクで強力な事前訓練を受けたモデルを微調整し、事前知識を活用し、より少ないデータで高性能を達成します。
汎用性の高いアプリケーション:テキスト分類、センチメント分析、名前付きエンティティ認識、機械翻訳など、幅広いタスクにライブラリを使用します。
堅牢なコミュニティサポート:強力なコミュニティと、顔を抱きしめることで提供される広範なリソースの恩恵を受け、プロジェクトで課題を克服し、革新するために必要なサポートを確保します。
PEFT(パラメーター効率の高い微調整)ライブラリは、大規模な機械学習モデルの微調整プロセスを最適化するように設計されています。限られた計算リソースを備えた微調整の大規模なモデルの課題に対処するために開発されたPEFTは、モデルのパラメーターを最小限に抑えて、事前訓練を受けたモデルの新しいタスクへの効率的な適応を可能にする手法に焦点を当てています。
PEFTを使用することの利点:
効率:パラメーター効率の高いメソッドに焦点を当て、微調整する大きなモデルに関連する計算およびメモリオーバーヘッドを削減します。
アクセシビリティ:標準のハードウェアで最先端のモデルを微調整し、高度な機械学習技術へのアクセスを民主化することを可能にします。
速度:微調整プロセスを加速し、モデルの更新と展開を速くすることができます。
パフォーマンス:高度な微調整技術のおかげで、調整されたパラメーターが少ない場合でも、高性能を保証します。
汎用性:幅広いモデルとタスクに適用でき、機械学習実践者に汎用性の高いツールを提供します。
(トップに戻る)
これらの勾配を計算するバックプロパゲーションには、モデルの中間アクティブ化を保存する必要があります。これは、特にSDXLのような大規模なモデルでは、メモリ集約型である可能性があります。勾配チェックポイントは、追加の計算時間に対してメモリ使用量を取引することにより、このメモリチャレンジに対処します。バックプロパゲーション中にモデル全体にすべての中間アクティブ化を保存する代わりに、勾配チェックポイントは、以前に保存されたチェックポイントから始まるアクティブ化を定期的に再構成します。このアプローチは、バックワードパス中にフライでアクティブ化を再計算することにより、ピークメモリの使用量を削減します。勾配チェックポイントを使用することにより、すべての中間アクティブ化を保存するメモリオーバーヘッドが減少します。これは、広範なパラメーター調整(Dreambooth)および選択的更新(LORA)を受けた微調整モデルの場合、特に有益です。勾配チェックポイントはメモリの消費を削減しますが、再計算により追加の計算オーバーヘッドが導入されます。メモリと計算のトレードオフは、利用可能なリソースと特定の微調整目標に基づいてバランスをとる必要があります。
Adam(Adaptive Moment推定)は、深い学習で広く使用されている一般的な最適化アルゴリズムです。各パラメーターの適応学習率と運動量を組み合わせて、収束を加速します。通常、Adamは勾配を保存し、パラメーターを更新するために32ビットの浮動小数点(単一精度)を使用します。 「8ビットAdam」は、これらの操作に8ビットの固定点番号を使用してこれを変更します。 32ビットの代わりに8ビット精度を使用することにより、「8ビットAdam」は、トレーニング中に勾配とパラメーターを保存するために必要なメモリフットプリントを大幅に削減します。これは、多数のパラメーターがあるSDXLのような大規模なモデルで特に有利です。より低い精度の算術操作は、メモリ帯域幅の要件が低下するため、計算をスピードアップする可能性があります。これにより、特に低精度操作のために最適化されたハードウェアアーキテクチャのトレーニング時間が短縮される可能性があります。ただし、トレードオフがあります。より低い精度を使用すると、特に慎重に実装されていない場合は、モデルの精度と安定性に影響を与える可能性があります。潜在的な精度損失を軽減するには、グラデーションスケーリングや適応精度調整などの手法が必要になる場合があります。
フローティングポイント精度には2つの精度レベル、32ビットの浮動小数点、16ビットの浮動小数点があります。 32ビットフローティングポイントは、モデルパラメーターを保存して実行するためのほとんどの深い学習フレームワークで使用される標準の精度です。数値の精度が高くなりますが、より多くのメモリと計算リソースが必要です。 16ビットフローティングポイントは、32ビットフローティングポイントのメモリの半分を使用する縮小精度形式です。多くの深い学習タスクで十分な数値精度を維持しながら、特にテンソルコアを使用したGPUで計算を加速します。 16ビット精度を使用すると、特に複雑な計算を含むSDXLのような大規模なモデルでは、トレーニング時間を大幅に高速化できます。また、精度の低下にはメモリ帯域幅が少なくなるため、利用可能なハードウェア制限内で大きなモデルまたはバッチサイズをトレーニングすることができます。
(トップに戻る)
Colabを使用してプロジェクトをセットアップする手順。以下のリンクをたどって、自分で訓練してください。 「Statue_lora」フォルダーにある事前処理されたモデルを見つけることができます。
大理石の彫像データセットで訓練された前提型モデルを使用して、流線の推論デモを実行するには、次のコマンドを使用します。
必要なパッケージをターミナルにインストールするには、タイプします。
pip install -r requirements.txt端末で、タイプ:
streamlit run main.py(トップに戻る)