AI Homelab을 시작하며: minipc, Raspberry Pi와 클라우드 GPU로 클러스터 만들기

집에서 만드는 AI 플랫폼 ① — 프로젝트를 시작한 이유와 목표

AI Infra Engineer, AI Platform Engineer 직무와 관련된 경험을 쌓기 위해 개인 프로젝트를 시작하기로 했다. 직접 인프라를 구성하고, 그 위에서 AI 워크로드를 실행하고 운영하는 경험을 해보고 싶었다.

처음에는 집에 GPU 리소스를 가진 노드를 포함한 Kubernetes 클러스터를 구축해보려고 했다. 그런데 막상 생각해보니 GPU가 너무 비싸다는 점과, 물리 서버들을 집에서 어떻게 관리할 것인가가 문제였다.

그래서 이미 가지고 있는 minipc와 라즈베리파이로 클러스터를 구성하고, GPU 리소스는 필요한 시점에 클라우드에서 연결하는 방식을 생각했다.

집에 있는 장비와 클라우드를 함께 사용하기

기본적인 구성 방향은 아래와 같다. 아직 모든 구성이 완성된 것은 아니고, 앞으로 만들어보려는 구조다.

집의 Kubernetes 클러스터
├─ minipc
└─ Raspberry Pi
          │
          │ GPU 자원이 필요할 때 클라우드 노드 추가
          ▼
클라우드 GPU VM
└─ 기존 클러스터에 worker로 조인하여 워크로드 실행

집에 있는 장비들은 클러스터의 기본 환경으로 사용하고, 클라우드에서 생성한 GPU VM을 worker로 조인시켜 GPU가 필요한 워크로드를 스케줄링하려고 한다.

클라우드 GPU VM을 따로 실행해 작업에 사용하는 방법도 있다. 하지만 이번에는 Kubernetes 클러스터의 자원이 부족할 때 필요한 노드를 자동으로 추가하고, 사용이 끝나면 불필요한 노드를 회수하는 구조를 만들어보고 싶었다. GPU 자원을 항상 확보해두기보다는 워크로드의 수요에 따라 인프라를 확장하고 축소하면서, 비용과 확장성을 함께 고려한 인프라를 구축하고 운영하는 경험을 쌓는 것이 목표다.

물론 이렇게 구성한다고 항상 비용이 적게 드는 것은 아닐 것이다. GPU 사용 시간이 길어지면 클라우드 비용도 커지고, VM 외에 디스크나 네트워크 비용도 발생할 수 있다. 집과 클라우드를 연결하면서 관리해야 하는 부분도 늘어난다.

가장 저렴하거나 좋은 구조라고 판단하고 구축한다기보다는, 직접 구성해보면서 비용과 운영 측면에서 어떤 장단점이 있는지 확인해보려고 한다. 실제로 자원이 필요한 시점부터 작업을 실행하기까지 얼마나 걸리는지, 연결이 끊겼을 때 어떤 영향을 받는지, 사용 후에도 비용이 남는 부분은 없는지 살펴볼 생각이다.

이 프로젝트를 통해 쌓고 싶은 경험

구현 과정에서는 기존 오픈소스들을 우선적으로 활용하려고 한다. 직접 모든 것을 만드는 것보다, 각 도구가 해결하려는 문제와 제공하는 기능을 이해하고 목적에 맞게 연결하는 경험이 먼저라고 생각한다.

다만 기존 도구만으로 프로젝트의 요구사항을 충족하기 어려운 부분은 직접 설계하고 개발하려고 한다. 또한 도구를 사용하는 과정에서 버그나 개선이 필요한 부분을 발견한다면 Contribute를 하는 경험도 해보려고 한다 (가능할진 모르겠지만…)

정리해서 이번 프로젝트에서는 인프라 구축 및 운영, 컴포넌트 구현 경험, 그리고 오픈소스에 Contribute하는 경험을 함께 쌓는 것을 목표로 한다.

앞으로 기록할 내용

프로젝트를 진행하면서 어떤 구조를 선택했고 왜 그렇게 결정했는지, 어떤 문제를 만났고 어떻게 해결했는지를 블로그에 하나씩 남기려고 한다. 처음 생각한 방향이 바뀐다면 그 이유도 함께 기록할 예정이다.

프로젝트의 전체 소개는 ai-homelab에, 인프라 설정과 운영 절차는 homelab-infra에 정리하고 있다.

Share: X (Twitter) Facebook LinkedIn