맨위로가기

Numba

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Numba는 파이썬 함수를 JIT 컴파일하여 수치 계산의 속도를 높이는 오픈 소스 프로젝트이다. `@jit` 데코레이터를 사용하여 파이썬 함수에 적용하며, 함수가 호출될 때 컴파일이 수행된다. Numba는 CPU에서 빠른 성능을 보이며, 엔비디아 CUDA 및 AMD ROCm HSA를 통해 GPU 코드로 컴파일하여 대규모 병렬 연산을 지원한다. 파이썬에서 빠른 수치 계산을 위한 다른 방법으로는 Cython, Pythran, PyPy 등이 있다.

2. 예시

Numba는 `numba.jit` 데코레이터를 파이썬 함수에 적용하여 사용할 수 있다. 다음은 몬테카를로 방법을 사용하여 원주율(π) 값을 추정하는 예제 코드이다. JIT 컴파일은 함수가 호출될 때 투명하게 발생한다.



import numba

import random

@numba.jit

def monte_carlo_pi(n_samples: int) -> float:

"""몬테 카를로"""

acc = 0

for i in range(n_samples):

x = random.random()

y = random.random()

if (x2 + y2) < 1.0:

acc += 1

return 4.0 * acc / n_samples





>>> monte_carlo_pi(1000000)

3.14



Python 함수에 `@jit` 데코레이터를 붙이면 실행 시점에 JIT 컴파일된다.

다음 예제에서 Numba 0.27.0 버전에서는 Python보다 200배 빠르게 동작하며, NumPy 내장 함수 `sum()`보다 30% 더 빠르게 동작한다[2][3].



from numba import jit

@jit

def sum1d(ary):

total = 0.0

for i in range(ary.shape[0]):

total += ary[i]

return total


3. 실행 방식

Numba는 `@jit` 데코레이터를 통해 지정된 파이썬 함수를 실행 시점에 JIT 컴파일한다. 단순 반복문을 사용하는 코드의 경우, Numba는 일반적인 파이썬 코드보다 훨씬 빠른 속도로 동작하며, NumPy 내장 함수와 비교해도 경쟁력 있는 성능을 보인다[2][3].

4. GPU 지원

Numba는 파이썬 함수를 GPU 코드로 컴파일할 수 있다. 초기에는 다음 두 가지 백엔드를 지원했다.



0.56.4 버전부터,[1] AMD ROCm HSA는 공식적으로 유지 관리되지 않는 상태로 이전되었으며, 이를 위한 별도의 저장소 스텁이 생성되었다.

5. 다른 접근 방식

Numba는 파이썬NumPy 코드를 포함하는 특정 함수를 컴파일하여 파이썬의 속도를 높이는 한 가지 방법이다. 파이썬을 사용한 빠른 수치 계산을 위한 다른 접근 방식으로는 Cython, [https://pythran.readthedocs.io/en/latest/ Pythran], PyPy가 있다.

참조

[1] 웹사이트 Release Notes — Numba 0.56.4+0.g288a38bbd.dirty-py3.7-linux-x86_64.egg documentation https://numba.readth[...]
[2] 웹사이트 A Speed Comparison Of C, Julia, Python, Numba, and Cython on LU Factorization https://www.ibm.com/[...] 2019-01-25
[3] 웹사이트 Numba vs. Cython: Take 2 https://jakevdp.gith[...] 2019-01-25



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com