Skip to content

TIL 25/05/20 - Docker와 Ollama를 활용한 로컬 AI 모델 실행하기 #37

@shienka07

Description

@shienka07

📚 배운 것

오늘 Rancher Desktop, Docker, Ollama를 사용하여 로컬 환경에서 AI 언어 모델을 실행하고 API를 통해 상호작용하는 방법을 배웠다.

🛠️ 환경 설정

  • 도구: Rancher Desktop, Taddy(Docker GUI), Postman(API 클라이언트)
  • 제약 조건: 약 1.1GB 가용 메모리

🔄 실행 단계

  1. Ollama 컨테이너 실행 :

    docker pull alpine/ollama
    docker run -d -p 11434:11434 -v ~/.ollama/root/.ollama --name ollama alpine/ollama
  2. AI 모델 다운로드 :

    docker exec -ti ollama ollama pull gemma:2b
    • 처음에는 llama3.2 모델을 시도했으나 메모리 부족 오류(3.5GB 필요, 1.1GB 가용)
    • 리소스 제약에 맞는 gemma:2b 모델로 전환하여 성공
  3. API 요청 전송 :

    POST http://localhost:11434/api/generate
    Content-Type: application/json
    Body: {
        "model": "gemma:2b",
        "prompt": "Tell me a short story about a robot."
    }
    
  4. 응답 확인 ✅: 모델이 토큰 단위로 스트리밍 방식으로 로봇에 관한 이야기를 생성

💡 배운 기술적 개념

  1. Docker 컨테이너 관리 :

    • 컨테이너 실행, 중지, 삭제 및 명령 실행 방법
    • 볼륨 마운트를 통한 데이터 지속성 관리
    • 메모리 제한 설정 (--memory=4g)
  2. 리소스 최적화 :

    • 하드웨어 제약 조건에 맞는 AI 모델 선택
    • 메모리 사용량이 다른 다양한 모델 옵션 (llama3.2: 3.5GB vs gemma:2b: 1.4GB)
  3. API 통신 :

    • REST API를 통한 AI 모델과의 상호작용
    • JSON 형식의 요청 및 응답 처리
    • 스트리밍 응답 처리 방법 (done: falsedone: true)

🔍 문제 해결 경험

  • 메모리 오류 식별 및 해결: 더 작은 모델로 전환
  • 모델 이름 오류: 정확한 모델 이름 확인 및 수정
  • API 엔드포인트 이해: /api/generate/api/chat 차이점

🌟 시사점 및 응용 가능성

  • 클라우드 API에 의존하지 않고 로컬에서 AI 실행 가능
  • 리소스 제한이 있는 환경(에지 컴퓨팅, 개인 서버)에서도 AI 모델 활용 가능
  • 개인정보 보호가 중요한 상황에서 데이터를 외부로 보내지 않고 AI 활용 가능
  • 커스텀 애플리케이션에 AI 기능 통합 방법 습득

💻 코드 주요 포인트:

# 메모리 부족 오류 발생 시
{
    "error": "model requires more system memory (3.5 GiB) than is available (1.1 GiB)"
}

# 해결책: 더 작은 모델 사용
docker exec -ti ollama ollama pull gemma:2b

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions