티스토리 뷰
코드를 공부하는데 다음과 같은 이해할 수 없는 코드가 있었다.
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
- antigen antibody interaction prediction
- 이왜안
- 백준
- manimtutorial
- 기계학습
- 나노바디
- marginal likelihood
- 베이즈정리
- 선형대수
- MatrixAlgebra
- 항원항체결합예측모델
- nanobody
- ai신약개발
- 인공지능
- MorganCircularfingerprint
- Manimlibrary
- elementry matrix
- 최대우도추정
- 오일석기계학습
- 파이썬
- 논문리뷰
- eigenvalue
- MLE
- dataloader
- 3B1B따라잡기
- manim
- eigenvector
- 3b1b
- Matrix algebra
- manim library
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함