Phi-3-mini-4k-instruct와 Anaconda 연동을 통한 데이터 과학 작업 흐름 구축

작업 환경 구성 및 모델 배포

현대 데이터 과학 작업에서 반복적인 코드 작성과 복잡한 개념 설명에 시간을 소비하는 상황은 흔합니다. 이 문제를 해결하기 위해, 작은 규모이지만 강력한 추론 능력을 지닌 Phi-3-mini-4k-instruct 모델을 Anaconda 환경에 통합해 실시간으로 활용할 수 있는 방법을 소개합니다.

1. 왜 Phi-3-mini인가?

약 38억 파라미터로 설계된 이 모델은 대규모 언어 모델보다는 빠른 응답 속도와 낮은 시스템 요구 사항을 갖추고 있습니다. 특히 CPU 기반 실행이 가능하며, 일반 노트북에서도 부드럽게 동작합니다. 또한 MIT 라이선스 하에 공개되어 있어 상용 프로젝트에도 안전하게 사용할 수 있습니다.

2. 환경 설정

먼저 새로운 가상 환경을 생성하고 필요한 라이브러리를 설치합니다.

conda create -n ds-ai-env python=3.10
conda activate ds-ai-env
conda install numpy pandas matplotlib seaborn scikit-learn jupyter

3. 모델 실행 라이브러리 설치

GGUF 형식의 모델을 로컬에서 실행하기 위해 llama-cpp-python를 설치합니다:

pip install llama-cpp-python

4. 모델 다운로드 및 저장

Hugging Face에서 최적화된 4비트 양자화 버전을 다운로드합니다:

from huggingface_hub import hf_hub_download

model_path = hf_hub_download(
    repo_id="microsoft/Phi-3-mini-4k-instruct-gguf",
    filename="Phi-3-mini-4k-instruct-q4.gguf",
    local_dir="./models"
)

5. Jupyter 노트북에서 모델 통합

새로운 노트북 파일을 열고 다음 코드로 모델 초기화:

from llama_cpp import Llama
import warnings
warnings.filterwarnings('ignore')

llm = Llama(
    model_path="./models/Phi-3-mini-4k-instruct-q4.gguf",
    n_ctx=4096,
    n_threads=8,
    n_gpu_layers=0,
    verbose=False
)

6. 실제 데이터 과학 작업 예시

데이터 정제 코드 생성

결측치, 이상치, 형식 불일치 등 문제를 자동으로 처리하는 코드를 요청:

def query_model(prompt):
    system_prompt = "당신은 전문 데이터 과학자입니다. 파이썬 코드로 답변하세요."
    full_input = f"<|system|>{system_prompt}<|end|><|user|>{prompt}<|end|><|assistant|>"
    
    response = llm(
        full_input,
        max_tokens=512,
        stop=["<|end|>"],
        echo=False,
        temperature=0.2
    )
    return response['choices'][0]['text'].strip()

# 예시 질문
question = """
DataFrame에 'age', 'salary', 'region' 컬럼이 있습니다.
- age: 음수 값 또는 120 이상 값 존재
- salary: 문자열 포함 (예: '$50,000')
- region: 대소문자 혼재 및 오타 있음
정제 코드를 작성해주세요.
"""

result = query_model(question)
print(result)

통계 개념 설명 요청

복잡한 통계 용어를 쉽게 이해하도록 도와줍니다:

question = "p-value가 0.05 미만일 때 의미하는 바를, 일상적인 비유를 들어 설명해줘."

answer = query_model(question)
print(answer)

시각화 제안 및 코드 제공

데이터 분석 결과를 효과적으로 표현할 수 있는 그래프 유형과 코드를 제안받습니다:

question = """
매월 제품군별 매출 데이터가 있습니다.
시간 경과에 따른 판매 추세를 보여주기 위해 어떤 차트를 추천하나요?
matplotlib으로 예제 코드를 만들어주세요."""

visual_suggestion = query_model(question)
print(visual_suggestion)

7. 성능 최적화 팁

  • 온도 조절: 코드 생성에는 temperature=0.1~0.3, 창의적 아이디어에는 0.6~0.8 권장
  • 출력 길이 조절: 너무 짧으면 max_tokens 증가, 너무 길면 일부 잘라내기
  • 메모리 절약: n_ctx 값을 줄여 메모리 사용량 감소
  • 입력 명확성: "pandas 1.5+ 문법 사용", "함수로 감싸서 반환" 등의 지시 포함

8. 주요 문제 해결

  • 응답 지연: n_ctx 값을 2048 이하로 낮추기
  • 메모리 부족: 2비트 또는 3비트 양자화 모델로 전환
  • 코드 출력 불완전: max_tokens 값을 1024 이상으로 설정
  • 출력 불안정: temperature를 0.3 이하로 낮춰 결정론적 출력 확보

결론

Phi-3-mini-4k-instruct를 Anaconda 환경에 통합하면, 데이터 수집부터 분석, 시각화까지 전 단계에서 인공지능 지원을 받을 수 있습니다. 고가의 하드웨어 없이도 실시간으로 코드 제안, 개념 설명, 시각화 방안 등을 제공하며, 특히 초보자에게 매우 유용합니다. 단순한 보조 도구를 넘어, 창의적 작업 흐름의 핵심 파트로 자리 잡을 수 있습니다.

태그: Phi-3-mini Anaconda llama-cpp-python GGUF 데이터 과학

6월 13일 21:29에 게시됨