Skip to content

kusitms-bugi/aaru

Repository files navigation

Persona Service Signup Simulator

Nemotron-Personas-Korea 데이터셋을 활용하여 로컬 LLM으로 서비스 가입 확률을 시뮬레이션합니다.


Mac 로컬 LLM 환경 세팅 (Ollama)

1. Ollama 설치

# Homebrew로 설치
brew install ollama

# 또는 공식 사이트에서 다운로드
# https://ollama.com/download

2. Ollama 서버 실행

# 터미널에서 서버 시작
ollama serve

# 다른 터미널을 열어 모델 다운로드
ollama pull qwen2.5:7b

3. Python 환경 설정

# 가상환경 생성 (권장)
python3 -m venv venv
source venv/bin/activate

# 의존성 설치
pip install -r requirements.txt

로컬 모델 추천 및 장단점 비교

모델 Ollama 명령어 RAM 장점 단점
Qwen 3 (32B) ollama pull qwen3:32b 32GB+ 높은 추론 품질, 한국어 포함 다국어 성능 우수, 긴 컨텍스트 다운로드/로딩이 오래 걸림, 충분한 메모리 필요
Qwen 2.5 (7B) ollama pull qwen2.5:7b 8GB 강력한 다국어 지원, 한국어 벤치마크 우수, 긴 컨텍스트 모델 크기가 상대적으로 큼, 중국어 편향 가능성
Llama 3.1 Korean (8B) ollama pull llama3.1-ko 8GB 한국어 이해도 우수, 빠른 추론 속도 영어 대비 창의적 응답 부족, 긴 컨텍스트 제한
Gemma 3 (4B) ollama pull gemma3:4b 4GB 매우 가벼움, 빠른 응답, 저사양 Mac에서도 실행 한국어 능력 제한, 복잡한 프롬프트 처리 약화

추천 선택 기준

  • M1/M2 Mac 8GB RAM → Gemma 3 (4B)
  • M1/M2/M3 Mac 16GB+ RAM → Qwen 2.5 (7B)
  • Apple Silicon 64GB+ RAM → Qwen 3 (32B) ← 고품질 권장
  • 한국어 품질 최우선 → Llama 3.1 Korean (8B)

실행 방법 (Step-by-Step)

Step 1: Ollama 서버 시작

ollama serve

Step 2: 모델 다운로드 (최초 1회)

# 권장 모델
ollama pull qwen3:32b

Step 3: 가상환경 활성화 및 의존성 설치

source venv/bin/activate
pip install -r requirements.txt

Step 4: 시뮬레이션 실행

# 기본 실행 (Qwen 2.5, 500명 샘플)
python simulator.py

# 거부기린(bugi.co.kr) 프로젝트 실행
python simulator.py --project bugi --model qwen3-32b --sample-size 300 --concurrency 4

# 시나리오 비교 실행
python simulator.py --project bugi --synthetic-data --fallback-only --sample-size 100 --scenarios baseline,creative_test,pricing

# 사용자 정의 시나리오 파일 실행
python simulator.py --project bugi --scenario-file ./scenarios.json

# Ollama/외부 데이터셋 없이 빠른 검증 실행
python simulator.py --project bugi --sample-size 300 --fallback-only --synthetic-data --output-dir ./output/bugi

# 모델 및 샘플 크기 지정
python simulator.py --model qwen2.5-ko --sample-size 500 --concurrency 4

# 저사양 Mac (가벼운 모델, 낮은 동시성)
python simulator.py --model gemma3-ko --sample-size 300 --concurrency 2

# 빠른 테스트 (이미 다운로드된 모델)
python simulator.py --model qwen2.5-ko --sample-size 300 --skip-download

Step 5: 결과 확인

실행이 완료되면 ./output/ 디렉토리에 결과가 저장됩니다:

  • simulation_results.csv — 개별 페르소나별 가입 확률 및 사유
  • analysis_report.json — 연령대/직업/성별/지역별/시나리오별 분석 결과
  • report.html — 시나리오 비교용 HTML 리포트

CLI 옵션

