메인 콘텐츠로 건너뛰기

Gemma 3 270M: 초소형 AI 모델과 오프라인 미세튜닝

설탕사과
설탕사과
조회수 42
요약

Gemma 3 270M 모델의 특징

구글은 Gemma 3 270M이라는 매우 가벼운 AI 모델을 출시했습니다. 이 모델은 약 0.5GB의 RAM만 있으면 구동이 가능하니, 웬만한 노트북이나 데스크톱에서도 쉽게 사용할 수 있는 것이 장점입니다. 작은 용량이지만, LLM(대형언어모델)의 기본 기능을 충실히 수행합니다.

실험 목표: 체스 문제 해결

실험자는 체스에서 거의 끝난 게임 상태를 모델에 보여주고, 다음에 들어갈 마지막 한 수(결정적 움직임)를 맞추게 하는 실험을 진행했습니다. 모든 작업은 클라우드 서버나 GPU가 아닌 집에서, 별다른 비용 없이 오프라인으로 완료되었습니다.

실험 도구 및 라이브러리

실험을 위해 다음 툴들을 활용했습니다.

  • Unsloth AI: 경량 모델 미세튜닝을 빠르게 진행할 수 있는 도구

  • Hugging Face Transformers: LLM 실행과 튜닝 표준 라이브러리

  • ChessInstruct 데이터셋: 마지막 한 수가 빠진 체스 게임을 모아둔 데이터

모델 불러오기 예시

Unsloth를 이용해 Gemma 3 모델을 바로 불러옵니다.

# pip install unsloth
from unsloth import FastLanguageModel
MODEL = unsloth/gemma-3-270m-it
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = MODEL,
    max_seq_length = 2048,
    dtype = None,
    load_in_4bit = False,
    full_finetuning = False)

몇 줄 코드로 아주 쉽게 LLM 모델을 준비할 수 있습니다.

LoRA로 효율적인 미세튜닝

모델 전체를 새로 학습시키는 대신 LoRA(저장소 효율형 어댑터) 방법을 사용했습니다. 기존 모델에 몇 개의 새 신경망만 더하는 방식이라 자원을 거의 쓰지 않으면서 성능을 끌어올릴 수 있습니다.

from unsloth import FastModel
model = FastModel.get_peft_model(
    model,
    r = 128,
    target_modules = [
        q_proj, k_proj, v_proj, o_proj,
        gate_proj, up_proj, down_proj
    ],
    use_gradient_checkpointing = unsloth,
    lora_alpha = 128,
    lora_dropout = 0,
    bias = none,
    random_state = 3407
)

체스 데이터셋 활용

체스 게임 데이터의 일부분이 빠진 상태에서, AI가 그 빈칸을 채우는 문제를 연습용 데이터로 삼았습니다.

from datasets import load_dataset
dataset = load_dataset(Thytu/ChessInstruct, split=train[:10000])

‘Moves: c2c4, g8f6, b1c3, ..., ?, result: 1/2-1/2’처럼 한 수가 비어 있는 예시를 포함합니다.

대화 채팅 포맷으로 데이터 변환

AI 모델이 대화 형식의 입력을 잘 이해하도록, 데이터를 대화 구조로 변환합니다.

from unsloth.chat_templates import standardize_data_formats
dataset = standardize_data_formats(dataset)
def convert_to_chatml(example):
    return {
        conversations: [
            {role: system, content: example[task]},
            {role: user, content: str(example[input])},
            {role: assistant, content: example[expected_output]}
        ]
    }
dataset = dataset.map(convert_to_chatml)

이렇게 하면 체스 문제와 답이 대화 방식으로 전달되어, LLM이 효과적으로 학습합니다.

간단한 학습 설정

몇 가지 파라미터(배치 크기, 학습 스텝 등)만 지정하면 바로 훈련을 돌릴 수 있습니다.

from trl import SFTTrainer, SFTConfig
trainer = SFTTrainer(
    model=model,
    tokenizer=tokenizer,
    train_dataset=dataset,
    args=SFTConfig(
        per_device_train_batch_size=2,
        gradient_accumulation_steps=4,
        max_steps=100,
        learning_rate=5e-5,
        optim=adamw_8bit
    )
)

간단하게 설정 후, 본격적으로 학습을 시작합니다.

훈련 결과 및 의미

트레이닝이 진행될수록 모델의 ‘loss’ 값이 낮아졌습니다. 이는 AI가 체스 문제를 더 잘 풀게 됐다는 증거입니다. 학습 전에는 말도 안 되는 답을 했지만, 반복 학습하며 실제로 맞는 수를 추천할 수준까지 발전했습니다.

오프라인 미세튜닝의 장점

이번 실험은 누구나 집에서도, 특별한 하드웨어 없이 최신 AI 모델을 미세튜닝할 수 있음을 보여줍니다. 복잡한 시스템이나 비용 없이, 교육·엔터테인먼트·개인화 등의 다양한 영역에서 소형 모델을 충분히 활용할 수 있다는 점이 인상적입니다.


출처 : Google’s New LLM Runs on Just 0.5 GB RAM — Here’s How to Fine-Tune It Locally | by Civil Learning | Coding Nexus | Aug, 2025 | Medium

새로 추가된 섹션

설명을 위한 이미지 추가

아래 이미지는 Gemma 3 270M 모델의 로컬 미세튜닝 전체 흐름과 적용 예시를 시각적으로 나타냅니다. 체스 게임 예시 및 데이터 처리 방식이 포함되어 있어, 이해에 도움이 됩니다.

Gemma 3 270M 오프라인 미세튜닝 개요

  • 이미지 상단에는 RAM 0.5GB 환경에서의 모델 구동과 Unsloth를 통한 모델 불러오기 단계를, 중간에는 ChessInstruct 데이터셋과 대화 포맷 변환 과정을, 하단에는 실제 미세튜닝 후 체스의 한 수를 맞추는 예시 결과를 보여줍니다.

팩트체크

  • 모델 용량: 공식 Gemma 3 270M 모델의 파라미터 수는 2억 7백만 개이며, 실제 배포 파일은 약 0.5~0.7GB의 디스크 용량을 차지합니다. 구글 공식 문서와 Hugging Face 페이지(Gemma 3 - Hugging Face)에서 확인 가능합니다.

  • 적용 환경: CPU만 있는 일반 노트북(예: 8GB 램, 4코어 i5)에서도 충분히 테스트 가능함을 커뮤니티와 여러 블로그 실사용 예시에서 확인했습니다.

  • Unsloth 라이브러리: Unsloth는 경량 LLM 튜닝에 특화된 라이브러리이며, Hugging Face Transformers와 호환됩니다.

  • 체스 데이터셋과 미세튜닝: ChessInstruct 데이터셋은 실제 체스 게임에서 한 수를 예측하도록 설계된 공개 데이터입니다. LoRA로 미세튜닝 시, 전체 매개변수 중 일부만 학습되어 효율성과 결과 개선이 동시에 확인되었습니다.

위 이미지와 팩트체크 내용을 참고하면 Gemma 3 270M의 오프라인 미세튜닝 절차와 실제 적용 가능성을 더 명확히 이해할 수 있습니다.