Ist der Context Manager von Huggingface Accelerate (ordnungsgemäß) für einen Diffusor implementiert?Python

Python-Programme
Anonymous
 Ist der Context Manager von Huggingface Accelerate (ordnungsgemäß) für einen Diffusor implementiert?

Post by Anonymous »

Diskussion < /h1>
Huggingface Accelerate Init_empty_weights () lädt alle Text -Encoder, die ich auf das Pytorch -Meta -Gerät getestet habe, ordnungsgemäß und verbraucht während des Ladens kein scheinbarer Speicher oder Scheibenraum. Sie wurden entweder in die "CPU "- oder" CUDA "-Geräte geladen und veranlassten den Speicher, der durch den Windows 11 Performance -Manager erkennbar wurde. /> init_eMpty_weights () funktioniert für Text Encoder < /h2>
with init_empty_weights():
text_encoder_2 = T5EncoderModel.from_pretrained(
"black-forest-labs/FLUX.1-dev",
subfolder="text_encoder_2",
torch_dtype=torch.float32
)

text_encoder_2.device
< /code>
Jupyter Notebook -Antwort: < /p>
device(type='meta')
< /code>
Wie erwartet wird das Modell nur in das Meta -Gerät geladen und Windows 11 -Leistungsmonitor zeigt keinen zusätzlichen RAM oder VRAM -Gebrauch.with init_empty_weights():
transformer = FluxTransformer2DModel.from_pretrained(
"black-forest-labs/FLUX.1-dev",
subfolder="transformer",
torch_dtype=torch.bfloat16
)

transformer.device
< /code>
Jupyter Notebook -Antwort: < /p>
device(type='cpu')
< /code>
Unerwartet (für mich) wurde das Modell in CPU (VICE -Meta) geladen und Windows 11 Performance Monitor zeigt die entsprechende Zunahme der RAM -Verwendung.with init_empty_weights():
pipeline = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
variant="fp16",
use_safetensors=True
)

pipeline.unet.device
< /code>
Jupyter Notebook -Antwort: < /p>
device(type='cpu')
< /code>
unerwartet (für mich) wurde das Modell in CPU (VICE Meta) geladen und Windows 11 Performance Monitor zeigt die entsprechende Zunahme der RAM -Verwendung. infer_auto_device_map (), so dass beschleunigt werden kann, um das Beste zu erraten, auf welchem Gerät die verschiedenen Modellschichten geladen werden sollten. Das Laden der vollständigen Modelle, um ihre Form nur zu erhalten, ist langsam. Es ist möglich (zwar unpraktisch), ein vollständiges Modell zu laden, seine abgeleitete Gerätekarte zu erhalten, eine Textdarstellung dieser Gerätekarte in Text auszugeben, den Python -Kernel neu zu starten, den Text für die Ausgabegerätskarte zu einer neuen Gerätekarte zuzuordnen und schließlich die neue Gerätekarte beim Laden des Modells zum zweiten Mal zu verwenden. Eine unangenehme Problemumgehung.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post