{"id":10062,"date":"2023-10-12T16:18:48","date_gmt":"2023-10-12T07:18:48","guid":{"rendered":"https:\/\/www.stechstar.com\/user\/wordpress\/?p=10062"},"modified":"2023-10-12T16:18:48","modified_gmt":"2023-10-12T07:18:48","slug":"%ec%9d%b8%ea%b3%b5%ec%a7%80%eb%8a%a5-%ea%b8%b0%ec%88%a0-webgpu-powered-machine-learning-in-the-browser-with-apache-tvm-apache-tvm%ec%9d%84-%ec%82%ac%ec%9a%a9%ed%95%98%ec%97%ac-%eb%b8%8c%eb%9d%bc","status":"publish","type":"post","link":"https:\/\/www.stechstar.com\/user\/wordpress\/%ec%9d%b8%ea%b3%b5%ec%a7%80%eb%8a%a5-%ea%b8%b0%ec%88%a0-webgpu-powered-machine-learning-in-the-browser-with-apache-tvm-apache-tvm%ec%9d%84-%ec%82%ac%ec%9a%a9%ed%95%98%ec%97%ac-%eb%b8%8c%eb%9d%bc\/","title":{"rendered":"[\uc778\uacf5\uc9c0\ub2a5 \uae30\uc220] WebGPU powered machine learning in the browser with Apache TVM : Apache TVM\uc744 \uc0ac\uc6a9\ud558\uc5ec \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c WebGPU \uae30\ubc18 \uae30\uacc4 \ud559\uc2b5"},"content":{"rendered":"<h1>[\uc778\uacf5\uc9c0\ub2a5 \uae30\uc220] WebGPU powered machine learning in the browser with Apache TVM : Apache TVM\uc744 \uc0ac\uc6a9\ud558\uc5ec \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c WebGPU \uae30\ubc18 \uae30\uacc4 \ud559\uc2b5<\/h1>\n<p id=\"SE-0f6d9514-f4c2-49b7-9e9e-f49c199e4655\"><span id=\"SE-5d09fb70-78ff-40c0-9d56-b2a13351415a\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>By Tianqi Chen, Jared Roesch, and Jason Knight<\/mark><\/span><\/p>\n<p id=\"SE-49ea3946-d42d-4fa4-a2dc-f04d9898fe2f\"><span id=\"SE-0bdace69-4307-43a3-b583-40b22994857d\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>TL;DR<\/b><\/mark><\/span><\/p>\n<p id=\"SE-34fb3093-78e3-4d6a-a06f-5b3216c0033a\"><span id=\"SE-e0d5d1d5-c4df-43e8-9dff-28fae77513cf\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>Easy ML deployment in the browser with near-native GPU performance and WebAssembly<\/mark><\/span><\/p>\n<p id=\"SE-cf3168c1-1d0c-4152-96a1-2ffb3ee626b5\"><span id=\"SE-bc59e961-ad02-44b2-85ef-ab430f079727\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>We introduced support for WASM and WebGPU backends to the&nbsp;<\/mark><\/span><span id=\"SE-40e8ffc3-dbae-4cfc-b3ee-8670f58881b3\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/tvm.apache.org\/\"><mark>Apache TVM deep learning compiler<\/mark><\/span><span id=\"SE-cc150d06-2a28-4c98-be5f-1aca09b12faf\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>&nbsp;Our initial experiments shows that TVM\u2019s WebGPU backend can get&nbsp;<\/mark><\/span><span id=\"SE-fb163758-b843-41ad-b15c-6041009db713\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>close to native GPU performance<\/b><\/mark><\/span><span id=\"SE-fe9fef90-78ea-4382-9289-adac7a2ae10a\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>&nbsp;when deploying models in the browser.<\/mark><\/span><\/p>\n<p id=\"SE-23be0e19-351b-4406-a48c-252f62c4e004\"><span id=\"SE-83faa3ed-942e-4d6f-bed9-ca42a84df520\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>Introduction \u2014 faster browser applications<\/b><\/mark><\/span><\/p>\n<p id=\"SE-e73cc568-807b-443d-abea-c3c8099b405b\"><span id=\"SE-5103fdfa-c767-4a85-ac41-c5bcf427e3b9\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/hacks.mozilla.org\/2020\/04\/experimental-webgpu-in-firefox\/\"><mark>WebGPU<\/mark><\/span><span id=\"SE-05cc9886-4170-47da-b4cc-95c947a570df\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>&nbsp;and&nbsp;<\/mark><\/span><span id=\"SE-2ece2e49-ae0b-4e43-8259-d734c4ebe5bb\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/webassembly.org\/\"><mark>WebAssembly&nbsp;<\/mark><\/span><span id=\"SE-f1c40587-e62a-4833-90b6-59005818f926\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>are two up-and-coming browser standards aimed at making browser based applications as efficient as native applications while retaining hardware portability. WebGPU first builds on top of the lower level graphics API movements to enable more full featured GPU accelerated compute capabilities as compared to its predecessor WebGL, and WebAssembly (WASM) is a similar effort for unlocking CPU based compute capabilities. And best of all, WASM is most likely&nbsp;<\/mark><\/span><span id=\"SE-9d0b672e-6ae8-4e05-9c56-c54220dcae2c\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/caniuse.com\/#feat=wasm\"><mark>already enabled<\/mark><\/span><span id=\"SE-4d30e2a9-185f-449a-967e-041c0798c552\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>&nbsp;in the browser you\u2019re reading this in, with WebGPU&nbsp;<\/mark><\/span><span id=\"SE-8d787038-af60-4fca-85b4-87c5a67c62b4\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/caniuse.com\/#search=webgpu\"><mark>coming soon<\/mark><\/span><span id=\"SE-f0543b4a-4314-40d7-9c0b-3021fd36e4fd\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>.<\/mark><\/span><\/p>\n<p id=\"SE-3febf4a0-94a4-44dc-a1cd-db8bb1759532\"><span id=\"SE-f9fc223b-155b-4de6-b4e5-5189b49b7274\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>For some of the exciting capabilities and use cases behind WASM particularly, please check out&nbsp;<\/mark><\/span><span id=\"SE-c4b893cc-59af-445d-916a-b064702b790e\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/hacks.mozilla.org\/2018\/10\/webassemblys-post-mvp-future\/\"><mark>Lin Clark\u2019s excellent WASM \u201cskill tree\u201d<\/mark><\/span><\/p>\n<p id=\"SE-fef9d724-5e8e-42d5-8505-af5628cc296a\"><span id=\"SE-3608a0c6-ebe6-4980-af8f-fb1f0f6b3d6c\" class=\"se-ff-system se-fs19 se-highlight se-inline-image se-is-inline-image-block-selected __se-node\"><img decoding=\"async\" class=\"se-inline-image-resource\" src=\"https:\/\/www.stechstar.com\/user\/zbxe\/files\/attach\/images\/92879\/169\/095\/ef444473f62c786697daf1a1d6d4fff8.png\" data-autoattach=\"success\" data-cke-saved-src=\".\/files\/attach\/images\/92879\/169\/095\/ef444473f62c786697daf1a1d6d4fff8.png\"><\/span><\/p>\n<p id=\"SE-1359e5ca-cd4a-44f9-bcf6-3237d0afbba1\" class=\"se-text-paragraph se-text-paragraph-align-center \"><span id=\"SE-a34cd8cd-2143-4209-b981-808e0862b9a6\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>WASM\u2019s post MVP skill tree<\/mark><\/span><\/p>\n<p id=\"SE-7f785d97-5027-48d1-af48-783f950b1cb6\"><span id=\"SE-b983f3f3-2fbc-4338-b180-5e8f6a99fa08\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>Leveraging more of these WASM capabilities such as SIMD support and multi-threading as they mature is an exciting area of future work, but let\u2019s see how far we can get with WASM and WASI (standard interfaces) to feed WebGPU compute shaders.<\/mark><\/span><\/p>\n<p id=\"SE-06522041-2f13-46a0-8875-5fe3447384e8\"><span id=\"SE-88afcd05-ba07-4a97-980c-c44968958a20\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>Machine learning in the browser<\/b><\/mark><\/span><\/p>\n<p id=\"SE-6aa16e4d-5ecd-46f7-9631-79dd15ea7889\"><span id=\"SE-2c5a9383-767f-4483-8dcb-ffcbff7b7d33\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>While efforts like TensorFlow.js and ONNX.js attempt to bring machine learning to the browser, there still exist non-trivial gaps in performance between the web versions and native ones. One of the many reasons behind these gaps are the lack of standard and performant access to the GPU on the web. WebGL lacks important features such as compute shaders and generic storage buffers that are necessary for high performance deep learning.<\/mark><\/span><\/p>\n<p id=\"SE-35dd4e9c-31ef-4c96-8313-8aea2e542c96\"><span id=\"SE-39bf066d-55b9-470e-b72e-31be13725a4d\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>WebGPU offers the potential to bridge this gap with its first-class compute shader support.<\/mark><\/span><\/p>\n<p id=\"SE-f819f0dc-a01f-40b4-a08c-8b24a03b5cbe\"><span id=\"SE-d03a1aff-6d43-40a3-8d55-fff4677c787a\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>To explore the potential of using WebGPU for deploying machine learning in the browser, we enhanced the deep learning compiler&nbsp;<\/mark><\/span><span id=\"SE-6ea2d8fe-d64e-490f-a3c0-4de441493d13\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/tvm.apache.org\/about\"><mark>Apache (incubating) TVM&nbsp;<\/mark><\/span><span id=\"SE-a0781e9f-5c4f-424e-992e-f61fe524e385\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>to target WASM (for host code that computes the launching parameters and calls into the device launch) and WebGPU (for device execution). Our preliminary results are quite positive \u2014 for the first time, we can deploy machine learning applications on the web while still getting near native performance on the GPU.<\/mark><\/span><\/p>\n<p id=\"SE-c4ff99ee-773c-4de0-978e-e31d277541e6\"><span id=\"SE-aeb7568d-1bca-4afc-b149-91b405237843\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>Please check out our&nbsp;<\/mark><\/span><span id=\"SE-fe4f0db5-c961-42af-a394-5f04e7458800\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/tvm.apache.org\/2020\/05\/14\/compiling-machine-learning-to-webassembly-and-webgpu\"><mark>companion Apache TVM technical blog post<\/mark><\/span><span id=\"SE-f0182276-5081-4e7a-bf20-198c9520ff58\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>&nbsp;for the technical details, but in short, we were able to achieve near native GPU performance in the browser through WASM and WebGPU by combining:<\/mark><\/span><\/p>\n<ul class=\"se-text-list se-text-list-type-bullet-disc\">\n<li class=\"se-text-list-item\">\n<p id=\"SE-431a1ca0-7eeb-4b9f-8911-394f05a4bf11\"><span id=\"SE-d922e89d-d5f8-4a69-99df-ec01415f2094\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>TVM\u2019s existing SPIR-V code generation capabilities to target WebGPU compute APIs<\/mark><\/span><\/p>\n<\/li>\n<li class=\"se-text-list-item\">\n<p id=\"SE-2208199d-2c03-409f-aaa8-a0110d580ae8\"><span id=\"SE-c25fe1de-71eb-459b-8867-3420b0f331c7\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>TVM\u2019s existing LLVM backend for it\u2019s WASM generation support<\/mark><\/span><\/p>\n<\/li>\n<li class=\"se-text-list-item\">\n<p id=\"SE-81226710-ee1a-403b-bd94-f4562aac05d9\"><span id=\"SE-d5fb9b70-38fd-46e3-9326-e340fd768cb7\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>A new tvmjs TypeScript runtime<\/mark><\/span><\/p>\n<\/li>\n<li class=\"se-text-list-item\">\n<p id=\"SE-596cbd46-6756-4b1f-9032-060c12e506dc\"><span id=\"SE-e5876245-eb7c-4b48-b868-7bc363dc1787\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>WASM\u2019s standard interfaces (WASI) for system library calls (eg malloc, stderr)<\/mark><\/span><\/p>\n<\/li>\n<li class=\"se-text-list-item\">\n<p id=\"SE-6462907b-ba6b-4463-bf30-ca99eafec9b8\"><span id=\"SE-934355c7-805b-42bc-8618-624935d05b26\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>Chrome\u2019s nightly WebGPU support<\/mark><\/span><\/p>\n<\/li>\n<\/ul>\n<p id=\"SE-3146badd-a98b-4ad2-8b0a-f10efc512015\"><span id=\"SE-bc9ebe19-e8b9-40cc-93bf-06a01bf82825\" class=\"se-ff-system se-fs19 se-highlight se-inline-image se-is-inline-image-block-selected __se-node\"><img decoding=\"async\" class=\"se-inline-image-resource\" src=\"https:\/\/www.stechstar.com\/user\/zbxe\/files\/attach\/images\/92879\/169\/095\/6a8cf7f94b1fb25b369a3ef1545425c8.png\" data-autoattach=\"success\" data-cke-saved-src=\".\/files\/attach\/images\/92879\/169\/095\/6a8cf7f94b1fb25b369a3ef1545425c8.png\"><\/span><\/p>\n<p id=\"SE-fed13a51-a176-405d-be59-24c70ef0d5a0\"><span id=\"SE-53d0dfdb-163d-4d76-b555-ae52ae139dce\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>One important advantage of the compilation based approach is the reuse of infrastructure. We are able to effortlessly relative to&nbsp;<\/mark><\/span><span id=\"SE-4927cc1e-ed97-4669-b81c-2d4796a7a021\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/arxiv.org\/abs\/1901.05350\"><mark>other approaches&nbsp;<\/mark><\/span><span id=\"SE-515b3a74-ea66-4c29-a1de-738f1ad9e7d7\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>target the web by reusing the infrastructure for optimizing GPU kernels for native platforms such as CUDA, Metal and OpenCL. If the mapping of the WebGPU API to native APIs is efficient we can expect similar performance with very little work. More importantly, the&nbsp;<\/mark><\/span><span id=\"SE-0853f614-1b1b-4865-848c-aeb14b8a8b9e\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/tvm.apache.org\/2018\/10\/03\/auto-opt-all\"><mark>AutoTVM&nbsp;<\/mark><\/span><span id=\"SE-0acd28bd-50ae-4c2a-b078-731df88131fa\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>infrastructure allows us to specialize the compute shaders for specific models, enabling the generation of the best compute shaders for our specific model of interest.<\/mark><\/span><\/p>\n<p id=\"SE-3bb366f8-822b-4c1f-a84f-8bb4c72f4a65\"><span id=\"SE-0863cbec-bb01-45b0-b03a-285000d26833\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>Performance<\/b><\/mark><\/span><\/p>\n<p id=\"SE-fc7baa75-f920-4ad9-b32e-dc538b7d80b5\"><span id=\"SE-446360d0-47d4-4c9d-93ab-90af27c52a82\" class=\"se-ff-system se-fs19 se-highlight se-inline-image se-is-inline-image-block-selected __se-node\"><img decoding=\"async\" class=\"se-inline-image-resource\" src=\"https:\/\/www.stechstar.com\/user\/zbxe\/files\/attach\/images\/92879\/169\/095\/03e8e0e49c826eb64b9b4f85f47e4214.png\" data-autoattach=\"success\" data-cke-saved-src=\".\/files\/attach\/images\/92879\/169\/095\/03e8e0e49c826eb64b9b4f85f47e4214.png\"><\/span><\/p>\n<p id=\"SE-8ced90bf-11ac-47f8-8bc0-4ae3c01df79d\"><span id=\"SE-7d0a337f-4e00-486c-b5af-b896419b291b\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>We ran a quick experiment comparing the execution of a full Mobilenet execution via TVM\u2019s WebGPU backend and native targets that use native GPU runtimes (Metal and OpenCL). We find that WebGPU get\u2019s quite close to matching the performance of Metal. Assuming Chrome WebGPU\u2019s runtime targets Metal instead of OpenCL on the MacOS, we can safely assume there is little to no performance loss when targeting the GPU through the browser here.<\/mark><\/span><\/p>\n<p id=\"SE-26d986ba-74e6-489f-900e-272c6f99029e\"><span id=\"SE-7caf8a4e-91c8-4ca7-88d3-f370bb84741d\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>We also expect further performance boosts by applying&nbsp;<\/mark><\/span><span id=\"SE-d0d25e68-18f0-45a2-b009-8baad01f605d\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/tvm.apache.org\/2018\/10\/03\/auto-opt-all\"><mark>AutoTVM<\/mark><\/span><span id=\"SE-658a30ee-f4e7-44b7-b4c9-82d8d5400ecd\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>&nbsp;tuning on the GPU being used by the browser since these results are based off previously auto-tuned schedules from a GTX 1080 Ti, which is quite different from the Intel graphics GPU. To make this easier, we expect our upcoming improvements to the uTVM runtime (stay tuned to this blog for an update in the next 1\u20132 weeks) for embedded microcontrollers will help make autotuning easier in the browser since WASM targets share many similarities to embedded devices.<\/mark><\/span><\/p>\n<p id=\"SE-e9cb708a-ab0e-4273-83d6-352234051494\"><span id=\"SE-f44e70c5-6693-4d9a-b92f-b7ba94623752\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>Looking to the Future<\/b><\/mark><\/span><\/p>\n<p id=\"SE-ae642a89-e1ff-487d-864e-09a880b66caf\"><span id=\"SE-d06a9548-2f25-48ce-bf25-781a92d93bad\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>Our results suggest many interesting opportunities for machine learning on the web. Notably, WebGPU is an API that is still evolving and its implications could go beyond web applications. For example one could target native APIs of WebGPU as it matures and becomes standardized through WASI, enabling standalone WASM applications that make use of WebGPU.<\/mark><\/span><\/p>\n<p id=\"SE-92d57aa4-67eb-4088-9acf-a4572a3e9692\"><span id=\"SE-b788daad-1712-4a27-8cec-c1acd227a7e0\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>The TVM community is also actively working on a&nbsp;<\/mark><\/span><span id=\"SE-9f496c81-169d-46e0-9217-5631418b67e2\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/github.com\/apache\/incubator-tvm\/tree\/master\/rust\"><mark>Rust based runtime<\/mark><\/span><span id=\"SE-2d279dc6-4633-4ade-8227-87c7ae8206d4\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>&nbsp;that would enable much more robust WASM support and enable easier interaction with projects like&nbsp;<\/mark><\/span><span id=\"SE-b4a50ab7-a3a5-48cd-8fd6-934bb98b570c\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/github.com\/gfx-rs\/wgpu-rs\"><mark>wgpu<\/mark><\/span><span id=\"SE-be11241f-186c-4702-9645-832243e61f41\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>, and the&nbsp;<\/mark><\/span><span id=\"SE-52360954-f5cd-411c-b14c-2f435f0f342d\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/rustwasm.github.io\/docs\/book\/\"><mark>Rust WASM<\/mark><\/span><span id=\"SE-d5ce3d25-75ef-490b-b70f-6da5041c2426\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>&nbsp;ecosystem. As an open source project, we are looking for contributors who can bring in new ideas and help push the project in these exciting directions.<\/mark><\/span><\/p>\n<p id=\"SE-eb3c27b8-56c3-40de-acbf-a567d0bfff69\"><span id=\"SE-ff6ffd23-731d-4886-8ac6-103decb1a5ad\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>The proposed approach provides effective machine learning support for most WASM\u2019s application scenarios. The close to native performance could also unlock better&nbsp;<\/mark><\/span><span id=\"SE-3dd7e0e8-58ca-48fb-a698-873509b52540\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/en.wikipedia.org\/wiki\/Federated_learning\"><mark>federated learning<\/mark><\/span><span id=\"SE-af58371a-7986-4207-a582-10647b9e32c4\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>&nbsp;capabilities on the browser. The same compiled package should also be able to run on native WASM executors to provide sandbox for the applications.<\/mark><\/span><\/p>\n<p id=\"SE-2d4d2566-863d-447e-b9c6-51768dbc09a9\"><span id=\"SE-362d0db2-eef3-44a7-83f7-2af97ce077cc\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>Show me the Details\/Code<\/b><\/mark><\/span><\/p>\n<ul class=\"se-text-list se-text-list-type-bullet-disc\">\n<li class=\"se-text-list-item\">\n<p id=\"SE-5dcc26b2-9d1c-4c39-a435-a3c7333d4f77\"><span id=\"SE-34536c72-d14a-41a0-bcb0-b58362caff05\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/tvm.apache.org\/2020\/05\/14\/compiling-machine-learning-to-webassembly-and-webgpu\"><mark>Detailed technical version of this blog post<\/mark><\/span><\/p>\n<\/li>\n<li class=\"se-text-list-item\">\n<p id=\"SE-356eaf7d-844d-4e85-a456-18b2c76247ed\"><span id=\"SE-13f8994d-f801-4519-93d8-7b3920fb119e\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/github.com\/tqchen\/tvm-webgpu-example\"><mark>Example project for image classification<\/mark><\/span><\/p>\n<\/li>\n<li class=\"se-text-list-item\">\n<p id=\"SE-016261f4-2afc-476c-a9e1-82eea6f0bcd4\"><span id=\"SE-a6ac63f0-8c13-45a2-a5a0-f7a974bc3311\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/github.com\/apache\/incubator-tvm\/tree\/master\/web\"><mark>Apache TVM on github<\/mark><\/span><\/p>\n<\/li>\n<\/ul>\n<p id=\"SE-ac89ca9e-8a24-4b58-bf9b-562ad75a5083\"><span id=\"SE-4f1cf8af-4b32-43d3-9929-92570b14c02a\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>Acknowledgement<\/b><\/mark><\/span><\/p>\n<p id=\"SE-d7700b45-1d5b-481e-82bc-c0e48c8b7314\"><span id=\"SE-f5260d6e-0375-4917-926f-4317cb333f39\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark>We would like to thank the emscripten project for providing the WASM compilation infrastructures as well as the JS library support on the web. We would also like to thank the WebGPU community for various helpful discussions. Thanks to Fletcher Haynes for valuable feedback on the post.<\/mark><\/span><\/p>\n<p>[\ucd9c\ucc98]&nbsp;https:\/\/octoml.ai\/blog\/webgpu-powered-machine-learning-in-the-browser-with-apache-tvm\/<\/p>\n<h1 class=\"Heading-sc-1tyvmwe-0 cdedek\"><span>Apache TVM\uc744 \uc0ac\uc6a9\ud558\uc5ec \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c WebGPU \uae30\ubc18 \uae30\uacc4 \ud559\uc2b5<\/span><\/h1>\n<p id=\"SE-17787e60-c6bd-4fb3-a6f2-246f50703055\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-f0e0d60f-1062-49ba-aae9-50fdc78b3568\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uc800\uc790: Tianqi Chen, Jared Roesch, Jason Knight<\/b><\/mark><\/span><\/p>\n<p id=\"SE-bc04049c-7df0-4f72-bd26-7053c3a4a72a\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-66abc3e3-ea6d-4ac2-b38e-9634e37f0a57\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>TL;DR<\/b><\/mark><\/span><\/p>\n<p id=\"SE-592b3607-ca91-4539-a7a4-a0951c30fdda\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-24cfdead-1d8e-4d8e-8d9f-2c53c48af1e9\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uac70\uc758 \uae30\ubcf8 GPU \uc131\ub2a5\uacfc WebAssembly\ub97c \uac16\ucd98 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc27d\uac8c ML \ubc30\ud3ec<\/b><\/mark><\/span><\/p>\n<p id=\"SE-bf11acd5-d1f2-4a84-86e7-b5dd7bca009e\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-7791a8c7-4a7b-4102-b7e4-05e4162286f7\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/tvm.apache.org\/\"><mark><b>Apache TVM \ub525 \ub7ec\ub2dd \ucef4\ud30c\uc77c\ub7ec<\/b><\/mark><\/span><span id=\"SE-96d122f0-9966-4c78-90f7-077a453ae6f3\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>&nbsp;\uc5d0 WASM \ubc0f WebGPU \ubc31\uc5d4\ub4dc\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc744 \ub3c4\uc785\ud588\uc2b5\ub2c8\ub2e4 . \ucd08\uae30 \uc2e4\ud5d8\uc5d0 \ub530\ub974\uba74 \ube0c\ub77c\uc6b0\uc800\uc5d0 \ubaa8\ub378\uc744 \ubc30\ud3ec\ud560 \ub54c TVM\uc758 WebGPU \ubc31\uc5d4\ub4dc\uac00&nbsp;<\/b><\/mark><\/span><span id=\"SE-7147193c-e32f-4cb7-aee6-062a707bbcbc\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uae30\ubcf8 GPU \uc131\ub2a5\uc5d0 \uadfc\uc811 \ud560 \uc218 \uc788\ub294 \uac83\uc73c\ub85c \ub098\ud0c0\ub0ac\uc2b5\ub2c8\ub2e4.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-ce6b89d7-0e63-4036-938a-4bc119a30ff7\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-abaecfe8-17db-4926-a9ef-1b1dc0aed3ed\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uc18c\uac1c \u2014 \ub354 \ube60\ub978 \ube0c\ub77c\uc6b0\uc800 \uc560\ud50c\ub9ac\ucf00\uc774\uc158<\/b><\/mark><\/span><\/p>\n<p id=\"SE-dc78e55b-ded1-49a2-b356-6a3851196b8d\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-3f4d69fd-724e-49ae-9a31-7dc66d0ee243\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/hacks.mozilla.org\/2020\/04\/experimental-webgpu-in-firefox\/\"><mark><b>WebGPU<\/b><\/mark><\/span><span id=\"SE-8e6720a3-5c88-49d1-8a2c-d01adfaa676b\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>&nbsp;\uc640&nbsp;<\/b><\/mark><\/span><span id=\"SE-d6fc5459-35f7-42ac-bce2-0b223886dbbe\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/webassembly.org\/\"><mark><b>WebAssembly<\/b><\/mark><\/span><span id=\"SE-64e0f745-be84-4496-9d50-3f827e33b393\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>&nbsp;\ub294 \ud558\ub4dc\uc6e8\uc5b4 \uc774\uc2dd\uc131\uc744 \uc720\uc9c0\ud558\uba74\uc11c \ube0c\ub77c\uc6b0\uc800 \uae30\ubc18 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uae30\ubcf8 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\ub9cc\ud07c \ud6a8\uc728\uc801\uc73c\ub85c \ub9cc\ub4dc\ub294 \uac83\uc744 \ubaa9\ud45c\ub85c \ud558\ub294 \ub450 \uac00\uc9c0 \ucd5c\uc2e0 \ube0c\ub77c\uc6b0\uc800 \ud45c\uc900\uc785\ub2c8\ub2e4. WebGPU\ub294 \uba3c\uc800 \ub0ae\uc740 \uc218\uc900\uc758 \uadf8\ub798\ud53d API \uc6c0\uc9c1\uc784\uc744 \uae30\ubc18\uc73c\ub85c \uad6c\ucd95\ub418\uc5b4 \uc774\uc804 WebGL\uc5d0 \ube44\ud574 \ub354 \ub9ce\uc740 \uae30\ub2a5\uc744 \uac16\ucd98 GPU \uac00\uc18d \ucef4\ud4e8\ud305 \uae30\ub2a5\uc744 \uc9c0\uc6d0\ud558\uba70 WebAssembly(WASM)\ub294 CPU \uae30\ubc18 \ucef4\ud4e8\ud305 \uae30\ub2a5\uc744 \uc7a0\uae08 \ud574\uc81c\ud558\uae30 \uc704\ud55c \uc720\uc0ac\ud55c \ub178\ub825\uc785\ub2c8\ub2e4. \ubb34\uc5c7\ubcf4\ub2e4\ub3c4 WASM\uc740 \uc774 \uae00\uc744 \uc77d\uace0 \uc788\ub294 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c&nbsp;<\/b><\/mark><\/span><span id=\"SE-290cbba6-da23-4731-9e7a-87f8bb101ecf\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/caniuse.com\/#feat=wasm\"><mark><b>\uc774\ubbf8 \ud65c\uc131\ud654\ub418\uc5b4 \uc788\uc744 \uac00\ub2a5\uc131\uc774 \ub192\uc73c\uba70 WebGPU\ub3c4&nbsp;<\/b><\/mark><\/span><span id=\"SE-1f6fd1f1-44fd-42b6-b12a-e94d805d316e\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/caniuse.com\/#search=webgpu\"><mark><b>\uace7 \ucd9c\uc2dc\ub420 \uc608\uc815\uc785\ub2c8\ub2e4<\/b><\/mark><\/span><span id=\"SE-2796ebc6-8324-4cc2-8f4a-f0c077c529cf\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>&nbsp;.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-fdc95aed-ef17-4c92-8b39-6e60765f52bc\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-dee1d287-61b2-4c3e-ae90-4d2a1607244b\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/hacks.mozilla.org\/2018\/10\/webassemblys-post-mvp-future\/\"><mark><b>\ud2b9\ud788 WASM\uc758 \ud765\ubbf8\ub85c\uc6b4 \uae30\ub2a5\uacfc \uc0ac\uc6a9 \uc0ac\ub840\uc5d0 \ub300\ud574\uc11c\ub294 Lin Clark\uc758 \uc6b0\uc218\ud55c WASM &#8220;\uc2a4\ud0ac \ud2b8\ub9ac&#8221;\ub97c<\/b><\/mark><\/span><span id=\"SE-a5145b88-60da-461a-9105-b2188e95499b\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>&nbsp;\ud655\uc778\ud558\uc138\uc694.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-80841991-9429-412b-850f-4d45ba9c22ef\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-de08a1d2-cb5a-4842-bff0-50a8a17333ff\" class=\"se-ff-system se-fs19 se-highlight se-inline-image se-is-inline-image-block-selected __se-node\"><img decoding=\"async\" class=\"se-inline-image-resource\" src=\"https:\/\/www.stechstar.com\/user\/zbxe\/files\/attach\/images\/92879\/169\/095\/ef444473f62c786697daf1a1d6d4fff8.png\" data-autoattach=\"success\" data-cke-saved-src=\".\/files\/attach\/images\/92879\/169\/095\/ef444473f62c786697daf1a1d6d4fff8.png\"><\/span><\/p>\n<p id=\"SE-9ead6016-ea0c-4a38-a99a-5c98f53ee27b\" class=\"se-text-paragraph se-text-paragraph-align-center se-is-text-paragraph-block-selected\"><span id=\"SE-748f6b58-20a8-427f-b700-3fce8569ceee\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>WASM\uc758 \ud3ec\uc2a4\ud2b8 MVP \uc2a4\ud0ac \ud2b8\ub9ac<\/b><\/mark><\/span><\/p>\n<p id=\"SE-eea7e2ef-3f2a-4b95-be9a-0fdda236b8b3\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-95998e7f-38e8-4ca3-8046-19d55d65b23a\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>SIMD \uc9c0\uc6d0 \ubc0f \uba40\ud2f0\uc2a4\ub808\ub529\uacfc \uac19\uc740 WASM \uae30\ub2a5\uc774 \uc131\uc219\ud574\uc9d0\uc5d0 \ub530\ub77c \ub354 \ub9ce\uc774 \ud65c\uc6a9\ud558\ub294 \uac83\uc740 \ubbf8\ub798 \uc791\uc5c5\uc758 \ud765\ubbf8\ub85c\uc6b4 \uc601\uc5ed\uc774\uc9c0\ub9cc WebGPU \ucef4\ud4e8\ud305 \uc170\uc774\ub354\uc5d0 \uacf5\uae09\ud558\uae30 \uc704\ud574 WASM \ubc0f WASI(\ud45c\uc900 \uc778\ud130\ud398\uc774\uc2a4)\ub97c \ud1b5\ud574 \uc5bc\ub9c8\ub098 \uba40\ub9ac\uae4c\uc9c0 \uac08 \uc218 \uc788\ub294\uc9c0 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-efe99f32-f3a8-4743-ad23-74902e20eff8\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-8a9666aa-e6c5-4724-a283-c076da4f31d8\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c\uc758 \uba38\uc2e0\ub7ec\ub2dd<\/b><\/mark><\/span><\/p>\n<p id=\"SE-1b3d0315-4b81-455d-ace0-3bf524018c18\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-6f466ea8-7e5f-4ca3-814f-4dd286f07603\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>TensorFlow.js \ubc0f ONNX.js\uc640 \uac19\uc740 \ub178\ub825\uc774 \uae30\uacc4 \ud559\uc2b5\uc744 \ube0c\ub77c\uc6b0\uc800\uc5d0 \ub3c4\uc785\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\ub294 \ub3d9\uc548 \uc6f9 \ubc84\uc804\uacfc \uae30\ubcf8 \ubc84\uc804 \uc0ac\uc774\uc5d0\ub294 \uc5ec\uc804\ud788 \uc131\ub2a5 \ucc28\uc774\uac00 \uc801\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uaca9\ucc28\uc758 \uc6d0\uc778 \uc911 \ud558\ub098\ub294 \uc6f9\uc5d0\uc11c GPU\uc5d0 \ub300\ud55c \ud45c\uc900 \ubc0f \uc131\ub2a5 \uc561\uc138\uc2a4\uac00 \ubd80\uc871\ud558\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. WebGL\uc5d0\ub294 \uace0\uc131\ub2a5 \ub525 \ub7ec\ub2dd\uc5d0 \ud544\uc694\ud55c \ucef4\ud4e8\ud305 \uc170\uc774\ub354 \ubc0f \uc77c\ubc18 \uc2a4\ud1a0\ub9ac\uc9c0 \ubc84\ud37c\uc640 \uac19\uc740 \uc911\uc694\ud55c \uae30\ub2a5\uc774 \ubd80\uc871\ud569\ub2c8\ub2e4.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-1a48df59-e9ec-40fa-bed1-92a30f8a933c\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-dbbd047f-6021-47e1-9053-2b1df34e3112\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>WebGPU\ub294 \ucd5c\uace0 \uc218\uc900\uc758 \ucef4\ud4e8\ud305 \uc170\uc774\ub354 \uc9c0\uc6d0\uc744 \ud1b5\ud574 \uc774\ub7ec\ud55c \uaca9\ucc28\ub97c \ud574\uc18c\ud560 \uc218 \uc788\ub294 \uc7a0\uc7ac\ub825\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-3f1133ce-b6fd-48dd-be93-1c31bfaaecbc\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-1c984306-95a6-4687-a5f9-67ecc18059ad\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\ube0c\ub77c\uc6b0\uc800\uc5d0 \uae30\uacc4 \ud559\uc2b5\uc744 \ubc30\ud3ec\ud558\uae30 \uc704\ud574 WebGPU\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uac00\ub2a5\uc131\uc744 \ud0d0\uc0c9\ud558\uae30 \uc704\ud574 WASM(\uc2e4\ud589 \ub9e4\uac1c\ubcc0\uc218\ub97c \uacc4\uc0b0\ud558\uace0 \uc7a5\uce58 \uc2e4\ud589\uc744 \ud638\ucd9c\ud558\ub294 \ud638\uc2a4\ud2b8 \ucf54\ub4dc\uc6a9) \ubc0f WebGPU(\uc7a5\uce58\uc6a9)\ub97c \ub300\uc0c1\uc73c\ub85c \ub525 \ub7ec\ub2dd \ucef4\ud30c\uc77c\ub7ec&nbsp;<\/b><\/mark><\/span><span id=\"SE-e303d1a3-14d0-4eb3-8e1d-ddbf7babfc2e\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/tvm.apache.org\/about\"><mark><b>Apache(\uc778\ud050\ubca0\uc774\ud305) TVM\uc744<\/b><\/mark><\/span><span id=\"SE-a0d5ab0a-b6ee-41b6-8697-12b145fab4a1\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>&nbsp;\ud5a5\uc0c1\ud588\uc2b5\ub2c8\ub2e4. \uc2e4\ud589). \uc6b0\ub9ac\uc758 \uc608\ube44 \uacb0\uacfc\ub294 \ub9e4\uc6b0 \uae0d\uc815\uc801\uc785\ub2c8\ub2e4. \ucc98\uc74c\uc73c\ub85c GPU\uc5d0\uc11c \uae30\ubcf8 \uc131\ub2a5\uc5d0 \uac70\uc758 \uadfc\uc811\ud558\uba74\uc11c \uc6f9\uc5d0 \uae30\uacc4 \ud559\uc2b5 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ubc30\ud3ec\ud560 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-383ca2a7-5582-4353-ac62-b23eab199a58\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-7c48bc61-76d2-4b9d-b900-64fe72b09f1b\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/tvm.apache.org\/2020\/05\/14\/compiling-machine-learning-to-webassembly-and-webgpu\"><mark><b>\uae30\uc220\uc801 \uc138\ubd80 \uc0ac\ud56d\uc740 \ud568\uaed8 \uc81c\uacf5\ub418\ub294 Apache TVM \uae30\uc220 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc744<\/b><\/mark><\/span><span id=\"SE-913a41ec-9cdf-4daf-b4ec-5d63eeeae7d8\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>&nbsp;\ud655\uc778\ud558\uc138\uc694 . \uac04\ub2e8\ud788 \ub9d0\ud574\uc11c \uc6b0\ub9ac\ub294 \ub2e4\uc74c\uc744 \uacb0\ud569\ud558\uc5ec WASM \ubc0f WebGPU\ub97c \ud1b5\ud574 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uac70\uc758 \uae30\ubcf8 GPU \uc131\ub2a5\uc744 \ub2ec\uc131\ud560 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4.<\/b><\/mark><\/span><\/p>\n<ul class=\"se-text-list se-text-list-type-bullet-disc\">\n<li class=\"se-text-list-item\">\n<p id=\"SE-bbe44974-6485-45b9-ae8c-cb3ccc4a656a\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-dd1cdeb0-64a1-4858-9da5-d2187acef9b5\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>WebGPU \ucef4\ud4e8\ud305 API\ub97c \ub300\uc0c1\uc73c\ub85c \ud558\ub294 TVM\uc758 \uae30\uc874 SPIR-V \ucf54\ub4dc \uc0dd\uc131 \uae30\ub2a5<\/b><\/mark><\/span><\/p>\n<\/li>\n<li class=\"se-text-list-item\">\n<p id=\"SE-b0a14dcb-6a6c-4b01-b06f-22049964010f\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-50ab525f-bb4a-41a4-8251-c4fa19c4f2fb\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>WASM \uc0dd\uc131 \uc9c0\uc6d0\uc744 \uc704\ud55c TVM\uc758 \uae30\uc874 LLVM \ubc31\uc5d4\ub4dc<\/b><\/mark><\/span><\/p>\n<\/li>\n<li class=\"se-text-list-item\">\n<p id=\"SE-99fb7f75-1f54-46df-8618-c122d4d6bcc0\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-b745c7ee-b3e7-4292-b78e-f11cef031a20\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uc0c8\ub85c\uc6b4 tvmjs TypeScript \ub7f0\ud0c0\uc784<\/b><\/mark><\/span><\/p>\n<\/li>\n<li class=\"se-text-list-item\">\n<p id=\"SE-3fd5d337-8392-46bc-af58-24916a7af93a\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-c657c0c9-e2ac-41f1-963f-67d955d1589a\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uc2dc\uc2a4\ud15c \ub77c\uc774\ube0c\ub7ec\ub9ac \ud638\ucd9c(\uc608: malloc, stderr)\uc744 \uc704\ud55c WASM\uc758 \ud45c\uc900 \uc778\ud130\ud398\uc774\uc2a4(WASI)<\/b><\/mark><\/span><\/p>\n<\/li>\n<li class=\"se-text-list-item\">\n<p id=\"SE-519395ac-23da-446b-b567-f7a7b97cdfc1\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-f6b193f6-77dd-4f33-8cde-70d4000ef4dd\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>Chrome\uc758 \uc57c\uac04 WebGPU \uc9c0\uc6d0<\/b><\/mark><\/span><\/p>\n<\/li>\n<\/ul>\n<p id=\"SE-9707c805-3d23-434f-96fe-af0de972bd91\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-7a7e5c40-ccc5-42e3-ae92-1f18b38cb7ba\" class=\"se-ff-system se-fs19 se-highlight se-inline-image se-is-inline-image-block-selected __se-node\"><img decoding=\"async\" class=\"se-inline-image-resource\" src=\"https:\/\/www.stechstar.com\/user\/zbxe\/files\/attach\/images\/92879\/169\/095\/6a8cf7f94b1fb25b369a3ef1545425c8.png\" data-autoattach=\"success\" data-cke-saved-src=\".\/files\/attach\/images\/92879\/169\/095\/6a8cf7f94b1fb25b369a3ef1545425c8.png\"><\/span><\/p>\n<p id=\"SE-c7d3a302-3001-448a-8ad8-75dbc2f18e3e\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-024c8352-e9a1-4104-8642-fa6140e3774b\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\ucef4\ud30c\uc77c \uae30\ubc18 \uc811\uadfc \ubc29\uc2dd\uc758 \uc911\uc694\ud55c \uc774\uc810 \uc911 \ud558\ub098\ub294 \uc778\ud504\ub77c\ub97c \uc7ac\uc0ac\uc6a9\ud55c\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4.&nbsp;<\/b><\/mark><\/span><span id=\"SE-d95f1e11-323d-4725-aeee-52787c82d799\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/arxiv.org\/abs\/1901.05350\"><mark><b>\uc6b0\ub9ac\ub294 CUDA, Metal \ubc0f OpenCL\uacfc \uac19\uc740 \uae30\ubcf8 \ud50c\ub7ab\ud3fc\uc5d0 \ub300\ud574 GPU \ucee4\ub110\uc744 \ucd5c\uc801\ud654\ud558\uae30 \uc704\ud55c \uc778\ud504\ub77c\ub97c \uc7ac\uc0ac\uc6a9\ud568\uc73c\ub85c\uc368 \ub2e4\ub978 \uc811\uadfc \ubc29\uc2dd<\/b><\/mark><\/span><span id=\"SE-d03bd66f-2520-491a-805b-1da68537dd40\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>&nbsp;\uc5d0 \ube44\ud574 \uc6f9\uc744 \ub300\uc0c1\uc73c\ub85c \ud558\ub294 \uc791\uc5c5\uc744 \uc27d\uac8c \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 . WebGPU API\ub97c \ub124\uc774\ud2f0\ube0c API\ub85c \ub9e4\ud551\ud558\ub294 \uac83\uc774 \ud6a8\uc728\uc801\uc774\ub77c\uba74 \uac70\uc758 \uc791\uc5c5\ud558\uc9c0 \uc54a\uace0\ub3c4 \ube44\uc2b7\ud55c \uc131\ub2a5\uc744 \uae30\ub300\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub354 \uc911\uc694\ud55c \uac83\uc740&nbsp;<\/b><\/mark><\/span><span id=\"SE-24075f1a-bdd5-4a4c-a5ff-47198b17ef93\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/tvm.apache.org\/2018\/10\/03\/auto-opt-all\"><mark><b>AutoTVM<\/b><\/mark><\/span><span id=\"SE-abbdaf92-67b8-4827-a44a-d4f240aef23e\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>&nbsp;\uc778\ud504\ub77c\ub97c \ud1b5\ud574 \ud2b9\uc815 \ubaa8\ub378\uc5d0 \ub300\ud55c \ucef4\ud4e8\ud305 \uc170\uc774\ub354\ub97c \uc804\ubb38\ud654\ud558\uc5ec \ud2b9\uc815 \uad00\uc2ec \ubaa8\ub378\uc5d0 \uac00\uc7a5 \uc801\ud569\ud55c \ucef4\ud4e8\ud305 \uc170\uc774\ub354\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-862a63c7-a422-47f9-8808-156333e3070c\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-449260c5-d1ac-44b8-9fc4-3e31e1fc2865\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uc131\ub2a5<\/b><\/mark><\/span><\/p>\n<p id=\"SE-5ef92a6d-4045-4d19-b5d4-b6d1355be6ac\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-eb540d6b-38fa-47fc-acbf-0177326b2fa4\" class=\"se-ff-system se-fs19 se-highlight se-inline-image se-is-inline-image-block-selected __se-node\"><img decoding=\"async\" class=\"se-inline-image-resource\" src=\"https:\/\/www.stechstar.com\/user\/zbxe\/files\/attach\/images\/92879\/169\/095\/03e8e0e49c826eb64b9b4f85f47e4214.png\" data-autoattach=\"success\" data-cke-saved-src=\".\/files\/attach\/images\/92879\/169\/095\/03e8e0e49c826eb64b9b4f85f47e4214.png\"><\/span><\/p>\n<p id=\"SE-f1b9ee0c-0bb6-4c20-abba-783877a0012b\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-ae88bcf5-44c3-4316-bef0-7f25d76b1639\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uc6b0\ub9ac\ub294 TVM\uc758 WebGPU \ubc31\uc5d4\ub4dc\uc640 \ub124\uc774\ud2f0\ube0c GPU \ub7f0\ud0c0\uc784(Metal \ubc0f OpenCL)\uc744 \uc0ac\uc6a9\ud558\ub294 \ub124\uc774\ud2f0\ube0c \ub300\uc0c1\uc744 \ud1b5\ud574 \uc804\uccb4 Mobilenet \uc2e4\ud589 \uc2e4\ud589\uc744 \ube44\uad50\ud558\ub294 \ube60\ub978 \uc2e4\ud5d8\uc744 \uc2e4\ud589\ud588\uc2b5\ub2c8\ub2e4. \uc6b0\ub9ac\ub294 WebGPU\uac00 Metal\uc758 \uc131\ub2a5\uacfc \uac70\uc758 \uc77c\uce58\ud55c\ub2e4\ub294 \uac83\uc744 \uc54c\uc558\uc2b5\ub2c8\ub2e4. Chrome WebGPU\uc758 \ub7f0\ud0c0\uc784\uc774 MacOS\uc758 OpenCL \ub300\uc2e0 Metal\uc744 \ub300\uc0c1\uc73c\ub85c \ud55c\ub2e4\uace0 \uac00\uc815\ud558\uba74 \uc5ec\uae30\uc5d0\uc11c \ube0c\ub77c\uc6b0\uc800\ub97c \ud1b5\ud574 GPU\ub97c \ub300\uc0c1\uc73c\ub85c \ud560 \ub54c \uc131\ub2a5 \uc190\uc2e4\uc774 \uac70\uc758 \ub610\ub294 \uc804\ud600 \uc5c6\ub2e4\uace0 \uc548\uc804\ud558\uac8c \uac00\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-f686234e-ac38-4c69-970f-6fd5ed6eebc5\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-dc7c6677-ec4f-4a2c-ab15-1ace9a024332\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\ub610\ud55c \uc774\ub7ec\ud55c \uacb0\uacfc\ub294 Intel \uadf8\ub798\ud53d GPU\uc640 \uc0c1\ub2f9\ud788 \ub2e4\ub978 GTX 1080 Ti\uc758 \uc774\uc804 \uc790\ub3d9 \uc870\uc815 \uc77c\uc815\uc744 \uae30\ubc18\uc73c\ub85c \ud558\uae30 \ub54c\ubb38\uc5d0 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294 GPU\uc5d0 AutoTVM \uc870\uc815\uc744 \uc801\uc6a9\ud558\uba74 \uc131\ub2a5\uc774 \ub354\uc6b1 \ud5a5\uc0c1\ub420 \uac83\uc73c\ub85c \uc608\uc0c1&nbsp;<\/b><\/mark><\/span><span id=\"SE-20bdb836-9f98-4086-b166-55b2487ee2ec\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/tvm.apache.org\/2018\/10\/03\/auto-opt-all\"><mark><b>\ub429\ub2c8\ub2e4<\/b><\/mark><\/span><span id=\"SE-1421a858-bb31-4f8c-9880-45e373d6f5f8\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>&nbsp;. \uc774\ub97c \ub354 \uc27d\uac8c \ub9cc\ub4e4\uae30 \uc704\ud574 \ub0b4\uc7a5\ud615 \ub9c8\uc774\ud06c\ub85c\ucee8\ud2b8\ub864\ub7ec\uc5d0 \ub300\ud55c uTVM \ub7f0\ud0c0\uc784\uc758 \ud5a5\ud6c4 \uac1c\uc120 \uc0ac\ud56d(\ud5a5\ud6c4 1~2\uc8fc \ub0b4\uc5d0 \uc5c5\ub370\uc774\ud2b8\ub97c \uc704\ud574 \uc774 \ube14\ub85c\uadf8\ub97c \uacc4\uc18d \uc9c0\ucf1c\ubd10 \uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4)\uc740 WASM \ud0c0\uac9f\uc774 \ub0b4\uc7a5\ud615\uacfc \ub9ce\uc740 \uc720\uc0ac\uc810\uc744 \uacf5\uc720\ud558\ubbc0\ub85c \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc790\ub3d9 \uc870\uc815\uc744 \ub354 \uc27d\uac8c \ub9cc\ub4dc\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub420 \uac83\uc73c\ub85c \uae30\ub300\ud569\ub2c8\ub2e4. \uc7a5\uce58.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-cf74dd16-df14-4655-b99c-3d2d06eebd1b\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-1a66fee6-55d1-463f-a877-fbdf47772ba3\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\ubbf8\ub798\ub97c \ubc14\ub77c\ubcf4\uba70<\/b><\/mark><\/span><\/p>\n<p id=\"SE-fe5c8191-9501-44e9-b6a5-76bddabb0d18\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-656d0a1d-e116-4e83-8c42-e9bc8c539341\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uc6b0\ub9ac\uc758 \uacb0\uacfc\ub294 \uc6f9\uc5d0\uc11c \uae30\uacc4 \ud559\uc2b5\uc744 \uc704\ud55c \ub9ce\uc740 \ud765\ubbf8\ub85c\uc6b4 \uae30\ud68c\ub97c \uc81c\uc2dc\ud569\ub2c8\ub2e4. \ud2b9\ud788 WebGPU\ub294 \uc5ec\uc804\ud788 \uc9c4\ud654\ud558\uace0 \uc788\ub294 API\uc774\uba70 \uadf8 \uc758\ubbf8\ub294 \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub118\uc5b4\uc124 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 WebGPU\uac00 \uc131\uc219\ud574\uc9c0\uace0 WASI\ub97c \ud1b5\ud574 \ud45c\uc900\ud654\ub428\uc5d0 \ub530\ub77c WebGPU\uc758 \uae30\ubcf8 API\ub97c \ub300\uc0c1\uc73c\ub85c \ud558\uc5ec WebGPU\ub97c \ud65c\uc6a9\ud558\ub294 \ub3c5\ub9bd\ud615 WASM \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ud65c\uc131\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-1416205c-fae8-4359-bee2-8ce98e55392f\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-a8f326c2-033d-44dc-a8e4-a7f9861f0798\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>TVM \ucee4\ubba4\ub2c8\ud2f0\ub294 \ub610\ud55c \ud6e8\uc52c \ub354 \uac15\ub825\ud55c WASM \uc9c0\uc6d0\uc744 \uac00\ub2a5\ud558\uac8c \ud558\uace0&nbsp;<\/b><\/mark><\/span><span id=\"SE-eb572018-17dc-4892-9d18-be8c8ffe2fdd\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/github.com\/gfx-rs\/wgpu-rs\"><mark><b>wgpu<\/b><\/mark><\/span><span id=\"SE-643084d5-4f65-48f5-a7a5-89111d202ea5\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>&nbsp;\ubc0f&nbsp;<\/b><\/mark><\/span><span id=\"SE-27e75c3f-0ba0-4110-9b7e-f6d7fc074da1\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/rustwasm.github.io\/docs\/book\/\"><mark><b>Rust WASM \uc0dd\ud0dc\uacc4\uc640 \uac19\uc740 \ud504\ub85c\uc81d\ud2b8\uc640\uc758 \ub354 \uc26c\uc6b4 \uc0c1\ud638 \uc791\uc6a9\uc744 \uac00\ub2a5\ud558\uac8c \ud558\ub294&nbsp;<\/b><\/mark><\/span><span id=\"SE-ddb88465-83a5-4267-8b5f-4630527b2060\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/github.com\/apache\/incubator-tvm\/tree\/master\/rust\"><mark><b>Rust \uae30\ubc18 \ub7f0\ud0c0\uc784<\/b><\/mark><\/span><span id=\"SE-31de7dc3-108d-42b0-99bd-1e08aab73db9\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>&nbsp;\uc5d0 \uc801\uadf9\uc801\uc73c\ub85c \ub178\ub825\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4 . \uc624\ud508 \uc18c\uc2a4 \ud504\ub85c\uc81d\ud2b8\ub85c\uc11c \uc6b0\ub9ac\ub294 \uc0c8\ub85c\uc6b4 \uc544\uc774\ub514\uc5b4\ub97c \uac00\uc838\uc624\uace0 \ud504\ub85c\uc81d\ud2b8\ub97c \uc774\ub7ec\ud55c \ud765\ubbf8\ub85c\uc6b4 \ubc29\ud5a5\uc73c\ub85c \ucd94\uc9c4\ud558\ub294 \ub370 \ub3c4\uc6c0\uc744 \uc904 \uc218 \uc788\ub294 \uae30\uc5ec\uc790\ub97c \ucc3e\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-1cd68a86-971d-41e7-a728-96510bd266fb\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-457fb935-5649-4521-b9ac-fa98b5fa6d96\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uc81c\uc548\ub41c \uc811\uadfc \ubc29\uc2dd\uc740 \ub300\ubd80\ubd84\uc758 WASM \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc2dc\ub098\ub9ac\uc624\uc5d0 \ud6a8\uacfc\uc801\uc778 \uae30\uacc4 \ud559\uc2b5 \uc9c0\uc6d0\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uae30\ubcf8 \uc131\ub2a5\uc5d0 \uac00\uae4c\uc6cc\uc9c0\uba74 \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \ub354 \ub098\uc740&nbsp;<\/b><\/mark><\/span><span id=\"SE-279e08c2-0ee0-40ca-ae33-92cf14e8d8f3\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/en.wikipedia.org\/wiki\/Federated_learning\"><mark><b>\uc5f0\ud569 \ud559\uc2b5 \uae30\ub2a5\uc744 \ud65c\uc6a9\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.&nbsp;<\/b><\/mark><\/span><span id=\"SE-61853372-33d9-415a-bc32-19db3f1d1462\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\ub3d9\uc77c\ud55c \ucef4\ud30c\uc77c\ub41c \ud328\ud0a4\uc9c0\ub294 \uae30\ubcf8 WASM \uc2e4\ud589\uae30\uc5d0\uc11c\ub3c4 \uc2e4\ud589\ub418\uc5b4 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc0cc\ub4dc\ubc15\uc2a4\ub97c \uc81c\uacf5\ud560 \uc218 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/b><\/mark><\/span><\/p>\n<p id=\"SE-1ed1a352-7036-4644-b158-fbac9669fa1d\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-054b1a3d-6e99-48c0-841d-afcfc972aba1\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uc138\ubd80\uc815\ubcf4\/\ucf54\ub4dc\ub97c \ubcf4\uc5ec\uc8fc\uc138\uc694.<\/b><\/mark><\/span><\/p>\n<ul class=\"se-text-list se-text-list-type-bullet-disc\">\n<li class=\"se-text-list-item\">\n<p id=\"SE-26276bfb-4d1f-44ce-8404-10c3cf2bde06\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-8019b516-33ff-41c0-889e-8aa01b79d5e1\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/tvm.apache.org\/2020\/05\/14\/compiling-machine-learning-to-webassembly-and-webgpu\"><mark><b>\uc774 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc758 \uc790\uc138\ud55c \uae30\uc220 \ubc84\uc804<\/b><\/mark><\/span><\/p>\n<\/li>\n<li class=\"se-text-list-item\">\n<p id=\"SE-72d7842f-352c-43e4-ac66-4c696d9a4299\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-f894d044-710d-496c-8125-221235560b52\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/github.com\/tqchen\/tvm-webgpu-example\"><mark><b>\uc774\ubbf8\uc9c0 \ubd84\ub958\ub97c \uc704\ud55c \uc608\uc2dc \ud504\ub85c\uc81d\ud2b8<\/b><\/mark><\/span><\/p>\n<\/li>\n<li class=\"se-text-list-item\">\n<p id=\"SE-5fc30db8-f098-46a8-8d60-e381605be3b0\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-b96aaf4f-bd2f-4d25-8af4-f7c648d3b275\" class=\"se-ff-system se-fs19 se-highlight se-link __se-node\" data-href=\"https:\/\/github.com\/apache\/incubator-tvm\/tree\/master\/web\"><mark><b>github\uc758 Apache TVM<\/b><\/mark><\/span><\/p>\n<\/li>\n<\/ul>\n<p id=\"SE-4b798938-e992-457c-a06e-3955880b3755\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-b93717fa-8ea2-4a09-bcd2-5536f2bbbc96\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uc2b9\uc778<\/b><\/mark><\/span><\/p>\n<p id=\"SE-002b559c-bea0-44cf-a360-282fb622e0cd\" class=\"se-text-paragraph se-text-paragraph-align-left se-is-text-paragraph-block-selected\"><span id=\"SE-7fcafda5-2923-4d08-bdf7-3d9949b3aebd\" class=\"se-ff-system se-fs19 se-highlight __se-node\"><mark><b>\uc6f9\uc5d0\uc11c WASM \ucef4\ud30c\uc77c \uc778\ud504\ub77c\uc640 JS \ub77c\uc774\ube0c\ub7ec\ub9ac \uc9c0\uc6d0\uc744 \uc81c\uacf5\ud55c emscripten \ud504\ub85c\uc81d\ud2b8\uc5d0 \uac10\uc0ac\ub4dc\ub9bd\ub2c8\ub2e4. \ub610\ud55c \ub2e4\uc591\ud55c \uc720\uc6a9\ud55c \ud1a0\ub860\uc744 \ud574\uc8fc\uc2e0 WebGPU \ucee4\ubba4\ub2c8\ud2f0\uc5d0\ub3c4 \uac10\uc0ac\uc758 \ub9d0\uc500\uc744 \uc804\ud558\uace0 \uc2f6\uc2b5\ub2c8\ub2e4. \uac8c\uc2dc\ubb3c\uc5d0 \uadc0\uc911\ud55c \ud53c\ub4dc\ubc31\uc744 \uc8fc\uc2e0 Fletcher Haynes\uc5d0\uac8c \uac10\uc0ac\ub4dc\ub9bd\ub2c8\ub2e4.<\/b><\/mark><\/span><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_10062\" class=\"pvc_stats all  \" data-element-id=\"10062\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.stechstar.com\/user\/wordpress\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>[\uc778\uacf5\uc9c0\ub2a5 \uae30\uc220] WebGPU powered machine learning in the browser with Apache TVM : Apache TVM\uc744 \uc0ac\uc6a9\ud558\uc5ec \ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c WebGPU \uae30\ubc18 \uae30\uacc4 \ud559\uc2b5 By Tianqi Chen, Jared Roesch, and Jason Knight TL;DR Easy ML deployment in the browser with near-native GPU performance and WebAssembly We introduced support for WASM and WebGPU backends to the&nbsp;Apache TVM deep learning [&hellip;]<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_10062\" class=\"pvc_stats all  \" data-element-id=\"10062\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.stechstar.com\/user\/wordpress\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[25,21,11,16,20],"tags":[],"class_list":["post-10062","post","type-post","status-publish","format-standard","hentry","category-25","category-21","category-11","category-16","category-20"],"a3_pvc":{"activated":true,"total_views":22,"today_views":0},"_links":{"self":[{"href":"https:\/\/www.stechstar.com\/user\/wordpress\/wp-json\/wp\/v2\/posts\/10062","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.stechstar.com\/user\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.stechstar.com\/user\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.stechstar.com\/user\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.stechstar.com\/user\/wordpress\/wp-json\/wp\/v2\/comments?post=10062"}],"version-history":[{"count":1,"href":"https:\/\/www.stechstar.com\/user\/wordpress\/wp-json\/wp\/v2\/posts\/10062\/revisions"}],"predecessor-version":[{"id":10063,"href":"https:\/\/www.stechstar.com\/user\/wordpress\/wp-json\/wp\/v2\/posts\/10062\/revisions\/10063"}],"wp:attachment":[{"href":"https:\/\/www.stechstar.com\/user\/wordpress\/wp-json\/wp\/v2\/media?parent=10062"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.stechstar.com\/user\/wordpress\/wp-json\/wp\/v2\/categories?post=10062"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.stechstar.com\/user\/wordpress\/wp-json\/wp\/v2\/tags?post=10062"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}