본문 바로가기
TIL _Today I Learned/2024.12

[DAY 113] 최종 프로젝트_ 모델 학습 자동화 파이프라인 구현

by gamdong2 2024. 12. 30.
[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기
학습일 : 2024.12.30

📕 프로젝트 작업 내역

  • 모델 학습 자동화 구현

 

📗 수행 결과

1. 모델 학습 자동화 파이프라인 구현

1) 목표 

S3에 새로운 학습 데이터 지속 적재
   ⇩
한 달 간격으로 EventBridge를 통한 Lambda 자동 트리거
   ⇩
Lambda에서 S3의 총 파일 개수 확인 ⇽ DynamoDB에서 직전 트리거 상태 확인하여 새로운 데이터 개수 계산
   ⇩
새로운 데이터가 특정 개수 이상 쌓였을 경우 Lambda 실행 및 DynamoDB 상태 업데이트
   ⇩
S3 파일 목록 캐싱 파일(.json) & 새로 추가된 파일 매핑 파일(.csv) 업데이트
   ⇩
새로운 데이터만 학습 진행 ⇽ 직전 캐싱 파일과 비교하여 새로운 데이터 목록 확인
   ⇩
학습 완료 후 베스트 모델 · 최종 모델 업데이트 및 S3 저장

 

2) 자동화 파이프라인 상세 구현

① S3에 학습 데이터 지속 적재

  • 학습 데이터가 S3에 지속적으로 업로드됨(이미지 · 라벨링 데이터)

② 한 달 간격 자동 트리거 (EventBridge)

  • AWS EventBridge가 한 달 간격으로 Lambda를 호출
  • Lambda는 S3 파일 개수를 확인하고, DynamoDB에 저장된 직전 트리거 시점의 총 파일 개수와 비교하여 새로 추가된 데이터 개수를 계산
  • 조건(ex: 100만 개 이상)을 만족하는 경우에만 작업을 수행

③ 조건 충족 시 Lambda 실행 (DynamoDB 상태 업데이트)

  • Lambda 실행이 완료된 후, DynamoDB에 새로운 파일 개수와 누적 파일 개수를 저장
{
  "id": "trigger_1",
  "total_file_count": 3500000,
  "new_file_count": 1000000,
  "timestamp": "2024-01-01T00:00:00Z"
}

 

④ S3 파일 목록 캐싱 파일(.json) & 매핑 파일(.csv) 업데이트

* 매핑 파일: 모델 학습에 사용되는 이미지 데이터 & 라벨 데이터 매핑 정보를 저장 (학습시, 매핑 시간 단축)

  • S3의 전체 파일 목록을 기준으로 캐싱 파일(cache.json)을 업데이트
  • 새로 추가된 데이터의 매핑 정보를 매핑 파일(mapping.csv)로 저장
# cache.json
{
  "files": [
    {
      "key": "processed_data/ocr/images/sample_1.png",
      "last_modified": "2024-01-01T12:00:00Z",
    },
    {
      "key": "processed_data/ocr/labels/sample_1.txt",
      "last_modified": "2024-01-01T12:00:01Z",
    }
  ],
  "total_file_count": 2,
  "last_updated": "2024-01-01T12:05:00Z"
}
# mapping.csv
images,labels
s3://big9-project-02-training-bucket/processed_data/ocr/images/sample_1.png,s3://big9-project-02-training-bucket/processed_data/ocr/labels/sample_1.txt
s3://big9-project-02-training-bucket/processed_data/ocr/images/sample_2.png,s3://big9-project-02-training-bucket/processed_data/ocr/labels/sample_2.txt

 

⑤ 새로운 파일에 대해서만 학습 진행

  • cache.json을 이용해 직전 캐싱 상태와 비교하여 새로운 파일 목록을 확인
  • mapping.csv는 새로운 데이터의 매핑 정보를 기반으로 모델 학습에 필요한 이미지 데이터와 라벨링 데이터의 관계를 정의

⑥ 베스트 모델 및 최종 모델 업데이트

  • 학습 과정에서 성능이 가장 좋은 모델(베스트 모델) 저장 및 버전 관리
  • 학습 완료 후 생성된 최종 모델을 S3에 저장 및 버전 관리

 

 

📙 내일 일정

  • 라벨링 파이프라인 자동화