ngxson/wllama
WebAssembly binding for llama.cpp - Enabling on-browser LLM inference
해결하는 문제
wllama는 백엔드 서버나 전용 GPU 없이 웹 브라우저에서 직접 거대 언어 모델(LLM)을 실행할 수 있는 방법을 제공합니다. 강력한 C++ 구현체인 llama.cpp와 웹 애플리케이션 사이의 간극을 WebAssembly(Wasm) 바인딩을 통해 연결합니다.
작동 원리
이 프로젝트는 llama.cpp를 WebAssembly로 컴파일하여 브라우저가 모델의 추론 로직을 실행할 수 있도록 합니다. 다음과 같은 여러 실행 경로를 지원합니다:
- WebGPU: 모델 레이어를 GPU로 오프로드하여 성능을 크게 향상시킵니다.
- Wasm SIMD: GPU를 사용할 수 없는 경우 SIMD 명령어를 사용하여 CPU에서 추론을 실행하여 효율성을 확보합니다.
- Web Workers: 워커 스레드 내에서 추론을 실행하여 생성 중에 브라우저 사용자 인터페이스가 멈추지 않고 응답성을 유지하도록 합니다.
대용량 모델 파일을 처리하기 위해 wllama는 모델을 더 작은 청크로 나누어 로드할 수 있으며, 이는 브라우저 메모리 제한(ArrayBuffer 제한)을 우회하고 병렬 다운로드를 가능하게 합니다.
대상 사용자
TypeScript나 JavaScript를 사용하여 로컬, 비공개, 서버리스 LLM 기능을 프론트엔드 애플리케이션에 통합하려는 웹 개발자.
주요 특징
- OpenAI 호환 API: OpenAI의 요청/응답 형식에 익숙한 사용자들을 위해 통합을 간소화합니다.
- 하드웨어 가속: WebGPU와 Wasm SIMD를 모두 지원하여 성능을 최적화합니다.
- 멀티모달 기능: 멀티모달 모델을 위한 이미지 및 오디오 파일 입력을 지원합니다.
- 도구 호출: 모델이 외부 도구와 상호 작용할 수 있도록 합니다.
- 병렬 모델 로딩: 대용량 GGUF 모델을 분할하여 병렬로 로드함으로써 속도를 높이고 2GB 파일 크기 제한을 우회할 수 있습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch