tairov/llama2.mojo

Inference Llama 2 in one file of pure 🔥

해결하는 문제

llama2.mojo는 Mojo 프로그래밍 언어로 작성된 Llama 2 추론의 고성능 구현체입니다. 무거운 프레임워크에 의존하지 않고, 소형에서 중형 규모의 LLM에 대해 효율적이고 하드웨어 최적화된 CPU 추론을 제공하며, 파이썬 구현체보다는 훨씬 빠르고 C 기반 대안들과 경쟁 가능한 성능을 제공합니다.

작동 방식

이 프로젝트는 Mojo의 SIMD(Single Instruction, Multiple Data) 및 벡터화 기능을 활용하여 행렬 곱셈과 기타 텐서 연산을 최적화합니다. 멀티스레드 추론을 위해 지속적인 워커 풀을 사용하여, 특정 베이비-llama 모델에서 llama2.cllama.cpp를 초월하는 성능을 발휘합니다.

대상 사용자

AI 워크로드에 대한 Mojo 언어의 효율성을 탐구하고자 하는 개발자 및 연구자, 그리고 CPU에서 Llama 스타일 모델을 실행하기 위한 가벼운 순수-Mojo 구현체를 찾는 사용자에게 적합합니다.

주요 특징

  • 고성능: 파이썬 성능을 거의 250배 향상시키며, 멀티스레드 추론에서 llama2.c보다 30% 빠릅니다.
  • 하드웨어 최적화: Mojo의 고급 하드웨어 수준 기능을 활용해 CPU 추론에 특화되어 있습니다.
  • 모델 지원: 다양한 "베이비 Llama" 모델(260K에서 110M)과 TinyLlama-1.1B-Chat-v0.2를 지원합니다.
  • 단일 파일: 순수 Mojo로 작성된 단일 파일 내에서 Llama 2 추론을 구현합니다.

"Mojo의 SIMD 및 벡터화 기능은 CPU 기반 추론에서 놀라운 성능 향상을 가능하게 합니다." — @handle

관련

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