Flux 모델을 사용할 수 있는 환경을 설정하는 방법을 Windows 11 환경에 맞게  정리해 드리겠습니다.

 

 

 

 

 

 

1단계: CUDA 및 cuDNN 설치 (Windows 11)

이미지 생성 모델을 GPU에서 실행하려면 CUDA와 cuDNN이 필수입니다. 이들은 GPU 가속을 통해 연산 속도를 크게 향상시킵니다.

  1. CUDA 설치
    • NVIDIA CUDA Toolkit 다운로드 페이지로 이동하여 Windows 11에 맞는 버전을 선택합니다.
    • 설치 파일을 실행하여 CUDA Toolkit을 설치합니다.
    • 설치 후, 환경 변수에 CUDA 경로가 추가되었는지 확인합니다.
      • 시스템 환경 변수 편집Path → C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.x\bin 경로 추가.
    • 명령 프롬프트에서 nvcc --version을 실행하여 설치된 CUDA 버전을 확인합니다.
  2. cuDNN 설치
    • cuDNN 다운로드 페이지에서 해당 CUDA 버전에 맞는 cuDNN을 다운로드합니다.
    • cuDNN 파일을 압축 풀고, bin, include, lib 폴더를 CUDA 설치 경로에 복사합니다. (예: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\ 경로)
  3. 설치 확인
    • 명령 프롬프트에서 nvidia-smi 명령어를 입력하여 GPU와 드라이버가 정상적으로 설치되었는지 확인할 수 있습니다.

2단계: Python 및 PyTorch 설치 (Windows 11)

Flux 모델을 실행하려면 Python 환경이 필요합니다. 또한, PyTorch는 GPU에서 딥러닝 모델을 효율적으로 실행할 수 있는 라이브러리입니다.

  1. Python 설치
    • Python 공식 웹사이트에서 Python 최신 버전을 다운로드하여 설치합니다.
    • 설치 시 "Add Python to PATH" 옵션을 체크하여 환경 변수에 Python이 자동으로 등록되게 합니다.
  2. PyTorch 설치
    • PyTorch 설치 페이지에서 CUDA 버전과 맞는 설치 명령어를 확인한 후, 명령 프롬프트에서 아래 명령어로 설치합니다.

    •  
      • 예를 들어, CUDA 12.4 버전의 PyTorch를 설치하려면: 
      • pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
  3. 설치 확인
    • Python 쉘을 열고, 아래 코드로 PyTorch가 GPU를 사용할 수 있는지 확인합니다:
      import torch
      print(torch.cuda.is_available())  # True가 출력되면 GPU 사용 가능
      

 

3단계: Flux 모델 설치 및 실행 준비

이제 BlackForestLabFlux 모델을 설치하고 실행할 준비를 합니다.

  1. Flux 모델 GitHub 페이지 방문
  2. Flux 모델 다운로드
    • GitHub에서 Flux 모델의 소스 코드를 Clone하거나 Download ZIP으로 다운로드합니다.
  3. 필수 라이브러리 설치
    • Flux 모델을 실행하기 위해서는 추가적인 Python 패키지들이 필요합니다. 필요한 라이브러리 목록은 requirements.txt 파일에 포함되어 있을 수 있습니다.
    • 해당 파일이 있다면, 아래 명령어로 필요한 패키지들을 한 번에 설치할 수 있습니다.
      pip install -r requirements.txt
      
  4. Flux 모델 코드 실행
    • Flux 모델의 이미지 생성 기능을 실행하려면, 모델 코드에서 이미지 생성을 위한 파라미터를 설정하고, 모델을 실행합니다. 예시로, 기본적인 이미지 생성 코드가 있을 것입니다:
      import torch
      from flux_model import Flux
      
      # 모델 초기화
      model = Flux()
      
      # 이미지를 생성할 입력 값 준비
      noise = torch.randn(1, 3, 256, 256).cuda()  # GPU에서 생성
      
      # 이미지 생성
      with torch.no_grad():
          generated_image = model(noise)
      
      # 생성된 이미지 출력
      generated_image.show()
      
  5. GPU 사용 확인
    • 모델이 GPU에서 실행되는지 확인하려면, 모델과 데이터가 .cuda() 메서드를 통해 GPU로 이동해야 합니다. 위 코드에서 noise 텐서와 model은 GPU에서 실행됩니다.

4단계: 성능 최적화 및 결과 확인

이미지 생성 모델을 실행하고 성능을 최적화하는 과정입니다.

  1. GPU 메모리 사용량 모니터링
    • 모델이 실행되는 동안 GPU 사용량을 확인하려면, Task Managernvidia-smi 명령어를 사용하여 GPU 메모리와 성능을 모니터링할 수 있습니다.
      nvidia-smi
      
  2. 결과 이미지 확인
    • 생성된 이미지는 모델에서 지정한 출력 형식에 맞게 저장하거나 화면에 표시할 수 있습니다. 예시 코드에서는 generated_image.show()를 사용하여 이미지를 확인할 수 있습니다.

5단계: 문제 해결 및 디버깅

이미지 생성 모델 실행 중 문제가 발생할 수 있습니다. 주요 문제와 해결책은 다음과 같습니다.

  • GPU 메모리 부족: 모델이 너무 많은 GPU 메모리를 사용할 수 있습니다. 이 경우 배치 크기를 줄이거나 모델의 크기를 줄이는 방법을 고려하세요.
  • CUDA 버전 불일치: CUDA와 cuDNN의 버전이 PyTorch와 호환되지 않는 경우, 해당 라이브러리의 버전을 맞추어 설치해야 합니다.
  • 모델이 GPU를 인식하지 못하는 경우: 코드에서 모델과 데이터를 GPU로 이동시키는 .cuda() 호출이 누락된 경우가 많습니다. 이를 확인하고 수정해야 합니다.

위 단계를 통해 Windows 11 환경에서 Flux 이미지 생성 모델을 실행할 수 있는 환경을 준비할 수 있습니다.

GPU 가속을 통해 더 빠르고 효율적인 이미지 생성을 할 수 있습니다!

 

 

 

추가 ) 

cuDNN을 설치하는 이유:

cuDNN(CUDA Deep Neural Network library)은 NVIDIA에서 제공하는 라이브러리로, 딥러닝 프레임워크들이 GPU 가속을 통해 효율적으로 연산을 할 수 있도록 최적화된 함수들을 제공합니다. cuDNN은 딥러닝 모델의 학습과 추론에서 매우 중요한 역할을 합니다.

  1. GPU 가속 성능 최적화:
    • cuDNN은 GPU에서의 행렬 연산, 컨볼루션 연산, ReLU 활성화 함수 등 딥러닝 모델에서 자주 사용되는 연산을 최적화합니다. CUDA는 GPU의 기본적인 연산을 지원하지만, cuDNN은 딥러닝 연산에 특화된 고성능 라이브러리로, 속도 효율성을 크게 향상시킵니다.
  2. 딥러닝 프레임워크와의 호환성:
    • PyTorch, TensorFlow, Keras 등과 같은 딥러닝 프레임워크는 cuDNN을 이용하여 GPU에서 최적화된 성능을 발휘합니다. cuDNN이 없으면, 이러한 프레임워크들이 GPU의 성능을 완전히 활용할 수 없게 되어 학습 속도가 크게 떨어질 수 있습니다.
  3. 특화된 연산 함수 제공:
    • cuDNN은 특히 컨볼루션 연산(Convolution), 배치 정규화(Batch Normalization), LSTM 연산  딥러닝 모델의 핵심 연산을 최적화한 함수를 제공합니다. 이러한 연산들은 GPU에서 병렬 처리를 통해 매우 빠르게 계산할 수 있게 돕습니다.

cuDNN을 설치하지 않으면 어떻게 될까?

