ホームページ > テクノロジー周辺機器 > AI > 8GB GPU RAMでフラックスモデルをどのように実行しますか? - 分析Vidhya

8GB GPU RAMでフラックスモデルをどのように実行しますか? - 分析Vidhya

Lisa Kudrow
リリース: 2025-03-20 10:53:11
オリジナル
403 人が閲覧しました

Black Forest Labsの最近リリースされたFluxモデルは、その印象的な画像生成機能で人気を博しています。ただし、そのサイズは当初、標準の消費者ハードウェアでの使用を妨げていました。この制限は、ローカルモデルの負荷を回避するためにAPIサービスの使用に拍車をかけました。ただし、GPUの要件により、オンプレミスの展開は費用がかかりました。幸いなことに、Hugging FaceのDiffusers Libraryは、BitsandBytesを介した量子化をサポートし、8GBのGPU RAMのみのマシンにフラックス推論を可能にします。

8GB GPU RAMでフラックスモデルをどのように実行しますか? - 分析Vidhya

学習目標:

  • コラブ環境でフラックスを使用するための依存関係を構成します。
  • メモリ効率を得るために、4ビットの量子化されたテキストエンコーダーを使用してテキストプロンプトをエンコードします。
  • 画像生成モデルをロードして実行するためのメモリ節約技術を混合した精度で実装します。
  • Colabのフラックスパイプラインを使用して、テキストプロンプトから画像を生成します。

この記事は、Data Science Blogathonの一部です。

目次:

  • 学習目標
  • フラックスとは何ですか?
  • なぜ量子化が重要なのですか?
    • bitsandbytesによる量子化
    • bitsandbytesはどのように機能しますか?
  • 消費者ハードウェアの流動性を実行します
    • ステップ1:環境のセットアップ
    • ステップ2:GPUメモリ管理
    • ステップ3:4ビットT5テキストエンコーダーのロード
    • ステップ4:テキストの埋め込みを生成します
    • ステップ5:4ビットトランスとVAEのロード
    • ステップ6:画像生成
  • デバイス上の画像生成の未来
  • 結論
    • キーテイクアウト
  • よくある質問

フラックスとは何ですか?

Black Forest Labs(安定した拡散の作成者)によって開発されたフラックスは、テキストからイメージモデルの重要な進歩を表しています。安定した拡散に基づいており、パフォーマンスと出力の品質が向上します。当初はリソースが集中していましたが、最適化により、消費者ハードウェアで効率的な実行が可能になります。この記事では、量子化がフラックスのアクセシビリティをどのように強化するかを示しています。以下の画像は、創造的な可能性と計算コストのトレードオフを示しています。

8GB GPU RAMでフラックスモデルをどのように実行しますか? - 分析Vidhya

Fluxは、いくつかの重要なアーキテクチャコンポーネントを誇っています。

  • 2つの事前に訓練されたテキストエンコーダー(クリップとT5):これらのエンコーダーは、テキストの迅速な理解と画像への翻訳を改善します。
  • トランスベースのDITモデル:この除去バックボーンは、効率と精度のために変圧器を活用します。
  • Variational Auto-Encoder(VAE):潜在スペースでの処理により、画質を維持しながら計算需要が減少します。

フラックスは、フラックスシュネル(オープンソース)、フラックスデフ(オープン、より制限的なライセンスを備えた)、およびフラックス-Pro(クローズドソース、APIアクセス可能)のいくつかのバージョンで利用できます。

8GB GPU RAMでフラックスモデルをどのように実行しますか? - 分析Vidhya

なぜ量子化が重要なのですか?

量の少ないビットを使用してパラメーターを保存することでモデルサイズを縮小する手法である量子化は、限られたハードウェアで大きなモデルを実行するために重要です。画像生成ではあまり一般的ではありませんが、パフォーマンスの大幅な損失なしにメモリフットプリントを大幅に削減します。ニューラルネットワークパラメーターは通常32ビットで保存されますが、量子化はこれを4ビットに減らすことができます。

bitsandbytesによる量子化

BitsandBytesライブラリは、Pytorchの効率的なKビット量子化を可能にします。 Diffusersライブラリへの統合により、8GB GPUの流動性が実現可能になります。

bitsandbytesはどのように機能しますか?

BitsandBytesは、8および4ビット精度に量的になります。 8ビットの量子化は、パフォーマンスの劣化を最小限に抑えるために異なる方法で外れ値を処理します。 4ビット量子化は、モデルをさらに圧縮し、微調整にQloraでよく使用されます。

消費者ハードウェアの流動性を実行します

ステップ1:環境のセットアップ

GPU対応環境(例、NVIDIA T4/L4またはGoogle Colab)を確保します。必要なパッケージをインストールします:

 !pip install -uq git https://github.com/huggingface/diffusers@main
