2P by neo 2023-11-14 | favorite | 댓글 1개

Rust+Wasm 스택: Python의 강력한 대안

  • Rust+Wasm 애플리케이션은 Python에 비해 크기가 1/100, 속도는 100배 빠르며, 하드웨어 가속을 전혀 변경하지 않고 모든 곳에서 안전하게 실행 가능함.
  • Rust는 AGI(인공 일반 지능)의 언어로, llama2 모델을 원래 속도로 추론하는 간단한 Rust 프로그램을 만듦.
  • Wasm으로 컴파일된 바이너리 애플리케이션(2MB)은 다양한 하드웨어 가속기를 갖춘 기기에서 완전히 이식 가능함.
  • Wasm 런타임(WasmEdge)은 클라우드 환경에서 안전하고 보안된 실행 환경을 제공함.

Rust 프로그램 설치 및 실행

  • Step 1. WasmEdge와 GGML 플러그인 설치: Linux 또는 Mac 기기에서 아래 명령어를 사용하여 설치함.
  • Step 2. 사전 빌드된 Wasm 앱과 모델 다운로드: llama2 모델을 GGUF 형식으로 다운로드하고, 예시로는 llama2 7B 채팅 튜닝 모델을 5비트 가중치로 양자화한 버전을 다운로드함.
  • Step 3. 실행: WasmEdge를 사용하여 wasm 추론 애플리케이션을 실행하고, GGUF 모델을 전달하여 모델과 대화할 수 있는 질문을 입력함.

모델 동작 설정

  • 명령줄 옵션을 사용하여 모델과의 상호작용 방식을 설정할 수 있음.
  • 예를 들어, 특정 컨텍스트 길이를 지정하고 각 응답에서 예측할 최대 토큰 수를 설정하며, 통계를 출력하고 모델 응답을 stdout으로 스트리밍하는 방식으로 설정할 수 있음.
  • 프로그램은 저가형 M2 맥북에서 초당 약 25개의 토큰을 생성함.

LLM 에이전트 및 앱

  • Rust와 WasmEdge를 사용하여 OpenAI 호환 API 서버를 생성함.
  • 이를 통해 OpenAI 호환 개발 도구를 사용하여 LLM 에이전트 및 앱을 생성할 수 있음.

Python 대신 Rust+Wasm의 이점

  • Rust+Wasm 스택은 AI 추론 애플리케이션에 대한 Python 스택의 강력한 대안으로, 클라우드 컴퓨팅 인프라를 제공함.
  • 초경량: 추론 애플리케이션은 모든 종속성을 포함하여 단지 2MB임.
  • 매우 빠름: 추론 애플리케이션의 모든 부분에서 네이티브 C/Rust 속도를 제공함.
  • 이식성: 동일한 Wasm 바이트코드 애플리케이션은 이질적인 하드웨어 가속을 지원하는 모든 주요 컴퓨팅 플랫폼에서 실행 가능함.
  • 설치, 개발 및 배포가 쉬움: 복잡한 종속성이 없으며, 노트북에서 표준 도구를 사용하여 단일 Wasm 파일을 빌드하고 어디서나 배포할 수 있음.
  • 안전하고 클라우드 준비 완료: Wasm 런타임은 신뢰할 수 없는 사용자 코드를 격리하도록 설계되었으며, 컨테이너 도구에 의해 관리되고 클라우드 네이티브 플랫폼에 쉽게 배포될 수 있음.

Rust 추론 프로그램

  • 데모 추론 프로그램은 Rust로 작성되었으며 Wasm으로 컴파일됨.
  • Rust 소스 코드는 매우 간단하며, 단 40줄의 코드로 구성됨.
  • Rust 프로그램은 사용자 입력을 관리하고, 대화 기록을 추적하며, 텍스트를 llama2의 채팅 템플릿으로 변환하고, WASI NN API를 사용하여 추론 작업을 실행함.

클라우드 또는 엣지에서 실행

  • Wasm 바이트코드 파일을 갖고 나면, WasmEdge 런타임을 지원하는 모든 기기에 배포할 수 있음.
  • WasmEdge는 GGML 플러그인과 함께 설치되며, 다양한 하드웨어 가속을 자동으로 활용하여 llama2 모델을 실행함.