cuDNN을 설치하지 않으면 다음과 같은 문제들이 발생할 수 있습니다:

  1. GPU 가속의 성능 저하:
    • cuDNN이 없으면, 딥러닝 프레임워크는 CPU에서만 연산을 수행하거나, GPU를 사용하더라도 최적화된 GPU 연산을 활용할 수 없게 됩니다. 결과적으로 GPU를 사용하는 속도가 현저히 느려지고, 학습이나 추론 시간이 길어질 수 있습니다.
  2. 속도 차이:
    • cuDNN은 딥러닝 연산에 최적화된 라이브러리이기 때문에, 모든 연산 GPU에서 빠르게 실행됩니다. cuDNN 없이 실행할 경우, 같은 연산이라도 속도가 훨씬 느려지고 효율성이 떨어집니다.
  3. 딥러닝 프레임워크의 비호환성:
    • 일부 딥러닝 프레임워크는 cuDNN에 의존하고 있기 때문에, cuDNN이 없으면 모델이 제대로 작동하지 않거나 성능이 저하될 수 있습니다. 특히 컨볼루션 연산이나 RNN/LSTM 연산 등을 효율적으로 처리할 수 없게 되어 모델 학습에 큰 차질이 생길 수 있습니다.
  4. 에러 발생:
    • cuDNN이 필요한 연산을 사용하는 경우, cuDNN 라이브러리가 없다는 에러가 발생할 수 있습니다. 예를 들어, PyTorch나 TensorFlow에서 모델을 실행할 때, cuDNN이 없으면 **RuntimeError**나 **ImportError**와 같은 오류 메시지가 나타날 수 있습니다.

결론:

cuDNN은 딥러닝 연산 최적화를 위해 필수적인 라이브러리입니다. 이를 설치하지 않으면 GPU의 성능을 제대로 활용할 수 없거나, 모델 실행 시 성능 저하가 심각해질 수 있습니다. 따라서, 딥러닝 모델을 효율적으로 실행하고자 한다면 cuDNN을 반드시 설치하는 것이 좋습니다.

 

책을 샀는데 아이가 직접 바코드를 찍어서 영상을 볼 수도 없고

매번 바코드 찍는것도 번거로워서 다운 받으려고 알아보다 검색한 결과를 남겨봅니다.

 

 

 

자주 다운 받을 경우에는 확장 프로그램을 설치하는게 편리합니다.

크롬 확장 프로그램을 다운 받는 방법

 

 

하지만, 

확장프로그램 설치가 부담스럽다면 웹사이트에서 다운 받을 수도 있습니다.

 

 

 

 

 

1. ssyoutube.com에서 다운받기

 

유트브 주소 앞에 ss를 붙여줍니다.

 

 

 

 

 

 

그럼 ssyoutube.com사이트로 이동하게 됩니다.

 

 

 

 

 

다운받기전에 오디오 / 동영상 확장자 및 해상도 등 선택할 수 있어요.

 

 

 

* 파일이름은 갖고 오지 못하네요.

다운받은 뒤 파일이름을 변경하시면 됩니다.

 

 

 

 

 

 

그 외 유튜브에서 오디오를 다운로드하는 방법은 여러 가지가 있습니다. 

다만, 저작권이 있는 영상은 마음대로 다운받지 못하고, 상업적인 이용과 관련해서도 직접 저작권자의 허락을 받고 사용하시길 바랍니다1. 아래는 몇 가지 추천 사이트입니다:

 

 


YPMP3:

광고가 없고, 다운로드 버튼을 클릭했을 때 광고 페이지로 넘어가지 않으며, 유튜브 음원추출이 가능한 사이트.

 

Freemake:

MP3, MP4, AVI, WMV, FLV, GIF 등 다양한 포맷으로 변환 가능한 사이트 .

 

YOUT:

원하는 구간을 자유롭게 지정해서 다운받을 수 있는 사이트 .

 

MP3FY:

유튜브 음원추출 320Kbps까지 다운로드가 가능한 사이트 .

 

y2mate:

