gomlx/gomlx
GoMLX: An Accelerated Machine Learning Framework For Go
해결하는 문제
GoMLX는 Go 프로그래밍 언어를 위한 포괄적인 기계학습 및 수학 프레임워크를 제공하며, PyTorch, JAX, TensorFlow와 같은 인기 프레임워크의 Go 네이티브 대안 역할을 합니다. 개발자는 Go 생태계 내에서 기계학습 모델을 학습, 미세 조정, 실행할 수 있어, ML 개발 및 운영에서 Python에 의존할 필요를 줄일 수 있습니다.
작동 방식
GoMLX는 교환 가능한 백엔드를 통해 실행하는 ML 레이어와 도구의 라이브러리를 제공하는 중간 API 역할을 합니다.
- XLA 백엔드: OpenXLA를 사용하여 CPU, GPU(Nvidia, AMD ROCm, Intel, Mac), TPU로의 고성능 JIT 컴파일을 지원하며, 여러 가속기 간 분산 실행을 가능하게 합니다.
- Go 백엔드: 순수 Go 구현으로 매우 포터블하며, 브라우저 기반 실행을 위한 WASM을 지원하고, 특정 아키텍처에서는 SIMD로 최적화됩니다.
- ONNX 백엔드: ONNX Runtime을 활용하여 계산을 실행하고, 모델을
.onnx형식으로 저장할 수 있습니다.
프레임워크에는 자동 미분(autodiff), 변수 관리(Store 및 Scope) 시스템, 다양한 미분 가능한 연산자 및 ML 레이어가 포함되어 있습니다.
대상 사용자
Go 생태계를 벗어나지 않고 기계학습 모델을 구축하고 실험하며, 본격적으로 배포하고 싶은 Go 개발자, 또는 비전통적인 최적화기나 정규화 아이디어를 실험하는 연구자에게 적합합니다.
주요 특징
- HuggingFace 통합:
go-huggingface와 호환되어 모델, 토크나이저, 데이터셋을 다운로드하고 GGUF 또는 safetensors에서 파라미터를 읽을 수 있습니다. - 다양한 레이어 지원: FFN, 컨볼루션, Multi-Head-Attention, LSTM, 그리고 KAN(Kolmogorov-Arnold Networks)과 VNN(Vector Neural Networks)과 같은 특수 레이어를 포함합니다.
- 유연한 실행: XLA를 통해 다양한 하드웨어 타겟을 지원하며, 멀티 GPU/TPU 분산 실행도 가능합니다.
- 개발자 도구: 체크포인트를 검사하고 플롯을 생성하기 위한 명령줄 도구, JupyterLab과의 통합을 위한 GoNB 포함.
- 고급 학습 기능: 대규모 모델 학습 시 메모리와 재계산을 교환하는 그래디언트 체크포인팅을 지원합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트