[WebGPU] Apache TVM을 사용하는 브라우저에서 WebGPU 기반 기계 학습
2021.04.17 22:45
Apache TVM을 사용하는 브라우저에서 WebGPU 기반 기계 학습
거의 네이티브 GPU 성능과 WebAssembly로 브라우저에서 손쉬운 ML 배포
Tianqi Chen, Jared Roesch 및 Jason Knight
TL; DR
Apache TVM 딥 러닝 컴파일러 에 WASM 및 WebGPU 백엔드에 대한 지원을 도입했습니다 . 초기 실험은 TVM의 WebGPU 백엔드가 브라우저에서 모델을 배포 할 때 기본 GPU 성능에 근접 할 수 있음을 보여줍니다 .
소개 — 더 빠른 브라우저 애플리케이션
WebGPU 및 WebAssembly 는 하드웨어 이식성을 유지하면서 브라우저 기반 애플리케이션을 기본 애플리케이션만큼 효율적으로 만드는 것을 목표로하는 두 가지 최신 브라우저 표준입니다. WebGPU는 먼저 하위 수준의 그래픽 API 움직임을 기반으로 구축되어 이전의 WebGL에 비해 더 완전한 기능을 갖춘 GPU 가속 컴퓨팅 기능을 사용할 수 있으며, WebAssembly (WASM)는 CPU 기반 컴퓨팅 기능을 잠금 해제하기위한 유사한 노력입니다. 무엇보다도 WASM은 이미 읽고있는 브라우저에서 이미 활성화 되어 있으며 WebGPU 는 곧 출시 될 예정 입니다.
특히 WASM이면의 흥미로운 기능과 사용 사례에 대해서는 Lin Clark의 뛰어난 WASM "스킬 트리"를 확인하십시오 .
SIMD 지원 및 멀티 스레딩과 같은 이러한 WASM 기능을 더 많이 활용하는 것은 향후 작업의 흥미로운 영역이지만 WebGPU 컴퓨팅 셰이더를 제공하기 위해 WASM 및 WASI (표준 인터페이스)를 얼마나 멀리 사용할 수 있는지 살펴 보겠습니다.
브라우저에서 기계 학습
TensorFlow.js 및 ONNX.js와 같은 노력이 기계 학습을 브라우저로 가져 오려고 시도하는 동안 웹 버전과 기본 버전 간에는 성능에 사소한 차이가 여전히 존재합니다. 이러한 격차의 원인 중 하나는 웹에서 GPU에 대한 표준 및 성능 액세스가 부족하기 때문입니다. WebGL에는 고성능 딥 러닝에 필요한 컴퓨팅 셰이더 및 일반 스토리지 버퍼와 같은 중요한 기능이 없습니다.
WebGPU는 일류 컴퓨팅 셰이더 지원을 통해 이러한 격차를 해소 할 수있는 잠재력을 제공합니다.
브라우저에서 기계 학습을 배포하기 위해 WebGPU를 사용할 가능성을 탐색하기 위해 WASM (시작 매개 변수를 계산하고 장치 시작을 호출하는 호스트 코드의 경우) 및 WebGPU (장치의 경우)를 대상으로 딥 러닝 컴파일러 Apache (인큐베이팅) TVM 을 개선했습니다. 실행). 우리의 예비 결과는 매우 긍정적입니다. 처음으로 우리는 GPU에서 거의 기본 성능을 유지하면서 웹에 기계 학습 애플리케이션을 배포 할 수 있습니다.
확인하시기 바랍니다 우리의 동반자 아파치 TVM 기술 블로그 게시물을 기술적 인 세부 사항을 위해,하지만 짧은에, 우리는 결합하여 WASM을 통해 브라우저에서 기본 GPU 성능 근처에 달성 할 수 있었다 WebGPU :
- WebGPU 컴퓨팅 API를 대상으로하는 TVM의 기존 SPIR-V 코드 생성 기능
- WASM 생성 지원을위한 TVM의 기존 LLVM 백엔드
- 새로운
tvmjs
TypeScript 런타임 - 시스템 라이브러리 호출 (예 : malloc, stderr)을위한 WASM의 표준 인터페이스 (WASI)
- Chrome의 야간 WebGPU 지원
공연
TVM의 WebGPU 백엔드와 네이티브 GPU 런타임 (Metal 및 OpenCL)을 사용하는 네이티브 타겟을 통해 전체 Mobilenet 실행의 실행을 비교하는 간단한 실험을 실행했습니다. 우리는 WebGPU가 Metal의 성능과 매우 비슷하다는 것을 알았습니다. Chrome WebGPU의 런타임이 MacOS에서 OpenCL 대신 Metal을 대상으로한다고 가정하면 여기에서 브라우저를 통해 GPU를 대상으로 할 때 성능 손실이 거의 또는 전혀 없다고 가정 할 수 있습니다.
또한 이러한 결과는 인텔 그래픽 GPU와는 상당히 다른 GTX 1080 Ti에서 이전에 자동 조정 된 일정을 기반으로하므로 브라우저에서 사용하는 GPU에 AutoTVM 조정을 적용하여 성능을 더욱 향상시킬 수있을 것으로 기대 합니다. 이를 더 쉽게하기 위해, 우리는 임베디드 마이크로 컨트롤러를위한 uTVM 런타임 (향후 1 ~ 2 주 동안 업데이트를 위해이 블로그를 계속 지켜봐주십시오)에 대한 우리의 향후 개선이 WASM 타겟이 임베디드와 많은 유사점을 공유하므로 브라우저에서 자동 튜닝을 더 쉽게 만드는 데 도움이 될 것으로 기대합니다. 장치.
미래를 바라보며
우리의 결과는 웹에서 기계 학습에 대한 많은 흥미로운 기회를 제안합니다. 특히 WebGPU는 여전히 진화하는 API이며 그 의미는 웹 애플리케이션을 넘어 설 수 있습니다. 예를 들어 WebGPU가 성숙되고 WASI를 통해 표준화됨에 따라 WebGPU의 기본 API를 대상으로 지정하여 WebGPU를 사용하는 독립형 WASM 응용 프로그램을 사용할 수 있습니다.
TVM 커뮤니티는 또한 훨씬 더 강력한 WASM 지원을 가능하게 하고 wgpu 및 Rust WASM 생태계 와 같은 프로젝트와 더 쉽게 상호 작용할 수 있는 Rust 기반 런타임 을 적극적으로 작업 하고 있습니다 . 오픈 소스 프로젝트로서 우리는 새로운 아이디어를 가져와이 흥미로운 방향으로 프로젝트를 추진하는 데 도움을 줄 수있는 기여자를 찾고 있습니다.
제안 된 접근 방식은 대부분의 WASM 애플리케이션 시나리오에 대해 효과적인 기계 학습 지원을 제공합니다. 네이티브 성능에 가까워 지면 브라우저에서 더 나은 통합 학습 기능을 사용할 수 있습니다 . 동일한 컴파일 된 패키지가 네이티브 WASM 실행기에서 실행되어 애플리케이션에 샌드 박스를 제공 할 수 있어야합니다.
세부 정보 / 코드보기
WASM 컴파일 인프라와 웹상의 JS 라이브러리 지원을 제공 한 emscripten 프로젝트에 감사드립니다. 또한 다양한 유용한 토론에 대해 WebGPU 커뮤니티에 감사드립니다. 게시물에 대한 귀중한 피드백을 주신 Fletcher Haynes에게 감사드립니다.
[출처] https://ichi.pro/ko/apache-tvmeul-sayonghaneun-beulaujeoeseo-webgpu-giban-gigye-hagseub-68571195995672
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.