Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Pioneer

SCALE-SIM 뜯어보기 (3): topology_utils.py [pt.1] 본문

HPC/SCALE-SIM

SCALE-SIM 뜯어보기 (3): topology_utils.py [pt.1]

hwkang 2024. 11. 13. 14:58

이번에는 topology_utils.py를 분석할 것이다.

 

이를 분석하는 이유는 메서드 호출 시퀀스가 아래와 같기 때문이다:

 

scale.py: scalesim(-)

scale_sim.py: __init__(..)  → topologies(-)

                                          → set_params(..) → load_arrays(..)

topology_utils.py: __init__(..)

                               load_arrays(..) → load_arrays_conv(..)

 

그리고 웬만큼 중요한 코드 스니펫이 아니면 내용으로 넣지 않을 예정.

 

글이 너무 길어지고 가독성이 떨어진다는 게 내 생각이다.


__init__(..) across line 6:15

이 클래스의 변수와 플래그에 대해 초기화한다.

 

크게 세가지 그룹으로 나뉘는 것 같다: 파일 관련, 네트워크 및 하이퍼파라미터 관련, 플래그 관련


load_arrays(..) across line 39:43

입력 유형에 따라 토폴로지 파일을 다르게 가져온다.

 

mnk 여부를 따지는 데, 당분간은 해당 입력 포맷을 고려할 일이 없어서 일반적인 conv 관련만 분석할 것.


load_arrays_conv(..) across line 82:108

83: 헤더인지 확인하기 위한 플래그

 

84-89: 토폴로지 파일 이름을 추출, 당장 쓰임새는 모르겠으나 향후 결과 파일 생성 시 활용될 것으로 예상

 

90-105: CSV 파일의 row는 모델의 한 레이어를 의미한다.

 

해당 레이어의 하이퍼파라미터를 레이어 이름과 함께 배열에 하나의 원소로 추가.

더보기

93-94: 헤더라면 건너뛰기

 

98-102: depth-wise convolution일 경우 처리 방식

 

103-105: 일반 conv layer일 경우 처리 방식

 

레이어의 수(=배열 길이) 저장 및 토폴로지 로드 여부 플래그를 True로 변경


append_topo_arrays(..) across line 154:167

self.topo_arrays에 레이어의 이름과 요소를 entry로 만들어 추가

 

여기까지 수행되면 topology 파라미터를 세팅하는 과정이 끝난다.


아직 꽤 많은 메서드가 남아있으나, 이는 다시 이 클래스 인스턴스가 호출될 때 분석할 것이다.

 

그 다음으로는 scale_config.py에 있는 일부 메서드에 대해 분석할 것이다.