본문 바로가기
AI/Contents

Ollama를 활용한 아이폰으로 Ondevice AI 같은 서비스 구축하기

by AI미남홀란드 2024. 2. 15.
728x90

Ollama iphone

 

 

안녕하세요 Simon 입니다.

On-device AI 시대가 열리면서 삼성의 갤럭시 스마트폰은 AI 를 넣어서 출시가 되고 있고, 아마 최근에 막말로 유명한 샘알트만이 그리는 반도체 시장의 생태계 또한 모든 디바이스가 AI Chip 이 들어간다면 현실적으로 9000조라는게 가능할?수도 라는 생각이 드는데요.

 

Linkdin Facebook 다양한 AI 관련커뮤니티에서 항상 화제가 되고 있는 Ollama 를 활용한 Application 실행을 해볼려고 합니다. 

 

"아이폰에서 LLaMA2 실행하기"

LLama2 실행 모습 with IPhon15

 

Ollama 는 무엇인가?

 

Ollama 는 오픈소스 프로젝트로 Hype이 되어 더욱 커지고 있는 프레임워크의 Tool 개념이라고 생각합니다. Open LLM 에서  Llama 2, Mistral 및 기타 대규모 언어 모델로 쉽게 시작할 수 있는 프로젝트입니다. macOS, Windows(WSL2를 통해), Linux 및 WSL2에서 대규모 언어 모델을 로컬 환경에서 실행하는 데 필요한 모든 것을 제공합니다. 또한, Docker Hub에서 사용 가능한 공식 Ollama Docker 이미지를 통해 더욱 다양한 환경에서 이용할 수 있습니다. ollama-python 및 ollama-js와 같은 다양한 라이브러리 지원은 개발자에게 더 많은 선택권을 제공합니다.

Llama 2 모델을 실행하는 것은 ollama run llama2와 같은 간단한 명령으로 가능합니다. Ollama는 ollama.com/library에서 제공하는 오픈 소스 모델 목록을 지원하며, 사용자는 이를 통해 다양한 모델을 쉽게 다운로드하고 실행할 수 있습니다. Llama 2, Mistral, Dolphin Phi 등 다양한 모델이 제공되며, 각각의 모델은 파라미터 수, 크기 및 다운로드 옵션을 포함합니다.

GGUF 모델을 Ollama로 가져오는 것부터 PyTorch 또는 Safetensors에서 모델을 가져오는 것까지, 사용자는 다양한 방법으로 모델을 사용자 정의할 수 있습니다. Ollama 라이브러리의 모델을 프롬프트로 사용자 정의하는 기능은 특정 사용 사례에 맞게 모델의 동작을 조정할 수 있는 유연성을 제공합니다.

Ollama는 모델을 생성, 실행 및 관리하기 위한 간단하면서도 강력한 API를 제공합니다. 사전 구축된 모델 라이브러리는 다양한 애플리케이션에서 쉽게 사용될 수 있도록 설계되었습니다. REST API를 통한 모델 실행 및 관리 기능은 개발자가 더 효율적으로 작업할 수 있게 돕습니다. 커뮤니티 통합을 통해 웹 및 데스크톱, 터미널, 데이터베이스, 패키지 관리자, 모바일, 확장 및 플러그인 등 다양한 환경에서 Ollama를 활용할 수 있습니다.

 

 

 

GitHub - ollama/ollama: Get up and running with Llama 2, Mistral, and other large language models.

Get up and running with Llama 2, Mistral, and other large language models. - ollama/ollama

github.com

 

Ollama

Get up and running with large language models, locally.

ollama.com

 

현재 수많은 모델을 지원하고 있으며, 커스텀으로 코드만 구현이 가능하다면 Modelfile Docs 부분에서 나만의 LLM 을 GGUF 로  양자화해서 서빙을 해서 Application 배포까지 쉽게 해볼 수 있는 좋은 플랫폼입니다.

 

아이폰에서 LLaMA2 실행하기

1. 아이폰에서 enchanted App down

 

 

GitHub - AugustDev/enchanted: Enchanted is iOS and macOS app for chatting with private self hosted language models such as Llama

Enchanted is iOS and macOS app for chatting with private self hosted language models such as Llama2, Mistral or Vicuna using Ollama. - AugustDev/enchanted

github.com

 