단축어를 통해 쉽고 빠르게 변환하고 다운받을 수 있는 사이트 .

 

 


각 사이트의 특징과 사용 방법을 확인하시고, 가장 적합한 사이트를 선택하여 사용하시면 됩니다.

다만, 모든 사이트 사용 전 컴퓨터 백업을 해두고 사용하는 것을 추천드립니다

 

 

 

 

 

 

 

 

 

 

개인용으로 Youtube 영상이나 음원으로 다운 받으려고 할 때의 방법

 

 

 

 

 

 

 

 

확장 프로그램을 설치

 

아래 링크를 가서 크롬 확장 프로그램을 설치합니다.

 

 

 - 크롬 확장프로그램에서 검색해도 됩니다.

 

 

 

https://chromewebstore.google.com/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ko&utm_source=ext_sidebar

 

Tampermonkey

Change the web at will with userscripts

chrome.google.com

 

 

 

 

 

 

 

 

 

 

'크롬에 추가' 버튼 눌러서 설치하기

 

 

 

 

'확장프로그램 추가' 버튼 

 

 

 

 

 

 

 

플러그인 설치

http://chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/ask.html?aid=93b5fa9a-0d0c-4885-a264-811b1d58d6c6

 

 

 

 

 

 

 

 

 

 

유투브 다운로드 하기

 

유투브 링크로 접속하면 

화면 아래에 다운로드 버튼이 뜰거에요!

 

 

 

 

 

 

 

음원 타입 선택하기

동영상/ 오디오 고를 수 있어요. 

 

 

 

 

 

Stable Diffusion 설치를 위해 3.10 버전을 설치하라고 되어 있는데

현재 리눅스에 깔려있는 python 버전이

서버1은 python 2.7  서버2는 python 3.8 이었다.

 

가상환경을 만들고 python 3.10 버전을 설치 해주려고 한다.

 

 

 

1. Apt로 Python 3.10 버전 설치

터미널에서 Apt로 파이썬을 설치할 수 있습니다.

다음과 같이 ppa를 추가하고 Python 3.10 버전을 설치합니다.

$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt install python3.10

설치가 끝나면, 아래와 같이 잘 설치되었는지 확인할 수 있습니다.

$ python3.10 --version
3.10.13

 

 

 

2.  Python 3.10 버전 다운로드하여 설치

리파지토리에서 설치가 안되는 경우에는 weget으로 설치 파일을 직접 다운로드합니다.

 압축을 풀고 설치합니다.

$ wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz
$ tar -xf Python-3.10.13.tgz
$ cd Python-3.10.13/
./configure --enable-optimizations
$ make -j $(nproc)
$ sudo make altinstall

설치가 끝나면, 아래와 같이 잘 설치되었는지 확인할 수 있습니다.

$ python3.10 --version
3.10.13
 

 

python3 버전 확인

python3 -V

 

 

 

python3 설치위치확인

 

$which python

 

 

$ls -al /usr/bin/python3

 

 

 

설치된 모든 파이썬 버전 확인

$ls /usr/bin/ | grep python

 

 

 

 

이후 virtualenv로 가상환경 생성시, python=3.10으로 생성해준다.

venv는 왜 인지 3.10 버전으로 생성이 안됨.

22년 10월 쯤에 공홈에 text로 Video도 생성할 수 있다고 했었지만 

실제론 테스트 해 볼 수 없었다. 

waiting list에 대기 하라면서 등록도 해놨는데 메일도 안왔다.

 

 

그러더니 Gen-2 가 뿅 나옴.

 

 

 

https://youtu.be/dq8GZeDEqH8

 

강아지 영상이 더 와닿는다.

https://youtu.be/wyDCdXhRoZI

 

이전 버전 Gen- 1

https://youtu.be/I4OeYcYf0Sc

 

 

 

 

자 이제 생성해보자.

 

 

Text- to -Video

https://app.runwayml.com/creation/27466829-0dd5-4c15-aa26-2fa48d2d2ef5

 

