Olive, 하드웨어를 인식하여 효율적으로 추론을 하게 해주는 모델 최적화 도구 (feat. Microsoft)
소개
Olive는 하드웨어 인식 모델 최적화 도구로, 다양한 하드웨어에 맞춘 최적화 기술을 통합하여 사용자가 간편하게 모델을 최적화할 수 있도록 돕습니다. 이는 정확도, 지연 시간, 처리량 등 제약 조건을 고려하여 최적의 모델을 출력합니다. Olive는 클라우드 및 엣지에서 모델을 최적화할 때 필요한 공학적 노력을 줄이고, 통합된 최적화 프레임워크를 제공합니다. 이를 통해 다양한 최적화 기법을 손쉽게 플러그인하여 사용할 수 있습니다.
기존의 모델 최적화 도구는 하드웨어 벤더별로 각기 다른 도구 체인을 사용해야 하며, 이는 복잡성과 학습 곡선을 증가시킵니다. Olive는 이러한 문제를 해결하기 위해 다양한 벤더의 최적화 기술을 통합하고 자동화하여 단일 프레임워크 내에서 사용할 수 있도록 합니다. 예를 들어, NVIDIA의 TensorRT나 Intel의 OpenVINO와 같은 도구들을 통합하여 더 효율적으로 모델을 최적화할 수 있습니다.
주요 기능
-
모델 압축 및 최적화: 다양한 하드웨어에 맞춘 모델 압축 및 최적화 기법을 통합.
-
자동화된 최적화: 하드웨어에 따라 자동으로 최적의 기술을 선택하여 모델을 최적화.
-
확장성: 새로운 최적화 기술을 손쉽게 플러그인하여 사용할 수 있는 구조.
-
다양한 하드웨어 지원: 클라우드 및 엣지 하드웨어 모두에 최적화된 모델 제공.
프레임워크별 지원 기능
프레임워크 | 기능 | 설명 |
---|---|---|
PyTorch | LoRA | 특정 모델 부분을 저차원 공간으로 변환하여 메모리 사용량과 계산 비용을 줄임. |
QLoRA | 양자화를 적용하여 LoRA의 메모리 효율성을 극대화. | |
LoftQ | 모델의 학습 속도를 높이기 위한 기술. | |
Quantization Aware Training | 양자화 오차를 최소화하기 위해 훈련 중에 양자화 과정 시뮬레이션. | |
AutoGPTQ | 최적의 양자화 설정을 자동으로 찾아 모델 양자화. | |
AutoAWQ | 모델의 가중치를 자동으로 최적화. | |
MergeAdapterWeights | 여러 어댑터 가중치를 하나로 병합. | |
SparseGPT | 희소성 기술을 활용하여 연산 효율성 향상. | |
SliceGPT | 모델을 작은 조각으로 나누어 병렬 처리로 학습 속도 높임. | |
TorchTRTConversion | PyTorch 모델을 TensorRT 형식으로 변환하여 GPU 성능 최적화. | |
ONNX | Model Conversion | PyTorch 모델을 ONNX 형식으로 변환. |
Model Optimizer | ONNX 모델 성능 향상을 위한 최적화. | |
ORT Transformers Optimization | ONNX Runtime 변환기 최적화. | |
Append Pre/Post Processing Ops | 전처리 및 후처리 작업 추가. | |
Insert Beam Search Op | Beam Search 작업 삽입. | |
Quantize with onnxruntime | onnxruntime을 이용한 양자화. | |
Quantize with Intel® Neural Compressor | Intel® Neural Compressor를 이용한 양자화. | |
Quantize with AMD Vitis AI Quantizer | AMD Vitis AI Quantizer를 이용한 양자화. | |
ORT Performance Tuning | ONNX Runtime 성능 튜닝. | |
Float16 Conversion | Float16 형식으로 변환. | |
Inputs/Outputs Float16 to Float32 Conversion | 입력/출력을 Float16에서 Float32로 변환. | |
Mixed Precision Conversion | 혼합 정밀도 변환. | |
Convert dynamic shape to fixed shape | 동적 형태를 고정 형태로 변환. | |
Extract Adapters | 어댑터를 추출하여 다른 모델에 재사용. | |
OpenVINO | Prerequisites | 모델 변환을 위한 전제 조건 설정. |
Model Conversion | 모델을 OpenVINO 형식으로 변환. | |
Post Training Quantization (PTQ) | 훈련 후 양자화를 통한 성능 최적화. | |
SNPE | Prerequisites | SNPE로 변환을 위한 조건 설정. |
Model Conversion | 모델을 SNPE 형식으로 변환. | |
Post Training Quantization (PTQ) | 훈련 후 양자화를 통한 성능 최적화. | |
QNN | Prerequisites | QNN으로 변환을 위한 조건 설정. |
Model Conversion/Quantization | 모델을 QNN 형식으로 변환 또는 양자화. | |
Model Library Generation | QNN 모델 라이브러리 생성. | |
Context Binary Generation | 컨텍스트 바이너리 생성. |
Olive의 구조
-
Pass: 모델 최적화 작업을 수행하는 기본 단위. 각 Pass는 특정 최적화 기법을 수행합니다.
-
System: Pass가 실행되거나 모델이 평가되는 환경. LocalSystem, AzureMLSystem, DockerSystem 등을 포함합니다.
-
Evaluator: 모델의 성능을 평가하고 메트릭스를 반환합니다. 기본 제공 메트릭스로는 정확도, 지연 시간, 처리량 등이 있습니다.
-
Engine: Pass를 관리하고 실행하며, 모델을 평가하고 최적화하는 역할을 합니다.
-
Search Strategy: 최적화 파이프라인을 제공하여 각 Pass의 최적 값을 자동으로 찾습니다.
라이선스
Olive 프로젝트는 MIT License로 공개 및 배포되고 있습니다.
Olive GitHub 저장소
Olive 문서 사이트
https://microsoft.github.io/Olive/
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~