<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <script src="https://cdn.tailwindcss.com"></script> <!-- polyfill for firefox + import maps --> <script src="https://unpkg.com/es-module-shims@1.7.0/dist/es-module-shims.js"></script> <script type="importmap"> { "imports": { "@huggingface/hub": "https://cdn.jsdelivr.net/npm/@huggingface/hub@0.3.3/+esm" } } </script> <script type="module" src="./dist/app.js"></script> </head> <body> <form class="container mx-auto pt-8"> <h1 class="text-3xl font-bold"> <span class="bg-clip-text text-transparent bg-gradient-to-r from-pink-500 to-violet-500" > How to push a ML model to the HF Hub from your browser</span > </h1> <p class="mt-8"> Here is a sample ML model. We pick the TensorFlow.js version of Mobilenet as an example, but any model would work similarly: </p> <div class="mt-6"> <a class="bg-gray-200 inline-block px-2 py-0 rounded" href="./mobilenet/model.json" > <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" viewBox="0 0 32 32" class="inline" > <path fill="currentColor" d="m25.7 9.3l-7-7c-.2-.2-.4-.3-.7-.3H8c-1.1 0-2 .9-2 2v24c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V10c0-.3-.1-.5-.3-.7zM18 4.4l5.6 5.6H18V4.4zM24 28H8V4h8v6c0 1.1.9 2 2 2h6v16z" ></path> <path fill="currentColor" d="M10 22h12v2H10zm0-6h12v2H10z"></path> </svg> <code class="ml-2 text-gray-800">model.json</code> </a> <a class="bg-gray-200 inline-block px-2 py-0 rounded" href="./mobilenet/group1-shard1of2" > <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" viewBox="0 0 32 32" class="inline" > <path fill="currentColor" d="m25.7 9.3l-7-7c-.2-.2-.4-.3-.7-.3H8c-1.1 0-2 .9-2 2v24c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V10c0-.3-.1-.5-.3-.7zM18 4.4l5.6 5.6H18V4.4zM24 28H8V4h8v6c0 1.1.9 2 2 2h6v16z" ></path> <path fill="currentColor" d="M10 22h12v2H10zm0-6h12v2H10z"></path> </svg> <code class="ml-2 text-gray-800">group1-shard1of2</code> </a> <a class="bg-gray-200 inline-block px-2 py-0 rounded" href="./mobilenet/group1-shard2of2" > <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1em" height="1em" viewBox="0 0 32 32" class="inline" > <path fill="currentColor" d="m25.7 9.3l-7-7c-.2-.2-.4-.3-.7-.3H8c-1.1 0-2 .9-2 2v24c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V10c0-.3-.1-.5-.3-.7zM18 4.4l5.6 5.6H18V4.4zM24 28H8V4h8v6c0 1.1.9 2 2 2h6v16z" ></path> <path fill="currentColor" d="M10 22h12v2H10zm0-6h12v2H10z"></path> </svg> <code class="ml-2 text-gray-800">group1-shard2of2</code> </a> </div> <p class="mt-8"> BTW, the TFJS demo of this model is <a href="https://storage.googleapis.com/tfjs-models/demos/mobilenet/index.html" class="underline" target="_blank" >here</a >. </p> <p class="mt-8"> Now that we have the model files, we need to get a HF user's access token. You can create a token at <a target="_blank" href="https://huggingface.co/settings/tokens" class="underline text-blue-500" >hf.co/settings/tokens</a > (needs write access). </p> <input type="text" id="token" class="rounded border-2 border-blue-500 shadow-md px-3 py-2 w-96 mt-6" placeholder="token" required /> <p class="mt-8">Finally, pick a repo name for your model:</p> <input type="text" id="repo_name" class="rounded border-2 border-blue-500 shadow-md px-3 py-2 w-96 mt-6" placeholder="repo name" required /> <p class="mt-8"> Press Upload to create a repo, and upload your files. It will also upload a model card for your model (you can then update it on your model page): </p> <button id="submit" class="my-8 bg-green-500 rounded py-3 px-5 text-white shadow-md disabled:bg-slate-300" > Upload </button> <p class="text-gray-400 text-sm">Output logs</p> <pre id="logs" class="bg-gray-100 rounded p-3 mb-8 text-sm"> Output will be here</pre > </form> </body> </html>