Ethernet으로 여러 가정용 기기에 LLM 추론을 분산해 생성 속도를 높이는 C++ 도구입니다.
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
uv로 Mojo 컴파일러와 MAX를 설치합니다
uv venv --python 3.13 ~/.modular-venv && uv pip install --python ~/.modular-venv/bin/python mojo "max[all]" - 2
저장소를 클론합니다
git clone https://github.com/tairov/llama2.mojo.git - 3
stories15M 모델을 다운로드합니다
wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin - 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 통계는 매일 갱신됩니다.
관련 프로젝트
GPU나 BLAS 없이 단일 CPU에서 2.78조 파라미터 Kimi K3 모델을 실행하며, 전문가를 디스크에서 스트리밍하는 C99 추론 엔진입니다.
Google의 Gemma 모델을 CPU에서 실행하는 경량 독립형 C++ 추론 엔진입니다.
CPU 추론 속도에 초점을 둔 llama.cpp 포크로, 로컬에서 GGUF LLM을 실행하기 위한 추가 양자화 형식과 기능을 제공합니다.
Alibaba의 고성능 LLM 추론 엔진으로, 여러 사업 부문에서 대규모 언어 모델을 서빙하는 데 사용됩니다.
GPU 없이도 LLM 추론 시스템의 성능을 연구하고, 배포를 계획하고, 스케줄링 아이디어를 시험할 수 있는 고정밀 시뮬레이터입니다.