1P by neo 1달전 | favorite | 댓글 1개

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 라이브러리가 있음.
Hacker News 의견
  • 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 모델을 지원하면 시도해볼 의향이 있음