반응형 Backend MLOps56 [Github Action] python 프로젝트의 coverage 측정 후 보고 //coverage란? 작성된 코드는 어떤 목적을 가지고 만들어진 로직의 집합니다. 따라서 작성자는 본인이 작성한 코드가 어떤 동작을 수행해야하는지 정확하게 알고 있는 몇 안되는 사람이고 그에 맞게 바르게 이해하고 있어야 한다. 보통 파이썬은 아주 작은 단위의 객체들이 모여서 하나의 큰 프로젝트를 만들게 되므로 이 작은 단위의 객체들이 모두 자기 역할을 충실히 하는지 테스트 하면 큰 프로젝트를 모두 돌려보지 않더라도 전체 프로젝트의 신뢰도를 예측할 수 있다. 이렇게 자신의 코드가 예상대로 움직여주는지 확인하는 작업을 unittest라고 하고 자신이 만든 객체들 중 몇 퍼센트가 테스트되고 있는지 확인해 알려주는 지표가 바로 coverage값이라고 할 수 있다. //Github Action? 우리는 이 값을.. 2021. 9. 23. [DLTemplate] #4 trainer 정리 trainer 를 잘 정리해보자. 우선 my_dataset.py 파일을 만들어서 데이터셋부터 갈고 닦아보자. 간단한 mnist 불러오기 구문이지만 나중에 다시 써먹을 수 있는 형태로 뼈대를 잡아두고 repr 등도 확실하게 적어둔다. 잘 나오는 것을 확인할 수 있다. 이제 trainer의 data부분을 치환해 주고 적당한 unittest를 줘서 적용을 해 본다. 테스트를 통과했다. 다음에 할 일은 이 unittest가 내가 만은 sweep config 와 유기적으로 연동되게 하는 것이다. 훈련중 바뀔 가능성이 현저히 적은 파라미터들을 공통 파라미터로 묶어서 꺼냈다. 이렇게 하면 trainer 에서도 쉽게 불러올 수 있게 되면서 각각의 method 별로 다른 실험을 진행할 수도 있다. 불러오면서 train과.. 2021. 9. 23. [DLTemplate] #3 github action과 codeclimate 일을 시작 하기 전에 먼저 깃헙을 확인한다. pull requests 를 확인한 다음 closed 를 보면 내가 이전의 작업을 끝내면서 어떤 메모를 남겼는지 확인 할 수 있다. 이런 작업들이 남아있다. 계속해서 branch를 확인하고 추적하는 작업이 상당히 귀찮다. 그럴때는 zsh를 이용해주도록 하는데 VScode는 어떤 쉘을 이용해서 작업을 시작할지 프로필에서 정해줄 수 있다. 터미널을 열고 왼쪽 위에 있는 저 부분을 설정해 주면 간단하게 기본 쉘을 zsh로 바꿔줄 수 있다. zsh와 oh-my-zsh 를 이용해서 현재 브랜치가 어디인지 나타내주는 테마를 적용했다. 테마 적용에 어려움이 있는 경우 VScode zsh 깨짐 등을 검색하면 해결할 수 있다. VScode 가 설치되어있는 로컬에서 해결해야하는.. 2021. 9. 23. [DLTemplate] #2 모듈의 패키지화 #1 에서 main이 아닌 브랜치에서 main이 아닌 브랜치로 push 하였으므로 merge를 요청하는 pull request가 와 있다. 간단하게 메모를 남기고 TODO까지 적어준다. 그리고 Merge해주면 merge가 정상적으로 되었고 브랜치를 삭제할 것이냐는 질문이 나온다. 이제 설계한 실험단위가 종료되었으므로 브랜치를 삭제한다. 브랜치가 정상적으로 삭제 되었다. 항상 코딩을 진행할 때는 1. 실험 단위 설계 2. 브랜치 생성 3. 실험 단위 진행 4. 단위 종료 5. push 6. pull request 작성 7. merge 후 브랜치 삭제 위의 과정을 거쳐야 하는 것을 잊지 말아야한다. 나도 자꾸 까먹는데 일단 하루에 하나씩은 꼭 브랜치를 만들어서 깃을 십분 활용하도록 하자. 브랜치를 즉각 확인.. 2021. 9. 21. [DLTemplate] #1 딥러닝 템플릿 만들기 시작 간단하게 리드미 정도를 포함한 깃헙 레포를 하나 만든다. 이 레포를 clone 하여 로컬에서 작업을 시작한다. 간단하게 MNIST 손글씨를 훈련하는 스크립트를 만들어서 이것으로 부터 각각 템플릿을 나눠서 구성해 보자. 먼저 브랜치를 하나 생성하고 브랜치 위에서 작업하도록 한다. 코딩을 시작하기전에 기본적으로 무엇을 코딩할지 정하고 그 행동의 단위가 끝나면 머지하는 습관이 반드시 필요하다. 브랜치를 만들면서 동시에 채크아웃 까지 진행했다. 이제 이 브랜치 위에서 간단한 MNIST 학습 모델을 구성한다. CV 계열에서 볼 때 학습은 크게 세가지로 분류할 수 있을 것이다. 첫번째는 분류문제에 대한 학습이고 두번째는 회귀문제에 대한 학습이고 세번째는 생성문제에 대한 학습이다. 여기서는 우선 분류문제에 특화된 탬.. 2021. 9. 20. [MLOps] 리서치 코드의 품질 관리 본 문서의 모든 자료는 송호연 Chris 님의 인프런 강의 [머신러닝 엔지니어 실무] 를 요약한 것임을 밝힙니다. 강의 주제 : CI를 잘 세팅해서 리서치코드를 일정하게 유지하자. 01. 리서치 코드의 품질 문제 1. 개인 컴퓨터에 저장되어있는 코드들 2. 복사 붙여넣기로 인한 높은 빈도의 중복 코드 3. 재연 불가능한 연구결과 4. 수 많은 코드 악취, 품질이 굉장히 낮은 코드들 깨진 유리창의 법칙 : 하나의 창이 깨진채로 방치되기 시작하면 다른 유리창도 곧 깨지기 시작할 것 -> 한명의 낮은 품질의 코드 개발자가 있으면 다른 개발자들의 모든 코드에도 영향을 주기 시작함 #1 코드중복 -> 소프트웨어적 취약점이 있는 코드가 복사되면 개발자가 인지하지 못한 취약점이 지속적으로 프로잭트에 남아있게 된다. .. 2021. 9. 12. 이전 1 ··· 3 4 5 6 7 8 9 10 다음 반응형