스터디 83

[Docker] 도커란?

머신러닝 파이프라인 실무 과정에서 쿠베플로우를 사용해 파이프라인을 만드는데 이때 꼭 필요한 베이스 테크기술이 도커기 때문에 따로 블로그 포스팅을 준비했다. Docker : 애플리케이션을 개발, 제공, 실행하기위한 개방형 플랫폼 Docker를 사용하면 애플리케이션을 인프라에서 분리할 수 있다는 장점이 있다. 애플리케이션을 관리하는 것과 동일한 방식으로 인프라를 관리 하는 것. 코드를 신속하게 전달하고 테스트 및 배포가 가능하며 코드 작성과 프로덕션 실행 사이의 지연을 크게 줄일 수 있다. Docker 컨테이너는 느슨하게 격리 된 환경에서 애플리케이션을 패키징하고 실행할 수 있는 기능을 제공한다. 격리 및 보안을 통해 주어진 호스트에서 여러 컨테이너를 동시에 실행 할 수 있다. 컨테이너는 가볍고 애플리케이션..

스터디/Tech 2023.02.26

[실무] WIT 모델 분석

What-if-tool : 훈련된 ML 모델의 동작을 분석하는 시각화 기반 도구. 블랙박스 분류 또는 회귀 ML모델에 대한 이해를 돕기 위해 사용하기 쉬운 인터페이스를 제공, 모델 데이터에 대한 추론을 수행하고 다양한 방법으로 결과를 시각화진행. 수동/프로그래밍 방식으로 편집하고 그 변경 결과를 보기 위해 모델을 다시 실행도 해볼 수 있음(개꿀). 데이터 포인트별로 예측값을 표현하고 다차원으로도 분석할 수 있도록 해줌. 사용자가 코드가 전혀 필요하지 않은 시각적 인터페이스를 통해 일련의 데이터 훈련 ML 모델을 사용할 수 있도록 간단하고 직관적인 방법을 제공하는 것이 WIT 툴이라고 할수있다. tool 작업 화면은 Datapoint Editor, Performance&Fairness, Features 세..

스터디/AI 2023.02.26

[실무] TFDV 데이터 검증

(pythorch를 써도 TFDV 쓸 수 있음) TFDV는 데이터의 통계, 시각화에 용이한 라이브러리다. tfdv.generate_statistics_from_csv() https://www.tensorflow.org/tfx/data_validation/api_docs/python/tfdv/generate_statistics_from_csv tfdv.generate_statistics_from_csv | TFX | TensorFlow Compute data statistics from CSV files. www.tensorflow.org TFDV는 Apache Beam의 데이터 병렬처리 프레임워크를 사용해 대규모 데이터 세트에 대한 통계 계산을 확장한다. 아래같이 입력하면 학습데이터를 읽고, Apache..

스터디/AI 2023.02.24

[실무] 코드관리

리서치 코드의 품질을 개선시키기 위해 점검해야 할 항목들 ① 코드 재사용성 높이기 : 라이브러리를 구현하는게 좋음(추상화 : 공통의 속성이나 기능을 묶어 이름을 붙이는 것으로 객체 지향적 관점에서 클래스를 정의하는 것을 말한다) ② 전역변수는 지양하고 환경 값들은 환경 변수로 빼 함수에 명시적으로 파라미터를 전달하는 방식으로 소스 작성 ③ import 방식은 relative가 아닌 absolute import 방식으로 쓰는게 좋다. PYTHONPATH 환경변수를 활용해 현재 시작점을 명확히 하고 절대경로 import 로 진행. ④ 변수명 축약어 쓰지않기. => 구체적인 방법들 - Lint (소스 코드를 분석하여 프로그램 오류, 버그, 스타일 오류, 의심스러운 구조체에 표시(flag)를 달아놓기 위한 도구..

스터디/AI 2023.02.23

[실무] ML Hyperparameter Optimization

일반적으로 모델 성능 향상에 하이퍼파라미터 최적화가 많이 영향을 미침 (HPO) AutoML (엔지니어는 사실 할 수 있는 모든 걸 자동화하는게 좋으니까..) 측면으로 볼때 HPO는 반복업무이므로 자동화할 수 있는건 해두면 좋다. 하이퍼파라미터 최적을 탐색하는 기술 관련 참고 글 https://adioshun.gitbooks.io/deep_learning/content/Auto-ML/Intro.html ① 그리드 탐색, 랜덤 탐색 ② 베이지안 최적화(Bayesian Optimization) ③ 기타 W&B Sweeps 툴 (실험관리 기능을 기본으로 탑재) , 공식 깃허브 예제를 참고 https://github.com/wandb/examples/blob/master/examples/wandb-sweeps/..

스터디/AI 2023.02.23

[실무] 프로젝트 모델 실험관리

* 실험관리 => 하이퍼파라미터에 대한 정보관리가 필요. => 학습 시킨 데이터에 대한 정보관리가 필요. => metric 정보관리가 필요. 개인적으로 사용하기에는 Weights & Biases 로 실험관리 하면 편리. (각 모델의 성능 시각화, 빠른 통합, 웹 상 접근 용이, 학습 시각화, 모델 재연 가능, GPU 사용률 트래킹 등등의 기능 제공) 상세한 사용법은 링크로 추가! 나중에 실무하다 모를때마다 참고하면 좋을 듯 하다. 1) 깃허브 https://github.com/wandb/tutorial GitHub - wandb/tutorial: Weights & Biases Tutorial Weights & Biases Tutorial. Contribute to wandb/tutorial develop..

