[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기
학습일 : 2024.12.27
📕 프로젝트 작업 내역
- 모델 추가 학습 코드 작성
📗 수행 결과
1. 모델 추가 학습 코드 작성
1) 학습 워크플로우
1. 환경 설정 및 S3 연결
- .env 파일을 사용해 AWS S3 자격증명(AWS_ACCESS_KEY, AWS_SECRET_KEY, AWS_REGION)과 기타 설정을 로드합니다.
- S3 클라이언트를 설정하여 S3와의 연결을 준비합니다.
2. S3 데이터 매핑 정보 처리
- 기존 매핑 정보 확인:
- ocr/mapping 경로에서 최신 버전의 매핑 CSV 파일을 가져옵니다.
- 매핑 CSV 파일이 없을 경우, 새로운 파일을 생성할 준비를 합니다.
- 이미지 및 라벨 데이터 매핑 업데이트:
- big9-project-02-training-bucket > processed_data > ocr > images의 서브폴더들(batang, malgun, ngulim)을 순차적으로 스캔합니다.
- 동일한 구조로 labels 폴더를 스캔하여 JSON 파일의 novel_text 값을 라벨로 사용합니다.
- 매핑 정보를 갱신하여 CSV 파일로 저장합니다.
3. 모델 및 토크나이저 준비
- 최신 모델 다운로드:
- S3의 ocr/final_model 경로에서 최신 버전의 사전 학습된 모델 디렉터리를 다운로드합니다.
- 모델과 토크나이저를 로드합니다.
4. 데이터셋 준비
- 데이터셋 로드:
- 매핑 CSV 파일을 읽어와 데이터를 로드합니다.
- 로드한 데이터셋을 8:2 비율로 학습(train)과 검증(validation) 데이터로 분할합니다.
- 데이터 전처리:
- preprocess_function을 사용해 입력 이미지 경로와 라벨 텍스트를 처리하여 모델에 입력 가능한 형식으로 변환합니다.
5. 학습 설정 및 시작
- 학습 설정:
- Seq2SeqTrainingArguments를 사용하여 학습 설정을 구성합니다.
- 체크포인트는 로컬의 임시 디렉터리에 저장하며, S3에는 업로드하지 않습니다.
- Trainer 객체 생성:
- 학습(train_dataset) 및 검증(val_dataset) 데이터를 포함한 Seq2SeqTrainer를 생성합니다.
- 학습 진행:
- trainer.train()을 호출하여 모델 학습을 시작합니다.
6. 학습 중 데이터 로깅
- 학습 결과 저장:
- 학습 중 각 배치(batch)에 대해 다음 정보를 저장:
- epoch, batch, ground_truth, predicted_text, loss, cropped_image_paths
- 위 정보는 training_results.json 파일에 저장됩니다.
- 학습 중 각 배치(batch)에 대해 다음 정보를 저장:
- 검증 결과 저장:
- 검증 중 각 배치에 대해 다음 정보를 저장:
- epoch, batch, ground_truth, predicted_text, val_loss, character_accuracy, word_error_rate, cropped_image_paths
- 위 정보는 validation_results.json 파일에 저장됩니다.
- 검증 중 각 배치에 대해 다음 정보를 저장:
7. 모델 및 매핑 정보 저장
- 베스트 모델 저장:
- S3의 ocr/best_model 경로에 최신 베스트 모델을 버전별로 저장합니다.
- 최종 모델 저장:
- S3의 ocr/final_model 경로에 최종 모델을 버전별로 저장합니다.
- 매핑 CSV 파일 업로드:
- 로컬에서 갱신된 매핑 CSV 파일을 S3의 ocr/mapping 경로에 버전별로 저장합니다.
8. 디렉터리 정리
- 학습 중 생성된 임시 디렉터리(체크포인트 포함)를 삭제합니다.
- 로그 파일, 모델, 매핑 정보는 지정된 경로에 유지됩니다.
9. 주요 계산 함수
- character_accuracy:
- 문자 단위로 정확도를 계산합니다.
- ground_truth와 predicted_text를 비교하여 정확히 예측된 문자의 비율을 반환합니다.
- word_error_rate:
- 단어 오류율(WER)을 계산합니다.
- ground_truth와 predicted_text 간의 편집 거리를 사용해 단어 기반 오류율을 반환합니다.
10. 최종 학습 완료
- 모든 작업이 완료되면 학습이 성공적으로 종료되었음을 출력합니다.
- 결과는 output/training_results.json, output/validation_results.json, 그리고 S3 경로에 저장된 모델 및 매핑 정보로 확인할 수 있습니다.
2) 코드 작성
ㄹㄹ
anconda prompt를 실행
2. jupyter kernelspec list 타이핑
그렇다면 kernel이 설치되어있는 폴더 주소가 나타난다.
(본인은 python2 커널을 설치 제거에서 오류가 났기에 두 개의 커널이 나타납니다.)
3. 주소를 찾아 들어가 기존에 설치돼있는 kernel 폴더(ocr_env)를 제거 한 후
IPython 커널 등록 새로 ocr_env 커널을 등록합니다:
conda activate ocr_env
python -m ipykernel install --user --name=ocr_env --display-name "Python (ocr_env)"
딴거 다 필요없고!!!!!!!!!!!!그냥 주피터노트북 안쓰고 파이썬 파일로 바꿈
📙 내일 일정
- 라벨링 파이프라인 자동화
'TIL _Today I Learned > 2024.12' 카테고리의 다른 글
[DAY 114] 최종 프로젝트_ CI/CD 구축 (0) | 2024.12.31 |
---|---|
[DAY 113] 최종 프로젝트_ 모델 학습 자동화 파이프라인 구현 (0) | 2024.12.30 |
[DAY 111] 최종 프로젝트_ Lambda (1) | 2024.12.26 |
[DAY 110] 최종 프로젝트_ 라벨링 자동화 파이프라인 개선 (0) | 2024.12.24 |
[DAY 109] 최종 프로젝트_ Labeling Pipeline 자동화 (2) | 2024.12.23 |