Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ndarray
- subplot
- BOXPLOT
- unstack
- 가능도
- seaborn
- Comparisons
- boolean & fancy index
- Numpy
- 표집분포
- Python 유래
- Python 특징
- scatter
- VSCode
- groupby
- linalg
- 부스트캠프 AI테크
- Python
- type hints
- python 문법
- Numpy data I/O
- 최대가능도 추정법
- namedtuple
- Operation function
- 정규분포 MLE
- Array operations
- pivot table
- 카테고리분포 MLE
- dtype
- 딥러닝
Archives
- Today
- Total
또르르's 개발 Story
[특강 - 3, 4] 느낀점과 향후 방향 본문
[특강 - 3] 캐글 그랜드마스터의 경진대회 노하우 대방출
[특강 - 4] AI 시대의 커리어 빌딩
위 두 개의 특강을 듣고 느낀 점과 향후 방향을 적어보았습니다.
1️⃣ [특강 - 3] 느낀점과 향후 방향
- Kaggle에서 순위권에 든 사람은 현업에서도 ML 모델을 잘 다룰 가능성이 높습니다.
전처리와 모델에 대해 계속해서 고민하고 직접 실험해보았기 때문에 현업에서도 그러할 가능성이 높습니다. - 우리나라에서는 카카오 아레나, 데이콘이 Kaggle과 비슷한 경진대회 플랫폼입니다.
- Kaggle에서는 다음과 같은 분류가 존재합니다.
Featured : 상업적 목적의 예측 대회. 실제 기업에서 우승한 모델을 현업에 적용하기도 함
Research : 연구 목적의 대회. 연구 목적이라 상금이 낮은 편
Getting Started & Playground : 초심자를 위한 학습 목적의 대회. 예: 타이타닉 생존자 예측 대회 랭킹용 포인트나 메달을 얻을 수 없음
Analytics : 데이터 분석 목적의 대회. 데이터 탐색과 이를 시각화한 노트북을 제출하는 대회
Recruitment : 리크루팅 목적의 대회 - Kaggle에서는 submission을 할 때 리소스 제한(GPU, CPU, RAM, 실행시간)이 있는 대회도 있습니다.
- Kaggle의 Notebooks 탭에 들어가면 사람들이 올려놓은 ML 파이프라인을 볼 수 있고, 사용할 수 있습니다.
Kaggle에서는 Jupyter notebook, Google Colab과 같은 ipynb 형식의 python을 test 할 수 있습니다.
장점은 데이터를 직접 다운받지 않아도 바로 사용할 수 있다는 점입니다. 또한, submit도 쉽게 할 수 있습니다.
- Kaggle에서 좋은 점수를 받기 위해서는 고인물(?)의 discussion이나 code들을 참조해서 내 코드로 만든 후 성능을 높이기 위한 방법을 고민하는 것도 좋은 방법입니다.
"Code" 탭의 "Most Votes"를 보세요! - Kaggle에서 소수의 인원이 참가하는 대회보다 다수의 인원이 참가하는 대회에 submit 하는 것이 좋습니다.
왜냐하면 소수의 인원이 참가하는 대회는 대부분 Data의 크기가 너무 크거나, GPU 자원을 많이 소모하는 그런 대회일 경우가 많습니다. 또한, 다수의 인원이 참가하게 되면 code의 공유가 훨씬 활발하게 일어나게 되어, 더 좋은 성능의 모델을 만들 가능성이 높아집니다. - 좋은 모델은 일반화(Generalization)가 잘된 모델을 뜻합니다.
즉, Training set에서 얻은 점수가 Test set에서도 비슷하게 나오는 모델입니다.
Kaggle에서는 "좋은 모델"을 만드는 것이 중요합니다. - 좋은 모델을 만들기 위해 사용하는 방법 중 하나가 "K-fold Cross Validation"을 사용합니다.
Training Data를 K개로 나눠 한 번씩 사용한 후, 정확도의 평균을 내서 사용합니다. 이 방법을 사용하면 훨씬 높은 정확도를 가질 수 있습니다.
Stratified k-fold의 경우에는 validation set을 class 비율에 맞게 나눠서 사용해 더 높은 정확도를 낼 수 있습니다.
- kaggle 높은 점수 얻는 방법은 다음과 같습니다.
- 적절한 hyperparameter
- 앙상블
- 가짜 레이블 (kaggle 데이터에 추가적인 데이터를 사용) - Kaggle에서 모델을 만들 때 v1, v2, v3, ... 순서로 개별 폴더를 만들어 코드 관리하는 방법을 추천합니다.
버전 별로 전처리된 데이터, 모델 파일을 저장할 수 있는 장점이 있습니다. (여러 버전의 모델을 앙상블 하기 위해 버전 별 폴더 추천)
다만, github를 사용할 때는 큰 파일, 잦은 rollback 등의 문제로 최종 버전을 보관하는 용도로 많이 사용합니다. - Kaggle에서는 최신 모델을 사용하는 것이 일반적으로 더 좋습니다.
- 앙상블을 할 때 성능이 좋지 않은 모델을 섞으면, 좋은 성능의 모델 점수를 깎아먹습니다.
다만, 다른 모델과 아키텍처가 아주 다를 경우, 앙상블 하면 성능이 올라갑니다.
2️⃣ [특강 - 4] 느낀점과 향후 방향
- Full Stack ML Engineer는 웹 Full-Stack (Frontend + Backend)와 ML engineer을 합친 직무입니다.
즉, 웹의 Full stack과 ML을 둘 다 할 수 있어야 합니다. - Full Stack ML Enginner를 한마디로 정의하면?
“Deep learning research를 이해하고 + ML Product로 만들 수 있는 Engineer” - Full Stack이기 때문에 ML Model을 Server와 Client 두 곳에 붙이는 것이 가능합니다.
ML model을 Server에 붙이는 경우 PyTorch와 TensorFlow를 사용합니다.
ML model을 Client에 붙이는 경우 TensorFlowLite, TensorFlow.js를 사용합니다.(Edge computing) - Full Stack ML Engineer의 장점은 빠른 프로토타이핑입니다.
자신이 만든 Demo Web에 자신이 만든 Model을 올려 시각화와 UI 사용이 가능하게 만들 수 있습니다. - 또한, Full Stack ML Engineer는 각 Stack의 깊은 이해에도 도움을 줍니다.
- 하지만 Full Stack ML Engineer의 단점은 Stack에 대한 깊이가 없어질 수도 있습니다.
Front-end, Back-end, Machine-Learning 분야는 모두 빠르게 바뀌고 있으며, 공부해야 할 양도 어마어마하게 많아 쉽게 따라잡기가 어렵습니다. - ML Product는 보통 아래와 같은 과정을 통해 만들어집니다.
요구사항 전달 => 데이터 수집 => ML 모델 개발 => 실 서버 배포 - 요구사항 전달은 고객의 요구사항을 수집하는 단계입니다.
서비스 기획 : 제품에 대한 요구사항 전달
요구사항 + 제약사항 정리 : 기능 상세 요구 사항 정리, 제약 사항 정리
ML Problem으로 회귀 : 요구사항은 실 생활의 문제, ML이 풀 수 있는 문제로 회귀하는 작업 - 데이터 수집은 가장 오래 걸리는 단계이며, Raw data를 수집하고, 직접 Labeling을 하는 작업입니다.
Raw 데이터 수집 : 요구사항에 맞는 데이터 수집 (Web Crawler), Bias 없도록 분포 주의, 저작권 주의
Annotation Tool 기획 및 개발 : 수집/제공받은 데이터의 정답을 입력하는 작업을 수행하는 web application 개발, 다수의 Annotator들이 Client를 통해 동시에 서버로 접속, 모델 Input/Output 고려, 새로운 Task에 대한 Annotation tool 기획 시 모델에 대한 이해 필요
Annotation Guide 작성 및 운용 : 이럴 땐 어떻게 Annotation 하나요? 에 대한 대답이 되는 문서 - ML 모델 개발은 Machine learning 모델을 개발하는 단계입니다.
기존 연구 Research 및 내재화 : 논문을 찾아보고 이해하는 단계, 적절한 연구를 재 현하여 내재화
실 데이터 적용 실험 + 평가 및 피드백 : 수집된 데이터 적용, 평가 및 모델 수정
모델 차원 경량화 작업 : 경량화, Network surgery - 실 서버 배포는 Serving 하는 단계입니다.
엔지니어링 경량화 작업 : TensorRT 등의 프레임워크 적용
연구용 코드 수정 작업 : 연구용 코드 정리, 배포용 코드와 Interface 맞추는 작업
모델 버전 관리 및 배포 자동화 : 모델 버전 관리 시스템, 모델 배포 주기 결정 & 업데이트 배포 자동화 작업 - Full Stack을 할 줄 알면, Model에서 결과값이 잘 도출되었는지 출력할 수 있는 Web application을 개발할 수 있습니다.
- ML Product를 제작할 때는 처음부터 너무 잘 만들려고 하지 말고, 최대한 빨리 완성하는 것이 목표!
- ML engineer라면 Optimizer.step()에서 무슨 일이 일어나는지 정도는 알아야 합니다.
- ML Engineer 라면, 하나의 논문을 구현하고, Demo page를 만들어보는 것을 추천합니다.
- Front-end 하려면 react 하라! (커뮤니티가 커서)
- Spark나 hadoop은 데이터 엔지니어에 더 가까워서 ML 엔지니어에는 큰 연관이 없습니다. (논문 구현이 더 많은 도움)
- 시각화 툴을 쓰는 것보다 데모페이지를 만드는 것에서 좋은 점은?
어떤 특정한 결과 부분에 대해서 보고 싶을 때는 좋습니다. - 목표 : 유사어를 찾아주는 NLP 모델을 웹에 올려보자!
보고서나 이력서 등 글을 써야 할 때 글 특성에 맞는 어울리는 단어를 사용해야 할 경우가 있습니다. 근데 그런 단어가 생각이 나지 않을 때가 많죠. (유사한 단어는 생각나는데..) 그래서 문장을 넣게 되면, 글 특성에 맞는 유사한 단어를 찾아서 문장을 완성시켜주는 NLP 모델을 만들어보고 싶습니다.
'부스트캠프 AI 테크 U stage > 느낀점' 카테고리의 다른 글
[특강 - 7, 8] 느낀점과 향후 방향 (0) | 2021.03.05 |
---|---|
[특강 - 5, 6] 느낀점과 향후 방향 (0) | 2021.03.04 |
[특강 - 1, 2] 느낀점과 향후 방향 (0) | 2021.03.02 |
[5주차] 느낀점 (0) | 2021.02.26 |
[4주차] 느낀점 (0) | 2021.02.19 |
Comments