Hugging Face, 순수 Elixir에서 Transformers와 Stable Diffusion을 지원하는 Bumblebee 발표
TL;DR
Hugging Face는 Bumblebee라는 순수 Elixir 라이브러리를 소개했습니다. 이 라이브러리는 Hugging Face Transformers—GPT‑2와 Stable Diffusion을 포함—를 Elixir 런타임으로 포팅하여, 개발자가 서드파티 바이너리 없이 CPU 또는 GPU에서 추론을 실행할 수 있게 합니다.
Bumblebee가 제공하는 것
- 모델 커버리지: 텍스트 생성(GPT‑2)부터 이미지 합성(Stable Diffusion)까지 다양한 사전 학습 모델이 Elixir 모듈로 제공됩니다.
- 외부 의존성 없음: 모델은 Erlang VM의 동시성 및 분산 기능을 활용해 네이티브 CPU/GPU 코드로 컴파일되며, Python이나 C 라이브러리가 필요 없습니다.
- Livebook 통합: Livebook의 “Smart cells”를 통해 사용자는 세 번의 클릭만으로 신경망 작업 템플릿을 만들 수 있어, 노트북을 인터랙티브한 ML 환경으로 전환합니다.
- Phoenix, Broadway, Nerves 지원: Bumblebee 모델은 Phoenix 웹 애플리케이션에 삽입하거나 Broadway 파이프라인을 통해 스트리밍하거나 Nerves 임베디드 디바이스에 배포할 수 있습니다.
기술적 기반
- Nx 텐서: Bumblebee는 다차원 텐서를 제공하고 XLA(EXLA) 또는 Libtorch(Torchx)로 컴파일되는 Elixir 서브셋을 지원하는 Nx 라이브러리를 기반으로 합니다.
- Axon: 함수형이며 조합 가능한 신경망 정의는 Flax와 PyTorch Ignite에서 영감을 받은 Axon이 제공합니다.
- Explorer: 데이터프레임 연산은 dplyr와 Polars의 개념을 차용한 Explorer를 활용해 효율적인 데이터 조작을 수행합니다.
- Tokenizers: Transformer 모델에 필요한 전처리 단계를 처리하는 네이티브 Elixir 토크나이저 라이브러리가 포함됩니다.
시작하는 방법
- Livebook v0.8 설치 및 “+ Smart” 셀 메뉴를 사용해 신경망 작업 템플릿을 생성합니다.
- 예제 Phoenix 앱 실행을 Bumblebee 저장소에서 실행하여 LiveView와 함께 웹 서버 내에서 추론을 확인합니다.
- Bumblebee
notebooks/디렉터리의 노트북 탐색을 통해 실습 튜토리얼을 살펴봅니다.
향후 로드맵
- 학습 및 전이 학습: 팀은 사전 학습 모델을 Elixir에서 직접 미세 조정할 수 있게 하여, 기업이 도메인 특화 데이터에 모델을 맞출 수 있도록 할 계획입니다.
- 전통적인 ML 알고리즘: 고전적인 머신러닝 방법에 대한 추가 작업이 향후 릴리스에 포함될 예정입니다.
- 플랫폼 지원 확대: Livebook은 Hugging Face Spaces를 포함한 더 많은 환경으로 포팅되고 있습니다.
커뮤니티 참여
- Bumblebee에 새로운 모델 아키텍처를 추가하는 기여를 환영합니다.
- 컴파일러 작업, 모델 구축, Elixir의 동시성 생태계와의 통합 등 다양한 분야에서 기회가 있습니다.
- 이 프로젝트는 Elixir에서 머신러닝의 “동시적이고, 분산적이며, 재미있는” 미래를 강조합니다.
이 발표는 2022년 12월 9일 Hugging Face 블로그에 게시되었습니다.