!PIPインストール-UQ git https://github.com/huggingface/transformers@main
!ピップインストール-UQビットアンドバイト
ログイン後にコピー

依存関係のインポート:

ディフューザーをインポートします
トランスを輸入します
BNBとしてbitsandBytesをインポートします
DiffusersからImport FluxPipeline、FluxTransformer2DModel
トランスからT5ENCODERMODELをインポートします
トーチをインポートします
GCをインポートします
ログイン後にコピー

ステップ2:GPUメモリ管理

モデル負荷間でGPUメモリをクリアする関数を定義します。

 def flush():
    gc.collect()
    torch.cuda.empty_cache()
    torch.cuda.reset_max_memory_allocated()
    torch.cuda.reset_peak_memory_stats()

フラッシュ()
ログイン後にコピー

ステップ3:4ビットT5テキストエンコーダーのロード

4ビット量子化を使用してT5エンコーダーをロードします。

 ckpt_id = "Black-Forest-labs/flux.1-dev"
ckpt_4bit_id = "hf-internal-testing/flux.1-dev-nf4-pkg"
PROMP =「パリの写真撮影のかわいい犬」

text_encoder_2_4bit = t5encodermodel.from_pretrained(
    ckpt_4bit_id、
    subfolder = "text_encoder_2"、
))
ログイン後にコピー

ステップ4:テキストの埋め込みを生成します

量子化されたエンコーダーを使用してプロンプトをエンコードします。

 pipeline = fluxpipeline.from_pretrained(
    「Black-Forest-Labs/Flux.1-dev」、
    text_encoder_2 = text_encoder_2_4bit、
    トランス=なし、
    vae = none、
    torch_dtype = torch.float16、
))

torch.no_grad()を使用して:
    PROMPT_EMBEDS、Pooled_prompt_embeds、text_ids = pipeline.encode_prompt(
        PROMP = PROMPT、PROMPT_2 =なし、max_sequence_length = 256
    ))

デルパイプライン
フラッシュ()
ログイン後にコピー

ステップ5:4ビットトランスとVAEのロード

トランスとVAEを4ビットモードでロードします。

 transformer_4bit = fluxtransformer2dmodel.from_pretrained(ckpt_4bit_id、subfolder = "transformer")
pipeline = fluxpipeline.from_pretrained(
    ckpt_id、
    text_encoder = none、
    text_encoder_2 = none、
    トークネイザー=なし、
    tokenizer_2 = none、
    Transformer = Transformer_4bit、
    torch_dtype = torch.float16、
))

pipeline.enable_model_cpu_offload()
ログイン後にコピー

ステップ6:画像生成

画像を生成します:

 print( "denoisingの実行。")
高さ、幅= 512、768
画像=パイプライン(
    PROMPT_EMBEDS = PROMPT_EMBEDS、
    pooled_prompt_embeds = pooled_prompt_embeds、
    num_inference_steps = 50、
    Guidance_scale = 5.5、
    高さ=高さ、
    幅=幅、
    output_type = "pil"、
).images

画像[0] 
ログイン後にコピー

8GB GPU RAMでフラックスモデルをどのように実行しますか? - 分析Vidhya

デバイス上の画像生成の未来

量子化と効率的なモデル処理は、強力なAIを消費者ハードウェアにもたらし、高度な画像生成へのアクセスを民主化します。

結論

流束は、量子化と組み合わせて、8GB GPUで高品質の画像生成を可能にします。この進歩により、洗練されたAIはより多くの聴衆がアクセスできます。

重要なテイクアウト:

  • フラックスは、4ビット量子化と混合精度を使用して、コラブで効率的に動作します。
  • diffuserstransformers画像生成を簡素化します。
  • 効果的なメモリ管理により、限られたリソースで大規模なモデル実行が可能になります。

よくある質問(オリジナルと同じですが、より良い読みやすさのために再フォーマットされています)

Q1。 4ビット量子化の目的? 4ビットの量子化により、メモリの使用量が減少し、フラックスなどの大規模なモデルが限られたリソースで効率的に実行できるようになります。

Q2。テキストプロンプトを変更しますか? prompt変数を目的のテキスト説明に置き換えます。

Q3。画質/スタイルを調整しますか? pipelineコールでnum_inference_steps (Quality)とguidance_scale (プロンプトアドヒアランス)を調整します。

Q4。コラブのメモリエラーの処理? GPUの使用、4ビット量子化、および混合精度を確保します。 num_inference_stepsを下げるか、CPUオフロードを使用することを検討してください。

Q5。スクリプトをローカルに実行しますか?はい。ただし、十分なGPUリソ​​ースとメモリを確認してください。

以上が8GB GPU RAMでフラックスモデルをどのように実行しますか? - 分析Vidhyaの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート