인사이트

VESSL에서 OpenAI GPT‑OSS를 LoRA로 파인튜닝하는 가장 쉬운 방법

GPT-OSS 파인튜닝을 VESSL에서.

VESSL에서 OpenAI GPT‑OSS를 LoRA로 파인튜닝하는 가장 쉬운 방법

이 가이드는 VESSL 플랫폼에서 OpenAI GPT‑OSS 모델(20B, 120B)을 LoRA로 파인튜닝하고, 결과물을 모델 레지스트리 업로드 → 서빙까지 연결하는 과정을 단계별로 설명합니다.

What is GPT‑OSS?

GPT‑OSS는 OpenAI가 2025년 8월 5일 공개한 오픈‑웨이트 모델 패밀리로, Harmony 응답 포맷과 MXFP4(4‑bit) 양자화를 채택해 대형 모델을 단일 H100 80 GB(120B) / 16 GB급(20B) 환경에서도 구동할 수 있도록 설계되었습니다. 상용 모델과는 달리 누구나 무료로 다운로드, 사용할 수 있으며 사용자의 목적에 맞게 수정할 수 있습니다. GPT-OSS의 라이선스는 Apache‑2.0입니다.(OpenAI)

1) MoE(Mixture‑of‑Experts) 아키텍처

MoE architecture
  • 120B: 128 전문가 중 토큰당 4개 활성, 20B: 32 전문가 중 4개 활성(shared expert 없음).
  • MoE 가중치가 전체 모델 파라미터의 90%를 차지하지만, 희소(sparse) 구조로, 추론 효율을 확보합니다.
  • 모델 크기 대비 매우 빠른 추론이 가능한 핵심 요소

2) Native MXFP4(마이크로스케일링 FP4)

MXFP4 Quantization with 4-bit Blocks
  • OCP(Open Compute Project) Microscaling Formats v1.0의 FP4 사양 기반으로, 32개 단위의 블록 스케일링을 적용합니다.
  • FP4는 확률적 반올림(Stochastic Rounding)과 RHT(Random Hadamard Transform)과 결합해, 대형 MoE 가중치에 4‑bit 정밀도(precision)를 적용하면서도 정확도를 유지하도록 설계되었으며 추론뿐만 아니라 학습에서도 직접 사용 가능합니다.

3) Harmony 포맷(대화/추론/툴 호출)

Harmony format
  • GPT‑OSS는 Harmony 포맷으로 사후학습(post‑training) 되어 있으며, o200k_harmony 토크나이저와 함께 사용하는 것이 권장됩니다.
  • 다중 채널 출력: CoT(Chain‑of‑Thought), 도구 호출(tool call), 일반 응답을 지원하며, 명확한 지시 계층 구조와 도구 네임스페이스를 제공합니다.
    • 역할/채널 체계: system / developer / user / assistant / tool + analysis / final
  • 추론(reasoning) 아웃풋 또는 structured function call(= tool call)을 효율적으로 생성할 수 있도록 설계되어 있습니다.

왜 VESSL로 GPT‑OSS 파인튜닝을 해야 할까요?

  • 즉시 사용 가능한 학습 환경: GPT‑OSS 학습에 맞춘 Torch/CUDA Triton 커널이 포함된 컨테이너 이미지를 제공하여 바로 실행할 수 있습니다.
  • 최적화된 하드웨어: H100 80 GB로 20B/120B 모두 대응. 120B는 단일 GPU 적재도 가능하지만 처리량을 위해 TP(Tensor Parallel) 구성을 권장합니다. (vLLM Blog)
  • 통합 ML/LLMOps 환경: 실시간 학습 지표 모니터링, 자동 체크포인트·모델 저장, 레지스트리·원클릭 배포까지 엔드‑투‑엔드 워크플로를 제공합니다.

단계별 가이드

1. VESSL 계정 및 프로젝트 생성

먼저 vessl.ai에서 VESSL 계정을 생성하고, 대시보드에서 새 프로젝트를 원하는 이름으로 만듭니다. 예제에서는 gpt-oss-finetuning 이름을 사용합니다.

Create a VESSL account and project.

2. VESSL CLI 설정

VESSL CLI를 설치하고 CLI 환경을 설정합니다.

# Install VESSL CLI (skip if already installed)
pip install vessl

