# Lm.rs: 의존성 없는 Rust 기반 최소 CPU LLM 추론 기술

> Clean Markdown view of GeekNews topic #17205. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17205](https://news.hada.io/topic?id=17205)
- GeekNews Markdown: [https://news.hada.io/topic/17205.md](https://news.hada.io/topic/17205.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-10-12T20:32:57+09:00
- Updated: 2024-10-12T20:32:57+09:00
- Original source: [github.com/samuel-vitorino](https://github.com/samuel-vitorino/lm.rs)
- Points: 1
- Comments: 1

## Topic Body

##### lm.rs: Rust로 CPU에서 로컬 언어 모델 추론 실행

- **소개**
  - lm.rs는 Rust를 사용하여 CPU에서 언어 모델 추론을 실행할 수 있는 프로젝트임.
  - Karpathy의 llama2.c와 llm.c에서 영감을 받아 ML 라이브러리 없이 최소한의 코드로 언어 모델을 실행할 수 있도록 설계됨.
  - Google의 Gemma 2 모델만 지원했으나, 이제 Llama 3.2 모델과 PHI-3.5 이미지 모델도 지원함.

- **준비된 모델**
  - 다양한 모델과 토크나이저의 벤치마크 및 다운로드 링크 제공.
  - Q8_0, Q4_0 양자화 모델 사용 권장.
  - 속도는 16코어 AMD Epyc에서 측정됨.

- **모델 변환**
  - Google/Meta의 모델을 lmrs 형식으로 변환 가능.
  - Python 의존성 설치 후, export.py와 tokenizer.py 스크립트 사용하여 모델과 토크나이저 변환 가능.

- **빌드**
  - Rust 코드를 cargo로 컴파일하여 실행 가능.
  - 멀티모달 기능을 활성화하려면 multimodal 기능 포함 필요.

- **TODOs**
  - 샘플링 방법 추가.
  - 9B 및 27B 모델 테스트.
  - 멀티 헤드 어텐션 루프 병렬화.
  - 성능 메트릭 추가.
  - 시스템 프롬프트 제공 기능 추가.
  - 양자화 지원 (int8, int4).

##### # GN⁺의 정리

- lm.rs는 Rust로 CPU에서 언어 모델을 실행할 수 있는 효율적인 방법을 제공함. 이는 ML 라이브러리 없이도 가능하여 경량화된 환경에서 유용함.
- Rust를 처음 사용하는 개발자에게도 적합하며, 다양한 모델을 지원하여 확장성이 높음.
- PHI-3.5와 같은 멀티모달 모델 지원으로 이미지 처리 기능도 포함되어 있음.
- 유사한 기능을 가진 프로젝트로는 Hugging Face의 Transformers 라이브러리가 있음.

## Comments



### Comment 29985

- Author: neo
- Created: 2024-10-12T20:32:58+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=41811078) 
- M2 64GB MacBook에서 1.2G llama3.2-1b-it-q80.lmrs를 실행했을 때 빠르게 작동했으며, CPU 사용량이 13개의 스레드에서 1000%였음
- 코드 예시를 통해 Transformer의 작동 방식을 설명하는 데 유용할 것 같음
  - 라이브러리가 stdout에 출력하지 않도록 개선할 필요가 있음
  - "unsafe" 없이 구현할 수 있는지에 대한 의문이 있음
- 다양한 Rust 도구를 사용하여 모델 로딩 및 기타 LLM 작업을 수행할 수 있음
  - Python 의존성을 줄이는 데 도움이 될 수 있음
  - 문법 지원 계획이 있는지 궁금함
- 제목이 명확하지 않음
  - "no dependency"라는 표현이 오해를 불러일으킬 수 있음
- 과거에 비슷한 작업을 했지만 성능이 만족스럽지 않았음
  - Rust 구현의 벤치마크가 필요함
  - LLM 추론 구현이 프로그래머에게 새로운 "hello world!"가 될 수 있음
- Metal/Cuda 지원이 필수적임
- Rust 커뮤니티의 열정을 높이 평가함
- 이 구현들이 모두 CPU에 의존하는지 궁금함
- 다른 프로젝트와의 비교가 필요함
  - Vision 모델을 지원하면 시도해볼 의향이 있음