스터디/AI 2023.02.23

[실무] ML(머신러닝) 실무노트

소프트웨어 측면에서는 리펙토링, 단위테스트, 종속성 제거, 문서화 등을 통해 유지 보수를 관리해왔는데, 머신러닝 실무에서는 어떤식으로 이를 관리할까? 먼저 데이터, 모델 서빙 측면으로 나눠서 ML 실무를 살펴보면 다음과 같다.. 1) 데이터 변화가 분기 단위, 월 단위 심하면 연 단위로 천천히 일어날 때 2) 데이터 변화가 빠르게 일어날 때 -> 유저의 피드백을 통해 계속적인 학습이 이루어져야 하는 상황, 1) 보다 어려움,, 1) 온라인 서빙 : ML을 시스템에 인테그레이션 할 때, 온라인 프로덕션을 통해 api 서버를 만들어서 리얼타임 서빙을 진행할 수 있음 => 어려움,, 서비스 측면에서 에러 발생 가능 2) 오프라인 서빙 : 전체 유저에 대해 하루에 한번 정도 예측 진행 => 온라인 서빙보다 쉬움..

스터디/AI 2023.02.16

[Imple] 텐서플로우 분산학습

* 학습시간을 최대한 줄이기 위해 분산학습 이용. * 동기화/비동기화 분산학습 * 동기화 분산학습 : 일반적으로 동시에 데이터 세트의 다른 부분을 학습, 에포크가 끝날 때 그러한 경사도들이 집계되어 모델을 업데이트. * 비동기화 분산학습 : 모든 부분이 동시에 독립적으로 학습하여 가중치를 동시에 업데이트. *분산학습 전략 ① 미러링 전략 : 단일 컴퓨터에 다수의 기기, GPU, CPU가 있을 때 사용, 각 기기에 같은 모델의 복사본을 생성해 모두를 활용. (기기 수 만큼 모델의 복사본을 가짐) => 각 기기들은 독립적으로 학습해 에포크가 끝날 때 모든 가중치를 고려해 모델의 메인 복사본을 업데이트 함. ② 다중 작업자 미러링 전략 : 초기모델은 같으나 각 기기로 복사되는 것이 아니라 작업자라 불리는 각각..

스터디/AI 2023.02.15

[Imple] 텐서플로우 라이트(TensorFlow Lite)

* 모바일 기기를 위해 모델을 학습하고 최적화하는 텐서플로우 라이브러리 개요 앱은 30MB인데 모델이 700MB면,,,? 이런 경우를 위해 라이트를 사용. ① 텐서플로우 모델 학습을 컴퓨터로 진행한다. ② 모델을 파일 시스템에 저장 ③ 텐서플로우 라이트 컨버터를 정의 (모델을 모바일 기기를 위해 최적화한 뒤 새로운 파일로 저장) 모델 최적화 방법 1) 모델 토폴로지를 최적화 : 레이어 개수 조정, 더 빠른 연산으로 치환, 완전 연결 레이어 수 줄이기 등등 => 속도는 오르나 정확도가 떨어질 수 있음.. 방법 2) 네트워크 양자화를 통해 파라미터 정밀도를 감소 : 부동 숫자 뒤의 정밀도 공간을 줄이는 것 (사전 훈련 양자화, 사후 훈련 양자화) 방법 3) 파라미터 수를 감소 텐서플로우 모델을 텐서플로우 라..

스터디/AI 2023.02.14

[Imple] 텐서플로우 서빙(TensorFlow Serving) 분류모델 api

개요 앞서 적은 이미지 분류 api를 프로덕션에 넣기 위해 사용해볼 텐서플로우 서빙! 텐서플로우 서빙은 텐서플로우 라이브러리의 확장판으로 모델, 모델 주변의 서비스들을 제공한다. 텐서플로우 서빙을 사용하면 좋은 점 ① 수백만, 수십억의 요청을 처리하도록 만들어져 확장성 문제가 적음. ② 지연율이 낮음 ③ 다수 모델을 처리하기 적합 ④ 모델의 여러 버전을 다루기 적합 텐서플로우 서빙 아키텍처 텐서플로우 서빙에서는 모델을 서비스 하므로 모델을 Servable 서비스 가능이라고 명칭한다. 텐서플로우 서빙인프라 모듈은 크게 1. 모델처리자, 2. 버전 매니저, 3. 모델 로더 라고 불리는 부분으로 나뉜다. ① 버전매니저에서는 다른 종류의 모델, 같은 모델인데 다양한 버전들이 있을 수 있다. ML들은 모델들을 발..

스터디/AI 2023.02.13