proyector en Chile

Big O 표기

따옹 2025. 1. 22. 22:33

 

 

시간 복잡도란?

시간 복잡도는 입력 데이터의 크기(보통 n)에 따라 알고리즘이 실행되는 시간(계산량)이 어떻게 증가하는지를 나타냅니다. 빅오 표기법은 최악의 경우를 기준으로 계산합니다.


빅오 표기법 예제와 해석

  1. O(1): 상수 시간
    • 읽는 법: "O 1" 또는 "상수 시간 복잡도"
    • 알고리즘의 실행 시간이 입력 크기 n에 관계없이 항상 일정함.
    • : 배열에서 특정 인덱스의 값을 읽는 작업.
  2. O(n): 선형 시간
    • 읽는 법: "O n" 또는 "선형 시간 복잡도"
    • 입력 크기에 비례해서 실행 시간이 증가.
    • : 배열의 모든 요소를 한 번씩 순회하는 작업.
  3. O(n^2): 이차 시간
    • 읽는 법: "O n 제곱" 또는 "이차 시간 복잡도"
    • 입력 크기가 n일 때, 실행 시간이 n^2에 비례.
    • : 이중 루프를 사용하는 알고리즘(예: 버블 정렬).
  4. O(log n): 로그 시간
    • 읽는 법: "O 로그 n"
    • 입력 크기가 커질수록 실행 시간 증가 속도가 느려짐.
    • : 이진 검색(Binary Search).
  5. O(n log n): 선형 로그 시간
    • 읽는 법: "O n 로그 n"
    • nn에 로그 값을 곱한 시간 복잡도.
    • : 효율적인 정렬 알고리즘(예: 병합 정렬, 퀵 정렬).

주의

만약 O^2가 언급되었다면:

  1. 단순히 O(n^2)의 오타일 가능성이 큽니다.
  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)

임베딩 메모리 요구량 계산

  1. 텍스트를 임베딩 벡터로 변환:
    • 각 텍스트는 dd-차원의 벡터로 표현.
    • 메모리 사용량 = n×d×데이터 타입 크기n \times d \times \text{데이터 타입 크기}.
    Memory Requirement=7689×768×4 bytes\text{Memory Requirement} = 7689 \times 768 \times 4 \, \text{bytes}
  2. 계산: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.
  • 기타 프로세스: 약간의 여유를 두어도 충분히 수행 가능.

최적화 방법

  1. 배치 처리:
    • 데이터를 한 번에 처리하지 않고 작은 배치로 나누어 수행.
    • 예: 512~1024행씩 처리.
  2. FP16 사용:
    • 메모리 절약을 위해 16비트 부동소수점(FP16)을 사용.