[라즈베리 파이를 활용한 홈서버 구축] 01. 킥오프
개요
라즈베리 파이(Raspberry Pi)를 활용한 홈서버 구축 프로젝트를 시작하려 한다. 이번 포스트에서는 프로젝트의 목적과 목표를 명확히 하고, 그에 맞춰 필요한 제품 스펙을 결정하는 과정을 기록한다.
계기
며칠 전, 회사 워크숍에서 버킷리스트를 작성하는 시간을 가졌다. 다들 세계여행이나 내 집 마련 같은 것을 적었는데, 나는 홈서버 구축하기를 쓰고 있었다. 그러고 보니 인생 버킷리스트까지도 아니고 그냥 당장 실행하면 되지 않을까? 라는 생각이 들었다.
작은 자취방에서 가지고 놀 수 있는 작은 컴퓨터를 갖고 싶다는 생각에서 시작했다. 운영체제는 리눅스로 해서 CLI 개발 환경의 고수가 되고 싶었다. VSCode 대신에 Vim 으로 코드를 작성하는 지독한 컨셉의 개발자가 되고 싶었다. (이건 농담이다)
지금까지 지나온 개발 환경을 순서대로 짚어보았다.
- 구글 코랩 : 밑바닥부터 시작하는 데 이만한 도구가 있을까. 버튼 클릭 하나로 구글 데이터센터의 고성능 GPU 를 사용할 수 있었다.
- 클라우드 서버 : 프로젝트가 본격화되면서 코랩의 사용량 제한이 걸림돌으로 작용했다. 이에 AWS EC2 스팟 인스턴스를 하나 구입해서 사용하기 시작했다.
- 온프레미스 서버 : 국가 사업에 선정되면서 그래픽 카드를 마련할 수 있게 되었다. 사무실 한 켠에서 열과 소음을 뿜어내던 그 녀석을 SSH 로 접근해서 마음대로 다뤄볼 수 있었다.
- (현재) 로컬 환경 : 이직하고 보니 컴퓨터마다 좋은 그래픽 카드가 하나씩 꽂혀 있었다. (스타트업에 있다 와서 그런지 충격적이었다) 물론 서버 인스턴스만큼은 넉넉하지 않지만, 적당한 크기의 모델 학습이나 추론은 로컬 환경에서도 거뜬했다.
특히 LLM 모델이 거대화되고 API 로 접근하는 방식이 널리 퍼지면서 오히려 로컬 환경에서 개발하기 편리해졌다고 느낀다. 그러나 반대 급부로 그만한 사이즈의 모델을 튜닝하거나 다루기 위해서는 서버 환경에서의 개발 역량 또한 놓칠 수 없다고 생각한다.
아쉽지만 현재 회사에서는 프로젝트 상 로컬 환경을 활용하는 것이 최선이므로, 개인적으로 홈서버를 구축하고 스스로 연습하려는 것이다. 먼 이야기지만 나중에 회사에서 서버 인스턴스를 할당 받았을 때 실수나 사고 없이 안정적으로 해내는 모습을 보여드리고 싶기도 하고.
무엇보다도 전자 회로 기판을 조립해서 만든 작은 컴퓨터는 나만의 작은 공간을 창조한다는 감동을 준달까. 기계와 로우레벨의 교감을 주고 받는 것이다…
목표
홈서버를 구축하고 난 뒤에 구체적으로 어떤 것들을 해볼 수 있을지 목표를 정리해보았다. 목표는 제품의 스펙을 결정하는 기준이 될 것이다. (나는 보통 목표를 질문의 형식으로 작성하는데, 그 질문들에 답변할 수 있을 때 목표를 이루었다고 여기기 때문이다)
- 리눅스 운영체제는 어떻게 동작하는 것일까?
- 파이썬과 운영체제는 어떻게 상호작용하는 것일까?
- 데이터를 최대한 효율적으로 처리하는 방법은 무엇일까?
- 머신러닝 모델을 경량화하는 방법은 무엇일까?
- 머신러닝 모델의 추론과 운영을 어떻게 컨테이너화할까?
- 왜 C/C++ 개발 역량을 지닌 머신러닝 엔지니어가 우대 받는 걸까?
로우레벨 환경에서 운영체제와 파이썬 언어의 동작을 이해하는 것과 매우 한정된 성능 안에서 데이터 처리를 최적화하는 것으로 요약할 수 있겠다.
절대적 우선순위
제품 스펙을 살펴보기 앞서 현실적으로 고려해야 할 두 가지를 먼저 언급하려 한다. 바로 가격과 사이즈다.
실습, 장난감 용도이기 때문에 큰 돈을 들일 생각이 없다. 가성비 전략으로 간다. 중고 물품도 적극 고려할 예정.
또한 활동 공간이 3평 남짓한 자취방에서 감당할 수 있어야 하므로 사이즈는 최대한 미니미니하게 해야 한다.
구성 요소
오늘날 컴퓨터는 폰 노이만 구조를 뼈대로 하여 확장된 형태이다. 이번 프로젝트에서 어떤 구성품을 마련할지 고민하면서 이 폰 노이만 컴퓨터를 참고할 수 있었다.
폰 노이만 구조의 구성 요소는 CPU, 메모리, 프로그램이다. 이때 프로그램은 메모리 안에 저장되고 실행되는 명령어의 집합이다.
그러니까 하드웨어 관점에서 필수 요소는 처리 장치(CPU), 기억 장치(메모리), 그리고 이들을 운영하고 제어하기 위한 입출력 장치다.
CPU 와 메모리
싱글보드 컴퓨터는 메인보드(Motherboard)에 처리 장치인 CPU와 주기억 장치인 RAM이 탑재되어 있는 것을 말한다. 라즈베리 파이가 대표적인 싱글보드 컴퓨터 제품.
사실 엔비디아에도 싱글보드 컴퓨터 라인업이 있으며 GPU 활용이 필요하다면 이쪽이 더 나을 수도 있다.
야속하게도 불과 5일 전 엔비디아에서 AI용 싱글보드 컴퓨터 개발자 키트를 매우 합리적인 가격에 출시한다는 소식을 내놨다. 젯슨 오린 나노(Jetson ORIN™ Nano)
라는 제품이고 249달러(한화 약 36만원)다. LLM 등 딥러닝 모델 처리에 특화된 제품이라고 한다.
너무나도 갖고 싶다…
하지만 나의 절대적인 기준은 가격이기 때문에 욕심을 내려놓으려 한다. 젯슨 시리즈는 나중에 더 큰 집으로 이사 가면 모셔보겠다 🥲
라즈베리 파이도 여러 제품이 있다. 몇 세대를 살지, 램 사이즈는 어느 정도로 할지 결정해야 한다.
몇 세대를 살 것인가? ➡️ 4 세대
주로 4세대와 5세대를 많이 비교하는 것 같다.
2019년 출시된 4세대는 성능과 가격 측면에서 경쟁력이 있어 독보적으로 인기 있는 제품이라고 한다. 5세대는 비교적 최근인 2023년에 출시되었는데, 이전 세대에 비해 가격도 오른 데다 발열이나 어댑터 등 이슈가 있어 차라리 미니 PC를 사는 편이 낫다고 보는 견해가 많다. 나도 5세대 제품 가격 보고 ‘그냥 젯슨을 살까 …‘라고 고민했는데, 그럴 바에 4세대를 선택하겠다고 판단했다.
램 사이즈는? ➡️ 4GB
1, 2, 4, 8GB 옵션이 있다. 모델 올리는 것을 생각하면 4GB 이상은 되어야 할 텐데, 4GB는 7만원대이고 8GB는 11만원대로 가격 차이가 난다. 성능보다 가격이 중요한 상황이므로 전자로 결정했다.
상세 스펙
구체적인 스펙은 아래와 같다. 공식 사이트를 참고했다.
카테고리 | 내용 |
---|---|
프로세서 | Broadcom BCM2711, 쿼드코어 Cortex-A72 (ARM v8) 64-bit SoC @ 1.8GHz |
메모리(RAM) | 8GB |
무선 연결 | 2.4 GHz/5.0GHz 와이파이, Bluetooth 5.0, BLE |
유선 연결(이더넷) | 기가비트 이더넷 |
USB 포트 | USB 3.0 포트 2개, USB 2.0 포트 2개 |
GPIO | 라즈베리 파이 표준 40핀 GPIO 헤더 |
디스플레이 출력 | micro-HDMI 포트 2개 (최대 4k60 지원) |
디스플레이 인터페이스 | 2-레인 MIPI DSI 디스플레이 포트 |
그래픽 | OpenGL ES 3.1, Vulkan 1.0 |
저장 장치 | Micro SD 카드 슬롯 |
전원 공급 | USB-C 포트/GPIO 헤더를 통한 전원 공급, 5V DC, 최소 3A |
보조 기억 장치
라즈베리 파이4는 SD카드를 지원한다. 운영체제 설치까지 고려해서 용량이 32GB 는 되어야 할 것 같다.
우선 가장 무난하게 Sandisk Ultra 32GB (6천원대) 사용할 예정이다. 호환 가능한 SD 카드 리스트도 확인해보자.
라즈베리 파이 환경에서 SD카드 제품별로 성능을 비교한 훌륭한 블로그글이 있으니 참고하시라.
입출력 장치
이번에 선물 받은 하기비스 미니 모니터를 연결할 예정이다. 다만 전원 등 호환이 될지 모르겠다. 알리에서 5만원대에 구입했는데, 현재 7만원대로 올랐다.
하기비스 모니터 설명으로 미루어봐서 micro HDMI to USB-C 어댑터가 필요할 것으로 보인다.
One Cable Connection Mode: USB3.1 Gen2 cable connects HOST port and USB-C port of the laptop, allowing for simultaneous IPS mini screen display and interface expansion. *Note: The USB-C interface of the laptop must be Thunderbolt 3/4, USB4, or a USB-C interface that supports the DisplayPort (DP) protocol in order to use this mode
키보드는 집에 있는 키크론 키보드를 활용할 것이다.
사실 입출력 장치는 큰 걱정이 없다. 어차피 맥북으로 SSH 원격 접속할 예정이기 때문이다.
네트워크
자취방의 와이파이를 연결할 예정이다. 다만 자취방 와이파이가 매우 불안정하여 제멋대로 끊길 때가 많은데 - 체감상 4~5시간에 한 번(…) - 이게 얼마나 큰 문제로 작용할지는 … 일단 연결해봐야 알겠다.
전원 공급 장치
라즈베리 파이4 부터는 전원을 USB-C 타입으로 공급 받는다. 모니터를 연결했을 때 전류가 얼마나 될지 모르겠지만, 가장 안전하게 라즈베리 파이4에 맞게 나온 5V 4A 전용 어댑터면 좋을 것 같다. 가격은 7천원.
기타 장비
그 외 케이스, 방열판, 쿨러 등 보조 부품들이 있다. 이것은 필수 부품들을 갖추고 나서 하나씩 모을 생각이다. 이왕이면 이쁜 것들로 고심해서 고르고 싶기도 하고.
결산
필수 부품 | 가격 |
---|---|
라즈베리 파이 | 78,000원 ~ |
SD 카드 | 6,200원 ~ |
micro HDMI to USB-C 어댑터 | 제품을 찾을 수 없음;; |
전원 어댑터 | 7,000원 |
보조 장비 | 아직 모름 |
총합 | 83,200원 이상 |
대충 훑어봤지만 micro HDMI to USB-C 제품이 보이지 않는 게 약간 난감하다. micro HDMI 를 HDMI 로 변환한 후에 C타입으로 연결해야 할 것 같은 불길한 느낌. 그래도 필수 부품만 해서 10만원 이하로 맞출 수 있다면 충분히 만족스러울 것 같다.
나가며
오늘은 홈서버 프로젝트를 위해 목표와 장비의 스펙을 정리해보았다. 필수 부품을 하나씩 마련한 후에 운영체제 설치 등 세팅 과정을 블로그에 연재할 계획이다. 실습까지 갈 길이 멀지만 즐겁게, 꾸준히 해보자!