본문 바로가기

오프라인 엣지 AI 챗봇 + 임베디드 리눅스 병행 로드맵

@밀양박씨!2026. 6. 10. 15:06

오프라인 엣지 AI 챗봇 + 임베디드 리눅스 병행 로드맵


최종 목표

Raspberry Pi 5 (8GB)
├── 인터넷 없이 동작
├── 마이크로 음성 입력 (Whisper)
├── LLM 추론 (llama.cpp)
└── 스피커 or UART로 응답 출력

1주차: 환경 세팅 + 리눅스 기초

임베디드 리눅스 파트

  • Raspberry Pi OS 설치 및 기본 세팅
  • 크로스 컴파일 환경 구축 (호스트 PC에서 빌드 → Pi로 전송)
  • Makefile, gcc, ssh, scp 워크플로우 익히기
  • /dev, /proc, /sys 구조 탐색

프로젝트 파트

  • llama.cpp 클론 & 빌드 (Pi 5에서 직접)
  • 경량 모델 다운로드 및 첫 실행
    • 추천: Qwen2.5-0.5B-Instruct Q4_K_M (약 400MB)
  • 터미널에서 텍스트 입력 → 응답 출력 확인

1주차 체크포인트: Pi 터미널에서 LLM과 대화 성공 ✅


2주차: 시스템 프로그래밍 + C API 연동

임베디드 리눅스 파트

  • 파일 I/O (open, read, write)
  • 프로세스 & 파이프 (fork, pipe, popen)
  • 시그널 처리 (SIGINT, SIGTERM)
  • 공유 메모리 / 소켓 기초

프로젝트 파트

  • llama.cpp C API (llama.h) 직접 사용해서 나만의 프로그램 작성
  • 시스템 프로그래밍으로 배운 파이프/프로세스로 모듈화
// 이런 구조로 직접 작성
llama_context *ctx = llama_new_context(...);
llama_eval(ctx, tokens, n_tokens, ...);
// 토큰 하나씩 스트리밍 출력

2주차 체크포인트: 직접 짠 C 프로그램으로 LLM 응답 출력 ✅


3주차: 디바이스 드라이버 + 오디오 입력

임베디드 리눅스 파트

  • 커널 모듈 Hello World (insmod/rmmod)
  • 문자 디바이스 드라이버 작성
  • ALSA 오디오 서브시스템 구조 이해
  • /dev/snd 디바이스 파일 직접 읽기

프로젝트 파트

  • USB 마이크 연결 → ALSA로 녹음 (arecord)
  • Whisper.cpp 빌드 & 실행 (오프라인 STT)
  • 파이프라인 연결: 마이크 → Whisper → 텍스트
[마이크] → arecord → whisper.cpp → 텍스트 → llama.cpp → 응답

3주차 체크포인트: 말하면 텍스트로 변환되어 LLM에 전달 ✅


4주차: 통합 + 시스템 최적화

임베디드 리눅스 파트

  • 부팅 시간 최적화 (systemd 서비스 등록)
  • 메모리 사용량 분석 (/proc/meminfo, valgrind)
  • 로그 시스템 구성 (syslog, journalctl)
  • 크래시 대응 (watchdog 데몬)

프로젝트 파트

  • 전체 파이프라인 하나의 C 프로그램으로 통합
  • 부팅 시 자동 실행 (systemd 서비스 등록)
  • 응답 속도 최적화 (스레드, 배치 사이즈 튜닝)
  • (여유되면) TTS 추가 → 스피커로 음성 출력 (piper-tts)

4주차 체크포인트: Pi 전원 켜면 자동으로 오프라인 챗봇 실행 ✅


전체 아키텍처 (완성 시)

┌─────────────────────────────────┐
│         Raspberry Pi 5          │
│                                 │
│  [마이크] → whisper.cpp (STT)   │
│       ↓                         │
│  llama.cpp (LLM 추론)           │
│       ↓                         │
│  [스피커] ← piper-tts (TTS)     │
│                                 │
│  systemd로 부팅 시 자동 실행    │
│  인터넷 연결 없음               │
└─────────────────────────────────┘

주차별 한눈에 보기

주차 리눅스 공부 프로젝트

1주 환경 세팅, 파일시스템 llama.cpp 첫 실행
2주 시스템 프로그래밍 C API로 LLM 제어
3주 드라이버, ALSA Whisper STT 연결
4주 최적화, systemd 전체 통합 & 자동실행

 

밀양박씨!
@밀양박씨! :: 박씨의 개발블로그

lovebotw049 님의 블로그 입니다.

목차