생성형 AI 개발의 패러다임이 빠르게 변화하고 있습니다. 기존에는 대부분의 AI 개발자와 기업들이 OpenAI, Anthropic, Google 등에서 제공하는 클라우드 API에 의존해왔습니다. 이 방식은 편리하지만 API 사용 비용, 데이터 프라이버시 문제, 네트워크 지연 및 접속 문제 등 여러 한계점을 가지고 있습니다.
이런 상황에서 Docker에서 새롭게 출시한 Docker Model Runner와 Gemma 3의 조합은 로컬 환경에서 최신 AI 모델을 실행할 수 있는 강력한 대안을 제시합니다. 이 글에서는 Docker Model Runner를 활용하여 로컬 환경에서 Gemma 3를 실행하는 방법과 그 장점을 소개하고, 실제 구현 예시를 통해 활용 방안을 알아보겠습니다.

로컬 환경에서의 AI 개발이 중요한 이유
로컬 환경에서의 생성형 AI 개발이 점점 중요해지는 이유는 다음과 같습니다:
- 비용 효율성: 요청당 또는 토큰당 비용이 발생하지 않기 때문에 사용 요금에 대한 걱정 없이 자유롭게 실험할 수 있습니다.
- 데이터 프라이버시: 민감한 데이터가 자체 환경 내에서 유지되며 제3자에게 노출되지 않습니다.
- 네트워크 지연 감소: 외부 API에 대한 의존도를 제거하고 오프라인 상태에서도 사용할 수 있습니다.
- 완전한 제어: 중개자 없이 자신의 조건에 맞게 모델을 실행할 수 있으며 완전한 투명성을 확보할 수 있습니다.
특히 기업 환경에서는 민감한 데이터를 외부 서비스에 전송하는 것이 규제나 내부 정책으로 제한되는 경우가 많아 로컬 AI 개발 솔루션의 필요성이 더욱 커지고 있습니다.

Docker Model Runner 소개
Docker Model Runner는 로컬 컴퓨터에서 AI 모델을 실행할 수 있게 해주는 Docker Desktop 플러그인입니다. 이 도구는 2024년 4월에 베타 버전으로 출시되었으며, Docker Desktop 4.40 이상 버전에서 사용할 수 있습니다.
주요 기능:
- Docker Hub에서 AI 모델 가져오기
- 명령줄에서 직접 AI 모델 실행
- 로컬 모델 관리(추가, 목록 보기, 제거)
- CLI 또는 Docker Desktop 대시보드에서 프롬프트 또는 채팅 모드로 모델과 상호작용
- 모델을 Docker Hub에 푸시
가장 중요한 점은 Docker Model Runner가 OpenAI 호환 API를 제공한다는 것입니다. 이는 기존 OpenAI API를 사용하던 애플리케이션들을 간단한 엔드포인트 변경만으로 로컬 모델로 전환할 수 있다는 의미입니다.
Gemma 3 알아보기
Gemma 3는 Google이 개발한 오픈소스 대규모 언어 모델(LLM)로, Gemini 2.0을 기반으로 하고 있습니다. 2024년 초에 출시된 이 모델은 다양한 크기(9B, 2B, 1B)로 제공되며, 기존의 Gemma 모델보다 더 나은 성능을 보여줍니다.
Gemma 3의 주요 특징:
- 경량화된 모델 크기로 로컬 환경에서도 실행 가능
- 영어와 다국어 지원
- 텍스트 생성, 코드 작성, 추론 등 다양한 태스크 수행 가능
- 다양한 프레임워크와 호환 가능
- Apache 2.0 라이선스로 상업적 이용 가능
Docker Model Runner와 함께 사용할 경우, Gemma 3는 로컬 환경에서도 강력한 AI 기능을 제공할 수 있습니다.
Docker Model Runner와 Gemma 3 설정하기
이제 Docker Model Runner를 설정하고 Gemma 3를 로컬 환경에서 실행하는 방법을 알아보겠습니다.
사전 요구사항
- Apple Silicon이 탑재된 Mac 또는 NVIDIA GPU가 있는 Windows PC
- Docker Desktop 4.40 이상 버전
설정 과정
- Docker Model Runner 활성화:
docker desktop enable model-runner --tcp 12434
- Gemma 3 모델 가져오기:
docker model pull ai/gemma3
설정이 완료되면 Model Runner가 제공하는 OpenAI 호환 API가 다음 URL에서 사용 가능합니다: http://localhost:12434/engines/v1
모델은 처음 사용할 때 Docker Hub에서 가져와 로컬에 저장됩니다. 실행 시에만 메모리에 로드되고 사용하지 않을 때는 언로드되어 리소스를 최적화합니다. 모델이 크기 때문에 초기 다운로드에 시간이 걸릴 수 있지만, 이후에는 로컬에 캐시되어 더 빠르게 액세스할 수 있습니다.

