| <!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> |
| |
| <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> |
|
|