회사마다 인프라 요구 사항이 다르다. 각 회사에 필요한 인프라는 개발하는 애플리켕션의 개수와 전문성 수준에 따라 다르다.
* (스펙트럼의 한편) 일시적인 비즈니스 분석에 ML을 사용하는 회사 (분기별 계획 발표를 위해 신규 사용자 수를 예측하는데 ML을 사용) 이러한 경우에는 Jupyter notebook, Python, Pandas등 기본적인 도구만 사용. 간단한 ML use case하나만 있는 경우에도 infrastructure가 많이 필요하지 않다.
* (스펙트럼의 반대편) 자율 주행 자동차는 정확도와 레이턴시에 대한 요구 사항이 있다. SWOOP에는 정확도, TP와 FP의 Trade off를 고려해야하고, FN (침해품이지만 비침해품으로 처리) 도 너무 많이 발생하면 안된다.
알고리즘이 24시간내에 50개 이상의 프로덕트에서 돌아가야하며, 각 프로덕트에 대해서 결과가 일정하게 나타나야한다.
구글은 내부 클라우드 인프라를 대중 상대로 확장해서 구글 클라우드 플랫폼을 만들었는데, 이래서 GCP가 매우 유저 비친화적인 것 같다.
스펙트럼 중간에 있는 회사들은 ML을 합리적인 규모로 사용하여 추천 시스템, 이상 거래 탐지 모델 등을 만든다. 이러한 기업의 데이터 과학 팀에는 엔지니어가 10명에서 수백명까지 있다 (우리는?).
Uber가 하루 동안 data lake에 수십 테라바이트 데이터를 추가함지만, 질로우의 가장 큰 데이터 셋 용량은 비압축으로 2테라 바이트 정도이다. 우리는? 3000 listings * 7 images * 50 products * 100kb = 2억 kb언저리인데, 이게 몇이지? 200GB정도 되는 수준 (이미지인데 이정도?)
중간의 스펙트럼에 위치한 우리는 일반화된 ML 인프라가 주는 혜택을 누린다.
1. Storage and Computing (AWS EC2/S3, GCP, SnowFlake)
CPU또는 GPU 코어. 가장 흔한 형태는 AWS Elastic Compute Cloud (EC2). AWS Step Functions을 사용하면, 여러 CPU 코어를 결합해서 더 큰 작업을 실행하기 위한 더 큰 연산 유닛을 형성할 수 있음.
FLOPS라는 복잡한 내용, 작업 속도에 대한 논쟁이 있으나 너무 복잡스럽다. 많은 사람이 연산 성능을 평가할 대 간단히 연산 유닛이 가진 코어 개수만 살펴본다. CPU 코어 4개와 8기가바이트 메모리를 가진 인스턴스를 사용한다. AWS는 가상 CPU를 의미하는 vCPU개념을 사용하므로, 물리적 코어의 절반 정도로 생각할 수 있다.
멀티 클라우드는 제정신 박힌 사람이면 하지 않을 짓이고, 보통 전략적 투자로 인해 멀티클라우드가 발생한다.
2. Resource Management (hmm, Airflow?)
3. ML platform (Hugging face)
4. Development Environment (Git, IDE, CI/CD).
ML엔지니어 (DS, 나는) 개발환경 (VsCode, Docker, SageMaker)에서 코드를 작성하고 실험을 수행하며, 성능이 가장 우수한 모델 (keras model, best.pt 등)을 배포하고 새로운 모델이 평가되는 프로덕션 환경 (SWOOP)과 상호 작용한다. 개발 환경은 IDE, 버전관리와 CI/CD라는 구성 요소로 이루어진다.
개발 환경 표준화 -> 오래된 requirements.txt에 torch 만 작성하고 torch==1.10.0+cpu를 지정하지 않는 경우, 신규 풀 요청이 일부 컴퓨터에서는 실행되지 않는 경우에는 서로 다른 버전을 사용하기 때문. Docker의 pipfile에서 버전을 지정하지 않더라도, docker를 새롭게 build하게 되면 pipfile.lock이 생성되므로, pipfile.lock을 가지고 rebuild없이 또는 rebuild를 하더라도 docker가 적절한 버전을 제공해주므로 상관없을 수도 있다.
그러나 A가 파이썬 3.8을 사용하는 데, B가 파이썬 3.9를 사용했을 때 20회 정도 실행하면 버그를 발생하는 코드에 대해서 동등하게 재현되지 않을 가능성이 있다.
pipenv install --deploy와 --dev (0) | 2023.10.31 |
---|---|
PaddleOCR Result값의 변경 (1) | 2023.10.31 |
AWS 의 AMI rebuild with CPU only EC2 instance (0) | 2023.10.31 |
Cosine Similarity (0) | 2023.10.18 |
Pytorch 컨테이너 생성 후 사용 (0) | 2023.08.31 |