AI/Projects

Project Joing: StoryBoard Generator(콘티 생성기) Flux.1 Dev Fine-tuning: 학습 데이터 확보와 학습 계획

문괜 2025. 4. 30. 14:00
반응형

*주의!* 작년에 정리하지 못했던 Project Joing의 문서입니다. 포스팅은 아래의 순서로 진행될 예정입니다.

  • 이미지 생성 모델 선정 3 - Flux.1 Schnell vs Flux.1 Dev
  • Flux.1 Dev Fine-tuning: LoRa & PEFT
  • Flux.1 Dev Fine-tuning: AI-Toolkit
  • Flux.1 Dev Fine-tuning: 학습데이터 수집 학습 데이터 확보와 학습 계획
  • Flux.1 Dev Fine-tuning: 학습과정 및 결과 비교
  • 마무리 및 회고

직전 포스팅에서는 AI-Toolkit의 선정 배경이었다면 지금부터는 본격적인 AI-Toolkit을 활용한 Fine-tuning 과정이다. 

먼저 AI-Toolkit을 활용한 Fine-tuning을 위해서 아래와 같은 순서로 작업을 진행했다.

  1. AI-Toolkit 사용 환경 조성
  2. 학습 데이터 확보 및 전처리
  3. 학습 계획 작성

먼저 AI-Toolkit을 사용하기 위해서 아래의 3가지가 필요하다.

  1. GPU 혹은 VRAM
  2. 학습데이터
    • 이미지
    •  caption - 필수는 아니나 성능에 큰 차이를 준다고 한다.

중요한 점은 학습데이터의 경우 만약 training_image_01.png일 경우 똑같이 training_image_01.txt가 있어야 한다. (당연한 거 아냐? 하는 순간 까먹는다.) 추가적으로 현재 나의 컴퓨터는 MacBook Air M3다. 물론 AI-Toolkit이 사용이 가능하나 심신의 평화와 안정을 위해 Colab Pro에 더해 추가적인 유료결제를 진행하여 컴퓨팅 단위를 확보했다.

 

*Colab 유료결제 관련 주의사항!*

많은 사람들이 잘 모르는 사실이 있다. 바로 실제 Colab 사용가능 시간이다.

Colab의 유료플랜을 사용하면 매달 컴퓨팅 단위를 할당 받는다. 여기서 중요한 게 밑의 사진의 사용률이다.

 

298.21 정도의 컴퓨팅 단위가 있을 때 왼쪽 사진의 기본 버젼의 경우 실제로 사용가능한 시간은 298.21/0.07=42601 시간 정도된다. 오른쪽 사진의 경우 A100 GPU 버젼으로 298.21/7.62=39시간으로 확연한 차이가 난다.

 

그러니 꼭 (컴퓨팅 단위)/(시간당 사용률)을 계산해서 얼마나 사용가능한지 파악해야한다. 꼭, 기억해서 돈에 대한 경각심을 잃지 않는 AI/LLM Application 개발자가 되기를.... 아휴 추가적으로 사용하지 않을 때에는 세션관리에서 꼭 세션을 종료해 주어야 한다.(안 그럼 그냥 계속 돌아간다) 

 

왼쪽이 기본 오른쪽이 A100 GPU

다음으로는 학습데이터 확보다.

먼저 이미지의 경우 확보 가능한 콘티 사진들을 수집하였고 총 200장을 했다. 실제로 사용될 사진의 최대양의 경우 100장이었으나 예비용으로 100장을 더 확보했다. 그리고 아래와 같이 부류하였다.

  1. 50장 단위 ACTIONS 3: DETAILED_EMOTION 1 : SCENERY 1
  2. 100장 단위 ACTIONS 5: DETAILED_EMOTION 3 : SCENERY 2
  3. 전체 사진
    • ACTIONS: 사물과 객체의 움직임이 담겨 있는 사진
    • DETAILED_EMOTION: 구체적인 표정이 담겨 있는 사진
    • SCENERY: 풍경이 담겨 있는 사진

위와 같은 분류의 이유는 아래와 같다.

  1. 구체적이지만 스케치와 같은 느낌을 내기 위해서 다양한 실험이 필요했고 그렇기 위해선 먼저 결과에 따른 차이를 확인하기 위한 사진 구분이 필요했다.(사진이 가지고 있는 특징을 수치적으로 비교하지는 못했다. 대신 Florence-2를 활용하여 차이가 명확한지를 기반으로 판단했다.)
  2. 사진의 양과 종류의 비중 차이를 기반으로 어떤 조합이 가장 좋은 결과를 가지고 오는지 판단이 필요했다.
  3. Colab 컴퓨팅 단위의 한계로 인해서 실험 횟수가 재한 됐다. 그렇기 때문에 어쩔 수 없이 확실한 학습 계획이 필요했고 학습 계획에서 구분하기 쉽도록 위와 같이 구분하게 됐다.

그래서 아래의 순서로 작업을 진행했다.

  1. 학습 계획 작성
  2. Caption 생성
  3. 테스트 학습 및 수정사항 반영 
  4. 학습 계획에 따른 학습 진행

학습계획은 아래와 같다.

  1. 데이터 비중 별 결과 비교
    • 데이터 비중에서 가장 높은 성능 선정
  2. 데이터 양 별 결과 비교
    • 데이터 양 50장 100장 중 가장 높은 성능 선정
  3. LR(config.yaml)의 변수 비교
    • 낮은 Learning Rate과 높은 Learning Rate 중 가장 높은 성능 선정
  4. 최종 학습 진행
    • 위의 결과를 종합하여 2~3가지 방식으로 좁힌 뒤 최종 학습 진행

가장 높은 성능의 기준은 아래와 같다.

  1. 스케치 스타일의 그림이어야 한다. (학습데이터가 스케치 스타일이기 때문에)
  2. 학습데이터에서 표현된 남성과 여성의 모습이 유사하게 들어나야한다.(Streotyping 방지)
  3. 다른 내용의 Prompt여도 Trigger에 맞춰 유사한 스타일이 유지돼야한다.

위의 학습계획은 물론 계획이다. 그러니 변경사항이 많을 예정이다. 글의 양이 길어진 관계로 다음 글에서는 Caption 생성과 테스트 학습에 대해 정리할 예정이다.

Flux.1 Dev Fine-tuning: 학습 데이터 확보와 학습 계획 - 2

 

Project Joing: StoryBoard Generator(콘티 생성기) Flux.1 Dev Fine-tuning: 학습 데이터 확보와 학습 계획 - 2

*주의!* 작년에 정리하지 못했던 Project Joing의 문서입니다. 포스팅은 아래의 순서로 진행될 예정입니다.이미지 생성 모델 선정 3 - Flux.1 Schnell vs Flux.1 DevFlux.1 Dev Fine-tuning: LoRa & PEFTFlux.1 Dev Fine-tuning

youcanbeable.tistory.com

 

반응형