본문 바로가기
Python

AI 모델 비교하기 GPT, Deepseek, Mistralai

by Byeong 2025. 4. 4.

AI 모델 선택하기

적합한 AI 모델 선택

교수안 제작을 위해 적합한 AI 모델을 적용해야 했으며, 원하는 답변을 얻기위해 AI를 학습시킬 필요가 있었다. Deepseek과 Mistralai를 검토했지만, 한국어 지원이 부족한 부분이 있었고, 로컬 환경에서의 성능과 학습 시간 등을 고려했을 때 적합하지 않았다.

이에 따라 로컬환경의 제약 없이 파인튜닝이 가능한 OpenAI를 선택하게 되었다.

AI 모델 선택 비교 표

모델 이름 한국어 지원 성능 로컬 환경에서의 성능 적합성

skt/kogpt2-base-v2 탁월한 한국어 지원 다소 느림 (GPU 필요) 질문 응답, 문장 완성, 챗봇 등에 적합하지만 교수안 제작에는 미흡
mistralai/Mistral-7B-Instruct-v0.3 영어 지원에 최적화 로컬 환경에서 비효율적 (큰 메모리 요구) 영어 위주 작업에 적합, 한국어 지원 미흡
deepseek-ai/DeepSeek-R1 한국어 지원 미흡 (주로 영어, 중국어) 로컬 환경에서 성능 부족, 다운로드 시간 너무 김 큰 모델로 성능이 뛰어나지만, 한국어 적용 어려움
GPT-3.5-turbo 뛰어난 한국어 지원 빠른 파인튜닝 및 로컬 환경 영향 없음 교수안 제작에 적합, 다양한 작업에 유연함

하지만 GPT-3.5-turbo 보다는 학습시 가격이 저렴하고 가볍고 빠른 gpt-4o-mini 모델을 사용하기로 했다.

 


모델 : skt/kogpt2-base-v2

SKT에서 개발했으며, GPT-2 모델 기반의 한국어 학습을 시킨 모델이다. 한국어 지원은 탁월 했지만 질문에 대한 응답 생성, 문장 완성, 챗봇 등을 위해 만들어진 모델이다 보니 교수안 제작에는 적합하지 않다.

import numpy as np
import random
import tensorflow as tf
from transformers import AutoTokenizer
from transformers import TFGPT2LMHeadModel

model = TFGPT2LMHeadModel.from_pretrained('skt/kogpt2-base-v2', from_pt=True)
tokenizer = AutoTokenizer.from_pretrained('skt/kogpt2-base-v2')

sent = '과학 수업에 대한 교수안은'

# 문자열 정수 시퀸스로 변환
input_ids = tokenizer.encode(sent)
input_ids = tf.convert_to_tensor([input_ids])
print(input_ids)

# 주어진 문장을 이어서 작성한 내용의 시퀸스 반환
output = model.generate(input_ids,
                        max_length=128,
                        repetition_penalty=2.0,
                        use_cache=True)
output_ids = output.numpy().tolist()[0]
print(output_ids)

# 정수 시퀀스를 한국어로 변환
tokenizer.decode(output_ids)

해당 모델을 적용하며 AI 활용도와 학습시키는 방법들을 찾아보게되었으며 적합한 모델을 찾기 위해 노력했다.


모델 : mistralai/Mistral-7B-Instruct-v0.3

가볍게 사용이 가능하다고는 했지만 나의 로컬 환경에서는 적합하지 않았으며 주로 영어 데이터에 최적화가 되어 있어 적합 하지 않았다.

from transformers import AutoModelForCausalLM, AutoTokenizer
from huggingface_hub import login
login(token="my_token")

