Repolode
tairov

tairov/llama2.mojo

SIMD 벡터화와 멀티스레딩을 활용해 단일 파일의 순수 Mojo로 구현한 Llama 2 스타일 트랜스포머 추론 코드입니다.

스타
2,128
포크
139
열린 이슈
0
마지막 커밋
지난달

어떤 프로젝트인가요?

llama2.mojo는 추론 과정에서 Python 런타임을 전혀 사용하지 않고, 작은 Llama 아키텍처 모델의 추론을 온전히 Mojo로 실행합니다. 저자가 이전에 작성한 llama2.py를 포팅한 프로젝트로, Mojo의 SIMD 및 벡터화 프리미티브를 중심으로 구성되어 있으며 parallelize 기반 워커 풀을 사용해 멀티스레드로 실행합니다.

Karpathy의 stories 모델(매개변수 260K~110M)과 TinyLlama-1.1B-Chat을 불러옵니다. 사용자는 체크포인트 파일, 토크나이저 파일, 프롬프트와 온도, 스텝 수, 시드, 워커 수 등의 샘플링 옵션을 전달합니다. README에는 Apple M1 Max 및 x86 머신에서 llama2.c, llama.cpp, llama2.py와 처리량을 비교한 벤치마크 표가 포함되어 있습니다.

코드는 MIT 라이선스로 제공되며, parallelize 함수를 제공하는 MAX 패키지와 Mojo 컴파일러가 필요합니다.

핵심 기능

  • 01단일 Mojo 소스 파일에서 Llama 2 아키텍처 모델을 실행합니다.
  • 02행렬 연산에 SIMD 및 벡터화 프리미티브를 사용합니다.
  • 03워커 수를 설정해 멀티스레드 추론을 지원합니다.
  • 04stories 260K~110M 체크포인트와 TinyLlama-1.1B-Chat을 불러옵니다.
  • 05프롬프트, 온도, 시드, 스텝 수를 지정하는 명령줄 옵션을 제공합니다.

활용 사례

  • 트랜스포머의 순전파가 SIMD 및 멀티코어 CPU 코드로 어떻게 구현되는지 살펴봅니다.
  • 로컬 CPU에서 작은 Llama 체크포인트를 실험합니다.
  • 동일한 추론 작업을 여러 프로그래밍 언어로 구현해 비교합니다.
  • 완성도 높고 읽기 쉬운 수치 연산 프로그램을 통해 Mojo 언어를 익힙니다.

빠른 시작

  1. 1

    uv로 Mojo 컴파일러와 MAX를 설치합니다

    uv venv --python 3.13 ~/.modular-venv && uv pip install --python ~/.modular-venv/bin/python mojo "max[all]"
  2. 2

    저장소를 클론합니다

    git clone https://github.com/tairov/llama2.mojo.git
  3. 3

    stories15M 모델을 다운로드합니다

    wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin
  4. 4

    모델을 실행합니다

    mojo llama2.mojo stories15M.bin -s 100 -n 256 -t 0.5 -i "Once upon a time"

사용 전 알아둘 점

  • Mojo 실행 파일을 링크하려면 호스트에 C 컴파일러가 필요합니다.
  • 특정 버전에 종속된 Mojo 1.1 툴체인과 MAX가 필요합니다.

포함된 컬렉션

토픽

자주 묻는 질문

llama2.mojo은(는) 무엇인가요?
SIMD 벡터화와 멀티스레딩을 활용해 단일 파일의 순수 Mojo로 구현한 Llama 2 스타일 트랜스포머 추론 코드입니다. llama2.mojo는 추론 과정에서 Python 런타임을 전혀 사용하지 않고, 작은 Llama 아키텍처 모델의 추론을 온전히 Mojo로 실행합니다. 저자가 이전에 작성한 llama2.py를 포팅한 프로젝트로, Mojo의 SIMD 및 벡터화 프리미티브를 중심으로 구성되어 있으며 parallelize 기반 워커 풀을 사용해 멀티스레드로 실행합니다.
llama2.mojo은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
llama2.mojo은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
llama2.mojo은(는) 아직 유지보수되고 있나요?
6개월 이내 업데이트. llama2.mojo의 마지막 커밋은 2026년 9월 30일입니다.
llama2.mojo은(는) 어디에 사용할 수 있나요?
트랜스포머의 순전파가 SIMD 및 멀티코어 CPU 코드로 어떻게 구현되는지 살펴봅니다. 로컬 CPU에서 작은 Llama 체크포인트를 실험합니다. 동일한 추론 작업을 여러 프로그래밍 언어로 구현해 비교합니다. 완성도 높고 읽기 쉬운 수치 연산 프로그램을 통해 Mojo 언어를 익힙니다.
llama2.mojo는 어떻게 설치하나요?
uv로 Mojo 컴파일러와 MAX를 설치합니다: uv venv --python 3.13 ~/.modular-venv && uv pip install --python ~/.modular-venv/bin/python mojo "max[all]" 저장소를 클론합니다: git clone https://github.com/tairov/llama2.mojo.git stories15M 모델을 다운로드합니다: wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin 모델을 실행합니다: mojo llama2.mojo stories15M.bin -s 100 -n 256 -t 0.5 -i "Once upon a time"
llama2.mojo은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/tairov/llama2.mojo

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트