proyector en Chile
Big O 표기
따옹
2025. 1. 22. 22:33
시간 복잡도란?
시간 복잡도는 입력 데이터의 크기(보통 n)에 따라 알고리즘이 실행되는 시간(계산량)이 어떻게 증가하는지를 나타냅니다. 빅오 표기법은 최악의 경우를 기준으로 계산합니다.
빅오 표기법 예제와 해석
- O(1): 상수 시간
- 읽는 법: "O 1" 또는 "상수 시간 복잡도"
- 알고리즘의 실행 시간이 입력 크기 n에 관계없이 항상 일정함.
- 예: 배열에서 특정 인덱스의 값을 읽는 작업.
- O(n): 선형 시간
- 읽는 법: "O n" 또는 "선형 시간 복잡도"
- 입력 크기에 비례해서 실행 시간이 증가.
- 예: 배열의 모든 요소를 한 번씩 순회하는 작업.
- O(n^2): 이차 시간
- 읽는 법: "O n 제곱" 또는 "이차 시간 복잡도"
- 입력 크기가 n일 때, 실행 시간이 n^2에 비례.
- 예: 이중 루프를 사용하는 알고리즘(예: 버블 정렬).
- O(log n): 로그 시간
- 읽는 법: "O 로그 n"
- 입력 크기가 커질수록 실행 시간 증가 속도가 느려짐.
- 예: 이진 검색(Binary Search).
- O(n log n): 선형 로그 시간
- 읽는 법: "O n 로그 n"
- nn에 로그 값을 곱한 시간 복잡도.
- 예: 효율적인 정렬 알고리즘(예: 병합 정렬, 퀵 정렬).
주의
만약 O^2가 언급되었다면:
- 단순히 O(n^2)의 오타일 가능성이 큽니다.
- 빅오 표기법에서 거듭 제곱을 표현할 때는 항상 n^k의 형태를 사용합니다.
간단한 정리
- O는 "어떤 작업의 복잡도를 나타내는 표기"입니다.
- O(n^2): n 제곱 복잡도로 읽으며, nn이 증가할수록 실행 시간이 n^2에 비례해 증가합니다.
임베딩 작업에서 메모리 요구량 계산
주어진 정보:
- 데이터 크기:
- 행 수 n=7689n = 7689
- 평균 텍스트 길이 m=3653m = 3653
- 메모리 크기: 16 GB
- 임베딩 차원 (일반적으로 사용되는 크기): d=768d = 768 (예: BERT 임베딩)
- 임베딩 데이터 타입: 32비트 부동소수점(float32) (4 bytes per value)
임베딩 메모리 요구량 계산
- 텍스트를 임베딩 벡터로 변환:
- 각 텍스트는 dd-차원의 벡터로 표현.
- 메모리 사용량 = n×d×데이터 타입 크기n \times d \times \text{데이터 타입 크기}.
- 계산:Memory Requirement=23,614,464 bytes=23.61 MB\text{Memory Requirement} = 23,614,464 \, \text{bytes} = 23.61 \, \text{MB}
추가 메모리 요구량
- 모델 크기:
- 예: BERT 기반 모델은 약 420 MB (12-layer)에서 1.3 GB (24-layer) 이상.
- Intermediate Processing:
- 텍스트를 토큰화하고 모델을 실행하는 중간 메모리도 필요.
16GB 메모리에서 수행 가능 여부
- 임베딩 데이터 크기: 약 23.61 MB.
- 모델 로드 크기: 약 1~1.3 GB.
- 기타 프로세스: 약간의 여유를 두어도 충분히 수행 가능.
최적화 방법
- 배치 처리:
- 데이터를 한 번에 처리하지 않고 작은 배치로 나누어 수행.
- 예: 512~1024행씩 처리.
- FP16 사용:
- 메모리 절약을 위해 16비트 부동소수점(FP16)을 사용.