3. 0. Motivation
• 부스트캠프에서 wandb를 처음 알게됨
• 처음 보는 기능에 문화충격
• 새로운 기능들 발견
• Table의 다양한 사용 방식
• Jupyter notebook 과의 비교
• 여러 library 기능을 한 번에
• Docs 의 한글화
3
4. 1. Introduction
Wandb Tables
• Tabular data 를 query, 기록, 분석 가능
• 이를 통해 데이터셋 이해, 모델 예측 시각화, 인사이트 공유 등이 가능
• 모델, epoch, 개별 예제 간 정확한 비교분석
• 시각적 표본을 통한 인사이트 도출 & 공유
• 데이터의 고수준 패턴 이해
4
5. 1.1 log table 사용 방법
• 가장 빠른 방법
• wandb.log({"table": my_dataframe})
• Table에 다양한 media 타입의 요소들을 기록 가능
• Rich media types : Audio, BoundingBoxes2D, Graph, Histogram,
Html, Image, ImageMask, Molecule, Object3D, Plotly, Table,
Video
5
6. 1.2 Wandb Tables?
• 각 컬럼이 한 종류의 데이터 타입을 가지는 2차원 grid data
• 지원 타입
• nested lists,
• dictionaries
• rich media types
• primitive and numeric types
6
7. 1.3 Why use Tables?
1) Actually See your data
• 모델 학습 또는 평가 동안
metrics와 rich media 기록
• 클라우드 또는 self-hosted instance에
지속적으로 연동된 결과를 시각화
7
8. 1.3 Why use Tables?
2) Interactively explore your data
• View, sort, filter, group, join, query
등의 기능 이용 가능
• Static file을 확인하거나
분석 스크립트 실행 불필요
8
9. 1.3 Why use Tables?
3) 모델 버전 비교
• 다른 학습 에포크, 데이터셋, 하이퍼파라미터, 모델 아키텍쳐 등 빠른 비교
9
10. 1.3 Why use Tables?
4) 미시적, 거시적 추적
• 특정 단계 에서의 구체적 예측 시각화(미시적)
• 한 가지 모델에서의 단계 비교
• 통계 모음, 오류 패턴 식별, 개선점 발견(거시적)
• 다른 모델 버전에서의 결과 비교
10
11. 1.3 Why use Tables?
5) Wandb Table을 이용한 프로젝트 예시
Image Classification
11
12. 1.3 Why use Tables?
5) Wandb Table을 이용한 프로젝트 예시
Audio
12
13. 1.3 Why use Tables?
5) Wandb Table을 이용한 프로젝트 예시
Text
13
14. 1.3 Why use Tables?
5) Wandb Table을 이용한 프로젝트 예시
Video
14
15. 1.3 Why use Tables?
5) Wandb Table을 이용한 프로젝트 예시
Model Variants 비교 (semantic segmentation)
15
16. 2. Tables Quickstart
2.1 Log a Table
2.2 Visualize tables in the workspace
2.3 Compare across model versions
16
17. 2.1 Log a Table
• Run 초기화 → wandb.Table() 생성 -> run에 table 기록
17
18. 2.2 Visualize tables in the workspace
• 각각의 유일한 테이블 key에 새로운 panel이 할당 됨
• “Table Name” 이란 key에 my_table 이 기록됨
18
19. 2.3 Compare across model versions
• 프로젝트 워크스페이스에서 다수의
실행이 기록된 table 을 비교 가능
• 여러번의 실행을 결합하는 방법 예시
• 모델의 결과를 탐색하고 평가하기 위한
feature 들을 table을 이용해
필터, 정렬, 그룹화 가능
19
20. 3. Log Tables
3.1 테이블 생성
3.2 데이터 추가
3.3 데이터 탐색
3.4 테이블 저장
3.5 Advanced : Artifact Tables
20
21. 3.1 테이블 생성
• 데이터 각각의 행에 대해 보고싶은 열들의 구체화
• row : 트레이닝 데이터셋의 개별 요소, 학습 동안의 특정 단계 또는
epoch, 테스트 item에 대한 모델의 예측, 모델이 생성한 object
• Column type : numeric, text, boolean, image, video, audio 등
• column 명 명시 필요 없음(column index의 타입만 전달)
• 2가지 방법 사용 가능
21
22. 3.1 테이블 생성
1) List of Rows
• 컬럼명과 데이터의 행을 기록
• wandb.Table(columns=["a", "b", "c"], data=[["1a", "1b", "1c"], ["2a", "2b",
"2c"]])
22
23. 3.1 테이블 생성
2) Pandas DataFrame
• wandb.Table(dataframe=my_df)를
사용해 DataFrame 기록
• Column names == DataFrame의
column names
23
24. 3.2 데이터 추가
• 200,000행 까지 데이터 추가, 변경 가능
• 2가지 데이터 추가 방법
1) Add a row
• table.add_data("3a", "3b", "3c")
• 추가 row 는 List가 아님
• list 의 방식을 원하면 table.add_data(*my_row_list) 와 같이 *1) 이용
• 추가 row도 같은 수의 column
1) *(asterisk) : container type의 data를 unpaking 할 때 사용
24
25. 3.2 데이터 추가
2) Add a column
• table.add_column(name="col_name", data=col_data)
• Col_data : list data, numpy NDArray 가능
• len(Col_data) == 현재 테이블의 row 수
25
26. 3.3 데이터 탐색
1) Row Iterator
• for ndx, row in table.iterrows(): … 같은 방식으로 데이터 탐색 가능
2) Get a Column
• table.get_column("col_name")
• convert_to="numpy" 를 사용하면 column을 Numpy NDArray로 변경 가능
• wandb.Image 같은 media type에서 underlying data에 직접 접근 가능
26
27. 3.4 테이블 저장
1) Run에 테이블 기록
• wandb.log() 이용
• 같은 key에 기록될 때마다 새 버전의 테이블이 생성, 저장됨
• 이를 이용해 시간 변화에 따른 모델 예측 향상, 실행 비교 등 가능
• 최대 200,000개
• 최대치 이상 기록할 경우 wandb.Table.MAX_ROWS = X 와 같은 방식 사용
• 위의 방식은 UI 에서 query가 늦어지는 등의 performance issue가 있음
27
28. 3.4 테이블 저장
2) Table 접근 방식
A. Run Summary
• Key에 기록된 run의 마지막 테이블에 접근
B. Artifact Access
• 특정 버전을 이용하고 싶은 경우 artifact API 이용
28
29. 3.5 Advanced Artifact Tables
1) artifact.add() è workspace 대신 Artifacts section 이용 가능
29
30. 3.5 Advanced Artifact Tables
2) Join Artifacts Tables
• Artifact에 기록한 2 테이블 join 가능
• Artifact에서 가져와 새로운 테이블에 join
30
31. Further Reading
• Visualize Predictions Over Time
• How to Compare Tables in Workspaces
• Image & Classification Models
• Text & Generative Language Models
• Named Entity Recognition
• AlphaFold Proteins
31