Spaces:
Sleeping
Sleeping
Working files
Browse files- app.ipynb +417 -0
- app.py +21 -0
- requirements.txt +1 -0
app.ipynb
ADDED
@@ -0,0 +1,417 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "markdown",
|
5 |
+
"id": "8c68f03e-620c-46a9-a7ec-a6cde27043cd",
|
6 |
+
"metadata": {},
|
7 |
+
"source": [
|
8 |
+
"# Hugging Face Spaces From A Notebook\n",
|
9 |
+
"\n",
|
10 |
+
"> A demo of using nbdev with Hugging Face Spaces & Gradio\n",
|
11 |
+
"\n",
|
12 |
+
"[Hugging Face Spaces](https://huggingface.co/spaces/launch) provides an easy ways to deploy a web app with python. [Gradio](https://gradio.app/) is one of my favorite tools for building these web apps. Gradio allows you to prototype your web apps in notebooks which allow you to iterate fast. However, Hugging Face Spaces requires you to package your web application code as a python script named `app.py`. However, **thanks to [nbdev](https://nbdev.fast.ai) you can deploy a Gradio app to Spaces from a notebook without having to refactor your code into a script!**, When you finish this tutorial, you will have an app that looks like this:\n",
|
13 |
+
"\n",
|
14 |
+
"[![<a href=\"https://huggingface.co/spaces/hamel/hfspace_demo\">A Gradio app</a> that shows the size of a HF Dataset.](final_app.png)](https://huggingface.co/spaces/hamel/hfspace_demo)\n",
|
15 |
+
"\n",
|
16 |
+
"_The above app allows you to lookup the size, in GB of any [Hugging Face Dataset](https://huggingface.co/docs/datasets/index), using the [Hugging Face Datasets Server API](https://huggingface.co/docs/datasets-server/index)._\n",
|
17 |
+
"\n",
|
18 |
+
"\n",
|
19 |
+
"Authoring your spaces in notebooks offers a number of benefits such as the ability to:\n",
|
20 |
+
"\n",
|
21 |
+
"- Document your code (with `quarto` or `nbdev`)\n",
|
22 |
+
"- Prototype and author your code (with `nbdev.export.export_nb`)\n",
|
23 |
+
"- Test your code (with `nbdev_test`)\n",
|
24 |
+
"\n",
|
25 |
+
"... All from the same environment!"
|
26 |
+
]
|
27 |
+
},
|
28 |
+
{
|
29 |
+
"cell_type": "markdown",
|
30 |
+
"id": "96483373-4ae1-49b2-85ed-ceee8456df19",
|
31 |
+
"metadata": {},
|
32 |
+
"source": [
|
33 |
+
"## 1. Create a Gradio-enabled Space on Hugging Face\n",
|
34 |
+
"\n",
|
35 |
+
"The first step is to create a space and select the appropriate sdk (which is Gradio in this example), according to [these instructions](https://huggingface.co/docs/hub/spaces-overview#creating-a-new-space):"
|
36 |
+
]
|
37 |
+
},
|
38 |
+
{
|
39 |
+
"attachments": {
|
40 |
+
"1c1bca70-f280-4b30-aa73-247dee97bfdc.png": {
|
41 |
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAisAAAKACAYAAABddTgFAAABYGlDQ1BJQ0MgUHJvZmlsZQAAKJF1kE9LAlEUxc+YJdRAES2iWgwR0ULDRkGhlX8iAhdiSeVuHE0DHR/jRLhrUXuhNrUK27RuUZuCvkFC4CIiWvUFIjclr/ucSi16j8P5cbj3crmAQ9YYKzgBFA3LTCyHlY3NlOJ6wRBcGEAAE5peZqF4PEYl+Pbe12xAEn7vEbMci9MXJ5X6zZxHaYRGU5N/63veYCZb1sk/SH6dmRYgeYnjuxYTvEc8ZtJSxEeCczafC07bfN2uWUtEiOvEI3peyxA/E7vTXXmui4uFHf1rB7G9nDWSq+TjpClEsYQYfQVJ+BDEAimK9X96/O2eCEpgqMDENnLIw6LuECUMBWSJV2BAxzzcxCq8JFXc+vcNO1mpBgTfgL5qJ0sfA1cHtOZDJ5s5BYb3gcs7ppnaz2WlprO85VNtlsNA/xPnr7OA6xBoVTl/r3HeOqP5j8Ct8Qks9WKe9lOSpAAAAFZlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA5KGAAcAAAASAAAARKACAAQAAAABAAACK6ADAAQAAAABAAACgAAAAABBU0NJSQAAAFNjcmVlbnNob3SE3NRoAAAB1mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj42NDA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NTU1PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cl+zUuEAAEAASURBVHgB7J0HnBRF9scfOSdJIkGS5CAIioKKIog53Rnu1NO/4cx3eqcoGBAVRFQ4M+qZ0BMTkpGgoCA5S84555zn/34Pa+zt7dk4O7sz+ys+bPdUV/xWevWquitPSI3QkAAJkAAJkAAJkEAOJZA3h6aLySIBEiABEiABEiABI0BhhRWBBEiABEiABEggRxOgsJKji4eJIwESIAESIAESoLDCOkACJEACJEACJJCjCVBYydHFw8SRAAmQAAmQAAlQWGEdIAESIAESIAESyNEEKKzk6OJh4kiABEiABEiABCissA6QAAmQAAmQAAnkaAIUVnJ08TBxJEACJEACJEACFFZYB0iABEiABEiABHI0AQorObp4mDgSIAESIAESIAEKK6wDJEACJEACJEACOZoAhZUcXTxMHAmQAAmQAAmQAIUV1gESIAESIAESIIEcTYDCSo4uHiaOBEiABEiABEiAwgrrAAmQAAmQAAmQQI4mQGElRxcPE0cCJEACJEACJEBhhXWABEiABEiABEggRxOgsJKji4eJIwESIAESIAESoLDCOkACJEACJEACJJCjCVBYydHFw8SRAAmQAAmQAAlQWGEdIAESIAESIAESyNEEKKzk6OJh4kiABEiABEiABCissA6QAAmQAAmQAAnkaAIUVnJ08TBxJEACJEACJEACFFZYB0iABEiABEiABHI0AQorObp4mDgSIAESIAESIAEKK6wDJEACJEACJEACOZoAhZUcXTxMHAmQAAmQAAmQAIUV1gESSGACF110keTJkyfV/127dpVx48YZCVzhz/nF1fs8gXExayRAAjmUQJ6QmhyaNiaLBEggEwQgYDz//PNpDqFt27Zy4YUXpujnueeeM8ElzYHSIQmQAAlEgQCFlShAZBAkkBMJQKOSFYYCS1ZQZZgkQAIpEaCwkhIdPiOBOCbgF1ZanNs2WW6mTxqXzM5ZFCwgcsfNLeWDz6eJX/86duxYgSaGhgRIgARiQYDCSiwoMw4SyAYCXmEFgsri88YmS0WtCRfJ7Cnjktn3eqq+PHrTesmX55AcPFJYXutfTZ55bV7YHQQVCCw0JEACJBALAtxg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MXBGRwIkQAIkQAIkkD4CFFbSx4uuSYAESIAESIAEYkyAwkqMgTM6EiABEiABEiCB9BGgsJI+XnRNAiRAAiRAAiQQYwIUVmIMnNGRAAmQAAmQAAmkjwCFlfTxomsSIAESIAESIIEYE6CwEmPgjI4ESIAESIAESCB9BCispI8XXZMACZAACZAACcSYAIWVGANndCRAAiRAAiRAAukjQGElfbzomgRIgARIgARIIMYEKKzEGDijIwESIAESIAESSB8BCivp40XXJEACJEACJEACMSZAYSXGwBkdCZAACZAACZBA+ghQWEkfL7omARIgARIgARKIMQEKKzEGzuhIgARIgARIgATSR4DCSvp40TUJkAAJkAAJkECMCVBYiTFwRkcCJEACJEACJJA+AhRW0seLrkmABEiABEiABGJMgMJKjIEzOhIgARIgARIggfQRoLCSPl50TQIkQAIkQAIkEGMCFFZiDJzRkQAJkAAJkAAJpI8AhZX08aJrEiABEiABEiCBGBOgsBJj4IyOBEiABEiABEggfQQorKSPF12TAAmQAAmQAAnEmACFlRgDZ3QkQAIkQAIkQALpI0BhJX286JoESIAESIAESCDGBCisxBg4oyMBEiABEiABEkgfAQor6eNF1yRAAiRAAiRAAjEmQGElxsAZHQmQAAmQAAmQQPoIUFhJHy+6JgESIAESIAESiDGBuBdW9u7dK4sWLZJQKBRjdIyOBDJH4OjRozJv3jzZsmVL5gKibxIgARJIcAJxLax07txZSpYsKTfddJOceuqpMmvWrAQvLmYvUQisX79eGjVqJI899picf/75grpMQwIkQAIkEEwgboWVIUOGyHfffScbNmyQOXPmyOuvvy4dO3aUY8eOyZgxY8K5HTt2rBw8eNB+T5kyRaCJgfvt27fL0KFDZebMmWG38Av348ePD9vBLWa+3377LWfAYSq8ySyBgQMHyoUXXiijRo2SBQsWyL333mtBTpgwQSDIoL7t3LkzHM2qVaukf//+snjx4rAdbhYuXChffPFF2B71G2EvXbo0iTv8iFTvEc/gwYPll19+CWso16xZI2vXrpVx48bJiBEjrF1hMoD0Hj9+PBz23Llzze+RI0fCdrwhARIggWgTiFthBUIFNCqVKlUyJriHULJs2TJ58MEHrfPetGmTXHzxxSZ8nDhxQq6++mrJly+fdO/e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gARIIOcQoLCSc8qCKSEBEiABEiABEgggELfCCl7NjMNPxAQUAa3ihQDqW7S+/cH6Gy+lznSSQPoJRLOvSH/siekjLoUVdPQFCuST/fsPJmapMFc5kgDqG+pdZgUW1t8cWbxMFAlEjUC0+oqoJSgBAopLYQXcixctLDt375N9+05+TTYByoJZyKEEMEtCPUN9Q72LhmH9jQZFhkECOYtAVvQVOSuH2ZeauPzcPioEPiV+UL9tsf/AITl67LguCWUfRMac2ARUkScF8ueTYiqoFNFXlPH11sxoV1h/E7u+MHe5l0C0+4rcSzJ5zuNSWEE2XIeP805OnDiRPGe0IYEoEsDBgfhUfWYFFZck1l9HglcSSCwC0e4rEotOxnMTt8IKsowOH//dvd3wDwlEmYDTouDq7qMRBetvNCgyDBLIOQRc/xDtviLn5DD7UhLXwkr2YWPMJEACJEACJEACsSIQtxtsYwWI8ZAACZAACZAACWQvAQor2cufsZMACZAACZAACaRCgMJKKoD4mARIgARIgARIIHsJUFjJXv6MnQRIgARIgARIIBUCFFZSAcTHJEACJEACJEAC2UuAwkr28mfsJEACJEACJEACqRCgsJIKID4mARIgARIgARLIXgIUVrKXP2MnARIgARIgARJIhQCFlVQA8TEJkAAJkAAJkED2EqCwkr38GTsJkAAJkAAJkEAqBCispAKIj0mABEiABEiABLKXAIWV7OXP2EmABEiABEiABFIhQGElFUB8TAIkQAIkQAIkkL0E4lZYOXjwoOzevTsJvTlz5sjYsWOT2PEHCZAACZAACZBAfBOIW2FlxIgR8s9//jMJ/VWrVsmCBQuS2PEHCZAACZAACZBAfBOIW2ElCHuzZs3kkksuCT9auHChfPHFF7J48WKz27t3rwwcOFCWLl0adgNtzPbt22Xo0KEyc+bMsP2WLVvkq6++ksmTJ4ft1q9fL998843s2LEjbMcbEiABEiABEiCBrCWQUMIKtC2ffvqpEfvss8/k2muvlXXr1km3bt1MwGjbtq0JH48++qj07dvX3HXv3l0uuOACmThxolxzzTUyatQoOXDggJx11lkCgeW9996TDRs2CISaiy++WBYtWiTt27eXWbNmZW3JMHQSIAESIAESIAEjkD9ROXTp0sUEj/r161sWoWGpUaOGPPjgg7J161Z55JFH5O9/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"
|
42 |
+
}
|
43 |
+
},
|
44 |
+
"cell_type": "markdown",
|
45 |
+
"id": "b34d7ec6-69b8-48c4-a68b-fad6db3c2fab",
|
46 |
+
"metadata": {},
|
47 |
+
"source": [
|
48 |
+
"![image.png](attachment:1c1bca70-f280-4b30-aa73-247dee97bfdc.png)"
|
49 |
+
]
|
50 |
+
},
|
51 |
+
{
|
52 |
+
"cell_type": "markdown",
|
53 |
+
"id": "c25e8e7a-52d9-4305-a107-ba03e3d6a5f3",
|
54 |
+
"metadata": {},
|
55 |
+
"source": [
|
56 |
+
"After you are done creating the space, clone the repo locally. In this example, I ran the command `git clone https://huggingface.co/spaces/hamel/hfspace_demo`.\n",
|
57 |
+
"\n",
|
58 |
+
"\n",
|
59 |
+
"## 2. Create A Notebook\n",
|
60 |
+
"\n",
|
61 |
+
"To follow along, create a notebook called `app.ipynb` in the root of your newly cloned repo. Alternatively, a minimal version of this notebook can also be [found here](https://gist.github.com/hamelsmu/35be07d242f3f19063c3a3839127dc67)."
|
62 |
+
]
|
63 |
+
},
|
64 |
+
{
|
65 |
+
"cell_type": "markdown",
|
66 |
+
"id": "ff26114c-329b-4a97-98b5-c652554b0114",
|
67 |
+
"metadata": {},
|
68 |
+
"source": [
|
69 |
+
"## 3. Make an app with Gradio"
|
70 |
+
]
|
71 |
+
},
|
72 |
+
{
|
73 |
+
"cell_type": "markdown",
|
74 |
+
"id": "14a884fc-36e2-43ec-8e42-ca2903aaa4de",
|
75 |
+
"metadata": {},
|
76 |
+
"source": [
|
77 |
+
"Below, we will create a [gradio](https://gradio.app/) app in a notebook and show you how to deploy it to [Hugging Face Spaces](https://huggingface.co/docs/hub/spaces). \n",
|
78 |
+
"\n",
|
79 |
+
"First, lets specify the libraries we need, which in this case are `gradio` and `fastcore`:"
|
80 |
+
]
|
81 |
+
},
|
82 |
+
{
|
83 |
+
"cell_type": "code",
|
84 |
+
"execution_count": 1,
|
85 |
+
"id": "e5e5d597-19ad-46e5-81ad-8f646d8a1c21",
|
86 |
+
"metadata": {},
|
87 |
+
"outputs": [],
|
88 |
+
"source": [
|
89 |
+
"#|export\n",
|
90 |
+
"import gradio as gr\n",
|
91 |
+
"from fastcore.net import urljson, HTTPError"
|
92 |
+
]
|
93 |
+
},
|
94 |
+
{
|
95 |
+
"cell_type": "markdown",
|
96 |
+
"id": "ecc45936-fc16-4e60-b4b7-c323900666c7",
|
97 |
+
"metadata": {},
|
98 |
+
"source": [
|
99 |
+
"Next, write the functions your gradio app will use. Because of [nbdev](https://nbdev.fast.ai/blog/posts/2022-07-28-nbdev2/), you can prototype and package your code all in one place. **The special comment `#|export` marks which cells will be sent to a python script** (more on this later). Note that there are only three cells in this notebook with the `#|export` directive."
|
100 |
+
]
|
101 |
+
},
|
102 |
+
{
|
103 |
+
"cell_type": "code",
|
104 |
+
"execution_count": 2,
|
105 |
+
"id": "38a4389f-ef53-4626-a6f5-a859354f854b",
|
106 |
+
"metadata": {},
|
107 |
+
"outputs": [],
|
108 |
+
"source": [
|
109 |
+
"#|export\n",
|
110 |
+
"def size(repo:str):\n",
|
111 |
+
" \"Returns the size in GB of a HuggingFace Dataset.\"\n",
|
112 |
+
" url = f'https://huggingface.co/api/datasets/{repo}'\n",
|
113 |
+
" try: resp = urljson(f'{url}/treesize/main')\n",
|
114 |
+
" except HTTPError: return f'Did not find repo: {url}'\n",
|
115 |
+
" gb = resp['size'] / 1e9\n",
|
116 |
+
" return f'{gb:.2f} GB'"
|
117 |
+
]
|
118 |
+
},
|
119 |
+
{
|
120 |
+
"cell_type": "markdown",
|
121 |
+
"id": "9ff9f84d-7744-46ad-80ed-2cf1fa6d0643",
|
122 |
+
"metadata": {},
|
123 |
+
"source": [
|
124 |
+
"`size` takes as an input a [Hugging Face Dataset](https://huggingface.co/docs/datasets/index) repo and returns the total size in GB of the data.\n",
|
125 |
+
"\n",
|
126 |
+
"For example, I can check the size of [tglcourse/CelebA-faces-cropped-128](https://huggingface.co/datasets/tglcourse/CelebA-faces-cropped-128) like so:"
|
127 |
+
]
|
128 |
+
},
|
129 |
+
{
|
130 |
+
"cell_type": "code",
|
131 |
+
"execution_count": 3,
|
132 |
+
"id": "95bc32b8-d8ff-4761-a2d7-0880c51d0a42",
|
133 |
+
"metadata": {},
|
134 |
+
"outputs": [
|
135 |
+
{
|
136 |
+
"data": {
|
137 |
+
"text/plain": [
|
138 |
+
"'5.49 GB'"
|
139 |
+
]
|
140 |
+
},
|
141 |
+
"execution_count": 3,
|
142 |
+
"metadata": {},
|
143 |
+
"output_type": "execute_result"
|
144 |
+
}
|
145 |
+
],
|
146 |
+
"source": [
|
147 |
+
"size(\"tglcourse/CelebA-faces-cropped-128\")"
|
148 |
+
]
|
149 |
+
},
|
150 |
+
{
|
151 |
+
"cell_type": "markdown",
|
152 |
+
"id": "cb13747b-ea48-4146-846d-deb9e855d32d",
|
153 |
+
"metadata": {},
|
154 |
+
"source": [
|
155 |
+
"You can construct a simple UI with the `gradio.interface` and then call the `launch` method of that interface to display a preview in a notebook. This is a great way to test your app to see if it works"
|
156 |
+
]
|
157 |
+
},
|
158 |
+
{
|
159 |
+
"cell_type": "code",
|
160 |
+
"execution_count": 4,
|
161 |
+
"id": "7b20e2a1-b622-4970-9069-0202ce10a2ce",
|
162 |
+
"metadata": {},
|
163 |
+
"outputs": [
|
164 |
+
{
|
165 |
+
"name": "stdout",
|
166 |
+
"output_type": "stream",
|
167 |
+
"text": [
|
168 |
+
"Running on local URL: http://127.0.0.1:7861\n",
|
169 |
+
"\n",
|
170 |
+
"To create a public link, set `share=True` in `launch()`.\n"
|
171 |
+
]
|
172 |
+
},
|
173 |
+
{
|
174 |
+
"data": {
|
175 |
+
"text/html": [
|
176 |
+
"<div><iframe src=\"http://127.0.0.1:7861/\" width=\"500\" height=\"450\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"
|
177 |
+
],
|
178 |
+
"text/plain": [
|
179 |
+
"<IPython.core.display.HTML object>"
|
180 |
+
]
|
181 |
+
},
|
182 |
+
"metadata": {},
|
183 |
+
"output_type": "display_data"
|
184 |
+
},
|
185 |
+
{
|
186 |
+
"data": {
|
187 |
+
"text/plain": [
|
188 |
+
"(<gradio.routes.App at 0x107b8f490>, 'http://127.0.0.1:7861/', None)"
|
189 |
+
]
|
190 |
+
},
|
191 |
+
"execution_count": 4,
|
192 |
+
"metadata": {},
|
193 |
+
"output_type": "execute_result"
|
194 |
+
}
|
195 |
+
],
|
196 |
+
"source": [
|
197 |
+
"#|export\n",
|
198 |
+
"iface = gr.Interface(fn=size, inputs=gr.Text(value=\"tglcourse/CelebA-faces-cropped-128\"), outputs=\"text\")\n",
|
199 |
+
"iface.launch(height=450, width=500)"
|
200 |
+
]
|
201 |
+
},
|
202 |
+
{
|
203 |
+
"cell_type": "markdown",
|
204 |
+
"id": "59926b18-a9af-4387-9fcc-f88e588da577",
|
205 |
+
"metadata": {},
|
206 |
+
"source": [
|
207 |
+
"Note how running the `launch()` method in a notebook runs a webserver in the background. Below, we call the `close()` method to close the webserver."
|
208 |
+
]
|
209 |
+
},
|
210 |
+
{
|
211 |
+
"cell_type": "code",
|
212 |
+
"execution_count": 5,
|
213 |
+
"id": "39d7be72-9389-42cf-91b1-78e8f4bbd083",
|
214 |
+
"metadata": {},
|
215 |
+
"outputs": [
|
216 |
+
{
|
217 |
+
"name": "stdout",
|
218 |
+
"output_type": "stream",
|
219 |
+
"text": [
|
220 |
+
"Closing server running on port: 7861\n"
|
221 |
+
]
|
222 |
+
}
|
223 |
+
],
|
224 |
+
"source": [
|
225 |
+
"# this is only necessary in a notebook\n",
|
226 |
+
"iface.close()"
|
227 |
+
]
|
228 |
+
},
|
229 |
+
{
|
230 |
+
"cell_type": "markdown",
|
231 |
+
"id": "7c1c7adc-4c3f-41dc-8cfa-1c3b241f529f",
|
232 |
+
"metadata": {},
|
233 |
+
"source": [
|
234 |
+
"\n",
|
235 |
+
"## 4. Convert This Notebook Into A Gradio App\n",
|
236 |
+
"\n",
|
237 |
+
"In order to host this code on Hugging Face Spaces, you will export parts of this notebook to a script named `app.py`. As a reminder, this is what the special `#|export` comment that you have seen in cells above do! You can export code from this notebook like so:"
|
238 |
+
]
|
239 |
+
},
|
240 |
+
{
|
241 |
+
"cell_type": "code",
|
242 |
+
"execution_count": 6,
|
243 |
+
"id": "6706d92c-5785-4f09-9773-b9a944c493a5",
|
244 |
+
"metadata": {},
|
245 |
+
"outputs": [],
|
246 |
+
"source": [
|
247 |
+
"from nbdev.export import nb_export\n",
|
248 |
+
"nb_export('app.ipynb', lib_path='.', name='app')"
|
249 |
+
]
|
250 |
+
},
|
251 |
+
{
|
252 |
+
"cell_type": "markdown",
|
253 |
+
"id": "84d5fd19-7880-459c-8382-b3574ed11141",
|
254 |
+
"metadata": {},
|
255 |
+
"source": [
|
256 |
+
"### Understanding what is generated"
|
257 |
+
]
|
258 |
+
},
|
259 |
+
{
|
260 |
+
"cell_type": "markdown",
|
261 |
+
"id": "9ea562e7-b67a-45df-b822-2f4528a307c2",
|
262 |
+
"metadata": {},
|
263 |
+
"source": [
|
264 |
+
"Notice how the contents of app.py only contains the exported cells from this notebook:"
|
265 |
+
]
|
266 |
+
},
|
267 |
+
{
|
268 |
+
"cell_type": "code",
|
269 |
+
"execution_count": 7,
|
270 |
+
"id": "4bae6a5c-58bc-4a0f-9aac-34c092150fdc",
|
271 |
+
"metadata": {},
|
272 |
+
"outputs": [
|
273 |
+
{
|
274 |
+
"name": "stdout",
|
275 |
+
"output_type": "stream",
|
276 |
+
"text": [
|
277 |
+
"\u001b[0;31m# AUTOGENERATED! DO NOT EDIT! File to edit: app.ipynb.\u001b[0m\u001b[0;34m\u001b[0m\n",
|
278 |
+
"\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n",
|
279 |
+
"\u001b[0;34m\u001b[0m\u001b[0;31m# %% auto 0\u001b[0m\u001b[0;34m\u001b[0m\n",
|
280 |
+
"\u001b[0;34m\u001b[0m\u001b[0m__all__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'iface'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'size'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n",
|
281 |
+
"\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n",
|
282 |
+
"\u001b[0;34m\u001b[0m\u001b[0;31m# %% app.ipynb 6\u001b[0m\u001b[0;34m\u001b[0m\n",
|
283 |
+
"\u001b[0;34m\u001b[0m\u001b[0;32mimport\u001b[0m \u001b[0mgradio\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mgr\u001b[0m\u001b[0;34m\u001b[0m\n",
|
284 |
+
"\u001b[0;34m\u001b[0m\u001b[0;32mfrom\u001b[0m \u001b[0mfastcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnet\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0murljson\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mHTTPError\u001b[0m\u001b[0;34m\u001b[0m\n",
|
285 |
+
"\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n",
|
286 |
+
"\u001b[0;34m\u001b[0m\u001b[0;31m# %% app.ipynb 8\u001b[0m\u001b[0;34m\u001b[0m\n",
|
287 |
+
"\u001b[0;34m\u001b[0m\u001b[0;32mdef\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrepo\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n",
|
288 |
+
"\u001b[0;34m\u001b[0m \u001b[0;34m\"Returns the size in GB of a HuggingFace Dataset.\"\u001b[0m\u001b[0;34m\u001b[0m\n",
|
289 |
+
"\u001b[0;34m\u001b[0m \u001b[0murl\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34mf'https://huggingface.co/api/datasets/{repo}'\u001b[0m\u001b[0;34m\u001b[0m\n",
|
290 |
+
"\u001b[0;34m\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mresp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murljson\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'{url}/treesize/main'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n",
|
291 |
+
"\u001b[0;34m\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mHTTPError\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34mf'Did not find repo: {url}'\u001b[0m\u001b[0;34m\u001b[0m\n",
|
292 |
+
"\u001b[0;34m\u001b[0m \u001b[0mgb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'size'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m1e9\u001b[0m\u001b[0;34m\u001b[0m\n",
|
293 |
+
"\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34mf'{gb:.2f} GB'\u001b[0m\u001b[0;34m\u001b[0m\n",
|
294 |
+
"\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n",
|
295 |
+
"\u001b[0;34m\u001b[0m\u001b[0;31m# %% app.ipynb 12\u001b[0m\u001b[0;34m\u001b[0m\n",
|
296 |
+
"\u001b[0;34m\u001b[0m\u001b[0miface\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mInterface\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mgr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mText\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"tglcourse/CelebA-faces-cropped-128\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moutputs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"text\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n",
|
297 |
+
"\u001b[0;34m\u001b[0m\u001b[0miface\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlaunch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mheight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m450\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m500\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n"
|
298 |
+
]
|
299 |
+
}
|
300 |
+
],
|
301 |
+
"source": [
|
302 |
+
"%pycat app.py"
|
303 |
+
]
|
304 |
+
},
|
305 |
+
{
|
306 |
+
"cell_type": "markdown",
|
307 |
+
"id": "a081bb0f-5cad-4b99-962b-4dd49cee61a2",
|
308 |
+
"metadata": {},
|
309 |
+
"source": [
|
310 |
+
"### Fill out `requirements.txt`\n",
|
311 |
+
"\n",
|
312 |
+
"You must supply a requirements.txt file so the Gradio app knows how to build your dependencies. In this example, the only dependency other than Gradio is `fastcore`. You don't need to specify Gradio itself as a dependency in `requirements.txt`, so our `requirements.txt` file has only one dependency:"
|
313 |
+
]
|
314 |
+
},
|
315 |
+
{
|
316 |
+
"cell_type": "code",
|
317 |
+
"execution_count": 8,
|
318 |
+
"id": "0b611d9c-d262-4124-9e9e-4fe754ac4378",
|
319 |
+
"metadata": {},
|
320 |
+
"outputs": [
|
321 |
+
{
|
322 |
+
"name": "stdout",
|
323 |
+
"output_type": "stream",
|
324 |
+
"text": [
|
325 |
+
"Writing requirements.txt\n"
|
326 |
+
]
|
327 |
+
}
|
328 |
+
],
|
329 |
+
"source": [
|
330 |
+
"%%writefile requirements.txt\n",
|
331 |
+
"fastcore"
|
332 |
+
]
|
333 |
+
},
|
334 |
+
{
|
335 |
+
"cell_type": "markdown",
|
336 |
+
"id": "f15d9c78-1f55-449e-8058-9af1832367a0",
|
337 |
+
"metadata": {},
|
338 |
+
"source": [
|
339 |
+
"_Note: you may want to add operating system dependencies in addition to python dependencies. You can do this via a `packages.txt` file as [documented here](https://huggingface.co/docs/hub/spaces-dependencies#adding-your-own-dependencies)._\n",
|
340 |
+
"\n",
|
341 |
+
"## 5. Launch Your Gradio App\n",
|
342 |
+
"\n",
|
343 |
+
"To launch your gradio app, you need to commit the changes to the Hugging Face repo:\n",
|
344 |
+
"\n",
|
345 |
+
"```\n",
|
346 |
+
"git add -A; git commit -m \"Add application files\"; git push\n",
|
347 |
+
"```"
|
348 |
+
]
|
349 |
+
},
|
350 |
+
{
|
351 |
+
"cell_type": "markdown",
|
352 |
+
"id": "fa661f93-73b4-465a-9c22-cc38197505cb",
|
353 |
+
"metadata": {},
|
354 |
+
"source": [
|
355 |
+
"# Voilà! Enjoy your Gradio App"
|
356 |
+
]
|
357 |
+
},
|
358 |
+
{
|
359 |
+
"cell_type": "markdown",
|
360 |
+
"id": "9b20ff94-6842-4078-9ec1-be740944e721",
|
361 |
+
"metadata": {},
|
362 |
+
"source": [
|
363 |
+
"After a couple of minutes, you will see your app published! This app is published [here](https://huggingface.co/spaces/hamel/hfspace_demo)."
|
364 |
+
]
|
365 |
+
},
|
366 |
+
{
|
367 |
+
"cell_type": "markdown",
|
368 |
+
"id": "a9832cfb-9fe9-47e3-9928-1a1fd4b85bdd",
|
369 |
+
"metadata": {},
|
370 |
+
"source": [
|
371 |
+
"# Shameless Plug: [nbdev](https://nbdev.fast.ai/blog/posts/2022-07-28-nbdev2/)"
|
372 |
+
]
|
373 |
+
},
|
374 |
+
{
|
375 |
+
"cell_type": "markdown",
|
376 |
+
"id": "8a7e43cc-104a-43b0-9433-a5b515c3a8d2",
|
377 |
+
"metadata": {},
|
378 |
+
"source": [
|
379 |
+
"Hopefully you felt something magical while doing this example. Even though the target application required you to write a python script (`app.py`), you didn't have to refactor your script from a notebook! We believe that you shouldn't have to refactor your code and switch contexts even when creating python packages! If this intrigues you, check out [nbdev](https://nbdev.fast.ai/blog/posts/2022-07-28-nbdev2/)"
|
380 |
+
]
|
381 |
+
},
|
382 |
+
{
|
383 |
+
"cell_type": "code",
|
384 |
+
"execution_count": null,
|
385 |
+
"id": "9a8ea66e-236c-416a-8958-dcf813a5f8c9",
|
386 |
+
"metadata": {},
|
387 |
+
"outputs": [],
|
388 |
+
"source": []
|
389 |
+
}
|
390 |
+
],
|
391 |
+
"metadata": {
|
392 |
+
"kernelspec": {
|
393 |
+
"display_name": "Python 3.9.13 ('MLME-22')",
|
394 |
+
"language": "python",
|
395 |
+
"name": "python3"
|
396 |
+
},
|
397 |
+
"language_info": {
|
398 |
+
"codemirror_mode": {
|
399 |
+
"name": "ipython",
|
400 |
+
"version": 3
|
401 |
+
},
|
402 |
+
"file_extension": ".py",
|
403 |
+
"mimetype": "text/x-python",
|
404 |
+
"name": "python",
|
405 |
+
"nbconvert_exporter": "python",
|
406 |
+
"pygments_lexer": "ipython3",
|
407 |
+
"version": "3.9.13"
|
408 |
+
},
|
409 |
+
"vscode": {
|
410 |
+
"interpreter": {
|
411 |
+
"hash": "2cb9b8e4ba0e26b1cdc35fa509fd363b1c45cea0b423b3e9d0e061db9bbef286"
|
412 |
+
}
|
413 |
+
}
|
414 |
+
},
|
415 |
+
"nbformat": 4,
|
416 |
+
"nbformat_minor": 5
|
417 |
+
}
|
app.py
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# AUTOGENERATED! DO NOT EDIT! File to edit: app.ipynb.
|
2 |
+
|
3 |
+
# %% auto 0
|
4 |
+
__all__ = ['iface', 'size']
|
5 |
+
|
6 |
+
# %% app.ipynb 6
|
7 |
+
import gradio as gr
|
8 |
+
from fastcore.net import urljson, HTTPError
|
9 |
+
|
10 |
+
# %% app.ipynb 8
|
11 |
+
def size(repo:str):
|
12 |
+
"Returns the size in GB of a HuggingFace Dataset."
|
13 |
+
url = f'https://huggingface.co/api/datasets/{repo}'
|
14 |
+
try: resp = urljson(f'{url}/treesize/main')
|
15 |
+
except HTTPError: return f'Did not find repo: {url}'
|
16 |
+
gb = resp['size'] / 1e9
|
17 |
+
return f'{gb:.2f} GB'
|
18 |
+
|
19 |
+
# %% app.ipynb 12
|
20 |
+
iface = gr.Interface(fn=size, inputs=gr.Text(value="tglcourse/CelebA-faces-cropped-128"), outputs="text")
|
21 |
+
iface.launch(height=450, width=500)
|
requirements.txt
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
fastcore
|