Transformers 라이브러리: 모델 정의 표준화
요약
Transformers 라이브러리는 BERT 출시 이후 NLP를 넘어 오디오, 컴퓨터 비전까지 아우르며 LLM 및 VLM의 핵심 표준 라이브러리로 자리매김했습니다. 현재 300개 이상의 모델 아키텍처를 지원하며, Axolotl, Unsloth 등 다양한 훈련 프레임워크와 vLLM, SGLang 같은 최신 추론 엔진과의 강력한 통합을 제공합니다. 앞으로는 llama.cpp 및 MLX와의 상호 운용성을 강화하고, 모듈화된 모델 정의 표준화를 통해 모든 다운스트림 도구에서 모델 사용의 장벽을 낮추어 생태계 전체의 효율성과 접근성을 극대화하는 것을 목표로 합니다.
핵심 포인트
- Transformers는 LLM 및 VLM 분야의 핵심 라이브러리로서, 300개 이상의 광범위한 모델 아키텍처를 지원합니다.
- vLLM, SGLang 등 최신 추론 엔진과의 통합을 통해 모델 배포 시 초고속 프로덕션급 서비스를 보장합니다.
- llama.cpp (GGUF) 및 MLX와의 긴밀한 협력을 통해 다양한 환경에서의 높은 상호 운용성을 확보했습니다.
- 향후 목표는 모듈화된 모델 정의 표준화를 통해, 새로운 모델이 최소한의 노력으로 모든 다운스트림 라이브러리에서 사용 가능하도록 장벽을 낮추는 것입니다.
- 모델 구현의 표준화는 훈련(training), 추론(inference), 프로덕션(production) 전 과정에 걸쳐 도구 간의 효율적인 연동성을 제공할 것입니다.
Transformers 는 BERT Transformer 모델 출시 직후인 2019 년에 설립되었습니다. 이후 우리는 NLP 에 초점을 맞춘 상태에서 오디오 및 컴퓨터 비전으로 확장되는 최첨단 아키텍처를 지속적으로 추가해 왔습니다. 오늘날 transformers 는 Python 생태계에서 LLM 과 VLM 의 기본 라이브러리가 되었습니다.
Transformers 는 이제 300 개 이상의 모델 아키텍처를 지원하며, 주당 약 3 개의 새로운 아키텍처가 추가되고 있습니다. 우리는 이러한 아키텍처들이 시의에 맞게 출시되도록 노력해 왔으며, 가장 인기 있는 아키텍처 (Llamas, Qwens, GLMs 등) 에 대해 Day-0(출시 당일) 지원을 제공합니다.
시간이 지남에 따라 Transformers 는 ML 생태계의 핵심 구성 요소가 되었고, 모델 다양성 측면에서 가장 완전한 도구 세트 중 하나가 되었습니다. Axolotl, Unsloth, DeepSpeed, FSDP, PyTorch-Lightning, TRL, Nanotron 등 모든 인기 있는 훈련 프레임워크에 통합되어 있습니다.
최근에는 우리는 vLLM, SGLang, TGI(...) 와 같은 가장 인기 있는 추론 엔진과 손잡고 transformers를 백엔드로 사용하도록 돕고 있습니다. 추가되는 가치는 상당합니다: 모델이 transformers에 추가되자마자 이러한 추론 엔진에서 사용할 수 있게 되며, 각 엔진의 강점을 활용합니다 (추론 최적화, 전용 커널, 동적 배치 등).
예를 들어, vLLM 의 transformers 백엔드와 함께 작업하는 방법은 다음과 같습니다:
from vllm import LLM
llm = LLM(model="new-transformers-model", model_impl="transformers")
새로운 모델이 vLLM 과 함께 초고속 및 프로덕션 등급 서비스를 즐길 수 있도록 하는 것이 이것뿐입니다.
vLLM 문서에서 자세히 읽으세요.
우리는 또한 transformers와 이러한 모델링 라이브러리 간의 구현에 훌륭한 상호 운용성을 가지도록 llama.cpp 와 MLX 와 매우 밀접하게 작업하고 있습니다. 예를 들어, 상당한 커뮤니티 노력 덕분에 transformers에서 GGUF 파일을 로드하여 추가 미세 조정 (fine-tuning) 을 하는 것은 이제 매우 쉽습니다. 반대로 transformers 모델은 llama.cpp 를 위해 GGUF 파일로 쉽게 변환할 수 있습니다.
이는 MLX 에도 동일하며, transformers 의 safetensors 파일이 MLX 의 모델과 직접적으로 호환됩니다.
우리는 transformers 형식이 커뮤니티에 채택되어 우리가 모두 혜택을 보는 많은 상호 운용성을 가져온 것을 매우 자랑스럽습니다. Unsloth 로 모델을 훈련하고 SGLang 으로 배포한 후 llama.cpp 로 내보내서 로컬에서 실행하세요! 우리는 앞으로 커뮤니티 지원이 계속되도록 노력합니다.
커뮤니티가 모델 정의를 참조하여 transformers 를 사용하도록 더 쉽게 만들기 위해, 우리는 모델 기여의 장벽을 크게 줄이려 노력하고 있습니다. 우리는 몇 년 동안 이러한 노력을 해 왔지만, 향후 몇 주 동안 이를 가속화할 것입니다:
- 각 모델의 모델링 코드는 더욱 단순화될 것이며, 가장 중요한 구성 요소 (KV 캐시, 다양한 Attention 함수, 커널 최적화) 에 대해 명확하고 간결한 API 가 제공될 것입니다.
- 우리는 느린 토크나이저를 폐기하여 효율적인 토큰화를 장려하는 등 불필요한 구성 요소를 폐기하여 API 를 사용하는 단순하고 하나의 방법을 갖게 될 것입니다. 또한 빠른 벡터화된 비전 프로세서도 사용합니다.
- 우리는 모듈러모델 정의를 강화하는 작업을 계속할 것이며, 새로운 모델이 절대 최소한의 코드 변경을 필요로 하도록 목표로 합니다. 6000 줄의 기여와 새 모델에 대한 20 개의 파일 변경은 과거의 일이 되었습니다.
모델 사용자의 경우, 미래에는 사용하는 도구의 상호 운용성이 더욱 많아질 것입니다.
이것은 우리가 실험에 transformers 를 사용하도록 고정하려고 한다는 것을 의미하지 않습니다. 오히려 이 모델 표준화 덕분에, 훈련 (training), 추론 (inference), 프로덕션 (production) 을 위한 도구들이 효율적으로 함께 작동할 수 있을 것이라고 기대할 수 있습니다.
모델 생성자로서 이는 하나의 기여가 해당 모델 구현을 통합한 모든 다운스트림 라이브러리에서 모델을 사용할 수 있게 해준다는 것을 의미합니다. 우리는 여러 번 이 점을 확인해 왔습니다: 모델을 공개하는 것은 스트레스를 유발하며, 중요한 라이브러리에 통합하는 것은 종종 상당한 시간 소모입니다.
커뮤니티 주도 방식으로 모델 구현을 표준화함으로써, 우리는 다양한 라이브러리를 통해 분야에 대한 기여의 장벽을 낮추기를 바랍니다.
우리는 이 생태계가 분열 위험에 항상 직면해 있는 것을 고려할 때, 이러한 새로운 방향이 표준화를 돕는다고 확신합니다. 팀이 선택한 방향과 이를 달성하기 위해 우리가 할 수 있는 변경 사항에 대해 여러분의 피드백을 듣고 싶습니다. Hub 의 transformers-community 지원 탭에서 찾아오세요!
AI 자동 생성 콘텐츠
본 콘텐츠는 Hugging Face Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기