Runway

 

app.runwayml.com

 

 

Reveal the prompt 버튼을 누르면 사용했던 prompt와 몇가지 설정을 확인 할 수 있다.

moving painting with calm landscape the sailboat on the sea

 

 

 

이번엔 귀여운거 

https://app.runwayml.com/creation/a667c3d9-a55e-4d6d-b52b-e3d9f44c80da

 

Runway

 

app.runwayml.com

 

 

 

Image to video

서양화를 넣어볼까 하다가 잘 될 것 같아서

민화를 넣어봤다.

 

https://app.runwayml.com/creation/66deedbb-ca41-499d-9134-538001816f23

 

Runway

 

app.runwayml.com

나비가 잘 움직이지 않고 수박이 움직여서

Text 로 추가해 보았다.

 

 

the butterfly is moving it's wings, the leaves and flower are waving by breeze, the watermelon is juicy

결과는 ...

하란대로 못한다.

 

 

 

 

expand 4s는 추가로 가능하지만 

point를 소진하고

upscale는 유료 결제가 필요하다.

Stability Ai사의 Stable Audio

- 사용자의 간단한 text 입력으로 짧은 Audio Clip 생성

- Diffusion 모델을 사용하는 Stable Audio

    ' AudioSpark 오디오 라이브러리의 80만개 라이센스 음악으로 훈련

- 1.2B 개에 달하는 Parameter를 갖춘 기술  + Text 형태의 Prompt Guide제공

- 무료 버전 : 매달 20초 분량 오디오 20개

  Pro (유료) 버전 : 90초 분량 오디오 500개 (월 $12)

 

 

https://stability.ai/stableaudio

 

Shallow Learning vs Deep Learning

Shallow Learning??

 

블랙 박스 1개 = Layer 1개

 

> 모든 것을 Tracking 할수 있다. but universial 하게 확장하기 어려움

> Application  Specific, 낭비 없음

 

Deep Learning

 

블랙 박스 n개 = Layer n개

> Layer 하나하나는 심플. 하지만 Simple function을 여러개 쌓으면 복잡한 것을 설명할 수 있다.

Deep Learning 성공 요소.

어떻게 쌓느냐에 따라 

1 모델만 보면 낭비 같지만 Universial 하게 적용가능. 요소만 바꿔주면 다른 방식에도 사용가능.

 

 

 

Activation Function

 

ReLu

 

tahn, sigmoid < 6배 빨라짐

문제 : Dead neurons 생김. Data Cloud 구간을 1면으로 만들어버리면 사용되지 않는 뉴런. => Waste

MLP기준 보통 2-30% 

빨라지는 이유? Vanishing gradient가 없어서 

 

Why Many layers?

 

Cross Entropy  vs MSE 

class가 많은 경우 cross Entropy loss가 유리. 

 

 

Backpropagation

Add: gradient distributor

Max ; gradient router (ReLu)

Multi : gradient switcher

 

 

Dealing with Big DATA

Gradient mini-batch를 만들어 집어 넣어서 (32,64..)

Random sampling 을 통해 32개의 샘플을 만듦.

 

1 epoch - 1 Training data를 한번 보는것

 

 

SGD ( Single Gradient Descent)

Learning 

 

 

Regularization

simple is  better

weight를 조정.

Occam's razer

 > 날이 1개 유연성이 없으면 여러번 해야 하지만 모든 사람이 면도 할수 있다.

 > 곡선을 가진 면도기는 맞는 사람만 깎을 수 있다.

 

 

More Recent Trend

Densenet

Mobilenet

Efficient net

Deformsable convalrution

 > 어디랑 계산할지를 Learning해서 연산

NAS (Network architecture Search)

> connection, search 해야

Meta- learning

task가 n개 존재. 서로 다른 task에서 동작하도록 배워서 new task에서도 동작 할수 있도록 parameter를 학습

. network은 고정. 즉 Initialize를 잘하는 방법임.

 

 

 

+ Recent posts