# Configure VESSL
vessl configure --organization YOUR_ORG_NAME --project gpt-oss-finetuning
Configure the VESSL CLI.

3. 예제 레포지토리 클론

VESSL 예제 레포지토리에 이미 GPT‑OSS를 파인튜닝하기 위한 코드와 레시피가 포함되어 있습니다. 레포지토리를 클론하고 파인튜닝 디렉토리로 이동합니다.

git clone https://github.com/vessl-ai/examples.git
cd examples/runs/finetune-llms

4. 파인튜닝 실행

finetune-llms 폴더에는 파인튜닝에 필요한 아래와 같은 스크립트들이 준비되어 있습니다.

  • 파인튜닝 스크립트: main.py, model.py, dataset.py 등 모델을 효율적으로 파인튜닝하기 위한 최적화된 코드
  • VESSL Run 템플릿: run_yamls/run_lora_gpt_oss.yaml — VESSL에서 바로 실행 가능한 파인튜닝 설정 파일

run_lora_gpt_oss.yaml 파일을 열어 설정을 확인해봅니다. 주요 설정은 다음과 같습니다.

  • 모델 및 데이터셋:
env:
  MODEL_NAME: openai/gpt-oss-20b  # or openai/gpt-oss-120b
  DATASET_NAME: HuggingFaceH4/Multilingual-Thinking
  REPOSITORY_NAME: gpt-oss-20b-multilingual-reasoner
  • HuggingFace에 업로드된 HuggingFaceH4/Multilingual-Thinking 데이터셋을 사용하여 학습 진행 - Huggingface에 올라온 다른 데이터셋 혹은 별도의 데이터셋 사용도 가능합니다.
  • gpt-oss-20b-multilingual-reasoner라는 이름의 VESSL Model에 모델이 저장됩니다.
  • 리소스 설정:
resources:
  cluster: vessl-eu-h100-80g-sxm
  preset: gpu-h100-80g-small
image: quay.io/vessl-ai/torch:2.8.0-cuda12.8
  • gpu-h100-80g-small: H100 80 GB 1장 사용. gpt-oss-120b과 같은 큰 사이즈 모델 학습 긴 시퀀스·고처리량이 필요하면 멀티 GPU/TP 구성을 권장합니다.
  • GPT‑OSS를 지원하는 Torch 2.8.0 + CUDA 12.8 컨테이너 환경 사용.
  • 학습 하이퍼파라미터
    • lora_r: 32 - 파라미터 효율성을 위한 LoRA 랭크
    • lora_alpha: 64 - LoRA 스케일링 팩터
    • lora_target_modules: all-linear - MoE 전문가 레이어를 포함한 모든 선형 레이어 대상
  • 최적화 설정:
    • lr_scheduler_type: cosine_with_min_lr - 최소 학습률(learning rate)이 있는 코사인 스케줄
    • warmup_ratio: 0.03 - 3% 워밍업 스텝
  • 메모리 최적화:
    • load_in_4bit: True - 메모리 효율을 위한 4비트 양자화
    • gradient_checkpointing: True - 메모리를 위해 연산 트레이드오프
    • per_device_train_batch_size: 4 - GPU당 배치 크기
    • gradient_accumulation_steps: 4 - 실질적 배치 크기 16
  • bf16: True - GPT-OSS에 필요한 BFloat16 정밀도

설정 파일을 활용해 아래 커맨드로 모델 학습을 위한 VESSL Run을 생성합니다:

vessl run create -f run_yamls/run_lora_gpt_oss.yaml
Create a run on VESSL.

5. 학습 진행상황 모니터링

Monitor logs on VESSL

Run이 생성되면 콘솔 로그에 대시보드 링크가 나타납니다. 대시보드에서 작업의 상세 정보, 로그, 실험 메트릭을 확인할 수 있습니다.

Docker 이미지 풀링·모델 다운로드 속도에 따라 시작이 지연될 수 있습니다. 로그에 Pulling image "..."가 보이면 정상입니다.

The screen the run is performing.The logs in the run.The plots (epoch, grad_norm, learning_rate, loss, mean_token_accuracy, num_tokens) in run.
메모리 부족(OOM, Out Of Memory) 트러블슈팅 가이드

아래의 사항을 하나씩 수정하면서 문제를 해결해보세요.

