메인 콘텐츠로 건너뛰기
W&B Python 라이브러리를 사용하여 CSV 파일을 로그하고 W&B Dashboard에서 시각화하세요. W&B Dashboard는 기계학습 모델의 결과를 정리하고 시각화하는 중심 공간입니다. 이는 W&B에 로그되지 않은 이전 기계학습 실험 정보가 포함된 CSV 파일이 있거나 데이터셋이 포함된 CSV 파일을 가지고 있는 경우 특히 유용합니다.

데이터셋 CSV 파일 가져오기 및 로그

CSV 파일의 내용을 더 쉽게 재사용할 수 있도록 W&B Artifacts를 활용하는 것을 권장합니다.
  1. 시작하려면 먼저 CSV 파일을 가져옵니다. 다음 코드조각에서 iris.csv 파일명을 사용자의 CSV 파일명으로 바꿉니다.
import wandb
import pandas as pd

# CSV를 새로운 DataFrame으로 읽어옵니다
new_iris_dataframe = pd.read_csv("iris.csv")
  1. W&B Dashboards를 활용하기 위해 CSV 파일을 W&B Table로 변환합니다.
# DataFrame을 W&B Table로 변환합니다
iris_table = wandb.Table(dataframe=new_iris_dataframe)
  1. 다음으로, W&B Artifact를 생성하고 테이블을 Artifact에 추가합니다.
# 행 제한을 200,000으로 늘리고 재사용을 쉽게 하기 위해 
# 테이블을 Artifact에 추가합니다
iris_table_artifact = wandb.Artifact("iris_artifact", type="dataset")
iris_table_artifact.add(iris_table, "iris_table")

# 데이터를 보존하기 위해 원본 csv 파일을 아티팩트 내에 로그합니다
iris_table_artifact.add_file("iris.csv")
W&B Artifacts에 대한 자세한 정보는 Artifacts 챕터를 참조하세요.
  1. 마지막으로, wandb.init으로 W&B에 트래킹 및 로그를 시작하기 위해 새로운 W&B Run을 시작합니다.
# 데이터를 로그하기 위해 W&B run을 시작합니다
with wandb.init(project="tables-walkthrough") as run:

    # run과 함께 시각화할 테이블을 로그합니다...
    run.log({"iris": iris_table})

    # 그리고 사용 가능한 행 제한을 늘리기 위해 Artifact로 로그합니다!
    run.log_artifact(iris_table_artifact)
wandb.init() API는 데이터를 Run에 로그하기 위해 새로운 백그라운드 프로세스를 생성하며, (기본적으로) 데이터를 wandb.ai에 동기화합니다. W&B Workspace 대시보드에서 실시간 시각화를 확인하세요. 다음 이미지는 코드조각 데모의 결과를 보여줍니다.
W&B Dashboard로 가져온 CSV 파일
앞서 설명한 코드조각이 포함된 전체 스크립트는 다음과 같습니다.
import wandb
import pandas as pd

# CSV를 새로운 DataFrame으로 읽어옵니다
new_iris_dataframe = pd.read_csv("iris.csv")

# DataFrame을 W&B Table로 변환합니다
iris_table = wandb.Table(dataframe=new_iris_dataframe)

# 행 제한을 200,000으로 늘리고 재사용을 쉽게 하기 위해 
# 테이블을 Artifact에 추가합니다
iris_table_artifact = wandb.Artifact("iris_artifact", type="dataset")
iris_table_artifact.add(iris_table, "iris_table")

# 데이터를 보존하기 위해 원본 csv 파일을 아티팩트 내에 로그합니다
iris_table_artifact.add_file("iris.csv")

# 데이터를 로그하기 위해 W&B run을 시작합니다
with wandb.init(project="tables-walkthrough") as run:

    # run과 함께 시각화할 테이블을 로그합니다...
    run.log({"iris": iris_table})

    # 그리고 사용 가능한 행 제한을 늘리기 위해 Artifact로 로그합니다!
    run.log_artifact(iris_table_artifact)

실험 CSV 파일 가져오기 및 로그

