Apache TVM을 사용하는 브라우저에서 WebGPU 기반 기계 학습

거의 네이티브 GPU 성능과 WebAssembly로 브라우저에서 손쉬운 ML 배포

 

Tianqi Chen, Jared Roesch 및 Jason Knight

TL; DR

Apache TVM 딥 러닝 컴파일러 에 WASM 및 WebGPU 백엔드에 대한 지원을 도입했습니다 . 초기 실험은 TVM의 WebGPU 백엔드가 브라우저에서 모델을 배포 할 때 기본 GPU 성능에 근접 할 수 있음을 보여줍니다 .

브라우저에서 거의 네이티브 GPU 가속 머신 러닝. 손으로 쓴 커널이 없습니다.

소개 — 더 빠른 브라우저 애플리케이션

WebGPU 및 WebAssembly 는 하드웨어 이식성을 유지하면서 브라우저 기반 애플리케이션을 기본 애플리케이션만큼 효율적으로 만드는 것을 목표로하는 두 가지 최신 브라우저 표준입니다. WebGPU는 먼저 하위 수준의 그래픽 API 움직임을 기반으로 구축되어 이전의 WebGL에 비해 더 완전한 기능을 갖춘 GPU 가속 컴퓨팅 기능을 사용할 수 있으며, WebAssembly (WASM)는 CPU 기반 컴퓨팅 기능을 잠금 해제하기위한 유사한 노력입니다. 무엇보다도 WASM은 이미 읽고있는 브라우저에서 이미 활성화 되어 있으며 WebGPU 는 곧 출시 될 예정 입니다.

특히 WASM이면의 흥미로운 기능과 사용 사례에 대해서는 Lin Clark의 뛰어난 WASM "스킬 트리"를 확인하십시오 .

WASM의 포스트 MVP 스킬 트리

SIMD 지원 및 멀티 스레딩과 같은 이러한 WASM 기능을 더 많이 활용하는 것은 향후 작업의 흥미로운 영역이지만 WebGPU 컴퓨팅 셰이더를 제공하기 위해 WASM 및 WASI (표준 인터페이스)를 얼마나 멀리 사용할 수 있는지 살펴 보겠습니다.

브라우저에서 기계 학습

TensorFlow.js 및 ONNX.js와 같은 노력이 기계 학습을 브라우저로 가져 오려고 시도하는 동안 웹 버전과 기본 버전 간에는 성능에 사소한 차이가 여전히 존재합니다. 이러한 격차의 원인 중 하나는 웹에서 GPU에 대한 표준 및 성능 액세스가 부족하기 때문입니다. WebGL에는 고성능 딥 러닝에 필요한 컴퓨팅 셰이더 및 일반 스토리지 버퍼와 같은 중요한 기능이 없습니다.

WebGPU는 일류 컴퓨팅 셰이더 지원을 통해 이러한 격차를 해소 할 수있는 잠재력을 제공합니다.

브라우저에서 기계 학습을 배포하기 위해 WebGPU를 사용할 가능성을 탐색하기 위해 WASM (시작 매개 변수를 계산하고 장치 시작을 호출하는 호스트 코드의 경우) 및 WebGPU (장치의 경우)를 대상으로 딥 러닝 컴파일러 Apache (인큐베이팅) TVM 을 개선했습니다. 실행). 우리의 예비 결과는 매우 긍정적입니다. 처음으로 우리는 GPU에서 거의 기본 성능을 유지하면서 웹에 기계 학습 애플리케이션을 배포 할 수 있습니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

확인하시기 바랍니다 우리의 동반자 아파치 TVM 기술 블로그 게시물을 기술적 인 세부 사항을 위해,하지만 짧은에, 우리는 결합하여 WASM을 통해 브라우저에서 기본 GPU 성능 근처에 달성 할 수 있었다 WebGPU :

 
  • WebGPU 컴퓨팅 API를 대상으로하는 TVM의 기존 SPIR-V 코드 생성 기능
  • WASM 생성 지원을위한 TVM의 기존 LLVM 백엔드
  • 새로운 tvmjsTypeScript 런타임
  • 시스템 라이브러리 호출 (예 : 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

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
1115 [ 一日30分 인생승리의 학습법] 2023 네이버 다이어리 굿노트 템플릿으로 심플하게 새해 계획 file 졸리운_곰 2023.01.07 15
1114 [ 一日30分 인생승리의 학습법] 프로그래밍 스킴 Scheme 1 다운로드부터 문법 대부분을 314초만에 알려줄게요 졸리운_곰 2023.01.05 5
1113 [ 一日30分 인생승리의 학습법] ROBOCOPY(로보카피) 사용법 file 졸리운_곰 2023.01.05 10
1112 [ 一日30分 인생승리의 학습법] PHP, VBA and SQL Useful Scripts PHP, VBA 및 SQL 유용한 스크립트 file 졸리운_곰 2023.01.01 7
1111 [ 一日30分 인생승리의 학습법] KoELECTRA로 기계독해(MRC) API 개발 file 졸리운_곰 2023.01.01 7
1110 [ 一日30分 인생승리의 학습법] 일 안 해도 생기는 수입? 그런 ‘패시브 인컴’은 없다 file 졸리운_곰 2023.01.01 6
1109 [ 一日30分 인생승리의 학습법] Qemu를 이용한 가상화 기초 file 졸리운_곰 2022.12.31 5
1108 [ 一日30分 인생승리의 학습법] 파이토치로 딥러닝해야 하는 5가지 이유 졸리운_곰 2022.12.31 6
1107 [ 一日30分 인생승리의 학습법] 왜 ‘한국어’의 자연어처리(NLP)는 유독 어려울까? file 졸리운_곰 2022.12.31 10
1106 [ 一日30分 인생승리의 학습법] MinIO Windows Service 등록 졸리운_곰 2022.12.24 7
1105 [ 一日30分 인생승리의 학습법] Apache 2.2에서 2.4로 마이그레이션 시 발생하는 에러 및 해결책 정리 졸리운_곰 2022.12.18 6
1104 [ 一日30分 인생승리의 학습법] Git 사용 방법 정리(commit, push, pull request, merge 등) 졸리운_곰 2022.12.04 18
1103 [ 一日30分 인생승리의 학습법] [웹 기획] 화면 설계 용어 - 와이어프레임, 스토리보드, 프로토타입의 차이점 file 졸리운_곰 2022.12.03 6
1102 [ 一日30分 인생승리의 학습법] REST API 설계 (네이밍) 졸리운_곰 2022.11.26 24
1101 [ 一日30分 인생승리의 학습법] REST API URI 규칙 졸리운_곰 2022.11.26 12
1100 [ 一日30分 인생승리의 학습법 ] REST API URL 규칙 졸리운_곰 2022.11.26 9
1099 [ 一日30分 인생승리의 학습법 ] prolog 문법 : Prolog Syntax 졸리운_곰 2022.11.21 3
1098 [ 一日30分 인생승리의 학습법 ] noVNC 작동원리 file 졸리운_곰 2022.11.16 8
1097 [ 一日30分 인생승리의 학습법 ] 프로젝트 만들고 GitHub에 첫 Commit하고 Push하기 file 졸리운_곰 2022.11.15 4
1096 [ 一日30分 인생승리의 학습법 ] 우분투(리눅스) 에서 EBS 라디오 자동녹음 만들기 졸리운_곰 2022.11.11 9
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED