[부스트캠프] Day 6 회고

Gamchan Kang·2024년 8월 12일
0

배운 점

새로운 키워드

정적 배포

기존 소프트웨어 배포 과정과 유사

동적 배포

  • 배포 내용에 따라 모델 매개변수 배포, 직렬화 객체 배포, 브라우저 배포 등으로 나눌 수 있다.
  • 배포 위치에 따라 사용자 기기 배포, 서버에 동적 배포, 컨테이너 배포, 서버리스 배포, 모델 스트리밍 등으로 나눌 수 있다.
  • 사용자 요청에 따라 온라인 예측, 배치(비동기) 예측으로 나눌 수 있다.
  • 모델 최적화 과정: Low-Rank Factorization, Knowledge Distillation, Pruning, Quantization

배포 전략

  • 자동 배포: 새로운 버전이 병렬 실행 vs 카나리(Canary) 배포: 점진적으로 트래픽 전환
  • 멀티 암드 밴딧: 병렬적으로 여러 버전 배포 → 성능이 좋은 쪽으로 트래픽 가중
  • 모델에 수반되는 항목으로는 end-to-end 모델 세트, 신뢰도 테스트 세트, 성능 지표 및 허용 범위 등이 있다.
  • 버전 동기화 관련해서 훈련 데이터, 특징 추출기(전처리), 모델을 체크할 것 → 데이터를 업데이트 할 때마다 새로운 버전 생성, 특징 추출기도 같이 업데이트(변하지 않더라도!), 트랜잭션 활용한 스크립트 자동화
  • 메타 데이터: 훈련 모듈의 의존성, requirements.txt(아마 모델), 학습 알고리즘, 하이퍼파라미터 이름/값, 모델 입력 feature, 출력 데이터 목록/유형/사용방법, 훈련 데이터 버전/위치, 하이퍼파라미터 튜닝 시 활용한 데이터 버전/위치, 모델 채점 코드 ...

심층 전략

  • 캐싱: functools.lru_cache 사용(데코레이터) → 설정 값 초과시 FIFO로 제거
  • 직렬화: pickle.dumppickle.load, 사이킷런은 joblib.dumpjoblib.load

QQ plot

인사이트

  • Linear Classifier의 다른 관점 → 흔히 알고 있는 가중치 업데이트의 경우는 매개변수적 접근 방식이다.
  • 매개변수적 접근 방식: 대수(algebraic)적인 접근으로 볼 수 있다. linear classifier의 경우 선형성을 전제하므로 입력의 계수인 가중치를 업데이트하는 관점이다.
  • 기하학적 접근 방식: 데이터는 점이고 분류기(classifier)의 목적은 데이터를 분할하는 것이므로 데이터를 표현한 좌표계 속에서 이를 분리할 선/면/입방체(적절한 공간 변환을 가정할 때)를 구하는 데 초점을 맞춘다.
  • 시각적 관점: 데이터의 템플릿을 학습하는데 초점을 둔다. 템플릿을 비유하자면 플라톤의 이데아로 표현할 수 있을 듯? 사람이 ‘의자’라고 구분하는 무형의 기준을 학습하는 과정(ex) 지면과 평행한 부분이 발견됨)

좋았던 점

  • 팀 노션에 매일 Todo 리스트를 정하니 목표가 확실했다.
  • MLOps와 관련해서 전반적으로 훑어봤다. → 직접 적용해 볼 시나리오가 많았다
  • Linear Classifier에 다른 관점을 처음 확인했다.

아쉬운 점

  • 개론에 가까워서 깊이 찾아보려면 정말 시간이 오래 걸릴 수도 있다. 실제로 오전 내내 MLOps에 대해서 깊게 찾아봤다. 전체적인 라이프 사이클도 좋지만, 각 키워드 별(이를 테면, 모델 배포) 세부 키워드를 알려준다면 더 좋지 않을까 싶다.
  • 지난 주 차에는 실습 코드가 있어서 실전에 가까운 학습을 할 수 있었지만, 이번 주 차 초반은 실습 코드가 없어서 조금 아쉬웠다. 하지만 zero-to-one으로 코드를 직접 짤 수 있어서 오히려 좋아?
profile
Someday, the dream will come true

0개의 댓글