Ludwig 설정 구조 — 하나의 config로 모든 것 선언하기

Ludwig 설정 구조 — 하나의 config로 모든 것 선언하기

Ludwig 모델은 하나의 config로 전체가 구성돼요. 입력/출력 피처, 전처리, 모델 아키텍처, 학습 루프, 하이퍼파라미터 탐색, 백엔드 인프라까지 모두 이 config에 담겨요. 쉬운 기본값 덕분에 초보자도 금방 쓰고, 고급 사용자는 세부 파라미터를 직접 조정할 수 있는 구조예요.

출처: https://ludwig.ai/latest/configuration/

config의 기본 구조

model_type: ecd
input_features: []
output_features: []
combiner: {}
preprocessing: {}
defaults: {}
trainer: {}
hyperopt: {}
backend: {}

각 필드가 하는 일을 정리하면:

  • model_type: 사용할 모델 변형. 기본은 ecd(신경망 기반 아키텍처). 텍스트 생성을 위한 llm도 지원해요.
  • input_features: 학습 데이터에서 모델 입력으로 쓸 컬럼, 데이터 타입, 전처리·인코딩 방법.
  • output_features: 모델이 예측할 타깃. 타입이 작업을 결정해요. number는 회귀, category는 다중 클래스 분류처럼요.
  • trainer: 배치 크기, 학습률, 에포크 수 등 학습 과정 제어.
  • backend: 학습 중 사용할 라이브러리·분산 전략, GPU 여부 등 인프라·런타임 옵션.

어떤 필드가 필수인가

input_featuresoutput_features만 필수이고, 나머지는 합리적인 기본값을 써요. Ludwig가 말하는 "합리적"은 "나쁜 결과를 내놓을 가능성이 낮고, 일반 하드웨어에서 적당한 시간 안에 학습되는" 기본값이에요. 즉 좋은 출발점이 되는 baseline config에 고급 옵션을 얹는 방식이에요.

config 생성과 렌더링

처음부터 다 쓸 필요 없어요. CLI로 데이터셋으로부터 초기 config를 만들 수 있어요.

ludwig init_config --dataset ludwig://sst2 --target label --output sst2.yaml

기본값을 채워 실제로 쓰일 전체 config를 보고 싶다면 렌더링해요.

ludwig render_config --config sst2.yaml --output sst2_rendered.yaml

config를 표현하는 방법

config는 Python 딕셔너리(CLI의 --config_str) 또는 YAML 파일(--config)로 표현할 수 있어요.

더 알아보기

각 필드의 전체 파라미터 목록은 공식 Configuration 문서에서 확인할 수 있어요.