현재 오픈소스로 이 앱을 만든걸 배포해놓았고 App Store에서 다운로드가 가능합니다.

 

 

Enchanted LLM App

 

 

 

‎Enchanted LLM

‎Enchanted is chat app for LLM researchers to chat with self hosted models. Enchanted supports Ollama API and all ecosystem models. It is necessary to have a running Ollama server to use this app and specify the server endpoint in app settings. Enchanted

apps.apple.com

 

 

앱 설정에서 서버 엔드포인트를 지정합니다. 라고 나와있는데 따로 건드린건 없습니다. 저는 설치만 하고 키기만 했습니다.

 

2. 맥북(MAC)에서 Ollama 설정하기

공식 홈페이지 또는 Github 에서 Mac 전용 File 을 다운로드 합니다.

Ollama download

 

압축을 풀어주고 실행을 합니다.

 

ollama run llama2

 

그 후 터미널에서 위 명령어를 실행합니다. 그럼 llama2 모델이 다운로드가 되고 다운로드 후 실행이 됩니다.

 

저는 Gemini project 때와 같이 한번 뉴진스가 누구냐고 물어봤습니다. 멤버들을 다 알고 있었습니다. LLaMA2가 뉴진스 데뷔 후의 데이터를 활용해서 학습을 했구나 생각이 들었습니다.

대화에서 나가려면 command + d를 눌러주면 됩니다.

 

/? 을 통해서 다양하게 궁금한점을 알 수 있었고, 아마 다운로드가 된 programfile 경로로 들어가서 코드를 수정하면 될것으로 보입니다.

 

3. Ngrok 설정하기

 

ngrok | Unified Application Delivery Platform for Developers

ngrok is a secure unified ingress platform that combines your global server load balancing, reverse proxy, firewall, API gateway and Kubernetes Ingress Controller to deliver applications and APIs.

ngrok.com

 

Ngrok 이란 ? ngrok은 로컬 컴퓨터에서 실행 중인 서버를 인터넷에 임시로 공개하는 도구입니다. 개발자가 로컬에서 개발 중인 웹 애플리케이션, API, 서버 등을 외부 네트워크나 인터넷에 있는 다른 사람들과 쉽게 공유하고 테스트할 수 있도록 해줍니다. ngrok을 사용하면 복잡한 네트워크 설정이나 공개 IP 주소 없이도 로컬 서버를 안전하게 외부에 노출시킬 수 있습니다.

 

터미널창에 Ngrok 다운로드 명령어를 실행합니다.

brew install ngrok/ngrok/ngrok

 

엑세스 토큰 할당을 해주어야 합니다.

 

ngrok config add-authtoken 'Your Yoken key'

 

Ollama 서버를 공개적으로 액세스할 수 있도록 ngrok 포워드를 설정한 후 

 

ngrok http 11434

 

이렇게 상태창이 뜹니다. 그럼 이제 호출을 하면 호출 기록들이 나옵니다.

 

Forwarding 부분에서 https://b377-82-132-216-51.ngrok-free.app 이런식으로 링크값이 있으면 이걸 복사해둡니다.

 

4. 아이폰에서 Enchanted 앱 설정하기

앱을 들어가서 셋팅을 누르고  Ollama Server URL 부분에 위에서 복사한 링크를 넣어줍니다.

 

Ollama setting
prompt 입력

 

 

5. LLaMA2 실행결과

 

GPT처럼 답변이 입력에대한 리스폰이 잘 들어오고 마치 서비스를 이용하는듯한 착각입니다. 음성버튼을 누르면 아이폰 자체의 TTS로 변환해서 메시지를 입력을 해줍니다. 되게 신기했습니다.

 

현재 라마2 자체가 한국어 파인튜닝이 안되었기 떄문에 한국어 관련 질문을 하면 이상하게 내뱉는 현상이 있습니다. 그래서 영어로 쓰는것을 일단 추천을 드립니다. 모델 자체도 다양한 모델을 지원하니 다른모델로 실행해보면 재미있을듯 합니다.

 

비교적 쉽게 Application 에서 on-device AI 를 구현한다는 것이 되게 신기한 프로젝트였습니다. 나중에는 제가 파인튜닝한 한국어 도메인 특화모델로 다시 리뷰를 해보겠습니다.

728x90