경우에 따라 실험 세부 정보가 CSV 파일에 저장되어 있을 수 있습니다. 이러한 CSV 파일에서 흔히 볼 수 있는 세부 정보는 다음과 같습니다:
ExperimentModel NameNotesTagsNum LayersFinal Train AccFinal Val AccTraining Losses
Experiment 1mnist-300-layers트레이닝 데이터에 너무 많이 과적합됨[latest]3000.990.90[0.55, 0.45, 0.44, 0.42, 0.40, 0.39]
Experiment 2mnist-250-layers현재 베스트 모델[prod, best]2500.950.96[0.55, 0.45, 0.44, 0.42, 0.40, 0.39]
Experiment 3mnist-200-layers베이스라인 모델보다 결과가 나쁨. 디버깅 필요[debug]2000.760.70[0.55, 0.45, 0.44, 0.42, 0.40, 0.39]
Experiment Nmnist-X-layers메모[…, …]
W&B는 실험 내용이 담긴 CSV 파일을 가져와 W&B Experiment Run으로 변환할 수 있습니다. 다음 코드조각과 스크립트는 실험 CSV 파일을 가져오고 로그하는 방법을 보여줍니다.
  1. 시작하려면 먼저 CSV 파일을 읽어 Pandas DataFrame으로 변환합니다. "experiments.csv"를 사용자의 CSV 파일 이름으로 바꿉니다.
import wandb
import pandas as pd

FILENAME = "experiments.csv"
loaded_experiment_df = pd.read_csv(FILENAME)

PROJECT_NAME = "Converted Experiments"

EXPERIMENT_NAME_COL = "Experiment"
NOTES_COL = "Notes"
TAGS_COL = "Tags"
CONFIG_COLS = ["Num Layers"]
SUMMARY_COLS = ["Final Train Acc", "Final Val Acc"]
METRIC_COLS = ["Training Losses"]

# 작업을 쉽게 하기 위해 Pandas DataFrame 형식을 정리합니다
for i, row in loaded_experiment_df.iterrows():
    run_name = row[EXPERIMENT_NAME_COL]
    notes = row[NOTES_COL]
    tags = row[TAGS_COL]

    config = {}
    for config_col in CONFIG_COLS:
        config[config_col] = row[config_col]

    metrics = {}
    for metric_col in METRIC_COLS:
        metrics[metric_col] = row[metric_col]

    summaries = {}
    for summary_col in SUMMARY_COLS:
        summaries[summary_col] = row[summary_col]
  1. 다음으로, wandb.init()을 사용하여 W&B에 트래킹 및 로그를 위한 새로운 W&B Run을 시작합니다.
    with wandb.init(
        project=PROJECT_NAME, name=run_name, tags=tags, notes=notes, config=config
    ) as run:
    
실험이 진행됨에 따라, W&B에서 확인, 쿼리 및 분석할 수 있도록 메트릭의 모든 인스턴스를 로그하고 싶을 수 있습니다. 이를 위해 run.log() 코맨드를 사용하세요.
run.log({key: val})
선택적으로 define_metric API를 사용하여 실행 결과를 정의하는 최종 요약 메트릭을 로그할 수 있습니다. 이 예시에서는 run.summary.update()를 사용하여 요약 메트릭을 run에 추가합니다.
run.summary.update(summaries)
요약 메트릭에 대한 자세한 정보는 Log Summary Metrics를 참조하세요. 다음은 위의 샘플 테이블을 W&B Dashboard로 변환하는 전체 예시 스크립트입니다.
FILENAME = "experiments.csv"
loaded_experiment_df = pd.read_csv(FILENAME)

PROJECT_NAME = "Converted Experiments"

EXPERIMENT_NAME_COL = "Experiment"
NOTES_COL = "Notes"
TAGS_COL = "Tags"
CONFIG_COLS = ["Num Layers"]
SUMMARY_COLS = ["Final Train Acc", "Final Val Acc"]
METRIC_COLS = ["Training Losses"]

for i, row in loaded_experiment_df.iterrows():
    run_name = row[EXPERIMENT_NAME_COL]
    notes = row[NOTES_COL]
    tags = row[TAGS_COL]

    config = {}
    for config_col in CONFIG_COLS:
        config[config_col] = row[config_col]

    metrics = {}
    for metric_col in METRIC_COLS:
        metrics[metric_col] = row[metric_col]

    summaries = {}
    for summary_col in SUMMARY_COLS:
        summaries[summary_col] = row[summary_col]

    with  wandb.init(
        project=PROJECT_NAME, name=run_name, tags=tags, notes=notes, config=config
    ) as run:

        for key, val in metrics.items():
            if isinstance(val, list):
                for _val in val:
                    run.log({key: _val})
            else:
                run.log({key: val})

        run.summary.update(summaries)