메인 콘텐츠로 건너뛰기
Colab에서 실행해 보기 OpenAI GPT-3.5 또는 GPT-4 모델의 파인튜닝 메트릭과 설정을 W&B에 기록하세요. W&B 생태계를 활용해 파인튜닝 실험, 모델, 데이터셋을 추적하고 동료들과 결과를 공유할 수 있습니다.
파인튜닝할 수 있는 모델 목록은 OpenAI 문서를 참고하세요.
파인튜닝을 위해 W&B를 OpenAI와 연동하는 방법에 대한 추가 정보는 OpenAI 문서의 W&B Integration 섹션을 참고하세요.

OpenAI Python API 설치 또는 업데이트

W&B OpenAI 파인튜닝 인테그레이션은 OpenAI 1.0 이상 버전에서 동작합니다. 최신 버전의 OpenAI Python API 라이브러리는 PyPI 문서를 참고하세요. OpenAI Python API를 설치하려면 다음 명령을 실행하세요:
pip install openai
이미 OpenAI Python API가 설치되어 있다면 다음 명령으로 업데이트할 수 있습니다:
pip install -U openai

OpenAI 파인튜닝 결과 동기화하기

OpenAI의 파인튜닝 API와 W&B를 연동하여 파인튜닝 메트릭과 설정을 W&B에 기록하세요. 이 작업을 위해 wandb.integration.openai.fine_tuning 모듈의 WandbLogger 클래스를 사용하세요.
from wandb.integration.openai.fine_tuning import WandbLogger

# 파인튜닝 로직

WandbLogger.sync(fine_tune_job_id=FINETUNE_JOB_ID)
OpenAI 자동 스캔 기능

파인튜닝 결과 동기화하기

스크립트에서 실행한 결과를 동기화하세요
from wandb.integration.openai.fine_tuning import WandbLogger

# 한 줄 명령어
WandbLogger.sync()

# 선택적 매개변수 전달
WandbLogger.sync(
    fine_tune_job_id=None,
    num_fine_tunes=None,
    project="OpenAI-Fine-Tune",
    entity=None,
    overwrite=False,
    model_artifact_name="model-metadata",
    model_artifact_type="model",
    **kwargs_wandb_init
)

Reference

ArgumentDescription
fine_tune_job_idclient.fine_tuning.jobs.create를 사용해 파인튜닝 작업을 생성할 때 받는 OpenAI Fine-Tune ID입니다. 이 인자가 None(기본값)인 경우, 아직 동기화되지 않은 모든 OpenAI 파인튜닝 작업이 W&B와 동기화됩니다.
openai_client초기화된 OpenAI 클라이언트를 sync에 전달합니다. 클라이언트를 제공하지 않으면 로거가 자체적으로 클라이언트를 초기화합니다. 기본값은 None입니다.
num_fine_tunesID를 제공하지 않으면, 동기화되지 않은 모든 파인튜닝 작업이 W&B에 로깅됩니다. 이 인자는 최근 파인튜닝 작업 중에서 동기화할 개수를 선택할 수 있게 해 줍니다. 예를 들어 num_fine_tunes가 5이면, 가장 최근 파인튜닝 5개를 선택합니다.
project파인튜닝 메트릭, 모델, 데이터 등을 로깅할 W&B 프로젝트 이름입니다. 기본 프로젝트 이름은 “OpenAI-Fine-Tune.”입니다.
entityrun을 전송할 대상이 되는 W&B 사용자 이름 또는 팀 이름입니다. 기본적으로는 기본 entity가 사용되며, 보통 본인의 사용자 이름입니다.
overwrite동일한 파인튜닝 작업에 해당하는 기존 wandb run이 있더라도 강제로 로깅하고 덮어씁니다. 기본값은 False입니다.
wait_for_job_successOpenAI 파인튜닝 작업이 시작되면 일반적으로 어느 정도 시간이 걸립니다. 파인튜닝 작업이 끝나는 즉시 메트릭을 W&B에 로깅하려면, 이 설정이 60초마다 파인튜닝 작업 상태가 succeeded로 변경되었는지 확인합니다. 파인튜닝 작업이 성공한 것으로 감지되면 메트릭이 자동으로 W&B와 동기화됩니다. 기본값은 True입니다.
model_artifact_name로깅되는 모델 아티팩트의 이름입니다. 기본값은 "model-metadata"입니다.
model_artifact_type로깅되는 모델 아티팩트의 타입입니다. 기본값은 "model"입니다.
**kwargs_wandb_initwandb.init()에 직접 전달되는 추가 인자입니다.

