fferflo/einx

Universal Notation for Tensor Operations in Python

해결하는 문제

einx는 서로 다른 머신러닝 프레임워크 전반에서 텐서 연산을 공식화하는 복잡한 과정을 단순화합니다. 텐서를 어떻게 조작하고 축소해야 하는지 설명하는 범용적인 고수준 표기법을 제공함으로써, 번거로운 reshape, transpose, squeeze 연산을 수동으로 작성할 필요를 없애줍니다.

작동 원리

이 라이브러리는 루프 표기법의 유추를 기반으로 원하는 출력을 설명하는 문자열 기반 표기법을 사용합니다. 사용자는 기본 연산(sum, mean 또는 사용자 정의 함수)과 해당 연산이 어떻게 벡터화되는지 정의하는 식을 지정합니다.

내부적으로 einx는 느린 Python for 루프를 사용하지 않습니다. 대신 이러한 식을 최적화된 Python 코드 조각으로 컴파일하여 기본 텐서 프레임워크(NumPy, PyTorch, JAX, TensorFlow 또는 MLX 등)의 네이티브 연산을 호출합니다.

대상 사용자

AI 및 머신러닝 분야에서 텐서를 다루는 연구자와 개발자를 위해 설계되었으며, 프레임워크에 구애받지 않고 복잡한 텐서 변환 및 축소를 처리하고자 하는 분들에게 적합합니다.

주요 특징

  • 범용 인터페이스: NumPy, PyTorch, JAX, TensorFlow, MLX 전반에서 원활하게 작동합니다.
  • 유연한 표기법: 간결한 문자열 구문을 사용하여 값의 순서 변경, 분할, 평탄화, 수집을 지원합니다.
  • 사용자 정의 연산: 어댑터를 사용하여 사용자의 Python 함수를 einx 표기법에 맞게 조정할 수 있습니다.
  • 투명한 컴파일: 연산에 graph=True를 전달하여 생성된 백엔드 코드를 검사할 수 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트