Flama: ML 모델과 LLM을 최우선으로 다루는 Python 프레임워크를 8년간 구축하고 arXiv에 정리하다 [P]
요약
Flama는 ML 모델과 LLM을 프로덕션 API로 쉽게 배포하기 위해 8년간 구축된 Python 프레임워크입니다. 모든 모델은 가중치, 아티팩트, 메타데이터를 포함하는 단일 .flm 파일로 패키징되며, 이 구조 덕분에 CI/CD 과정에서 효율적인 검증이 가능합니다. 또한 Flama는 다양한 백엔드(vLLM, MLX 등)와 표준 프로토콜을 통해 하나의 모델을 여러 API 경로에 동시에 배포할 수 있게 합니다.
핵심 포인트
- 모든 모델은 .flm 파일로 통일 패키징되어 관리 용이성이 높습니다.
- CI/CD 과정에서 메타데이터 기반의 효율적인 검증 및 승인 처리가 가능합니다.
- 하나의 모델을 여러 표준 프로토콜(OpenAI, Anthropic 등)에 동시에 배포할 수 있습니다.
- Rust 코어 기반으로 라우팅, 직렬화 등을 처리하여 안정성을 높였습니다.
저는 가능한 한 적은 절차로 학습된 모델을 프로덕션 API로 가져가기 위해 2018년에 Flama를 시작했습니다. 버전 2.0에서 LLM이 기존 모델과 함께 최우선으로 자리 잡았고, Miguel Durán-Olivencia와 함께 전체 아키텍처를 83페이지 분량의 논문으로 arXiv에 작성했습니다 (2608.18733). 모델은 파일입니다. scikit-learn 파이프라인이든, PyTorch 네트워크든, LLM이든 모든 모델은 단일 .flm 파일로 패키징됩니다: 가중치, 추론 시 필요한 아티팩트(토크나이저, 설정), 그리고 기록한 학습 메트릭을 포함하는 메타데이터가 들어갑니다. 이 메타데이터는 가중치 앞에 위치하기 때문에, flama model <file> inspect 명령은 아무것도 로드하지 않고도 이를 읽을 수 있으며, CI 작업은 서버를 띄우지 않고도 해당 메트릭을 기준으로 배포 승인을 거부할 수 있습니다. flama model <file> run은 서버가 사용하는 것과 동일한 코드 경로에서 참조 세트를 오프라인으로 점수화합니다. 추론 엔진 역시 내장되어 있지 않습니다: 동일한 LLM 파일이 어디에 배포하느냐에 따라 vLLM이나 MLX에서 실행됩니다. 하나의 모델, 네 가지 프로토콜 from flama import Flama app = Flama() app.models.add_model( path="/llm/", model="google_gemma-4-E2B-it.flm", name="assistant", serving=("native", "openai", "anthropic", "ollama"), ) 이 모델은 OpenAI(/llm/openai/v1/chat/completions), Anthropic(/llm/anthropic/v1/messages), 그리고 Ollama(/llm/ollama/api/chat) 경로에 동시에 응답하며, 사용자 정의 엔드포인트와 기존 모델 옆에 /llm/chat/에서 스트리밍 채팅 UI를 제공합니다. https://i.redd.it/lq0plprg69vh1.gif 세 개의 독립적인 레이어 요청은 다이얼렉트(dialect)를 거쳐, 표준 전송 계층(canonical transport), 그리고 백엔드(Linux의 CUDA를 사용하는 vLLM 또는 Apple Silicon의 MLX)를 거칩니다. 이 레이어들이 중간에서만 만나기 때문에, 어떤 다이얼렉트든 모든 백엔드에서 작동하며, 이것이 툴 호출과 토큰 사용량이 모든 프로토콜에서 정확하게 나오는 이유이기도 합니다.
프레임워크의 나머지 부분은 Pydantic, Marshmallow 또는 Typesystem과 같은 타입 힌트 스키마로부터 의존성 주입(Dependency Injection)을 해결하며, SQLAlchemy 테이블에서 생성된 핸들러 CRUD API와 OpenAPI 문서를 처리합니다. DDD 빌딩 블록으로는 리포지토리(repositories) 및 워커(workers)(작업 단위)가 있습니다. JWT 인증과 MCP를 통해 모든 애플리케이션을 MCP 서버로 전환할 수 있으며, flama upgrade 명령어를 지원합니다. 버전 간 코드를 마이그레이션하는 코드 모드(codemods)도 제공됩니다. 라우팅, 직렬화(serialising), 파싱, 암호화 및 압축을 위한 Rust 코어 기반입니다. 이 논문은 각 서브시스템을 자세히 설명하고 Flama를 웹 프레임워크, 모델 서버 및 LLM 추론 엔진과 비교합니다 (표 1). 논문: https://arxiv.org/abs/2608.18733 코드: https://github.com/vortico/flama 유용하다고 느끼신다면 GitHub에서 별점을 눌러주시면 더 많은 사람이 이 프로젝트를 발견하는 데 도움이 됩니다. 디자인에 관해 궁금한 점이 있다면 기꺼이 답변드리겠습니다. 제출자 /u/p3rdy [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/MachineLearning (hot)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기