데이터셋 버전 관리 및 시각화

버전 관리

파인튜닝을 위해 OpenAI에 업로드하는 트레이닝 및 검증 데이터는 버전 관리를 더 쉽게 할 수 있도록 자동으로 W&B Artifacts에 로깅됩니다. 아래는 Artifacts에서 트레이닝 파일을 보여주는 화면입니다. 여기에서 이 파일을 로깅한 W&B run, 로깅된 시점, 이 데이터셋의 버전, 메타데이터, 그리고 트레이닝 데이터에서 학습된 모델까지의 DAG 계보를 확인할 수 있습니다.
트레이닝 데이터셋이 포함된 W&B Artifacts

시각화

데이터셋은 W&B Tables로 시각화되며, 이를 통해 데이터셋을 탐색하고 검색하며 상호작용할 수 있습니다. 아래에서는 W&B Tables로 시각화한 트레이닝 샘플을 확인할 수 있습니다.
OpenAI 데이터

파인튜닝된 모델과 모델 버전 관리

OpenAI는 파인튜닝된 모델의 ID를 제공합니다. 우리는 모델 가중치에 접근 권한이 없으므로, WandbLogger는 모델에 대한 모든 세부 정보(하이퍼파라미터, 데이터 파일 ID 등)와 fine_tuned_model`` ID를 포함한 model_metadata.json` 파일을 생성하고, 이를 W&B Artifact로 기록합니다. 이 모델(메타데이터) 아티팩트는 나중에 W&B Registry의 모델과 연결할 수 있습니다.
OpenAI 모델 메타데이터

자주 묻는 질문

W&B에서 파인튜닝 결과를 팀과 어떻게 공유할 수 있나요?

다음과 같이 파인튜닝 작업을 팀 계정으로 기록하세요:
WandbLogger.sync(entity="YOUR_TEAM_NAME")

run을 어떻게 정리할 수 있나요?

W&B run은 자동으로 구성되며, job 타입, base 모델, learning rate, 트레이닝 파일 이름, 그리고 기타 모든 하이퍼파라미터와 같은 어떤 설정 파라미터를 기준으로든 필터링하거나 정렬할 수 있습니다. 또한 run 이름을 바꾸거나 노트를 추가하거나 태그를 만들어 그룹화할 수도 있습니다. 구성이 만족스러우면 워크스페이스를 저장한 다음, run과 저장된 아티팩트(트레이닝/검증 파일)에서 데이터를 가져와 리포트를 생성하는 데 사용할 수 있습니다.

파인튜닝된 모델에는 어떻게 접근할 수 있나요?

파인튜닝된 모델 ID는 아티팩트(model_metadata.json)와 설정으로 W&B에 기록됩니다.
import wandb
    
with wandb.init(project="OpenAI-Fine-Tune", entity="YOUR_TEAM_NAME") as run:
    ft_artifact = run.use_artifact("ENTITY/PROJECT/model_metadata:VERSION")
    artifact_dir = ft_artifact.download()
여기서 VERSION은 다음 중 하나입니다:
  • v2와 같은 버전 번호
  • ft-xxxxxxxxx와 같은 파인튜닝 ID
  • latest처럼 자동으로 추가된 별칭이거나 수동으로 추가한 별칭
그런 다음 다운로드한 model_metadata.json 파일을 읽어서 fine_tuned_model ID를 확인할 수 있습니다.

파인튜닝이 성공적으로 동기화되지 않은 경우에는 어떻게 하나요?

파인튜닝이 W&B에 제대로 기록되지 않았다면, overwrite=True를 사용해 파인튜닝 작업 ID를 전달하면 됩니다:
WandbLogger.sync(
    fine_tune_job_id="FINE_TUNE_JOB_ID",
    overwrite=True,
)

W&B로 데이터셋과 모델을 추적할 수 있나요?

트레이닝 및 검증 데이터는 W&B에 아티팩트로 자동 로깅됩니다. 파인튜닝된 모델의 ID를 포함한 메타데이터도 아티팩트로 함께 로깅됩니다. wandb.Artifact, wandb.Run.log 등과 같은 저수준 wandb API를 사용해 언제든지 파이프라인을 제어할 수 있습니다. 이를 통해 데이터와 모델을 완전히 추적할 수 있습니다.
OpenAI 추적 FAQ

참고 자료