추석 연휴에 이어 이번 연휴에도 연구환경 정리를 이어가려 합니다. Windows 연구 워크스테이션을 준비하며 남긴 경험을 바탕으로, 이제 MacBook에서 사용할 연구·개발 환경의 구조를 정리할 차례입니다.
「기업 보안 환경에서의 윈도우 연구 워크스테이션 아키텍처 설계」에서는 개인 Apple 환경과 기업 환경에서 사용할 Windows의 역할을 함께 생각했습니다. 이후 Windows Native와 WSL2의 개발·GPU 환경을 구성하고, 네트워크를 끊은 상태에서 연구 도구를 사용하거나 보존 자산으로 일부 환경을 다시 만드는 시험까지 진행했습니다. 실제 기업 보안환경에서의 적응·검증을 비롯한 후속 작업은 여전히 남아 있습니다.
MacBook에서는 인터넷과 클라우드를 사용할 수 있다는 전제를 활용하려 합니다. 홈페이지를 관리하고 논문과 자료를 읽으며, Python과 Apple Silicon 기반 AI 실험을 수행할 수 있는 환경을 만들 계획입니다. 이 글에는 구축에 앞서 정한 역할, 저장 방식과 작업 순서를 남깁니다. 구체적인 설치 상태와 실행 결과는 이후 노트에서 기록하겠습니다.
1. 두 연구환경의 역할
대상 장비는 14인치 MacBook Pro, M5 Pro, 통합 메모리 24GB입니다. 실제 구축을 시작할 때 macOS 버전과 기존 개발도구, 저장공간을 확인해 기준 상태를 남길 생각입니다.
| 환경 | 우선 활용할 역할 |
|---|---|
| Windows 연구 워크스테이션 | CUDA 기반 연구, Windows·WSL 개발, 기업 보안 통제와 제한망에 대한 적응 |
| MacBook 연구 워크스테이션 | 휴대 개발, 홈페이지 관리, 논문·자료 작업, Apple Silicon 기반 AI 실험 |
초기 Windows 설계에서 생각했던 상호보완적인 역할은 유지합니다. 같은 프로젝트를 양쪽에서 다루더라도 연구 목적에 필요한 코드와 설정을 공유하고, 실행환경은 각 장비에 맞게 구성하려 합니다.
어느 장비가 더 빠른지를 먼저 정하기보다는 실제로 수행할 작업을 기준으로 판단할 생각입니다. NVIDIA CUDA가 필요한 작업은 Windows에서, Apple Silicon의 실행 방식과 통합 메모리를 살펴보는 실험은 Mac에서 시작합니다. 개발과 자료 작업을 어느 쪽에서 하는 것이 편한지도 사용하며 기록하겠습니다.
2. Windows에서 배운 확인 방법
Windows 구축 과정에서는 설치가 끝난 뒤에도 확인할 일이 많았습니다. 명령이 어느 경로에서 실행되는지, 프로젝트가 의도한 Python을 사용하는지, Jupyter에서 올바른 커널을 선택했는지에 따라 작업 결과가 달라졌습니다. GPU가 발견되는 것과 실제 연산이 성공하는 것도 각각 확인해야 했습니다.
특히 「오프라인 연구환경 검증」에서는 git bundle verify를 통과한 llama.cpp 번들이 독립된 저장소로 복구되지 않았습니다. 이후 번들을 교체하고 별도 경로에서 복제, 커밋 일치와 무결성을 확인했습니다. 파일을 보존하거나 목록을 만들었다는 사실만으로 다시 사용할 수 있다고 판단하기 어려웠던 경험입니다.
Mac에서도 버전과 실행 경로, 실제 프로젝트 작업을 함께 확인하려 합니다. Python은 스크립트와 노트북 안에서, AI 환경은 장치 확인과 실제 계산에서, 홈페이지는 로컬 빌드와 공개 배포에서 각각 확인할 생각입니다. 재부팅 뒤 반복한 작업과 새 프로젝트 환경에서 다시 실행한 작업도 구분해 기록하겠습니다.
명령과 출력은 작업할 때부터 남기려 합니다. Windows 명령을 별도 노트로 정리하면서 일부 실행 원문과 옵션을 다시 찾아야 했습니다. 이번에는 중요한 명령, 오류, 수정 이유와 결과를 함께 보관해 이후 구축 기록의 근거로 사용하겠습니다.
3. 현재 환경을 기준으로 시작하기
MacBook은 기존 상태를 먼저 살펴보고 필요한 부분을 추가하거나 변경할 계획입니다. macOS 업데이트와 FileVault 상태, 로그인·백그라운드 항목, 클라우드 사용 범위와 기존 개발도구를 확인하겠습니다. 이미 사용 중인 앱과 설정은 그 역할을 파악한 뒤 유지 여부를 판단합니다.
초기화나 일괄 정리를 출발점으로 삼지는 않습니다. 실제 작업을 방해하는 문제나 불필요한 구성이 확인되면 그 부분을 조정하고, 변경 이유를 남기려 합니다. 내부 SSD도 기본 구성을 유지하고 연구용 파티션은 추가하지 않을 생각입니다.
저장공간의 역할은 폴더와 관리 방식으로 구분합니다. 로컬 개발 경로에는 코드와 실행환경을, 클라우드에는 자료와 남길 결과를 둡니다. 구체적인 경로는 현재 파일 구조를 확인한 뒤 정하겠습니다. Finder와 전원·배터리 설정도 휴대와 실제 작업 방식에 필요한 항목부터 살펴볼 계획입니다.
4. 홈페이지 관리부터 확보하기
첫 번째 목표는 MacBook에서 SecurityOn Research Journey의 전체 관리 흐름을 수행하는 것입니다. 현재 홈페이지 관리에 사용하는 Windows PC에 의존하지 않고 글을 수정하고 확인해 게시할 수 있어야 합니다.
이를 위해 Git과 GitHub 인증, Visual Studio Code, Node.js와 pnpm, 프로젝트 의존성을 먼저 구성하겠습니다. Xcode Command Line Tools와 Homebrew 등 필요한 공통 도구도 이 단계에서 마련하고 이후 Python 연구환경에서 재사용할 생각입니다.
Node.js와 pnpm은 저장소의 요구사항과 CI 설정을 확인해 선택합니다. Astro와 나머지 의존성은 프로젝트의 lockfile을 기준으로 Mac에서 설치합니다. Git 작업 디렉터리는 Google Drive와 iCloud Drive의 동기화 영역 밖에 두겠습니다.
확인할 흐름은 다음과 같습니다.
홈페이지 수정
→ 로컬 화면 확인
→ lint · format:check · build
→ 빌드 결과 미리보기
→ commit · push
→ 실제 배포 확인
한·영 노트와 언어 전환, 검색, 폰트와 동적 OG 이미지도 함께 확인하려 합니다. 로컬 빌드가 끝난 상태와 해당 변경이 공개 사이트에 반영된 상태는 별도로 기록하겠습니다. 실제 배포 경로와 필요한 인증·설정도 확인해, Mac에서 한 번의 게시 흐름을 끝까지 수행하는 것을 이 단계의 완료 기준으로 삼습니다.
5. 자료는 보존하고 도구는 다시 구성하기
Windows에서는 향후 네트워크 접근이 제한될 가능성을 고려해 설치파일, 패키지와 모델을 미리 확보했습니다. MacBook에서는 필요할 때 인터넷에서 도구와 공개 자산을 다시 받는 것을 기본 경로로 삼으려 합니다.
보존의 중심은 직접 만든 자료와 결과입니다. 논문·학습자료, 원고와 실험 결과는 Google Drive에, 홈페이지와 연구 코드는 GitHub에 관리할 계획입니다. iCloud는 필요한 Apple 생태계 데이터의 동기화에 사용하겠습니다.
| 대상 | 관리 방향 |
|---|---|
| 홈페이지·연구 코드 | 로컬에서 작업하고 GitHub에 커밋·푸시 |
| 논문·학습자료·원고 | Google Drive에 보관하고 업로드 완료 확인 |
| 실험 결과·직접 만든 데이터 | 실험별 설정·로그와 함께 Google Drive에 보존 |
| 앱·개발도구·공개 모델 | 필요할 때 다시 확보하고 구성·출처 기록 |
| 개발환경 | Brewfile, 프로젝트 lockfile과 필요한 설정 기록 |
| Apple 생태계 데이터 | 필요한 iCloud 항목 사용 |
실험 중에는 로컬 경로에 결과를 쓸 수 있지만, 남길 결과는 작업을 마무리할 때 Google Drive에 보존하고 업로드를 확인하겠습니다. 코드도 로컬 변경에 머물지 않도록 의미 있는 작업 단위로 커밋·푸시할 생각입니다. 중요한 결과는 날짜와 실험별로 나눠 이전 기록을 계속 덮어쓰지 않겠습니다.
공개 모델을 다시 받는 것과 직접 만든 결과를 보존하는 것은 다르게 다룹니다. 직접 학습한 가중치나 가공한 데이터는 결과물로 남기고, 공개 모델은 이름과 revision, 형식과 설정을 기록하겠습니다. 같은 실험을 다시 할 때 어떤 자산을 사용했는지 알 수 있어야 하기 때문입니다.
Time Machine과 Mac 전체 복원 시험은 이번 구축의 필수 범위에 넣지 않기로 했습니다. 도구 목록과 프로젝트 파일을 이용해 연구 작업을 다시 시작할 수 있는 정도의 재구성 방법을 남기려 합니다. 마지막에는 별도 clone과 새 가상환경에서 대표 프로젝트를 다시 실행해, 빠진 설정이나 경로 의존성이 있는지 확인하겠습니다.
6. Python에서 Apple Silicon AI로
홈페이지 관리 환경을 확보한 뒤 uv와 프로젝트별 Python, Jupyter를 구성할 계획입니다. 터미널과 편집기에서 선택한 인터프리터, 노트북의 실제 커널이 의도한 환경을 사용하는지 확인하겠습니다. Python 버전은 이후 사용할 프레임워크의 지원 범위를 살펴본 뒤 정합니다.
AI 연산은 PyTorch의 MPS 경로와 MLX를 각각 작은 프로젝트에서 확인하는 방향으로 생각하고 있습니다. 장치 확인에 이어 실제 계산과 결과를 살펴보고, 정밀도와 입력 크기, 사용한 버전과 제한을 기록하겠습니다. 한 경로에서 성공한 결과를 다른 환경의 검증으로 확대하지는 않습니다.
로컬 LLM은 Ollama, llama.cpp + Metal, MLX-LM, Hugging Face Transformers를 후보로 두고 있습니다. 먼저 필요한 작업을 수행할 기본 경로 하나를 확보하고, 추론 설정을 직접 다루거나 다른 실행 방식을 비교할 필요가 생기면 추가하겠습니다. 모든 후보의 설치를 완료 조건으로 삼지는 않으려 합니다.
통합 메모리 24GB에서 어떤 모델과 작업을 실행할 수 있는지도 실제 사용 조건과 함께 살펴볼 생각입니다. 모델의 형식과 양자화, 문맥 길이와 생성 설정, 전원 상태와 측정 방법을 남겨 결과를 해석할 근거로 삼겠습니다. Windows의 8GB VRAM과 용량만으로 비교하거나 서로 다른 모델의 생성 속도로 장비의 우열을 정하지는 않겠습니다.
환경이 갖춰지면 작은 문서 집합으로 검색과 질의응답을 수행하는 작업을 첫 연구 흐름의 후보로 검토하려 합니다. 문서 처리와 임베딩, 검색 결과와 응답의 근거를 차례로 확인할 수 있는 범위부터 시작할 생각입니다. 구체적인 도구와 모델은 구축 과정에서 선택하고, 연구 질문과 평가를 확장하는 작업은 이후 기록으로 이어가겠습니다.
7. 구축과 기록의 순서
현재 생각한 노트의 흐름은 다음과 같습니다. 첫 글에서 설계 방향을 남기고, 실제 작업에 따라 다음 글의 범위와 순서를 조정하겠습니다.
| 순서 | 노트 주제 | 남길 내용 |
|---|---|---|
| 1 | MacBook 연구 워크스테이션 설계 | 현재 글: 역할, 관리 원칙과 구축 순서 |
| 2 | macOS와 연구자료 관리의 기준 상태 | 기존 상태, 실제 변경과 자료 저장 방식 |
| 3 | MacBook에서 Research Journey 관리하기 | 개발도구 구성부터 실제 게시까지의 흐름 |
| 4 | Python과 Jupyter 연구환경 구축 | 프로젝트 환경, 편집기·커널과 재부팅 후 실행 |
| 5 | Apple Silicon AI 환경 검증 | MPS·MLX 연산과 확인한 제한 |
| 6 | 로컬 LLM과 연구 작업 | 런타임 선택, 모델 실행과 대표 작업 |
| 7 | MacBook 연구환경의 실제 구성 | 설계 변경, 프로젝트 재구성과 두 장비의 역할 |
편수는 미리 고정하지 않습니다. 짧은 작업은 묶고 중요한 시행착오가 생기면 따로 기록하되, 각 단계가 끝날 때 명령과 결과를 정리하려 합니다. 마지막 글에서는 처음의 계획과 실제 구성이 어떻게 달라졌는지, 무엇을 확인했고 어떤 작업이 남았는지 돌아보겠습니다.
이번 연휴에는 우선 MacBook의 현재 상태를 점검하고 홈페이지 관리에 필요한 구성을 시작하려 합니다. Windows에서 익힌 확인 방법을 가져와, 실제로 사용할 수 있는 연구환경을 한 단계씩 쌓아가겠습니다.