프로젝트 소개

# Cactus Cactus는 모바일 기기와 웨어러블을 위해 설계된 하이브리드 엣지-클라우드 AI 엔진입니다. 양자화, 커널, 계산 그래프, 런타임 엔진을 포함한 온디바이스 AI 추론을 위한 완전한 스택을 제공합니다. ## 아키텍처 이 프로젝트는 네 개의 주요 계층으로 구성됩니다: - **Cactus Engine**: 채팅 완성, 스트리밍, 도구 호출, 전사, 임베딩, RAG, 클라우드 핸드오프를 포함하여 텍스트, 음성, 비전 작업을 위한 OpenAI 호환 API를 제공합니다. - **Cactus Graph**: 행렬 곱셈, 어텐션, 정규화, 활성화 함수와 같은 텐서 연산을 위한 제로 카피 계산 그래프입니다. - **Cactus Kernels**: ARM NEON SIMD를 사용하여 Apple, Samsung, Pixel 및 기타 모바일 플랫폼에 최적화된 CPU/GPU 커널입니다. - **Cactus Quants**: 4비트에서 1비트 정밀도를 지원하는 맞춤형 회전 기반 양자화 기법입니다. ## 빠른 시작 (Mac) Homebrew를 통해 설치하고 실행하세요: ```bash brew install cactus-compute/cactus/cactus cactus run ``` ## 주요 기능 - **하이브리드 엣지-클라우드**: 로컬 모델 신뢰도를 기반으로 어려운 쿼리를 자동으로 클라우드로 라우팅합니다. - **모델 지원**: Liquid, Gemma, Whisper, Parakeet, Qwen 모델 패밀리와 함께 작동합니다. 모든 HuggingFace 모델은 실험적으로 변환할 수 있습니다. - **다양한 바인딩**: Swift, Kotlin, Flutter, React Native, Python, Rust. - **온디바이스 도구 호출**: 온디바이스 도구 호출을 위한 "Needle"이라는 26M 파라미터 모델을 포함합니다. - **CLI 도구**: 모델 실행, 전사, 서빙, 변환, 벤치마킹, 테스트를 위한 명령어. ## 성능 벤치마크는 Apple 실리콘과 모바일 기기에서 강력한 성능을 보여줍니다. 예를 들어, Mac M5 Max에서 이 엔진은 1k 컨텍스트 LLM 벤치마크에서 초당 2964 토큰의 프리필과 초당 154 토큰의 디코드를 달성합니다. iPhone 17 Pro에서는 초당 729 토큰의 프리필과 초당 37 토큰의 디코드를 달성합니다. ## 출력 품질 양자화 품질은 여러 벤치마크(ARC, HellaSwag, WinoGrande, MMLU, GPQA, GSM8K, HumanEval, BFCL)에 걸쳐 평가됩니다. CQ4 양자화는 대부분의 작업에서 원본 FP16 모델에 가까운 품질을 유지합니다. ## 사용법 CLI는 다음 명령어를 제공합니다: - `cactus run`: 양자화 비트, 백엔드, 이미지/오디오 입력, 도구 등의 옵션으로 모델을 실행합니다. - `cactus transcribe`: 실시간 마이크 전사 또는 파일 전사. - `cactus download`: 미리 빌드된 모델 번들을 다운로드합니다. - `cactus convert`: HuggingFace 모델을 Cactus CQ 가중치로 변환합니다. - `cactus serve`: OpenAI 호환 로컬 HTTP 서버를 시작합니다. - `cactus code`: AI 코딩 에이전트를 실행합니다. - `cactus benchmark`: 벤치마크 스위트를 실행합니다. - `cactus test`: 테스트 스위트를 실행합니다. ## 문서 각 구성 요소에 대한 자세한 문서가 제공됩니다: - Cactus Engine (C API) - Cactus Graph (C++) - Cactus Kernels (C++) - Cactus Quants (C++) - Cactus Hybrid (C/Python) - Python Package ## 인용 연구에서 Cactus를 사용하는 경우 다음을 인용해 주세요: ```bibtex @software{cactus, title = {Cactus: AI Inference Engine for Phones & Wearables}, author = {Ndubuaku, Henry and Cactus Team}, url = {https://github.com/cactus-compute/cactus}, year = {2025} } ```