옵션 기본값 설명
--project healthy-life 시뮬레이션할 서비스 프리셋 (healthy-life, bugi)
--model qwen2.5-ko 사용할 모델 (qwen3-32b, llama3.1-ko, mistral-ko, qwen2.5-ko, gemma3-ko)
--sample-size 500 샘플링할 페르소나 수 (Nemotron 데이터셋 기준 최대 1,000,000건)
--concurrency 4 병렬 LLM 호출 수
--output-dir ./output 결과 저장 디렉토리
--seed 42 랜덤 시드
--skip-download false 모델 다운로드 건너뛰기
--fallback-only false Ollama 호출 없이 휴리스틱으로만 실행
--synthetic-data false HuggingFace 데이터셋 대신 내장 샘플 페르소나 사용
--scenarios baseline 비교할 시나리오 키 목록 (baseline,creative_test,pricing 등)
--scenario-file "" 사용자 정의 시나리오 JSON 파일 경로

사용자 정의 시나리오 파일 (scenarios.json)

--scenario-file 옵션으로 JSON 파일을 넘기면 내장 프리셋 대신 직접 작성한 시나리오로 실행할 수 있습니다.

파일 포맷

최상위는 JSON 배열이며, 각 항목은 하나의 시나리오를 나타냅니다.

[
  {
    "key": "creative_test",
    "label": "크리에이티브 A — 공감형",
    "dimension": "creative",
    "note": "어떤 관점에서 페르소나를 평가할지 설명하는 메모입니다.",
    "service_description": "서비스 설명 텍스트...\n\n---\n추가 메시지:\n\"여기에 테스트할 마케팅 카피를 적습니다.\"",
    "action_label": "설치 및 지속 사용"
  }
]

필드 설명

필드 필수 설명
key O 시나리오 식별자. 내장 프리셋과 동일한 키(baseline, creative_test, pricing, brand 등)를 쓰면 자동 정규화됩니다. 임의 문자열도 가능합니다.
label X 리포트에 표시될 이름. 생략하면 key가 그대로 사용됩니다.
dimension X 분석 차원 태그(예: creative, pricing, brand). 같은 key를 가진 여러 시나리오를 구분할 때 유용합니다.
note X 페르소나에게 어떤 관점으로 평가할지 지시하는 메모. 프롬프트의 "시나리오 관점" 섹션에 들어갑니다.
service_description X 해당 시나리오에서 사용할 서비스 설명. 생략하면 프로젝트 기본 설명이 사용됩니다. \n으로 줄바꿈, ---로 기본 설명과 추가 메시지를 구분하는 것이 좋습니다.
action_label X 평가할 행동(예: "설치 및 지속 사용"). 생략하면 프로젝트 기본값이 사용됩니다.

작성 팁

  • 같은 key로 여러 변형을 넣을 수 있습니다. 예를 들어 key: "creative_test"인 항목을 3개 넣으면 3개의 크리에이티브 변형이 A/B/C처럼 비교됩니다.
  • service_description\n\n---\n 구분자를 쓰면 기본 서비스 설명과 테스트용 추가 메시지가 시각적으로 분리됩니다.
  • note는 페르소나에게 주는 관점 지시입니다. "공감형 카피", "데이터형 카피"처럼 평가자가 어떤 렌즈로 볼지 힌트를 줍니다.
  • label은 리포트에 그대로 노출되므로 구분하기 쉬운 이름을 쓰세요.

실행 예시

# scenarios.json으로 실행
python simulator.py --project bugi --scenario-file ./scenarios.json --fallback-only --synthetic-data

# 내장 프리셋만 사용 (scenarios.json 없이)
python simulator.py --project bugi --scenarios baseline,creative_test,pricing,brand --fallback-only --synthetic-data

시스템 요구사항

  • macOS 12+ (Apple Silicon 또는 Intel)
  • Python 3.9+
  • RAM: 최소 8GB (권장 16GB+)
  • 디스크: 모델당 4~8GB
  • 인터넷: 최초 데이터셋 및 모델 다운로드 시 필요

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors