numr 0.5.0: 선택을 강요하지 않는 Rust 수치 계산 라이브러리

발행: (2026년 3월 15일 오전 05:15 GMT+9)
10 분 소요
원문: Dev.to

Source: Dev.to

Foundational numerical computing for Rust

numr는 n‑차원 텐서, 선형대수, FFT, 통계, 자동 미분을 제공하며, CPU, CUDA, WebGPU 백엔드 전반에 걸쳐 네이티브 GPU 가속을 지원합니다.
이는 “Rust의 NumPy”와 같지만, 처음부터 그래디언트, GPU, 최신 데이터 타입을 갖추고 있습니다.

numr이란

  • A foundation library – 고수준 라이브러리와 애플리케이션을 위한 수학적 빌딩 블록.

numr이 아닌 것

  • 단순히 텐서 라이브러리(예: NumPy의 ndarray)가 아니다.
  • 딥‑러닝 프레임워크가 아니다.
  • 고‑수준 ML API가 아니다.
  • 도메인‑특화 도구들의 컬렉션이 아니다.

핵심 기능

FeatureDescription
Tensor libraryN‑차원 텐서 (NumPy의 ndarray와 유사).
Linear algebra분해, 솔버 등.
FFT, statistics, random distributions포괄적인 과학 컴퓨팅 기본 연산.
Automatic differentiation내장 numr::autograd.
Native GPU supportCUDA + WebGPU 백엔드와 자동 미분 지원.
Cross‑platform GPUNVIDIA, AMD, Intel, Apple 실리콘에서 작동 (WebGPU를 통해).
FP8 & quantized kernelsFP8 행렬곱, i8×i8→i32 행렬곱, 2:4 구조적 희소성.
Fused kernelsGEMM + 바이어스 + 활성화, 활성화‑곱, add‑norm 등.
CUDA‑specific improvements캐싱 할당자, 그래프 캡처, GEMV 고속 경로, 파이프라인 D2H 복사.

SciPy와 동등한 기능(최적화, ODE, 보간, 신호)을 위해서는 동반 크레이트 **[solvr]**를 참고하십시오.

왜 numr인가? – NumPy와 비교

기능NumPynumr
N‑차원 텐서
선형대수, FFT, 통계
자동 미분✗ (JAX/PyTorch 필요)✓ (내장 numr::autograd)
GPU 가속✗ (CuPy/JAX 필요)✓ (네이티브 CUDA + WebGPU)
비 NVIDIA GPU✓ (AMD, Intel, Apple WebGPU 통해)
FP8 지원✓ (E4M3 & E5M2)
2:4 구조적 희소성✓ (모든 백엔드)
양자화 행렬곱 (i8×i8→i32)✓ (CPU)
통합 커널 (GEMM 에필로그, 활성화‑곱, add‑norm)✓ (CPU, CUDA, WebGPU)
포괄적인 autograd (2차)✓ (conv, softmax, rms_norm, layer_norm, SiLU, softplus, SwiGLU, dropout, dtype cast, narrow, cat, gather, …)

우리가 해결한 문제

  • Fragmentation(조각화): 기존 Rust 크레이트들은 각각 하나의 문제만 해결합니다(예: 텐서를 위한 ndarray, 선형 대수를 위한 nalgebra, FFT를 위한 rustfft). GPU 지원이나 자동 미분(autograd)을 제공하지 않으며, 타입과 관용구가 서로 호환되지 않습니다.
  • 개발자 부담: 간단한 수치 파이프라인을 GPU에서 실행하기 위해 어댑터 레이어를 작성하고, upstream 이슈를 제출하며, 여러 백엔드를 뒤섞어야 합니다.

numr는 그 부담을 없애줍니다:

하나의 라이브러리, 하나의 텐서 타입, 하나의 API – 텐서, 선형대수, FFT, 통계, 자동미분, GPU.

코드를 한 번만 작성하고 다음 환경에서 실행하세요:

  • CPU (AVX‑512 등)
  • NVIDIA (네이티브 CUDA 커널)
  • AMD / Intel / Apple silicon (WebGPU를 통해)

같은 코드, 같은 결과.

Release 0.5.0 하이라이트

성능‑중요 퓨전 커널

KernelWhat it doesBenefit
GEMM epiloguematmul + bias + activation을 단일 실행으로 수행신경망 내부 루프(전방 및 역전파)에서 2‑3배 속도 향상
Activation‑mul게이트 구조(예: SwiGLU)를 위한 퓨전 곱셈세 번 읽는 대신 한 번 읽음
Add‑norm잔차 연결 + 정규화 퓨전트랜스포머 레이어당 한 번 읽음

모든 커널은 CPU, CUDA, WebGPU에서 실행되며, 각각 올바른 역전파를 지원합니다.

FP8 & 양자화

  • FP8 matmul (E4M3 & E5M2) 전 백엔드 지원 – 대형 모델을 VRAM에 맞추는 데 필수.
  • i8×i8→i32 양자화 matmul CPU에서 지원 – GPU 없이도 효율적인 추론 가능.

구조적 희소성

  • 모든 백엔드에서 2:4 희소성 지원.
  • CUDA에서는 하드웨어 패스를 활용하고, CPU/WebGPU에서는 최적화된 희소 커널을 사용합니다.

Autograd 확장

다음 연산들이 모두 미분 가능(2차 미분 포함)해졌습니다:

conv1d, conv2d, softmax, rms_norm, layer_norm, SiLU, softplus, SwiGLU, dropout, fused GEMM epilogue, fused add‑norm, dtype cast, narrow, cat, gather, …

추가 기능:

  • Activation checkpointing – 메모리를 절약하기 위해 계산을 교환.
  • Backward hooks – 역전파 중에 분산 그래디언트 동기화를 트리거.

이것은 ML 프레임워크가 아니라, 프레임워크가 구축될 수 있는 autograd 엔진입니다.

CUDA‑특화 개선 사항

  • Caching allocator – Rust 측에서 메모리 블록을 재사용해 할당 오버헤드를 크게 감소.
  • Graph capture – 커널 실행 순서를 한 번 기록하고, 재생 시 오버헤드 없이 실행(고처리량 추론에 필수).
  • GEMV fast paths – 한 차원의 크기가 매우 작은 경우(예: 배치‑size 1 추론)를 위한 특화 커널.
  • Pipelined D2H copy – GPU 연산과 호스트 측 데이터 전송을 겹쳐 수행.

이러한 업그레이드로 numr은 “흥미로운 기반”에서 프로덕션‑레디 라이브러리로 한 단계 도약했습니다.

시작하기

# Cargo.toml
[dependencies]
numr = "0.5"
use numr::{Tensor, autograd::grad};

fn main() {
    // Example: fused GEMM + bias + activation on the GPU
    let a = Tensor::randn([128, 256], Device::Cuda);
    let b = Tensor::randn([256, 512], Device::Cuda);
    let bias = Tensor::zeros([512], Device::Cuda);

    // Forward pass (fused)
    let y = (a @ b + bias).relu();

    // Backward pass
    let grads = grad(&y, &[a, b, bias]);
    println!("Gradients computed!");
}

전체 튜토리얼은 **[GitHub repository]**를 참고하세요.

비전

  • Unified scientific‑computing stack for Rust, comparable to the Python ecosystem but without the fragmentation.
  • Zero‑copy, zero‑overhead GPU pipelines that work on any modern GPU.
  • Extensible foundation for higher‑level ML libraries, simulation tools, and more.

호환되지 않는 크레이트들을 이어 붙이는 데 지치셨다면, numr을 사용해 보세요. 한 번 작성하고 어디서든 실행하세요.

개요

numr 0.5.0은 과학‑컴퓨팅 라이브러리로 다음을 제공합니다:

  • 최적화 루틴
  • ODE 솔버
  • 보간 유틸리티

다른 Rust 크레이트의 기반이 됩니다:

  • solvrnumr 0.5.0 위에서 빌드 및 실행되며, 과학‑컴퓨팅 기능(최적화, ODE 솔버, 보간)을 제공합니다.
  • boostr – 어텐션, Mixture‑of‑Experts (MoE), Mamba 블록을 갖춘 ML 프레임워크이며, 역시 numr 0.5.0 위에서 구축되었습니다.

두 다운스트림 라이브러리 모두 엔드‑투‑엔드 LLM 추론 및 임베딩 생성을 지원합니다.

Key Benefits

  • Fused kernels – 불필요한 성능 오버헤드를 제거합니다.
  • Full autograd coverage – 실제 계산 그래프를 통한 미분을 가능하게 합니다.
  • CUDA infrastructure – GPU 작업이 효율적으로 실행되도록 보장합니다.
  • Cross‑platform consistency – 동일한 코드가 CPU, CUDA, WebGPU 백엔드에서 모두 작동합니다.

Release Highlights

VersionHighlights
0.5.0solvr(과학 컴퓨팅)와 boostr(ML 프레임워크)의 새로운 릴리스를 가능하게 하며, 두 프로젝트 모두 numr 위에 구축되었습니다.
0.6.0하드닝에 초점: 오류 처리 정리, API 안정성 감사, 그리고 최종 1.0 릴리스를 위한 준비.
0.7.0+ (roadmap)ROCm을 통한 네이티브 AMD GPU 지원 추가.

종속성

[dependencies]
numr = "0.5.0"

GPU 지원 포함

# CUDA support
numr = { version = "0.5.0", features = ["cuda"] }

# WebGPU (wgpu) support
numr = { version = "0.5.0", features = ["wgpu"] }

프로젝트 링크

  • GitHub:
  • crates.io:

라이선스

numrApache‑2.0 라이선스로 배포됩니다. 기여를 환영합니다.

0 조회
Back to Blog

관련 글

더 보기 »

트라비고

Gemini와 함께 말하는 속도만큼 빠르게 여행하세요! 라이브 에이전트가 몰입형 스토리텔링 및 3D 내비게이션과 만나는 곳. 이 프로젝트는 Gemini Live Ag...에 진입하기 위해 만들어졌습니다.