실제 구현 사례: 사용자 의견 처리 시스템
Docker와 Gemma 3의 조합이 실제로 어떻게 활용될 수 있는지 사용자 의견 처리 시스템 예시를 통해 알아보겠습니다. 이 시스템은 가상의 AI 비서 “Jarvis”에 대한 사용자 피드백을 분석하는 애플리케이션으로, 다음과 같은 기능을 수행합니다:
- 가상의 AI 비서에 대한 합성 사용자 의견 생성
- 의견을 긍정적, 부정적, 중립적으로 분류
- 임베딩을 사용하여 유사한 의견 그룹화
- 의견에서 잠재적 제품 기능 식별
- 맥락에 맞는 응답 생성
이 모든 작업은 외부 API 호출 없이 로컬에서 수행됩니다.
OpenAI SDK 구성
로컬 모델을 사용하려면 OpenAI SDK를 Docker Model Runner를 가리키도록 구성해야 합니다:
// config.js
export default {
// 모델 구성
openai: {
apiKey: 'ignored',
model: "ai/gemma3",
commentGeneration: {
temperature: 0.3,
max_tokens: 250,
n: 1,
},
embedding: {
model: "ai/mxbai-embed-large", // 임베딩 생성을 위한 모델
},
},
// 다른 구성 옵션들...
};
import OpenAI from 'openai';
import config from './config.js';
// 로컬 엔드포인트로 OpenAI 클라이언트 초기화
const client = new OpenAI({
baseURL: config.openai.baseURL,
apiKey: config.openai.apiKey,
});
태스크별 구성
로컬에서 모델을 실행하는 큰 장점 중 하나는 API 비용이나 속도 제한에 대한 걱정 없이 각 태스크에 맞게 다양한 구성을 자유롭게 실험할 수 있다는 것입니다.
이 예시에서는:
- 합성 의견 생성에는 창의성을 위해 높은 temperature 사용
- 분류에는 일관성을 위해 낮은 temperature와 10 토큰 제한 사용
- 클러스터링에는 임베딩의 의미론적 풍부함을 개선하기 위해 최대 20 토큰 허용
이러한 유연성을 통해 빠르게 반복하고, 성능을 조정하고, 각 사용 사례에 맞게 모델의 동작을 조정할 수 있습니다.
합성 의견 생성
사용자 피드백을 시뮬레이션하기 위해 Gemma 3의 상세하고 맥락 인식 프롬프트를 따르는 능력을 활용합니다:
/**
* 의견 생성을 위한 프롬프트 생성
* @param {string} type - 의견 유형 (positive, negative, neutral)
* @param {string} topic - 의견 주제
* @returns {string} - OpenAI용 프롬프트
*/
function createPromptForCommentGeneration(type, topic) {
let sentiment = '';
switch (type) {
case 'positive':
sentiment = '긍정적이고 감사하는';
break;
case 'negative':
sentiment = '부정적이고 비판적인';
break;
case 'neutral':
sentiment = '중립적이고 균형 잡힌';
break;
default:
sentiment = '일반적인';
}
return `Generate a realistic ${sentiment} user comment about an AI assistant called Jarvis, focusing on its ${topic}.
The comment should sound natural, as if written by a real user who has been using Jarvis.
Keep the comment concise (1-3 sentences) and focused on the specific topic.
Do not include ratings (like "5/5 stars") or formatting.
Just return the comment text without any additional context or explanation.`;
}
예시 결과:
"솔직히 Jarvis는 빈 약속뿐이에요. 관련 없는 기사를 계속 추천하고 제 업무 지원 요청을 실제로 이해하지 못해요 - 전혀 도움이 되지 않습니다."
"Jarvis는 정말 인상적입니다 - 응답 속도가 믿을 수 없을 정도로 빠릅니다! 이렇게 빠르고 효율적인 AI 비서는 처음 써봤어요, 정말 게임 체인저예요."
이러한 실제와 같은 피드백을 생성할 수 있는 능력은 API 비용 없이 사용자 데이터를 시뮬레이션하는 데 매우 유용합니다.
로컬 AI 개발의 이점 및 미래 전망
Docker Model Runner와 Gemma 3를 결합함으로써 빠르고, 프라이버시가 보장되며, 비용 효율적이고 완전히 제어 가능한 로컬 생성형 AI 워크플로우를 구축할 수 있습니다. 이러한 접근 방식에는 다음과 같은 이점이 있습니다:
- 빠른 반복: API 비용이나 속도 제한에 대한 걱정 없이 신속한 개발
- 유연성: 각 태스크에 맞는 다양한 구성 테스트 가능
- 오프라인 개발: 외부 서비스에 의존하지 않음
- 개발 과정에서 상당한 비용 절감
이는 단지 한 가지 예시일 뿐입니다. 새로운 AI 제품을 프로토타이핑하든, 내부 도구를 구축하든, 고급 NLP 사용 사례를 탐색하든, 로컬에서 모델을 실행하면 개발 과정을 완전히 제어할 수 있습니다.
오픈소스 모델과 로컬 도구가 계속 발전함에 따라 강력한 AI 시스템 구축의 진입 장벽은 계속 낮아지고 있습니다. 이는 개인 개발자뿐만 아니라 엔터프라이즈 환경에서도 AI 활용의 새로운 가능성을 열어줍니다.
결론
Docker Model Runner와 Gemma 3의 조합은 AI 개발에 새로운 패러다임을 제시합니다. 로컬 환경에서의 AI 개발은 비용 효율성, 데이터 프라이버시, 지연 시간 감소, 완전한 제어 등 많은 이점을 제공합니다.
이제 단순히 AI를 소비하는 것을 넘어, 개발 과정을 직접 형성하고 소유할 수 있는 시대가 왔습니다. Docker Model Runner와 Gemma 3를 활용하여 여러분만의 로컬 AI 애플리케이션을 구축해 보시기 바랍니다.
직접 시도해 보세요: Docker Model Runner GitHub 저장소를 클론하고 오늘부터 실험을 시작하세요.
Comments