Pioneer
SCALE-SIM 뜯어보기 (3): topology_utils.py [pt.1] 본문
이번에는 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에 있는 일부 메서드에 대해 분석할 것이다.
'HPC > SCALE-SIM' 카테고리의 다른 글
SCALE-SIM 뜯어보기 (6): single_layer_sim.py (0) | 2024.11.26 |
---|---|
SCALE-SIM 뜯어보기 (5): simulator.py (0) | 2024.11.15 |
SCALE-SIM 뜯어보기 (4): scale_config.py [pt.1] (0) | 2024.11.14 |
SCALE-SIM 뜯어보기 (2): 실행 진입점과 scalesim (0) | 2024.11.12 |
SCALE-SIM 뜯어보기 (1): 설치 및 테스트 (0) | 2024.11.08 |