티스토리 뷰
코드를 공부하는데 다음과 같은 이해할 수 없는 코드가 있었다.
if self.eight:
max_length = math.ceil(max_length / 8) * 8
이게뭐람? max length 를 8로 나누고 올림한 다음 다시 8을 곱해라? 뭐.. 뜬금없이 왜하는건지 모를 코드였는데 찾아보니 GPU연산 효율을 위해 8의 배수가 되도록 max_length를 맞추는 코드라고 한다.
GPU 연산에 사용되는 CUDA는 8, 16, 32처럼 2의 배수로 align된 데이터에 대해서 연산 효율이 훨씬 좋다고 한다.
특히 transform block이나 CNN에 대해서는 padding을 통해서 길이를 맞춰줄 경우 효율이 극대화 된다고 한다.
그런 이유로 지금까지 MLP등의 모델에서 128, 256, 512등의 2의 배수값을 맞춘거구나를 이제야 이해했다.
지금까지 대충 sequence length를 500이나 100처럼 8의 배수가 아닌 값으로도 사용해왔었는데 앞으로는 8의 배수값으로 맞추는 습관을 들여야겠다.
'Computer > 코딩 개꿀팁' 카테고리의 다른 글
| nvidia-smi에 쌓여있는 python 프로세스 한번에 처리하기 (0) | 2025.06.26 |
|---|---|
| nn.Module의 self.register_buffer에 대해 알아보자 (0) | 2025.06.26 |
| torch DataLoader의 collate_fn에 대해 알아보자 (0) | 2025.06.24 |
| inf_iterator는 왜 쓰는걸까? (0) | 2025.06.24 |
| 리눅스 사용자별 파티션 사용량 확인하는 코드 (0) | 2024.06.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- dataloader
- manimtutorial
- 오일석기계학습
- 항원항체결합예측모델
- Matrix algebra
- marginal likelihood
- 선형대수
- 최대우도추정
- 기계학습
- elementry matrix
- 베이즈정리
- eigenvalue
- 3b1b
- manim
- 파이썬
- antigen antibody interaction prediction
- 나노바디
- MatrixAlgebra
- 인공지능
- 이왜안
- ai신약개발
- Manimlibrary
- MLE
- nanobody
- 논문리뷰
- manim library
- eigenvector
- 백준
- 3B1B따라잡기
- MorganCircularfingerprint
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함