내 휴대폰 AI 파이프라인은 프로토타입이었으나, 이제는 실제 프로젝트가 되었습니다.
요약
모바일 환경에서 작동하는 RAG 파이프라인을 프로토타입에서 실제 프로젝트 수준으로 개선한 과정을 다룹니다. subprocess 대신 REST API를 사용하고, JSON 기반의 세션 메모리를 구현하며, Gemma 4 모델을 최적화하여 성능을 높였습니다.
핵심 포인트
- Ollama 네이티브 REST API를 사용하여 안정성 및 에러 처리 개선
- JSON 기반의 순환 요약 방식을 통한 세션 간 지속적 메모리 구현
- 양자화된 Gemma 4 E4B 모델 적용으로 추론 품질 향상
- 모바일 환경의 발열 및 프로세스 종료 등 하드웨어 제약 사항 공유
세 번의 업그레이드, 하나의 저장소(repo), 그리고 지켜진 약속.
몇 주 전, 저는 제 휴대폰에서 RAG (Retrieval-Augmented Generation) 파이프라인을 구축하는 것에 대해 글을 썼습니다. 작동은 했습니다. 간신히 말이죠.
저는 Ollama와 통신하기 위해 subprocess 호출을 사용했습니다. Termux를 재시작할 때마다 봇은 우리가 논의했던 모든 것을 잊어버렸습니다. 그리고 저는 더 큰 모델이 기기를 충돌시킬까 봐 가장 작은 Gemma 4 변체를 실행하고 있었습니다.
저는 그것을 다시 만들겠다고 약속했습니다. 오늘, 그 재구축 버전이 공개되었습니다.
무엇이 바뀌었나
제가 고치겠다고 말하고 실제로 고친 세 가지입니다:
- Subprocess 대신 네이티브 API 사용
제 원래 코드는 Python의 subprocess 모듈을 사용하여 Ollama를 셸(shell)로 호출했습니다. 작동은 했지만 불안정했습니다. 새 버전은 requests.post()를 통해 Ollama의 네이티브 REST API를 사용합니다. 더 깔끔한 코드, 더 적은 가동 부품, 그리고 적절한 에러 처리(error handling)가 가능해졌습니다. 이제 모델은 제가 직접 파싱해야 했던 가공되지 않은 텍스트 대신 구조화된 JSON을 반환합니다.
- 세션 간 지속적인 메모리
이것이 가장 큰 변화였습니다. 기존의 파이프라인은 기억상실증에 걸린 것과 같았습니다. Termux를 재시작하면 모든 것을 잃었습니다.
이제 과거 대화의 순환 요약(rolling summary)을 저장하는 chat_memory.json 파일이 있습니다. 파이프라인은 이 메모리를 모든 프롬프트(prompt)에 주입하므로, 모델은 재시작 후에도 우리가 대화했던 내용을 기억합니다. 대화형 모드에서 memory라고 입력하면 대화 기록을 보여줍니다.
이것은 메모리를 위한 벡터 데이터베이스(vector database)는 아닙니다. 가벼운 JSON 로그입니다. 하지만 RAM을 잡아먹지 않고 휴대폰에서 작동합니다. 이것이 엔지니어링 측면의 트레이드오프(tradeoff)입니다.
- Gemma 4 E4B로 업그레이드
저는 제 휴대폰이 더 많은 것을 감당할 수 없을 것이라고 가정했기 때문에 E2B (2.3B 파라미터)를 실행하고 있었습니다. 제 생각이 틀렸습니다. E4B (4.5B 파라미터)는 양자화 (quantization)를 통해 여유롭게 실행됩니다. 추론(reasoning) 품질의 도약은 특히 이전 모델이 맥락을 놓치곤 했던 다단계 질문에서 눈에 띄게 나타납니다.
저장소 (The Repo)
이제 모든 것이 GitHub에 있습니다:
github.com/Dexter2344
README 파일에는 설정 방법, 필요한 의존성(dependencies), 그리고 실행 방법이 설명되어 있습니다. Android에 Termux가 설치되어 있다면, 이를 클론(clone)하여 30분 이내에 자신만의 오프라인 AI를 실행할 수 있습니다.
여전히 어려운 점
제가 해결하지 못한 부분에 대해 솔직하게 말씀드리겠습니다:
· 20분 이상의 연속적인 추론 (Inference) 후에는 여전히 휴대폰에 발열이 발생합니다. 쓰로틀링 (Thermal throttling) 현상은 실제로 존재합니다.
· 앱을 너무 오래 전환하면 Android가 Ollama 프로세스를 종료해 버립니다. 아직 해결 방법을 찾지 못했습니다.
· 임베딩 모델 (Embedding model)은 여전히 실제 트랜스포머 (Transformer)가 아닌 저의 경량 해싱 (Lightweight hashing) 방식입니다. 그것이 다음 목표입니다.
이것이 중요한 이유
제가 이런 글을 게시할 때마다 누군가 저에게 연락하여 "휴대폰으로 그런 것이 가능한 줄 몰랐습니다"라고 말합니다. 그것이 바로 핵심입니다. 실제 AI 시스템을 구축하기 위해 2,000달러짜리 노트북이나 클라우드 크레딧 (Cloud credits)이 필요하지는 않습니다. 당신에게 필요한 것은 호기심, 인내심, 그리고 무언가를 망가뜨려 볼 의지입니다.
코드는 무료입니다. 저장소 (Repo)는 공개되어 있습니다. 가서 무언가를 만들어 보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기