[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 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에 저장 및 버전 관리
📙 내일 일정
- 라벨링 파이프라인 자동화
'TIL _Today I Learned > 2024.12' 카테고리의 다른 글
[DAY 111] 최종 프로젝트_ Lambda (1) | 2024.12.26 |
---|---|
[DAY 110] 최종 프로젝트_ 라벨링 자동화 파이프라인 개선 (0) | 2024.12.24 |
[DAY 109] 최종 프로젝트_ Labeling Pipeline 자동화 (2) | 2024.12.23 |
[DAY 108] 최종 프로젝트_ 모델 추가 학습 (0) | 2024.12.20 |
[DAY 107] 최종 프로젝트_ OCR 모델 Fine Tuning (0) | 2024.12.19 |