1. Entering the world of the terminal
로컬 AI 스터디 1주차 — Mac에서 로컬 AI 시작하기
이번 주에는 로컬 AI가 무엇인지 살펴보고, 이후 실습에 필요한 Mac 개발 환경과 터미널 사용법을 정리했다. 당장 모델을 활용하는 것보다 먼저 AI가 어디에서 실행되는지, 개발 도구를 어떻게 설치하고 실행하는지 이해하는 데 초점을 맞췄다.
실습 환경
개인적으로 사용 중인 MacBook Pro에서 진행한다.
- 기기: MacBook Pro (MacBookPro18,2)
- 칩: Apple M1 Max
- CPU: 10코어 — 성능 코어 8개, 효율 코어 2개
- 메모리: 통합 메모리 32GB
Apple Silicon은 CPU와 GPU가 메모리를 공유하는 통합 메모리 구조를 사용한다. 로컬 AI 모델을 실행할 때는 모델 크기와 메모리 사용량이 중요하므로, 32GB 메모리 환경에서 모델별 실행 특성을 직접 확인해 볼 생각이다.
1. 클라우드 AI와 로컬 AI
평소 ChatGPT 같은 클라우드 AI를 사용하는 것과 달리, 로컬 AI는 모델을 내 컴퓨터에서 직접 실행한다는 차이가 있다.
| 구분 | 클라우드 AI | 로컬 AI |
|---|---|---|
| 실행 위치 | 서비스 제공자의 서버 | 내 컴퓨터 |
| 데이터 처리 | 외부 서버로 전송될 수 있음 | 로컬에서 처리 가능 |
| 인터넷 | 서비스 이용 시 일반적으로 필요 | 모델을 내려받은 뒤에는 오프라인 실행 가능 |
| 모델 선택 및 설정 | 서비스에서 제공하는 범위 | 설치한 모델과 실행 설정을 직접 관리 |
| 고려할 점 | 서비스 정책, 비용, 네트워크 의존성 | 하드웨어 성능, 메모리, 모델 최신성 |
로컬 AI가 모든 면에서 클라우드 AI보다 좋은 것은 아니다. 복잡한 작업이나 최신 정보가 필요한 경우에는 클라우드 모델이 더 적합할 수 있고, 개인 데이터 보호나 오프라인 실행, 직접적인 실험이 중요할 때는 로컬 모델이 유용하다. 상황에 따라 두 방식을 함께 사용하는 것도 가능하다.
2. 이번에 만들 애플리케이션의 구성
최종적으로는 음성 입력과 텍스트 입력을 모두 지원하는 로컬 AI 채팅 애플리케이션을 만드는 것이 목표다. 전체 구성은 다음과 같다.
- Ollama: 로컬 LLM을 내려받고 실행
- MLX Whisper: 음성을 텍스트로 변환
- Python: 각 구성 요소를 연결하는 코드 작성
- Streamlit: 브라우저에서 사용할 채팅 화면 구성
- VS Code: 코드 편집 및 관리
음성을 입력하면 텍스트로 변환한 뒤 LLM에 전달하고, 생성된 응답을 화면에 표시하는 흐름이다. 각 구성 요소가 어떻게 연결되는지 이해하는 것이 이번 프로젝트의 핵심 중 하나다.
3. LLM의 기본 개념
LLM은 대량의 텍스트 데이터에서 언어의 패턴을 학습하고, 입력된 문맥을 바탕으로 다음 토큰을 차례대로 생성하는 모델이다. 질문에 답하거나 문서를 요약하고 코드를 작성할 수 있지만, 답변이 항상 사실인 것은 아니다. 그럴듯하지만 부정확한 답변을 생성하는 환각(hallucination)이 발생할 수 있어 중요한 정보는 별도로 확인해야 한다.
모델이 학습되는 과정에서는 데이터에 맞도록 가중치를 조정한다. 신경망은 여러 층에서 입력을 처리하고, 학습 과정에서는 예측 결과와 정답의 차이를 바탕으로 가중치를 수정한다. 실제 LLM의 구조는 훨씬 복잡하지만, 학습된 가중치를 바탕으로 입력을 처리하고 결과를 생성한다는 기본 흐름을 이해하는 데 도움이 됐다.
LLM 연산에서 행렬 곱셈이 중요한 이유도 함께 살펴봤다. GPU는 많은 연산을 병렬로 처리하는 데 강점이 있어 AI 연산에 널리 활용된다.
4. M1 Max에서 로컬 AI를 실행할 때 알아둘 점
M1 Max는 CPU와 GPU가 통합 메모리를 공유하므로, 별도의 GPU 메모리로 데이터를 복사하는 부담을 줄일 수 있다. 다만 통합 메모리 32GB를 운영체제와 애플리케이션도 함께 사용하므로, 모델이 커질수록 실제로 사용할 수 있는 메모리와 실행 속도를 확인해야 한다.
또한 Apple Silicon에 Neural Engine이 있다고 해서 모든 AI 프로그램이 이를 자동으로 사용하는 것은 아니다. 실행 도구와 프레임워크에 따라 CPU나 GPU를 활용하는 방식이 달라진다. 이번 스터디에서 사용할 Ollama와 MLX의 실제 연산 경로는 각 도구의 구현에 따라 확인할 필요가 있다.
5. 터미널과 기본 명령어
개발 도구 설치와 실행은 터미널에서 진행하므로, 먼저 파일 시스템을 이동하고 확인하는 명령어를 익혔다.
| 명령어 | 용도 |
|---|---|
pwd |
현재 작업 디렉터리 확인 |
ls |
파일 및 디렉터리 목록 확인 |
ls -la |
숨김 파일을 포함한 상세 목록 확인 |
cd |
다른 디렉터리로 이동 |
cd .. |
상위 디렉터리로 이동 |
cd ~ |
홈 디렉터리로 이동 |
mkdir |
새 디렉터리 생성 |
clear |
터미널 화면 정리 |
예를 들어 프로젝트 작업용 디렉터리는 다음처럼 만들 수 있다.
cd ~
mkdir ai_project
cd ai_project
pwdGUI에서는 폴더를 클릭해서 이동하지만, CLI에서는 명령어로 같은 작업을 수행한다. 터미널은 처음에는 낯설 수 있지만, 명령어를 조합하면 작업을 반복하거나 자동화하기 쉽다는 장점이 있다.
6. Homebrew와 Ollama
Homebrew는 macOS에서 개발 도구와 패키지를 설치하고 관리하는 패키지 매니저다. 설치 과정에서 필요한 의존성을 함께 처리하고, 패키지 검색과 업데이트도 명령어로 할 수 있다.
자주 사용하는 명령어는 다음과 같다.
brew search <검색어>
brew install <패키지명>
brew list
brew info <패키지명>
brew update
brew upgrade
brew uninstall <패키지명>
brew doctorOllama는 그 자체가 AI 모델은 아니고, 로컬에서 LLM을 내려받고 관리하며 실행할 수 있게 해 주는 런타임이다. 모델 파일만 가지고 있는 것과 실제로 모델을 실행해 질문에 답을 받는 것은 다르며, Ollama가 그 실행 과정을 담당한다.
이번 주에 살펴본 주요 명령어는 다음과 같다.
brew update
brew install ollama
ollama --versionOllama를 터미널에서 직접 실행하는 방식에서는 ollama serve가 서버 프로세스로 동작한다. 이 명령어를 실행한 터미널은 서버가 계속 실행되므로 다른 명령어를 입력하려면 별도의 터미널 창을 사용해야 한다. 기본 주소는 http://localhost:11434이며, 브라우저에서 접속해 서비스 실행 여부를 확인할 수 있다.
정리
1주차에는 로컬 AI와 클라우드 AI의 차이, LLM의 기본적인 동작 원리, Apple Silicon의 통합 메모리 구조를 살펴봤다. 그리고 이후 실습의 기반이 될 터미널 명령어, Homebrew, Ollama의 역할을 정리했다.
다음 단계에서는 실제 모델을 내려받아 로컬에서 실행하고, 프롬프트를 입력해 응답을 받아보면서 모델에 따라 실행 속도와 응답 특성이 어떻게 다른지 확인할 예정이다.
-
1주차 스터디에서 학습한 내용 혹은 ollma 모델 실행을 간략히 정리하여 공개된 링크에 글 작성 후 해당 링크를 스터디 슬랙 채널에 공유 🙇🏻♂️🙇🏻♀️
- 작성 도구 : 블로그, Github, 개인 홈페이지, 개인 Youtube, ‘페이스북/링크드인 공개 게시 글’ 등
- 정리 내용(예시)
- 해당 주차 스터디에서 학습한 내용을 요약 정리 작성
- 해당 주차 스터디에서 다룬 주제 기술 1개를 별도 조사 학습해서 정리
- mac 에서 Local AI Model 실행 기술 내용 정리
-
mac PC Spec 에 정보 확인 해보기
mung 🦄 ~ system_profiler SPHardwareDataType
2026-10-24 17:21:30.538 system_profiler[18126:83962] hw.cpufamily: 0x1b588bb3
Hardware:
Hardware Overview:
Model Name: MacBook Pro
Model Identifier: MacBookPro18,2
Model Number: MK1A3KH/A
Chip: Apple M1 Max
Total Number of Cores: 10 (8 Performance and 2 Efficiency)
Memory: 32 GB
System Firmware Version: 18000.161.10
OS Loader Version: 18000.161.10
Hardware UUID: 0E6943AC-1925-5D04-A995-838A2C1EDA55
Provisioning UDID: 00006001-000C209436D0C01E
Activation Lock Status: Disabled