BitNet.cpp, Microsoft가 공개한 x86 및 ARM 기반 CPU에 최적화한 BitNet 추론 프레임워크

BitNet 소개

BitNet은 1비트 대규모 언어 모델(Large Language Model, LLM)을 위한 공식 추론 프레임워크입니다. LLM을 더 작은 비트 표현으로 줄여 빠르고 효율적인 추론을 가능하게 합니다. 1.58비트 모델을 기반으로 한 BitNet은 특히 CPU 환경에서 매우 최적화되어 있으며, ARMx86 기반 시스템에서 우수한 성능을 발휘합니다. 향후 NPUGPU 지원이 추가될 예정입니다.

BitNet의 첫 번째 릴리스는 CPU 환경에서의 추론에 중점을 두고 있으며, 이를 통해 전력 소모를 줄이고 처리 속도를 높이는데 큰 기여를 합니다. 대형 모델이 CPU에서 실행될 때도 빠르고 손실 없는 추론이 가능합니다.

BitNet.cpp성능 개요 및 특징

BitNet은 다양한 CPU 아키텍처에서 뛰어난 성능을 제공합니다. 다음은 BitNet이 제공하는 성능 향상 요소입니다:

  • ARM CPU에서의 성능:
    • 속도 향상: 1.37배에서 5.07배 향상
    • 에너지 절약: 55.4%에서 70% 감소
  • x86 CPU에서의 성능:
    • 속도 향상: 2.37배에서 6.17배 향상
    • 에너지 절약: 71.9%에서 82.2% 감소

BitNet은 100B 파라미터 규모의 모델도 단일 CPU에서 구동할 수 있으며, 인간 수준의 읽기 속도(초당 5~7 토큰)에 필적하는 속도로 텍스트를 처리할 수 있습니다. 이러한 기능 덕분에 BitNet은 노트북이나 임베디드 시스템 등 로컬 장치에서도 LLM을 구동할 수 있는 가능성을 열어줍니다.

다음은 Apple M2에서 BitNet b1.58 3B 모델을 실행하는 데모 영상입니다:

3. 지원하는 모델

BitNet은 Hugging Face에서 제공하는 1비트 LLM을 사용하여 추론 성능을 입증합니다. Microsoft에서 직접 학습하지 않은 모델들도 BitNet에서 사용할 수 있으며, 이를 통해 더 많은 개발자가 1비트 LLM을 확장하여 대형 모델을 구현하는 데 영감을 줄 수 있습니다.

다음은 BitNet이 지원하는 대표적인 모델들입니다.

모델명 파라미터 수 x86 지원 ARM 지원
bitnet_b1_58-large 0.7B :heavy_check_mark: :heavy_check_mark:
bitnet_b1_58-3B 3.3B :heavy_check_mark:
Llama3-8B-1.58-100B-tokens 8.0B :heavy_check_mark: :heavy_check_mark:

이 모델들은 BitNet의 추론 프레임워크를 통해 **양자화(quantization)**된 형식으로 변환되어, CPU에서 더욱 효율적인 추론을 수행할 수 있습니다.

사용 방법 및 예시

기본 사용 방법

GitHub 저장소의 README를 따라 의존성 설치 및 환경 설정을 마친 후, 다음과 같이 양자화된 모델을 사용하여 추론을 수행할 수 있습니다:

python run_inference.py -m models/Llama3-8B-1.58-100B-tokens/ggml-model-i2_s.gguf -p "Where is Mary?\nAnswer:" -n 6 -temp 0

이 명령어는 다음과 같은 출력을 생성합니다:

Answer: Mary is in the garden.

주요 옵션

  • -m: 모델 파일 경로를 지정합니다.
  • -p: 생성할 텍스트의 프롬프트를 입력합니다.
  • -n: 예측할 토큰 수를 설정합니다.
  • -temp: 생성되는 텍스트의 무작위성을 제어하는 하이퍼파라미터인 **온도(Temperature)**를 조절합니다.

벤치마크 및 성능 테스트

BitNet은 다양한 환경에서 성능을 테스트할 수 있는 벤치마크 스크립트를 제공합니다. 아래 명령어는 추론 속도 및 성능을 측정하는 데 사용됩니다:

python utils/e2e_benchmark.py -m /path/to/model -n 200 -p 256 -t 4

이 명령어는 주어진 모델에 대해 200개의 토큰을 생성하고, 프롬프트 크기를 256으로 설정하며, 4개의 스레드를 사용하여 성능을 테스트합니다.

또한 BitNet은 사용자 정의 모델 레이아웃을 지원하지 않는 경우에도 더미 모델을 생성하고 벤치마크를 수행할 수 있는 스크립트를 제공합니다.

감사의 글

BitNet은 llama.cpp 프레임워크를 기반으로 개발되었으며, T-MAC 팀의 저비트 LLM 추론을 위한 LUT 메서드와 관련한 논의에 큰 도움을 받았습니다.

라이선스

Microsoft는 BitNet.cpp를 MIT 라이선스로 공개하였습니다. 자세한 라이선스 내용은 GtiHub 저장소를 확인해주세요.

:scroll: BitNet: Scaling 1-bit Transformers for Large Language Models

:scroll: The Era of 1bit LLMs: All Large Language Models are in 1.58 Bits

:github: BitNet GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: