https://www.run.ai/guides/machine-learning-engineering/machine-learning-infrastructure
머신러닝(ML) 인프라는 머신러닝 모델이 개발되고 배포되는 기반이다. 프로젝트마다 모델이 다르기 때문에 머신러닝 인프라 구현도 다양한다. 그러나 모든 머신러닝 인프라가 완전하게 기능하기 위해 필요한 핵심 구성 요소가 있다.
이 글에서는 이러한 구성 요소를 설명하고, 머신러닝 인프라를 만들때 고려해야 할 중요한 측면을 검토한다.
이 글에서 배우게 될 내용:
- 머신러닝 인프라란 무엇인가
- 머신러닝 인프라 개발의 구성 요소
- 머신러닝 인프라에 대한 고려 사항
머신러닝 인프라 (Marchine Learning Infrastructure) 란?
머신러닝 인프라는 머신러닝 모델을 개발, 학습, 운영하는 데 필요한 리소스, 프로세스, 도구를 포함한다. 때때로 AI 인프라 또는 MLOps의 구성 요소로 불리기도 한다.
ML 인프라는 머신러닝 워크플로우의 모든 단계를 지원한다. 데이터 과학자, 엔지니어, DevOps 팀이 신경망 모델을 학습하고 배포한느데 필요한 다양한 리소스와 프로세스를 관리하고 운영할 수 있도록 한다.
머신러닝 인프라 개발: 기본 구성 요소 (The Building Blocks)
머신러닝 인프라를 이해하려면 먼저 그 구성 요소를 이해하는 것이 도움이 된다.
Model Selection (모델 선택)
머신러닝 모델 선택은 적합한 모델을 선택하는 과정이다. 이는 어떤 데이터를 수집할지, 어떤 도구를 사용할지, 어떤 구성 요소가 필요한지, 그리고 구성 요소들이 어떻게 연결되는지를 결정한다.
Data ingestion (데이터 수집)
데이터 수집 기능은 모든 머신러닝 인프라의 핵심이다. 이러한 기능은 모델 학습, 응용, 개선을 위해 데이터를 수집하는데 필요하다.
도구 측면에서 데이터 수집은 데이터 소스, 처리 파이프라인, 저장소와의 연결을 필요로 한다. 이러한 도구는 확장 가능하고 유연하며 높은 성능을 가져야 한다. 종종 추출, 변환, 로드 (ETL) 파이프라인과 Data Lake가 이러한 요구를 충족하기 위해 포함된다.
데이터 수집 도구는 다양한 소스에서 데이터를 집계하고 저장할 수 있게 하며, 초기 처리 없이도 가능하다. 이를 통해 팀은 실시간 데이터를 활용하고 데이터셋 생성에 효과적으로 협력할 수 있다.
ML pipelines automation (ML 파이프라인 자동화)
스크립트와 이벤트 트리거에 따라 머신러닝 워크플로우를 자동화할 수 있는 다양한 도구가 있다. 파이프라인은 데이터를 처리하고, 모델을 학습시키고, 모니터링 작업을 수행하며, 결과를 배포하는데 사용된다. 이러한 도구는 팀이 더 높은 수준의 작업에 집중할 수 있도록 하며, 효율성을 높이고 프로세스의 표준화를 보장한다.
인프라를 개발할때, 개별적으로 도구를 통합하고 조정하여 도구 체인을 처음부터 만들 수 있다. 또한 ML Flow 파이프라인이나 Apache Airflow와 같은 사전 구축된 또는 독립형 파이프라인을 채택할 수도 있다. 머신러닝 자동화에 대한 가이드에서 더 많은 정보를 얻을 수 있다.
https://www.run.ai/guides/machine-learning-engineering/machine-learning-automation
Visualization and monitoring (시각화 및 모니터링)
머신러닝 시각화 및 모니터링은 워크플로가 얼마나 원활하게 진행되는지, 모델 학습이 얼마나 정확한지, 모델 결과에서 통찰력을 얻기 위해 사용된다. 시각화는 머신러닝 워크플로우의 어느 지점에서든 통합되어 팀이 시스템 메트릭을 빠르게 해석할 수 있도록 한다. 모니터링은 전체적으로 통합되어야 한다.
https://www.run.ai/guides/machine-learning-engineering/machine-learning-workflow
머신러닝 인프라에 시각화 및 모니터링을 통합할때, 도구가 데이터를 일관되게 수집하는지 확인해야 한다. 솔루션이 모든 관련 데이터 소스와 통합되지 않으면 의미있는 통찰력을 얻을 수 없다. 또한 이러한 도구가 요구하는 리소스를 염두에 두어야 한다. 훈련이나 배포 도구와 리소스 충돌을 일으키지 않으면서 효율적으로 작동하는 솔루션을 선택해야 한다.
Model testing (모델 테스트)
머신러닝 모델을 테스트하려면 학습 및 배포 단계 간의 도구 통합이 필요하다. 이 도구는 수동으로 레이블이 지정된 데이터셋에 대해 모델을 실행하여 결과가 예상대로인지 확인하는데 사용된다. 철저한 테스트에는 다음이 필요하다:
- 정성적 및 정량적 데이터의 수집 및 분석
- 동일한 환경에서의 여러번의 학습 실행
- 오류가 발생한 위치를 식별할 수 있는 능력
머신러닝 테스트를 설정하려면 인프라에 모니터링, 데이터 분석 및 시각화 도구를 추가해야 한다. 또한 환경의 자동 생성 및 관리를 설정해야 한다. 설정 중에 구성 요소가 다른 구성 요소에 오류를 일으키거나 테스트 결과에 부정적인 영향을 미치지 않도록 통합 테스트를 수행해야 한다.
Deployment (배포)
배포는 아키텍처에서 고려해야 할 마지막 단계이다. 이 단계에서는 모델을 패키징하여 개발 팀이 서비스나 애플리케이션에 통합할 수 있도록 한다.
머신러닝 서비스(MLaaS)를 제공하는 경우, 모델을 프로덕션 환경에 배포하는 것을 의미할 수도 있다. 이 배포는 사용자로부터 데이터를 가져오고 결과를 반환할 수 있게 한다. 일반적으로 MLaaS는 모델을 컨테이너화하는 것을 포함한다. 모델이 컨테이너에 호스팅되면, 최종 환경에 관계없이 확장 간으하고 분산된 서비스로 제공할 수 있다.
Inference (추론)
배포 단계에서는 심층 학습 프레임워크를 평가하고 새로운 데이터의 지속적인 추론에 가장 적합한 프레임워크를 선택하는 것이 중요하다. 프로덕션에서 성능 요구 사항을 충족하면서 하드웨어 리소스를 소모하지 않는 프레임워크를 선택하고 최적화해야 한다. 예를 들어, 자율주행차에서 실행되는 컴퓨터 비전 모델은 차량 내 하드웨어를 고려하면서 밀리초 단위의 속도로 추론을 수행해야 한다.
최근 몇년간 보편적인 모델 파일 형식의 개발로 인해 프로덕션 요구에 따라 프레임워크 간에 모델을 이동하는 과정이 더 쉬워졌다. 이러한 형식은 Open Neural Network eXchange (ONNX)와 같은 라이브러리 간에 모델을더 쉽게 포팅할 수 있게 한다.
ML을 지원하는 인프라에 대한 주요 고려 사항
머신러닝 인프라를 만들때 염두에 두어야 할 몇가지 고려 사항이 있다.
Location (위치)
머신러닝 워크플로우가 어디에서 수행되는지 주의 깊게 살펴봐야 한다. 온프레미스 운영과 클라우드 운영의 요구사항은 크게 다를 수 있다. 또한 선택한 위치는 모델의 목적을 지원해야 한다.
학습 단계에서는 주로 비용 고려 사항과 운영 편의성에 중점을 두어야 한다. 학습 데이터를 저장할 위치를 결정할 때 데이터와 관련된 보안 및 규정도 중요한 고려 사항이다. 온프레미스에서 학습을 수행하는 것이 더 저렴하고/또는 쉬운가요, 아니면 클라우드에서 수행하는 것이 더 나을까요? 답은 모델의 규모, 수집되는 데이터의 크기와 성격, 인프라 자동화 능력에 따라 달라질 수 있다.
추론 단계에서는 성능과 지연 시간 요구 사항과 대상 위치의 사용 가능한 하드웨어 간의 균형을 맞추는데 중점을 두어야 한다. 빠른 응답이나 매우 낮은 지연 시간이 필요한 모델은 로컬 또는 엣지 인프라를 우선시하고 저전력 로컬 하드웨어에서 실행되도록 최적화해야 한다. 약간의 지연을 허용할 수 잇는 모델은 클라우드 인프라를 활용할 수 있으며, 필요에 따라 "무거운" 추론 워크플로우를 실행할 수 있도록 확장할 수 있다.
Compute Requirements (컴퓨팅 요구사항)
머신러닝에 사용되는 하드웨어는 성능과 비용에 큰 영향을 미칠 수 있다. 일반적으로 GPU는 심층 학습 모델을 실행한느데 사용되고, CPU는 전통적인 머신러닝 모델을 실행하는데 사용된다. 경우에 따라 전통적인 ML이 대량의 데이터를 사용하는 경우, NVida의 RAPIDS와 같은 프레임워크를 사용하여 GPU를 가속할 수도 있다.
두 경우 모두 사용되는 알고리즘에 대한 GPU 또는 CPU의 효율성은 운영 및 클라우드 비용, 프로세스 완료를 기다리는 시간, 그리고 결과적으로 시장 출시 시간에 영향을 미친다.
머신러닝 인프라를 구축할 때 리소스를 과소 또는 과대 사용하지 않도록 균형을 찾아야 한다. 과소 사용은 초기 비용을 절감할 수 있지만 추가 시간이 필요하고 효율성을 감소시킨다. 과대 사용은 하드웨어에 의해 제한되지 않도록 보장하지만 사용하지 않는 리소스에 대한 비용을 지불하게 된다.
Network infrastructure (네트워크 인프라)
적절한 네트워크 인프라는 효율적인 머신러닝 운영을 보장하는데 필수적이다. 다양한 도구가 원활하고 신뢰할 수 있게 통신할 수 있어야 한다. 또한 외부 소스에서 데이터를 수집하고 전달할때 병목 현상이 없어야 한다.
네트워킹 리소스가 요구사항을 충족하는지 확인하려면 작업 중인 전체 환경을 고려해야 한다. 네트워킹 기능이 처리 및 저장 능력과 얼마나 잘 맞는지 신중하게 평가해야 한다. 네트워크 속도가 아무리 빠르더라도 처리나 데이터 검색 속도가 느리면 도움이 되지 않는다.
Storage infrastructure (스토리지 인프라)
자동화된 ML 파이프라인은 모델의 데이터 요구 사항에 따라 적절한 양의 저장소에 접근할 수 있어야 한다. 데이터가 많은 모델은 Petabyte의 저장소가 필요할 수 있다. 이 저장소를 어디에 위치시킬지 미리 고려해야 한다. 온프레미스 또는 클라우드에 위치시킬 수 있다.
저장소를 학습과 함께 배치하는 것이 항상 선호된다. 예를 들어, Google Cloud에서 TPU를 사용하여 학습을 실행하고, 무한히 확장 가능한 Google Cloud Storage에 데이터를 저장할 수 잇다. 또는 로컬 NVdia GPU에서 학습을 실행하고, 대용량, 고성능, 빠른 분산 파일 시스템을 사용하여 데이터를 로컬에 저장할 수 있다. 하이브리드 인프라를 생성하는 경우, 학습의 지연과 복잡성을 방지하기 위해 데이터 수집을 신중하게 계획해야 한다.
Data center extension (데이터 센터 확장)
기존 비즈니스 운영에 머신러닝을 통합하는 경우, 현재 인프라를 확장하는 방향으로 작업해야 한다. 처음부터 시작하는 것이 더 쉬워 보일 수 있지만, 이는 종종 비용 효율적이지 않으며 생산성에 부정적인 영향을 미칠 수 있다.
더 나은 옵션은 기존 인프라 리소스와 도구를 평가하는 것이다. 머신러닝 요구 사항에 적합한 자산은 통합해야 한다. 예외는 해당 자산을 곧 폐기할 계획인 경우이다. 그런 경우에는 새로운 리소스와 도구를 채택하는 것이 더 낫다.
Security (보안)
모델을 학습하고 적용하는 데는 종종 가치가 있거나 민감한 대량의 데이터가 필요하다. 예를 들어, 금융 데이터나 의료 이미지가 있다. 빅데이터는 데이터를 악의적인 목적으로 사용하려는 위협 행위자에게 큰 유혹이 된다. 예를 들어, 데이터를 몸값으로 요구하거나 암시장에서 데이터를 훔치는 등의 목적이다.
또한, 모델의 목적에 따라 데이터의 불법적인 조작은 심각한 피해를 초래할 수 있다. 예를 들어, 자율주행차의 객체 탐지에 사용되는 모델이 의도적으로 충돌을 일으키도록 조작되는 경우이다.
머신러닝 인프라를 만들때, 데이터를 적절히 보호하기 위해 모니터링, 암호화 및 접근 제어를 구축해야 한다. 또한 데이터에 적용되는 준수 표준을 확인해야 한다. 결과에 따라 데이터 저장의 물리적 위치를 제한하거나 사용 전에 민감한 정보를 제거하도록 데이터를 처리해야 할 수도 있다.
주요 인공지능 인프라 주제에 대한 추가 가이드 보기
딥러닝 GPU의 세계를 탐색할 때 유용할 수 있는 여러 다른 인공지능 인프라 주제에 대한 심층 가이드를 작성했다.
딥러닝을 위한 GPU
딥러닝 모델에 가장 적합한 GPU를 결정하기 위해 GPU를 평가하는 방법을 배워야 한다. 소비자 및 데이터 센터 딥러닝 GPU의 유형을 알아보도록 한다. GPU 용 PyTorch를 시작한다. PyTorch가 NVIDIA의 CUDA 표준을 지원하는 방법을 배우고, CUDA와 함께 PyTorch를 사용하는 빠른 기술 지침을 얻도록 한다. 마지막으로 NVIDA 딥러닝 SDK, NVIDIA GPU를 사용할때 채택해야 할 모범 사례에 대해 알아보도록 한다.
딥러닝을 위한 GPU 가이드의 주요 기사 보기:
- 딥러닝을 위한 최고의 CPU: 대규모 AI를 위한 중요한 고려 사항
- PyTorch GPU: PyTorch에서 CUDA 사용하기
- NVIDIA 딥러닝 GPU: 프로젝트에 적합한 GPU 선택하기
Kubernetes와 AI
이 가이드는 AI 워크로드를 위한 Kubernetes 아키텍처와 많은 회사에서 K8S가 사용되게 된 방법을 설명한다. AI 워크로드를 조정하기 위해 Kubernetes를 구현할때 특정 고려 사항이 있다. 마지막으로, 딥러닝 워크로드의 스케줄링 및 조정에 관한 Kubernetes의 단점을 다루고 이러한 단점을 해결하는 방법을 설명한다.
AI를 위한 Kubernetes 가이드의 주요 기사 보기:
'엔지니어링(TA, AA, SA) > AI, ML' 카테고리의 다른 글
[ML] MLOps가 필요한 이유: 12가지 필수 모범 사례 (0) | 2024.11.17 |
---|---|
[ML] Machine Learning System Design Interview(1) - 소개 및 개요 (0) | 2024.10.13 |