model = AutoModelForCausalLM.from_pretrained("mistralai/Mistral-7B-Instruct-v0.3", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-

 


모델 : "deepseek-ai/DeepSeek-R1"

좋은 성능의 모델을 사용하고 싶어 해당 모델을 적용하고 싶어 테스트를 진행했지만 나의 로컬 환경에서 적용하기에는 선능이 부족했으며 시간도 많이 발생했다. 또한 영어와 중국어는 지원을 잘 하지만 한국어 지원은 미흡했다.

from transformers import AutoModelForCausalLM, AutoTokenizer
from huggingface_hub import login
login(token="my_token")

model_name = "deepseek-ai/DeepSeek-R1"  
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

input_text = "고등학교 1학년 물리학 교수안을 작성해줘."
input_ids = tokenizer(input_text, return_tensors="pt").input_ids

output = model.generate(input_ids, max_length=100)
print(tokenizer.decode(output[0], skip_special_tokens=True))

Deepseek 적용 이슈

ValueError: Unknown quantization type, got fp8 - supported types are: 
['awq', 'bitsandbytes_4bit', 'bitsandbytes_8bit', 'gptq', 'aqlm', 
'quanto', 'eetq', 'higgs', 'hqq', 'compressed-tensors', 'fbgemm_fp8', 
'torchao', 'bitnet', 'vptq']

해당 에러는 fp8라는 양자화 유형을 지원하지 않아서 발생하는 에려였다.

양자화는 모델 크기를 줄이거나 계산 효율을 높이기 위한 모델의 가중치를 저정밀도로 표현하는 기술이라고 한다.

해결 방법

양자화 없이 모델를 로드 하는 방법을 사용했다.

https://github.com/huggingface/transformers/issues/35471

나와 같은 문제가 발생한 분의 코들 고대로 사용해 봤다. 코드 이해는 GPT를 통해 참고했습니다.

# 로깅 설정
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def load_model_without_quantization(
    model_name: str = "deepseek-ai/DeepSeek-R1",
    trust_remote_code: bool = True,
    device_map="auto",
    **kwargs
):
    try:
        # 원본 모델 로드 시도
        model = AutoModel.from_pretrained(
            model_name,
            trust_remote_code=trust_remote_code,
            device_map=device_map,
            **kwargs
        )
        tokenizer = AutoTokenizer.from_pretrained(model_name)
        logger.info("✅ Model loaded successfully with original settings.")
        return model, tokenizer

    except ValueError as e:
        if "Unknown quantization type" in str(e):
            logger.warning("⚠️ Unknown quantization type detected. Trying without quantization...")
            
            # 설정 파일에서 `quantization_config` 제거
            config = AutoConfig.from_pretrained(model_name, trust_remote_code=trust_remote_code)
            if hasattr(config, "quantization_config"):
                delattr(config, "quantization_config")

            try:
                # 양자화 없이 모델 로드
                model = AutoModel.from_pretrained(
                    model_name,
                    config=config,
                    trust_remote_code=trust_remote_code,
                    device_map=device_map,
                    **kwargs
                )
                tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=trust_remote_code)
                logger.info("✅ Model loaded successfully without quantization.")
                return model, tokenizer

            except Exception as inner_e:
                logger.error(f"❌ Failed to load model without quantization: {str(inner_e)}")
                raise
        else:
            logger.error(f"❌ Unexpected error during model loading: {str(e)}")
            raise

# 모델 로드 테스트
model, tokenizer = load_model_without_quantization()

양자화 없이 모델을 사용하려 했지만 다운로드 시간이 너무 오래 걸리는 것을 확인 후 포기를 했다.

 


모델 : GPT-3.5-turbo

openai 라이브러리를 사용하여 로컬환경의 영향없이 파인듀닝이 가능했으며 한국어 지원도 탁월했다.

pip install openai
from openai import OpenAI
client = OpenAI(api_key="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")

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    response_format={ "type": "json_object" },
    messages=[
        {"role": "system", "content": "You are a helpful assistant designed to output JSON."},
        {"role": "user","content": "교수안이 무엇인지 설명해줘"}
      ],
    max_tokens = 200,
)
result = response.choices[0].message.content
print(result)

 


참고 

https://github.com/skt-ai/kogpt2?utm_medium=social&utm_source=velog&utm_campaign=everyone ai&utm_content=kogpt2

https://wikidocs.net/159431

https://wikidocs.net/192341

https://wikidocs.net/184380

https://ggaebap.tistory.com/121
https://platform.openai.com/docs/overview

https://hyunicecream.tistory.com/78