부스트캠프 2주차가 끝났다!
시간이 너무 빨리 보인다.
이번 주에는 PyTorch 강의를 듣고 공부할 시간이있었습니다.
PyTorch는 이전에 프로젝트를 하면서 소스 코드를 다룬 적은 있지만, 기본 개념에서 듣는 것은 이번이 처음이었다.
역시 아직 모르는 것이 너무 많다는 생각을 하면서 새로운 것을 배울 수 있었다.
이 주차장에서 가장 기억에 남는 것은 도전하지만, 자료의 퀄리티가 정말로… 대박이었다 👍
과제의 내용이 잘 구성되어 있을 뿐만 아니라, 이 문제를 푸는 사람이 진짜 공부를 할 수 있는 엄청난 퀄리티였다!
이번 주 회고를 통해 강의와 과제를 통해 공부한 내용을 정리해 보자.
강의 내용
이번 주는 정리하고 싶은 내용이 정말 많았다!
각 내용을 따로 정리해 둔 다른 페이지를 링크에 걸쳐 두자!
이 포스트에는 부스트캠프의 활동을 모아 두는 정도의 내용을 담으려 한다.
0. 강의 목차
- PyTorch의 기본
- Introduction to PyTorch
- PyTorch Basics
- PyTorch 프로젝트의 구조 이해
- PyTorch 구조 학습 1
- AutoGrad & Optimizer
- PyTorch Datasets & DataLoaders
- PyTorch 구조 학습 2
- 모델 로드
- Monitoring tools for PyTorch
- PyTorch 활용
- 멀티 GPU 학습
- Hyperparameter Tuning
- PyTorch Troubleshooting
1. PyTorch의 기본
이 장에서는 PyTorch에 대해 소개하고 그 이점을 살펴 보았습니다.
PyTorch는 키워드로 정리하면 Numpy+AutoGrad+Function이다.
PyTorch에서는 Numpy 구조의 데이터를 Tensor라는 객체로 활용합니다.
이 장에서는 Tensor의 개념을 이해하고 이를 조작하는 기능을 실천과 과제로 활용하여 이러한 기능의 이해를 높였습니다.
또한 PyTorch 프로젝트가 전반적으로 어떻게 구성되어 있는지 템플릿을 활용하여 공부했습니다.
>>> 그 강의 내용을 정리한 투고: https://jjsy-start2021./11(정리 후 공개 예정)
2. PyTorch 구조 학습 1
PyTorch의 기초에서 PyTorch에서 다루는 데이터 세트를 보았으므로 PyTorch에서 모델을 어떻게 구현하고 어떻게 학습 할 수 있는지 살펴 보았습니다.
PyTorch는 크게 데이터를 모델에 공급하는 DataLoader와 이 데이터를 받아 학습하는 Model로 구성되어 있다.
PyTorch는 torch.nn.Module을 활용하여 딥 러닝 모델의 레이어를 구현할 수 있으며, AutoGrad를 지원하고 gradient를 요구하는 데 필요한 Optimizer도 PyTorch에서 함수로 제공하기 때문에 backpropagation을 쉽게 구현할 수 있습니다.
또, 데이터를 공급하는 부분도, Dataset & DataLoader class를 활용하여 모델에 입력하는 데이터의 형태 지정이나 데이터 세트의 구성 등의 전처리 과정을 실장할 수 있다.
>>>그 강의 내용을 정리한 투고:https://jjsy-start2021./12 (정리 후 공개 예정)
3. PyTorch 구조 학습 2
이전 PyTorch 구조 학습에서는 PyTorch를 활용하여 딥 러닝을 수행하는 데 필요한 구조의 각각의 기능을 살펴보면 이번에는 이전에 학습한 모델을 재활용하기 위한 내용을 공부했다.
좋은 성능 모델을 만들어도 공유 할 수 없다면 도움이되지 않으므로 이러한 기술이 필요하며, 최근의 추세는 기존의 방대한 데이터로 학습된 모델을 호출하고 재활용하는 것이기 때문에 이러한 기술을 이해해야 합니다.
모델을 저장하고 호출할 수 있다는 것은 프로젝트가 실행되는 동안 모니터링을 수행하는 데 사용할 수 있다는 것입니다.
그 강의에서 PyTorch에 대한 모니터링 도구도 보았습니다.
>>> 그 강의 내용을 정리한 투고: (추가 예정)
4. PyTorch 활용
마지막으로 실제로 PyTorch를 활용하여 프로젝트를 실행할 때 성능을 향상시키는 방법, 시간 효율성을 높이는 방법 및 기타 문제가 발생할 수 있는 문제를 소개했습니다.
이 내용은 지금 알아두면 나중에 파이토치에서 기계 학습 프로젝트를 할 때 도움이 될 것으로 보인다.
피어 세션 & 멘토링
이번 주 피어 세션은 강의와 과제에 대한 질의응답 중심으로 열렸다.
너무 과제에 담긴 콘텐츠의 양이 많아, 깊게 들어가서 공부할 정도로 생각해봐야 할 것이 많았기 때문에, 과제에 대한 질문과 그 대답을 조사해 정리한 내용을 공유하는 시간만으로도 피어 세션이 곧 지났다.
다만, 과제를 수행하는데 걸리는 시간이 모두 달라, 나와 같은 경우에는 내용을 이해하는 데 시간이 걸렸기 때문에, 월, 화요일까지 행해진 피어 세션에서는 내용의 정리를 할 수 없어 질문 할 수 없는 경우도 있었다.
아무래도 과제를 끝내는 것을 목표로 하는 것보다, 과제 분량도 하루 분량을 나누어 내용에 좀 더 집중해 풀+공부를 해 피어 세션에 들어가, 그 부분에서도 잘 검토할 수 있도록 준비해야 한다 라고 생각되었다.
또한 멘토링시에는 강의 관련 질문과 논문을 읽는 방법에 대한 내용을 다루었지만,
이제 본격적으로 논문 스터디를 시작하게 되었습니다만, 멘토님이 정리하는데 도움이 되는 템플릿을 공유해 주셔, 이것을 기준으로 정리하면 좋은 것 같다고 생각했습니다.
스페셜 피어 세션
스페셜 피어 세션에서는 다른 팀이 피어 세션을 진행하는 방법을 공유하는 시간이 있었습니다.
덕분에 우리 팀의 피어 세션도 보다 효율적으로 구성할 수 있었다.
가장 크게 바뀐 부분에 대해서만 기록을 해보면.
우선, 다음주부터는 피어 세션 때 질문하고 싶은 내용을 해당 주차 진척표의 맨 아래 표에 미리 작성해, 피어 세션 때보다 빨리 공유하기로 했다.
그리고 질문이 없거나 시간이 남는 경우에는 다른 팀처럼 추가적인 콘텐츠를 하나 넣는 것이 좋다고 생각했다.
다만 이번주부터 논문 리딩을 시작했기 때문에 멘터님이 말씀해 주신 키워드 방식을 참고로, 각 논문 관련 키워드 하나 이상은 정리해 보고 시간이 남는 경우 이것을 공유하기로 했다!
피어 세션을 더 잘 채우고 우리 팀 모두에게 유용한 시간으로 구성하고 싶습니다.
이번 주는 과제를 해보니 순식간에 지나간 일주일이 지나버렸다.
실은 분량이 너무 많아 아직 학습일지는 마무리되지 않았지만, 이번 주말까지 모두 작성하는 것이 목표다.
다음 주에는 논문 리뷰도 하지만 주말을 최대한 활용하여 바쁜 스케줄에 대비해야 한다!
끝!