Public API를 사용하여 W&B에 저장한 데이터를 내보내거나 업데이트하세요. 이 API를 사용하기 전에 스크립트에서 데이터를 로깅해야 합니다. 자세한 내용은 Quickstart를 확인하세요.Public API 유스 케이스
데이터 내보내기: Jupyter Notebook에서 커스텀 분석을 위해 데이터프레임을 가져옵니다. 데이터를 탐색한 후에는 새로운 분석 Run을 생성하고 결과를 로깅하여 발견한 내용(findings)을 동기화할 수 있습니다. 예: wandb.init(job_type="analysis")
기존 Runs 업데이트: W&B Run과 연관되어 로깅된 데이터를 업데이트할 수 있습니다. 예를 들어, 원래 로깅되지 않았던 아키텍처나 하이퍼파라미터 같은 추가 정보를 포함하도록 일련의 Runs 설정을 업데이트하고 싶을 때 유용합니다.
API 키는 해당 머신을 W&B에 인증합니다.To create an API key, select the Personal API key or Service Account API key tab for details.
Personal API key
Service account API key
To create a personal API key owned by your user ID:
Log in to W&B, click your user profile icon, then click User Settings.
Click Create new API key.
Provide a descriptive name for your API key.
Click Create.
Copy the displayed API key immediately and store it securely.
To create an API key owned by a service account:
Navigate to the Service Accounts tab in your team or organization settings.
Find the service account in the list.
Click the action () menu, then click Create API key.
Provide a name for the API key, then click Create.
Copy the displayed API key immediately and store it securely.
Click Done.
You can create multiple API keys for a single service account to support different environments or workflows.
The full API key is only shown once at creation time. After you close the dialog, you cannot view the full API key again. Only the key ID (first part of the key) is visible in your settings. If you lose the full API key, you must create a new API key.
New API keys are longer than legacy keys. When authenticating with older versions of the wandb or weave SDKs, you may encounter an API key length error.Solution: Update to a newer SDK version:
wandb SDK v0.22.3+
pip install --upgrade wandb==0.22.3
weave SDK v0.52.17+
pip install --upgrade weave==0.52.17
If you cannot upgrade the SDK immediately, set the API key using the WANDB_API_KEY environment variable as a workaround.
트레이닝 Run의 하이퍼파라미터나 데이터셋 Artifact를 생성하는 Run의 전처리 방법과 같은 Run의 설정 정보 사전(dictionary)입니다. 이를 Run의 입력값으로 생각하면 됩니다.
run.history()
손실(loss)과 같이 모델 트레이닝 중에 변하는 값을 저장하기 위한 사전 리스트입니다. run.log() 코맨드는 이 오브젝트에 데이터를 추가합니다.
run.summary
Run의 결과를 요약하는 정보 사전입니다. 정확도(accuracy) 및 손실(loss)과 같은 스칼라 값이나 대용량 파일이 될 수 있습니다. 기본적으로 run.log()는 요약 값을 로깅된 시계열의 최종값으로 설정합니다. 요약의 내용은 직접 설정할 수도 있습니다. 요약을 Run의 출력값으로 생각하면 됩니다.
과거 Runs의 데이터를 수정하거나 업데이트할 수도 있습니다. 기본적으로 api 오브젝트의 단일 인스턴스는 모든 네트워크 요청을 캐시합니다. 실행 중인 스크립트에서 실시간 정보가 필요한 유스 케이스라면 api.flush()를 호출하여 업데이트된 값을 가져오세요.
기본 history 메소드는 메트릭을 고정된 수의 샘플로 샘플링합니다(기본값은 500이며, samples 인수로 변경할 수 있습니다). 대규모 Run의 모든 데이터를 내보내고 싶다면 run.scan_history() 메소드를 사용할 수 있습니다. 자세한 내용은 API 레퍼런스를 참조하세요.
이 예제 스크립트는 Project를 찾고 이름, 설정(configs) 및 요약 통계가 포함된 Runs의 CSV를 출력합니다. <entity>와 <project>를 각각 사용자의 W&B Entity와 Project 이름으로 바꾸세요.
import pandas as pdimport wandbapi = wandb.Api()entity, project = "<entity>", "<project>"runs = api.runs(entity + "/" + project)summary_list, config_list, name_list = [], [], []for run in runs: # .summary에는 정확도와 같은 메트릭에 대한 # 출력 키/값이 포함되어 있습니다. # 대용량 파일을 제외하기 위해 ._json_dict를 호출합니다. summary_list.append(run.summary._json_dict) # .config에는 하이퍼파라미터가 포함되어 있습니다. # _로 시작하는 특수 값을 제거합니다. config_list.append({k: v for k, v in run.config.items() if not k.startswith("_")}) # .name은 Run의 읽기 쉬운 이름입니다. name_list.append(run.name)runs_df = pd.DataFrame( {"summary": summary_list, "config": config_list, "name": name_list})runs_df.to_csv("project.csv")run.finish()
W&B API는 api.runs()를 사용하여 Project 내의 여러 Runs를 쿼리하는 방법도 제공합니다. 가장 일반적인 유스 케이스는 커스텀 분석을 위해 Runs 데이터를 내보내는 것입니다. 쿼리 인터페이스는 MongoDB가 사용하는 것과 동일합니다.
api.runs를 호출하면 이터러블하고 리스트처럼 동작하는 Runs 오브젝트가 반환됩니다. 기본적으로 이 오브젝트는 필요에 따라 한 번에 50개의 Runs를 순차적으로 로드하지만, per_page 키워드 인수를 사용하여 페이지당 로드되는 수를 변경할 수 있습니다.api.runs는 order 키워드 인수도 허용합니다. 기본 정렬 순서는 -created_at입니다. 오름차순으로 결과를 정렬하려면 +created_at을 지정하세요. config 또는 summary 값으로 정렬할 수도 있습니다. 예를 들어, summary.val_acc 또는 config.experiment_name 등이 가능합니다.
UI에서 Run을 클릭한 다음 Run 페이지의 Overview 탭을 클릭하면 최신 git commit을 볼 수 있습니다. 이는 wandb-metadata.json 파일에도 들어 있습니다. Public API를 사용하면 run.commit으로 git 해시를 가져올 수 있습니다.
Run에서 특정 메트릭을 가져오려면 keys 인수를 사용하세요. run.history()를 사용할 때 기본 샘플 수는 500개입니다. 특정 메트릭을 포함하지 않는 로깅된 단계(steps)는 출력 데이터프레임에서 NaN으로 나타납니다. keys 인수를 사용하면 API가 나열된 메트릭 키가 포함된 단계들을 더 자주 샘플링하게 됩니다.
import wandbapi = wandb.Api()run = api.run("<entity>/<project>/<run_id>")if run.state == "finished": for i, row in run.history(keys=["accuracy"]).iterrows(): print(row["_timestamp"], row["accuracy"])
이 스크립트는 Project 내의 Runs를 가져와 이름, 설정, 요약 통계를 포함하는 데이터프레임과 CSV를 생성합니다. <entity>와 <project>를 실제 값으로 바꾸세요.
import pandas as pdimport wandbapi = wandb.Api()entity, project = "<entity>", "<project>"runs = api.runs(entity + "/" + project)summary_list, config_list, name_list = [], [], []for run in runs: # .summary에는 정확도와 같은 메트릭의 # 출력 키/값이 포함됩니다. # 대용량 파일을 제외하기 위해 ._json_dict를 호출합니다. summary_list.append(run.summary._json_dict) # .config에는 하이퍼파라미터가 포함됩니다. # _로 시작하는 특수 값을 제거합니다. config_list.append({k: v for k, v in run.config.items() if not k.startswith("_")}) # .name은 Run의 읽기 쉬운 이름입니다. name_list.append(run.name)runs_df = pd.DataFrame( {"summary": summary_list, "config": config_list, "name": name_list})runs_df.to_csv("project.csv")