Quanto, Hugging Face에서 개발한 PyTorch 기반의 양자화 도구(Quantization Toolkit)

Hugging Face에서 개발한 PyTorch 기반의 양자화 툴킷, Quanto를 소개합니다. 이 툴킷은 기존 PyTorch 양자화 도구에서 지원하지 않거나 제한적인 여러 기능을 제공합니다. 예를 들어, Quanto는 eager 모드에서 모든 기능을 사용할 수 있으며, CUDA와 MPS를 포함한 모든 장치에 양자화된 모델을 배치할 수 있습니다. 또한, 동적에서 정적 양자화 모델로의 원활한 워크플로우를 지원하며, PyTorch의 weight_only와 :hugs: safetensors와 호환되는 직렬화를 제공합니다. Quanto는 CUDA 장치에서 정수 행렬 곱셈을 사용하고, int2, int4, int8, float8 가중치 및 int8, float8 활성화를 지원합니다. 이러한 기능들은 AI 모델 개발자 및 연구자들에게 유용한 도구가 될 것입니다.

소개

Quanto 성능 비교: NousResearch/Llama-2-7b-hf

Quanto는 AI 모델의 양자화 과정을 단순화하고 최적화하기 위해 Hugging Face에 의해 개발된 PyTorch 기반의 양자화 툴킷입니다. 양자화는 모델의 가중치와 활성화를 낮은 비트 너비의 정수로 변환하여 모델의 크기를 줄이고 추론 속도를 향상시키는 기술입니다. Quanto는 이 과정을 더 효율적이고 사용자 친화적으로 만들기 위해 다양한 기능과 향상된 워크플로우를 제공합니다.

주요 기능

  • Eager 모드 지원: Non-traceable 모델에서도 모든 기능을 사용할 수 있습니다.
  • 다양한 장치 지원: CUDA 및 MPS를 포함한 모든 장치에 양자화된 모델을 배치할 수 있습니다.
  • 자동 삽입 기능: 자동으로 양자화 및 역양자화 스텁, 양자화된 함수 연산, 양자화된 모듈을 삽입합니다.
  • 향상된 직렬화: PyTorch의 weight_only 및 :hugs: safetensors와 호환되는 직렬화를 제공합니다.
  • 정수 행렬 곱셈 사용: CUDA 장치에서 int2, int4, int8, float8 가중치 및 int8, float8 활성화를 지원합니다.

사용 방법 또는 작동 원리

Quanto는 PyTorch 모델을 양자화하는 과정을 간소화합니다. 사용자는 몇 가지 간단한 단계를 통해 모델을 동적 양자화 모델로 변환한 다음, 선택적으로 가중치를 "동결"하여 정수 값으로 만들 수 있습니다. 이 과정은 다음과 같습니다:

  1. 양자화: 표준 float 모델을 동적 양자화 모델로 변환합니다.
quantize(model, weights=quanto.qint8, activations=quanto.qint8)
  1. 보정: 모델을 통해 대표 샘플을 전달하면서 활성화 범위를 기록하는 보정 모드를 지원합니다.
  2. 튜닝: 모델의 성능이 과도하게 저하된 경우, 몇 에포크 동안 튜닝하여 float 모델의 성능을 회복할 수 있습니다.
  3. 정수 가중치 동결: 모델을 동결할 때, float 가중치는 정수 가중치로 대체됩니다.

비교

Quanto는 PyTorch의 기본 양자화 도구와 비교했을 때 여러 가지 이점을 제공합니다. Quanto는 non-traceable 모델에서도 모든 기능을 사용할 수 있으며, 다양한 장치에 양자화된 모델을 배치할 수 있는 능력, 자동으로 양자화 및 역양자화 스텁을 삽입하는 기능 등을 통해 사용자에게 더 많은 유연성과 편의성을 제공합니다. 또한, Quanto는 PyTorch의 weight_only 및 :hugs: safetensors와 호환되는 직렬화를 제공하여 모델의 직렬화와 역직렬화 과정을 단순화합니다.

Quanto GitHub 저장소


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

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

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 힘이 됩니다~ :star_struck:

1개의 좋아요