개요
AWS Data/MLOps 인프라 이키텍처 샘플
AWS와 Snowflake로 Data/MLOps 인프라 아키텍처링을 해보았습니다. 데이터 분석 솔루션만 Snowflake를 사용하고 나머지는 모두 AWS에서 제공하는 서비스입니다. Data와 MLOps 인프라를 통합하여 모두 표현하다 보니 조금 복잡해 보이므로 항목 별로 하나씩 살펴보겠습니다.
글또 노션 페이지
개요
글또는 글쓰기에 관심 있는 개발자들이 모여서 몇 가지 규칙을 정해서 참가한 개발자들의 글쓰기를 돕는 커뮤니티입니다. 저는 저만의 테크 블로그를 만들고 싶은 열망과 일하면서 배운 것을 정리하는 습관을 들이기 위해 글또 7기에 참가하였습니다. 약 6개월간의 글또 7기 활동 정리해보았습니다.
개요
어느 회사의 ML 팀은 회사의 비지니스 문제를 해결하기 위해 딥러닝 알고리즘이 가장 적합하다고 결론을 내렸습니다. 데이터 엔지니어는 데이터 과학자와 논의하여 필요한 데이터 수집하고 데이터 과학자의 데이터셋 준비를 지원합니다. 데이터 과학자는 수집된 데이터를 탐색하고 데이터 엔지니어와 협업하여 필요한 데이터셋을 준비합니다. 딥러닝을 사용하기로 하였으므로 데이터 탐색이나 피처 엔지니어링이 많이 필요하지 않습니다. 모델 학습이 완료되고 오프라인 데이터셋에서 모델 성능을 검증해보니, 비지니스 문제 해결에 충분한 하다는 것을 확인하였습니다.
자, 이제 저와 같은 머신러닝 엔지니어의 턴 입니다. 개발된 딥러닝 모델을 배포해야하는 시기가 온 것 입니다. MLOps 개념이 널리 알려지기 전의 ML 종사자들은 이 단계가 ML 프로젝트의 종착점으로 착각 했었지만, 이제 우리는 그렇지 않다는 것을 잘 알고 있습니다. 모델 제품화의 첫 걸음을 이제 막 딛은 것이지요.
개요
노트북이 노후되어 최근 MacBook을 새로 하나 장만했습니다. M2 칩이 탑재된 MacBook Air 모델로 구매하였는대요. 지금까지 상당히 만족하면서 사용하고 있습니다.
M1이나 M2와 같은 애플 칩이 탑재된 MacBook 사용시 ARM64 아키텍처 호환 이슈를 가끔 겪게 되는대요. Docker 사용시에도 마찬가지로 아키텍처 호환 이슈를 신경써야 합니다.
MLOps가 뭐지? -> MLOps 소개
머신러닝 엔지니어로 커리어 전환하면서, 저의 업무 중 많은 비중을 차지하고 있는 것이 MLOps 입니다. 새로운 분야가 항상 그렇듯이, 보고 배울만한 자료가 그렇게 많지 않습니다. MLOps에 처음 발을 들이신 분들은 MLOps가 좋다고는 하는데, 어떤 자료를 참고하여 어떻게 도입 해야 할지 갈피를 잡기가 힘듭니다.
그런 분들을 위해 제가 봤던 MLOps 자료 중에 좋았던 것 5개를 추려 보았습니다. 아래 순위는 매우 주간적이니, 순위에 연연치 마시고 아래 자료들은 모두 좋은 자료들이니 참고하여 MLOps 도입에 도움이 되었으면 합니다.
DevOps 성숙도가 높은 기업이나 팀이라면 IaC (Infrastructure as Code) 를 도입하여 인프라를 코드로 관리 하고 있을 것 입니다. 인프라 배포 자동화, 인프라 일관성 유지, 인프라 가시성 확보, 온디멘드 인프라등의 IaC의 많은 장점 들로 인해 이제 IaC는 새로운 기술이 아닌 인프라 관리의 기본이 되어 가고 있습니다. 대표적인 IaC 툴로는 프로비저닝은 Terraform, 설정은 Ansible을 많이 사용하고 있습니다. 기타 클라우드 벤더 종속적인 AWS CloudFormation, AWS CDK, ARM (Azure Resource Manager)등의 다양한 IaC 툴들이 있습니다.
그 중 대표적인 IaC 툴인 Terraform은 많은 자료들이 있지만, HCL (HashiCorp Configuration Language) 이라는 전용 언어를 익혀야 하는 약간의 진입 장벽이 있습니다. 직관적이고 가독성이 높은 쉬운 언어이지만, 새로운 언어를 배운다는 것은 언제나 심리적 허들이 생기기 마련입니다. HCL을 사용하지 않고, 익숙한 Python과 같은 언어로 인프라 코드를 작성할 수 있는 CDKTF (CDK for Terraform) 를 소개해 드리겠습니다.
개요
실험실을 벗어나 상용 딥러닝 모델 개발 경험이 있는 분이라면 데이터셋을 준비하는 것이 매우 힘들다는 것에 공감하실 겁니다. 더구나 데이터셋 관리가 되지 않아 재현성을 포기한채 모델 개발하는 곳도 보았습니다. 이런 ‘해석 불가능한’ 모델은 거버넌스로 인해 힘들게 개발을 완료 하더라도 법적인 제약으로 상용화가 불가능 할 수도 있습니다.
이 기사에는 비전 데이터를 예시로 수집된 데이터에서 데이터셋 생성까지 과정을 자동화하는 샘플 아키텍처 제시하고, 비디오 데이터에서 이미지 데이터를 샘플링하는 간단한 파이프라인 예제를 작성하였습니다.
“플렉스 해버렸지 뭐야”
개요
JAX가 출시된지 2년이 지나면서 완성도가 많이 높아졌습니다. 이제는 실험 단계를 넘어 상용 모델 개발에 JAX 도입을 검토해 볼만한 단계가 온 것 같습니다. DeepMind나 Hugging Face와 같은 AI 업계를 선도하는 회사들은 이미 JAX로 이전했거나 이전하고 있는 과정에 있기도 하구요. (참고링크1, 참고링크2)
이 기사에는 Flax라는 JAX용 딥러닝 라이브러리를 사용하여, 간단한 딥러닝 모델을 만드는 방법을 다룹니다. Flax의 API는 딥러닝 개발자 경험 (DX, Developer Experience) 고려하여 개발 되었기에 기존 Tensorflow나 PyTorch 경험이 있는 분이면 쉽게 익힐 수 있습니다.
제가 선택한 MLOps 툴체인. 당신의 선택은?
최근에 MyMLOps이라는 흥미로운 사이트를 발견했습니다. MLOps의 각 항목별로 사용하는 도구를 선택하고, 선택된 도구들을 위와 같이 툴체인 형태로 시각화해주는 사이트 입니다. MyMLOps에 있는 도구들과 MyMLOps에는 없지만 도움이 될만한 MLOps 관련 도구들을 소개해 드리겠습니다. 여러 항목에 중복되는 도구들은 다양한 기능을 제공하는 통합 솔루션 입니다.
YOLO(You Only Look Once)는 빠른 속도와 높은 정확도를 가진 가장 널리 사용되는 딥러닝 기반 객체 감지 알고리즘 중 하나 입니다. 이 기사에서는 PyTorch 기반의 최신 YOLO 프레임웍인 ultralytics/yolov5에서 커스텀 데이터세트로 YOLOv5 모델을 학습하는 방법을 살펴보겠습니다.