1. per_device_train_batch_size를 2 또는 1로 감소
2. gradient_accumulation_steps를 그에 맞게 증가
3. lora_r을 32에서 16으로 감소
4. max_length를 2048에서 1024로 감소

6. 모델 업로드 확인

학습이 완료되면 LoRA 어댑터가 자동으로 VESSL Model에 업로드됩니다.

The LoRA adapter is uploaded VESSL Model

모델 각 버전의 상세 내용에서 실제 업로드된 LoRA 어댑터들의 파일도 확인할 수 있습니다.

The uploaded files in "Files" of Models

모델에는 다음과 같은 내용이 포함되어 있습니다:

  • LoRA 어댑터 가중치 (adapter_model.safetensors)
  • 설정 파일 (adapter_config.json)
  • 모델의 README.md

7. 파인튜닝된 어댑터 서빙: 직서빙 vs 병합(merge)

대부분의 모델 인퍼런스 프레임워크(예: vLLM)가 2025년 8월 현재는 GPT-OSS의 LoRA 어댑터 서빙을 아직 지원하지 않습니다. 따라서, 추론 작업 실행을 위해서는 모델 어댑터를 병합(merge) 후 실행해야 합니다.

어댑터를 머지한 후 머지된 모델로 추론을 진행하는 추론 서버(Inference Server)를 실행합니다.

# Modify {YOUR_ORGANIZATION} in the YAML to your actual organization name
vessl run create -f run_yamls/run_lora_gpt_oss_merge.yaml
Run 내의 엔드포인트

아래와 같이 서버가 실행되면 Connect Dropdown에서 Api 버튼을 눌러 endpoint에 접근해볼 수 있습니다.

아래의 파이썬 스크립트를 활용해 파인튜닝된 API를 테스트해보세요!

#!/usr/bin/env python3
"""
Simple streaming test script for GPT-OSS API
"""
import openai
from datetime import datetime

# Configure client for your GPT-OSS server
client = openai.OpenAI(
    base_url="https://{YOUR_API_ENDPOINT}/v1",
    api_key="dummy"  # Not needed for our server
)

# OpenAI Harmony format system prompt
current_date = datetime.now().strftime("%Y-%m-%d")
system_prompt = f"""
<|start|>system<|message|>You are VESSL-GPT, a large language model fine-tuned on VESSL.
Knowledge cutoff: 2024-06
Current date: {current_date}
Reasoning: low
# Valid channels: analysis, commentary, final. Channel must be included for every message.<|end|>
"""

def test_streaming():
    print("🚀 Testing GPT-OSS Streaming...")
    print("=" * 50)

    try:
        stream = client.chat.completions.create(
            model="gpt-oss-20b",
            messages=[
                {"role": "system", "content": system_prompt},
                {"role": "user", "content": "Write a haiku about artificial intelligence"}
            ],
            max_tokens=1024,
            temperature=0.7,
            stream=True
        )

        print("🤖 GPT-OSS: ", end="", flush=True)

        for chunk in stream:
            if chunk.choices[0].delta.content:
                content = chunk.choices[0].delta.content
                print(content, end="", flush=True)

        print("\n" + "=" * 50)
        print("✅ Streaming test completed!")

    except Exception as e:
        print(f"❌ Error: {e}")

if __name__ == "__main__":
    test_streaming()

참고자료

VESSL은 엔터프라이즈 환경에서 GPT‑OSS 워크로드를 운영하기 위한 통합 ML/LLMOps입니다. 모델 저장소를 통해 파인튜닝 산출물을 체계적으로 관리하고 신속하게 서비스를 배포할 수 있습니다.

각종 보안 정책과 인프라 제약이 있는 환경에서 ML/LLMOps를 활용해 최신 오픈소스 모델을 내부망에 구축하고 싶으시다면 sales@vessl.ai 혹은 영업 담당자와 상담하기로 문의주세요. 친절하게 상담 도와드리겠습니다.

Jay Chun

Jay Chun

CTO

Ian Lee

Ian Lee

Solutions Engineer

Wayne Kim

Wayne Kim

Product Marketer

배너를 클릭해 GPT-OSS 챗봇을 체험해보세요.

Recommeded posts

MLOps for high-performance ML teams

© 2025 VESSL AI, Inc. All rights reserved.