2023.08.04 - [HAI/Kaggle_한국 방언 분류_여름 방학] - [HAI] 2023 여름 방학 프로젝트 - 1편(프로젝트 소개)
이전 글에 이어, 대회 이틀차 유용하게 사용한 TensorBoard와
과거에 모델링을 하며 배운 팁들 일부를 공유하고자 합니다.
1. Excel vs TensorBoard
기존 - Excel
기존에는 스프레드 시트를 사용하여 아래의 링크와 같이, 실험을 기록하였다.
Performance_matrix
목적 <a href="https://www.kaggle.com/competitions/hai2023summer/overview">https://www.kaggle.com/competitions/hai2023summer/overview</a> 이 competition은 HAI 2023년 ML 모델링 과제를 위한 것으로, 한국어 지역 방언 분류를 목표로
docs.google.com
이렇게 실험을 관리하다보면, 실험 결과를 내가 일일이 옮겨 넣어야 되고 실수할 수도 있다.
또한 따로 시각화 코드를 작성하지 않으면, 결과값들의 흐름을 읽기도 불편하다.
하지만, TensorBoard나 MLflow 등 학습 관리를 효율적으로 할 수 있는 툴들이 정말로 많다.
TensorBoard
TensorBoard는 TensorFlow와 함께 제공되는 시각화 도구입니다.
PyTorch 사용자는 `torch.utils.tensorboard` 모듈을 통해 TensorBoard를 사용할 수 있고,
앞서 언급했듯이 훈련 중에 손실과 정확도 등의 통계를 기록하고 시각화하는 데 유용합니다.
1. TensorBoard를 사용하기 위한 설정
먼저 `SummaryWriter` 객체를 생성해야 합니다. 이 객체는 TensorBoard 로그 파일을 작성하는 데 사용됩니다.
생성할 때 로그 파일이 저장될 디렉토리를 지정할 수 있습니다.
from torch.utils.tensorboard import SummaryWriter
folder_name = "tensorboard_folder"
writer = SummaryWriter(f"./{folder_name}/")
위 코드에서 './folder_name'은 로그 파일이 저장될 디렉토리를 나타내며,
현재 위치 아래의 {tensorboard_folder}경로로 아래에 결과물이 생성됩니다.
2. 데이터 기록하기
`SummaryWriter` 객체에는 add_scalr(), add_hparams() 등 여러가지 메서드가 있습니다.
그중 몇 가지 기능을 소개드리고자 합니다.
자세한 내용은 아래 공식 문서 참고 부탁드립니다!
torch.utils.tensorboard — PyTorch 2.0 documentation
torch.utils.tensorboard Before going further, more details on TensorBoard can be found at https://www.tensorflow.org/tensorboard/ Once you’ve installed TensorBoard, these utilities let you log PyTorch models and metrics into a directory for visualization
pytorch.org
- writer.add_scalar()(스칼라 값 기록)
아래 예시를 만들어 보겠습니다.
메소드는 세 개의 인자를 받습니다: 태그 (값의 이름), 스칼라 값, 그리고 (선택적으로) 단계 번호.
writer.add_scalar('training loss', loss.item(), global_step)
여기서 'training loss'는 이 값의 태그입니다. `loss.item()`은 기록할 스칼라 값이고, `global_step`은 훈련의 단계 번호입니다.
- writer.add_hparams()(파라미터 기록)
writer.add_hparams({
'lr':args.lr,
'eps':args.epr,
'batch':args.batch,
...},{
'best_train_acc':best_train_acc,
'best_valid_acc':best_valid_acc
})
- writer.close()(기록 종료)
writer.close()
여기서 writer.close()는 전체 한 에포크마다 기록을 하도록 코드를 구성하였습니다.
전체 에포크가 끝나고 작성하게 되면 최종 에포크만 기록되니,
저는 classfication에서 accuracy문제라서 valid_acc가 높은 경우에 다시 저장하는 구조로 작성하였습니다.
3. TensorBoard 실행하기
TensorBoard는 웹 브라우저에서 실행되며, 로그 파일이 저장된 디렉토리를 지정하여 실행할 수 있습니다.
tensorboard --logdir=tensorboard_folder
위 명령은 'runs' 디렉토리에 저장된 로그 파일을 사용하여 TensorBoard를 실행합니다.
TensorBoard는 기본적으로 6006 포트에서 실행되며,
웹 브라우저에서 'localhost:6006'으로 접속하여 확인할 수 있습니다.
4. TensorBoard에서 결과 보기
TensorBoard에 로그인하면 'SCALARS' 탭에서 기록한 값들을 차트로 볼 수 있습니다.
각각의 차트는 하나의 태그에 해당하며, 여러 차트를 동시에 볼 수 있습니다.
이러한 방법을 통해 PyTorch에서 TensorBoard를 사용하여
훈련 중의 손실과 정확도 등의 통계를 시각적으로 추적할 수 있습니다.
이는 모델의 성능을 평가하고, 문제점을 파악하고, 훈련 과정을 이해하는 데 매우 유용합니다.
- 공식 문서 ver.KR
PyTorch로 TensorBoard 사용하기
TensorBoard는 머신러닝 실험을 위한 시각화 툴킷(toolkit)입니다. TensorBoard를 사용하면 손실 및 정확도와 같은 측정 항목을 추적 및 시각화하는 것, 모델 그래프를 시각화하는 것, 히스토그램을 보는
tutorials.pytorch.kr
2. Some Tips for modeling
팁 1 - 파일명=모델+파라미터+성능
모델을 기록할 때, 파일명을 모델+파라미터+성능으로 기록하는게 좋습니다.
위의 저장 방식은 gui를 통해 폴더를 보게 될 경우
조금 더 직관적으로 파악하기가 좋습니다.
위 사진은 tree -L 2를 이용했지만, 1로 주고 보면 더 직관적으로 파악할 수 있습니다.
물론 Tensorboard를 이용하면 더 쉽게 파악 가능합니다!
사이드바의 값들을 통해 내가 원하는 기준으로 편하게 정렬할 수도 있습니다.
팁2 - 모듈화, 사이드바 활용
주피터 노트북은 확장 기능을 통해 사이드바 기능을 사용할 수 있습니다.
저는 주로 1번 위치에서 실험을 코드를 처음에는 쭉 짜고,
그 다음에는 모듈화를 합니다.
반복되는 코드를 줄임으로써 길이가 짧아져 보기에도 편리하며,
실험시 인자값만 바꿔주면 되서 용이합니다.
단, 함수화를 하는 과정에서 인자값들을 매핑하기 위해서는
기존 코드에 대해 제대로 이해하고 있어야 합니다.
이번에는 베이스 라인 코드가 있어 코드를 이해하기만 하면 됐지만,
학습 코드까지 처음부터 완전히 빌드해야 된다면
현재 테스크를 인지하고
사용할 모델과 로직을 정확하게 파악해야되서
시간이 더 오래 걸리지 않았을까 싶습니다.
2번 위치를 보면 사이드바에 모델 변수를 기록하고 있습니다.
TensorBoard를 사용하면 추적이 편하겠지만,
그렇지 않다면 위의 방식을 이용해 결과 값까지 추가로 기록한다면
파라미터 조정시 위아래로 반복 이동 시간을 줄이고 편리해집니다.
팁 3 - nbextension
보통은 터미널로 작업을 하지만, Baseline코드가 easydict로 되어 있어
그냥 주피터 노트북으로 진행하였습니다.
주피터 노트북의 장점은 결과가 바로 확인 가능하며,
확장 기능들이 많습니다.
!pip install jupyter_contrib_nbextensions
위 코드를 통해 nbextension를 설치하고 재실행 해보시면,
아래 사진 외에도 더 많은 유용한 기능들을 사용할 수 있습니다.
https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html
Installing jupyter_contrib_nbextensions — jupyter_contrib_nbextensions 0.5.0 documentation
Installing jupyter_contrib_nbextensions To install the jupyter_contrib_nbextensions notebook extensions, three steps are required. First, the Python pip package needs to be installed. Then, the notebook extensions themselves need to be copied to the Jupyte
jupyter-contrib-nbextensions.readthedocs.io
사이드바나 코드 토글, skip-track 등 코드를 짤 때 유용하니
직접 설치해서 유용하게 사용해보시기 바랍니다!
이상 긴 글 읽어주셔서 감사합니다.
(모델링 결과나 학습 과정시 깨달은 점은 아마 대회가 끝나고 정리할 듯 합니다.)
다음 글은 캡처해놨던 에러들에 대해 리뷰해볼까 합니다!
'HAI - 교내 동아리 > Kaggle_한국 방언 분류(여름 방학)' 카테고리의 다른 글
[HAI] 2023 여름 방학 프로젝트 - 6편(최종 정리 및 느낀점) (0) | 2023.08.18 |
---|---|
[HAI] 2023 여름 방학 프로젝트 - 5편(학습 플로우 & BERT 계열 선정이유) (0) | 2023.08.12 |
[HAI] 2023 여름 방학 프로젝트 - 4편(진행상황 공유) (0) | 2023.08.11 |
[HAI] 2023 여름 방학 프로젝트 - 3편(GPU 관련 Error) (0) | 2023.08.07 |
[HAI] 2023 여름 방학 프로젝트 - 1편(프로젝트 소개) (0) | 2023.08.04 |