Black Forest Labs의 최근 출시 된 플럭스 모델은 인상적인 이미지 생성 기능으로 인기를 얻었습니다. 그러나 크기는 처음에 표준 소비자 하드웨어에서의 사용을 방해하지 않았습니다. 이 제한은 로컬 모델로드를 피하기 위해 API 서비스의 사용을 자극했습니다. 그러나 GPU 요구 사항으로 인해 온 프레미스 배포는 비용이 많이 들었습니다. 다행스럽게도, Hugging Face의 Diffusers Library는 이제 Bitsandbytes를 통한 양자화를 지원하므로 8GB의 GPU RAM이있는 기계에서 플럭스 추론이 가능합니다.
학습 목표 :
이 기사는 Data Science Blogathon의 일부입니다.
목차 :
플럭스 란 무엇입니까?
Black Forest Labs (안정적인 확산의 제작자)가 개발 한 Flux는 텍스트-이미지 모델에서 중요한 발전을 나타냅니다. 안정적인 확산을 바탕으로 성능과 출력 품질을 향상시킵니다. 처음에는 리소스 집약적 인 반면 최적화는 소비자 하드웨어에서 효율적인 실행을 허용합니다. 이 기사는 양자화가 플럭스의 접근성을 향상시키는 방법을 보여줍니다. 아래 이미지는 창의적 잠재력과 계산 비용 사이의 상충 관계를 보여줍니다.
Flux는 몇 가지 주요 아키텍처 구성 요소를 자랑합니다.
Flux는 Flux-Schnell (Open-Source), Flux-DEV (보다 제한적인 라이센스가있는 Open) 및 Flux-Pro (폐쇄 소스, API-Accessible)의 여러 버전으로 제공됩니다.
양자화가 중요한 이유는 무엇입니까?
비트가 적은 비트를 사용하여 매개 변수를 저장하여 모델 크기를 줄이는 기술인 양자화는 제한된 하드웨어에서 대형 모델을 실행하는 데 중요합니다. 이미지 생성에서는 덜 일반적이지만 실질적인 성능 손실없이 메모리 발자국을 크게 줄입니다. 신경망 매개 변수는 일반적으로 32 비트로 저장되지만 양자화는 이것을 4 비트로 줄일 수 있습니다.
비트 산비 테스를 사용한 양자화
Bitsandbytes 라이브러리는 Pytorch에 대한 효율적인 K- 비트 양자화를 가능하게합니다. 디퓨저 라이브러리에 통합하면 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 install -uq git https://github.com/huggingface/transformers@main ! pip install -uq bitsandbytes
수입 종속성 :
디퓨저 가져 오기 수입 변압기 Bitsandbytes를 Bnb로 가져옵니다 디퓨저에서 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" 프롬프트 = "파리의 귀여운 개 사진 촬영" text_encoder_2_4bit = t5encodermodel.from_pretraind ( ckpt_4bit_id, subfolder = "text_encoder_2", ))
4 단계 : 텍스트 임베딩 생성
양자화 된 인코더를 사용하여 프롬프트를 인코딩합니다.
파이프 라인 = fluxpipeline.from_pretrained ( "블랙 포스트 랩/플럭스 .1-dev", text_encoder_2 = text_encoder_2_4bit, 변압기 = 없음, vae = 없음, Torch_dtype = Torch.float16, )) Torch.no_grad ()로 : prompt_embeds, pooled_prompt_embeds, text_ids = pipeline.encode_prompt ( 프롬프트 = 프롬프트, 프롬프트 _2 = 없음, max_Sequence_length = 256 )) 델 파이프 라인 플러시()
5 단계 : 4 비트 변압기 및 VAE 로딩
4 비트 모드로 변압기와 VAE를로드하십시오.
Transformer_4bit = fluxtransformer2dmodel.from_pretrained (ckpt_4bit_id, subfolder = "Transformer") 파이프 라인 = fluxpipeline.from_pretrained ( ckpt_id, text_encoder = 없음, text_encoder_2 = 없음, Tokenizer = 없음, Tokenizer_2 = 없음, Transformer = Transformer_4bit, Torch_dtype = Torch.float16, )) pipeline.enable_model_cpu_offload ()
6 단계 : 이미지 생성
이미지 생성 :
Print ( "Denoising 실행.") 높이, 너비 = 512, 768 이미지 = 파이프 라인 ( promp_embeds = prompt_embeds, pooled_prompt_embeds = pooled_prompt_embeds, num_inference_steps = 50, Guidance_Scale = 5.5, 높이 = 높이, 너비 = 너비, output_type = "pil", ). 이미지 이미지 [0]
기기 이미지 생성의 미래
양자화 및 효율적인 모델 처리는 소비자 하드웨어에 강력한 AI를 가져와 고급 이미지 생성에 대한 액세스를 민주화합니다.
결론
양자화와 결합 된 플럭스는 8GB GPU에서 고품질 이미지 생성을 가능하게합니다. 이 발전은 더 많은 청중이 정교한 AI에 접근 할 수있게합니다.
주요 테이크 아웃 :
diffusers
및 transformers
이미지 생성을 단순화합니다.자주 묻는 질문 (원본과 동일하지만 더 나은 가독성을 위해 재구성)
Q1. 4 비트 양자화의 목적? 4 비트 양자화는 메모리 사용량을 줄여서 플럭스와 같은 대형 모델이 제한된 자원에서 효율적으로 실행될 수 있도록합니다.
Q2. 텍스트 프롬프트 변경? prompt
변수를 원하는 텍스트 설명으로 바꾸십시오.
Q3. 이미지 품질/스타일 조정? 파이프 라인 호출에서 num_inference_steps
(품질) 및 guidance_scale
(프롬프트 준수)을 조정하십시오.
Q4. Colab에서 메모리 오류 처리? GPU 사용, 4 비트 양자화 및 혼합 정밀도를 보장하십시오. num_inference_steps
를 낮추거나 CPU 오프 로딩을 사용하는 것을 고려하십시오.
Q5. 로컬로 스크립트를 실행합니까? 예, 그러나 충분한 GPU 리소스와 메모리를 보장하십시오.
위 내용은 8GB GPU RAM에서 플럭스 모델을 어떻게 실행합니까? - 분석 Vidhya의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!