다음 단계

  • WasmEdge GGML 도구는 현재 사용 가능하며 클라우드 네이티브 고객에 의해 사용되고 있지만, 아직 초기 단계임.
  • 오픈 소스 프로젝트에 기여하고 미래 LLM 추론 인프라의 방향을 형성하는 데 관심이 있다면, 기여할 수 있는 몇 가지 저수준 작업이 있음.

다른 AI 모델

  • WasmEdge와 WASI NN은 Python 대안으로서 가벼우면서도 빠르고, 이식 가능하며, 안전한 추론 애플리케이션을 구축할 수 있음.
  • 예를 들어, mediapipe-rs 프로젝트는 Google의 mediapipe Tensorflow 모델에 대한 Rust+Wasm API를 제공함.

GN⁺의 의견

이 글에서 가장 중요한 것은 Rust와 WebAssembly(Wasm)를 사용하여 AI 추론을 위한 Python의 대안을 제시하는 것이며, 이는 크기, 속도, 이식성 및 보안성 면에서 현저한 이점을 제공한다는 점입니다. 이 기술 스택은 클라우드 컴퓨팅 인프라를 통합하여 다양한 기기와 클라우드 환경에서의 성능을 향상시키고, 복잡한 종속성 문제를 해결하며, 개발 및 배포를 간소화하는 방법을 제공합니다. 이러한 접근 방식은 특히 엣지 컴퓨팅과 AI 추론의 미래에 중요한 영향을 미칠 수 있으며, 이는 기술에 관심이 있는 사람들에게 매우 흥미로운 주제입니다.

Hacker News 의견
  • Rust와 WASM에 대한 지지를 표명하면서도 실제 코드는 Rust로 작성된 기본적인 커맨드라인 스크립트에 불과하며, 주된 처리는 WASI-NN 백엔드를 호출하는 단 한 줄의 코드에 의존함. 이 경우 WasmEdge 런타임이 제공하며, WasmEdge는 C++로 작성되었음을 지적.
  • 어플리케이션 개발자에게 이 프로젝트는 배포 가능한 파일로 추론 엔진을 패키징하는 가장 쉬운 방법을 제공함. 모델의 가중치는 이미 이동 가능하며, 필요에 따라 다운로드 가능함.
  • 프로젝트가 단순히 llama.cpp를 래핑하는 것이 아닌가 하는 의문을 제기하며, Rust와 WebGPU를 사용한 ML 프레임워크 개발 경험을 공유함.
  • wasm-nn에 의존하는 프로젝트가 실제로는 휴대성이 없으며, 특정 하드웨어에 대한 지원이 없는 경우 실행이 불가능할 수 있음을 지적함. 이는 WASI의 목적과 맞지 않는 상황임.
  • GGML 플러그인의 Mac OS 빌드가 M1/M2/M3의 신경 처리 엔진이 아닌 GPU에서 Metal API를 사용하여 추론 작업을 수행한다는 내용에 대한 정확성에 의문을 제기함.
  • 변환기 아키텍처를 에지 컴퓨팅에서 더 효율적이고 빠르게 실행하는 방법이 개발될 것이지만, VRAM 요구 사항이 주요 병목 현상이 되어 큰 모델을 로드하는 데 한계에 도달할 수 있음을 우려함.
  • 프로젝트가 오프라인 상태에서 iPhone에서 실행 가능한지에 대한 질문을 함. 이는 인터넷 접속이 불가능한 상황에서 유용할 수 있음.
  • 프로젝트가 다른 언어로 작성된 래퍼를 사용하여 크기나 속도에서 혁신적인 것처럼 마케팅하는 것에 대한 비판을 제시함. 실제로는 llama.cpp에 기반을 둔 프로젝트이며, 추론 속도나 바이너리 크기는 래퍼의 선택에 의해 제한되지 않음.
  • 모델의 훈련된 가중치가 크기의 상당 부분을 차지하는 경우, 정확도를 잃지 않으면서 크기를 어떻게 줄일 수 있는지에 대한 질문을 함.
  • Rust 소스 코드의 핵심은 매우 간단하며, 사용자 입력을 관리하고 대화 내역을 추적하며, 텍스트를 llama2의 채팅 템플릿으로 변환하고 WASI NN API를 사용하여 추론 작업을 수행하는 40줄의 코드로 구성됨.