GPT-OSS 파인튜닝을 VESSL에서.
이 가이드는 VESSL 플랫폼에서 OpenAI GPT‑OSS 모델(20B, 120B)을 LoRA로 파인튜닝하고, 결과물을 모델 레지스트리 업로드 → 서빙까지 연결하는 과정을 단계별로 설명합니다.
GPT‑OSS는 OpenAI가 2025년 8월 5일 공개한 오픈‑웨이트 모델 패밀리로, Harmony 응답 포맷과 MXFP4(4‑bit) 양자화를 채택해 대형 모델을 단일 H100 80 GB(120B) / 16 GB급(20B) 환경에서도 구동할 수 있도록 설계되었습니다. 상용 모델과는 달리 누구나 무료로 다운로드, 사용할 수 있으며 사용자의 목적에 맞게 수정할 수 있습니다. GPT-OSS의 라이선스는 Apache‑2.0입니다.(OpenAI)
system / developer / user / assistant / tool
+ analysis / final
먼저 vessl.ai에서 VESSL 계정을 생성하고, 대시보드에서 새 프로젝트를 원하는 이름으로 만듭니다. 예제에서는 gpt-oss-finetuning
이름을 사용합니다.
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
VESSL 예제 레포지토리에 이미 GPT‑OSS를 파인튜닝하기 위한 코드와 레시피가 포함되어 있습니다. 레포지토리를 클론하고 파인튜닝 디렉토리로 이동합니다.
git clone https://github.com/vessl-ai/examples.git
cd examples/runs/finetune-llms
finetune-llms
폴더에는 파인튜닝에 필요한 아래와 같은 스크립트들이 준비되어 있습니다.
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
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 구성을 권장합니다.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
- 실질적 배치 크기 16bf16: True
- GPT-OSS에 필요한 BFloat16 정밀도설정 파일을 활용해 아래 커맨드로 모델 학습을 위한 VESSL Run을 생성합니다:
vessl run create -f run_yamls/run_lora_gpt_oss.yaml
Run이 생성되면 콘솔 로그에 대시보드 링크가 나타납니다. 대시보드에서 작업의 상세 정보, 로그, 실험 메트릭을 확인할 수 있습니다.
Docker 이미지 풀링·모델 다운로드 속도에 따라 시작이 지연될 수 있습니다. 로그에 Pulling image "..."가 보이면 정상입니다.
메모리 부족(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로 감소
학습이 완료되면 LoRA 어댑터가 자동으로 VESSL Model에 업로드됩니다.
모델 각 버전의 상세 내용에서 실제 업로드된 LoRA 어댑터들의 파일도 확인할 수 있습니다.
모델에는 다음과 같은 내용이 포함되어 있습니다:
adapter_model.safetensors
)adapter_config.json
)대부분의 모델 인퍼런스 프레임워크(예: 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
아래와 같이 서버가 실행되면 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 혹은 영업 담당자와 상담하기로 문의주세요. 친절하게 상담 도와드리겠습니다.
CTO
Solutions Engineer
Product Marketer