Buckets:
| import{s as el,f as Oe,n as ll,o as tl}from"../chunks/scheduler.37c15a92.js";import{S as sl,i as al,g as i,s as a,r as m,A as nl,h as o,f as t,c as n,j as Re,u,x as p,k as r,y as il,a as s,v as y,d,t as J,w as T}from"../chunks/index.2bf4358c.js";import{Y as ol}from"../chunks/Youtube.1e50a667.js";import{C as $e}from"../chunks/CodeBlock.4e987730.js";import{C as pl}from"../chunks/CourseFloatingBanner.9ff4c771.js";import{H as D,E as rl}from"../chunks/getInferenceSnippets.ebf8be91.js";function cl(Se){let h,K,X,P,w,O,g,ee,b,We=`Теперь, когда вы создали демо, вы наверняка захотите поделиться им с другими. Демо Gradio | |
| можно распространять двумя способами: используя <strong><em>временную ссылку для общего доступа</em></strong> или <strong><em>постоянный хостинг на Spaces</em></strong>.`,le,j,Ze="Мы рассмотрим оба этих подхода в ближайшее время. Но прежде чем выложить свое демо, вы, возможно, захотите доработать его 💅.",te,f,se,U,Qe='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter9/gradio-demo-overview.png" alt="Overview of a gradio interface"/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter9/gradio-demo-overview-dark.png" alt="Overview of a gradio interface"/>',ae,C,xe="Чтобы добавить дополнительный контент в демо, класс <code>Interface</code> поддерживает некоторые необязательные параметры:",ne,I,He=`<li><code>title</code>: вы можете дать название своему демо, которое будет отображаться <em>над</em> компонентами ввода и вывода.</li> <li><code>description</code>: вы можете дать описание (в виде текста, Markdown или HTML) для интерфейса, которое отображается над компонентами ввода и вывода и под заголовком.</li> <li><code>article</code>: вы также можете написать расширенную статью (в текстовом формате, Markdown или HTML), объясняющую интерфейс. Если она задана, она отображается <em>под</em> компонентами ввода и вывода.</li> <li><code>theme</code>: не нравятся цвета по умолчанию? Установите для темы одно из значений <code>default</code>, <code>huggingface</code>, <code>grass</code>, <code>peach</code>. Вы также можете добавить префикс <code>dark-</code>, например, <code>dark-peach</code> для темной темы (или просто <code>dark</code> для темной темы по умолчанию).</li> <li><code>examples</code>: чтобы сделать ваше демо более удобным в использовании, вы можете предоставить несколько примеров входов для функции. Они появляются под компонентами пользовательского интерфейса и могут быть использованы для заполнения интерфейса. Они должны быть предоставлены в виде вложенного списка, в котором внешний список состоит из примеров, а каждый внутренний список состоит из ввода, соответствующего каждому компоненту ввода.</li> <li><code>live</code>: если вы хотите сделать демо “живым”, то есть чтобы ваша модель запускалась заново при каждом изменении входных данных, вы можете установить <code>live=True</code>. Это имеет смысл использовать с быстрыми моделями (пример мы увидим в конце этого раздела) | |
| Используя приведенные выше варианты, мы получим более завершенный интерфейс. Запустите приведенный ниже код, и вы сможете пообщаться с Риком и Морти:</li>`,ie,k,oe,B,Ye="Используя приведенные выше варианты, мы получим более завершенный интерфейс. Попробуйте интерфейс, представленный ниже:",pe,c,Fe,re,v,ce,G,_e=`Теперь, когда у нас есть работающее демо нашей модели машинного обучения, давайте узнаем, как легко поделиться ссылкой на наш интерфейс. | |
| Интерфейсами можно легко поделиться публично, установив <code>share=True</code> в методе <code>launch()</code>:`,Me,R,me,$,ze="В результате создается общедоступная ссылка, которую вы можете отправить кому угодно! Когда вы отправляете эту ссылку, пользователь на другой стороне может опробовать модель в своем браузере в течение 72 часов. Поскольку обработка происходит на вашем устройстве (пока оно включено!), вам не нужно беспокоиться об упаковке каких-либо зависимостей. Если вы работаете в блокноте Google Colab, ссылка на общий доступ всегда создается автоматически. Обычно она выглядит примерно так: <strong>XXXXX.gradio.app</strong>. Хотя ссылка предоставляется через Gradio, мы являемся лишь прокси для вашего локального сервера и не храним никаких данных, передаваемых через интерфейсы.",ue,S,Ee="Однако не забывайте, что эти ссылки общедоступны, а значит, любой желающий может использовать вашу модель для прогнозирования! Поэтому не раскрывайте конфиденциальную информацию через написанные вами функции и не допускайте критических изменений на вашем устройстве. Если вы установите <code>share=False</code> (по умолчанию), будет создана только локальная ссылка.",ye,W,de,Z,Le="Ссылка на ресурс, которую можно передать коллегам, - это здорово, но как разместить демо на постоянном хостинге, чтобы оно существовало в своем собственном “пространстве (space)” в Интернете?",Je,Q,Ne=`Hugging Face Spaces предоставляет инфраструктуру для постоянного размещения вашей модели Gradio в интернете, <strong>бесплатно</strong>! Spaces позволяет вам создать и разместить в (публичном или частном) репозитории, | |
| где ваш Gradio | |
| код интерфейса будет существовать в файле <code>app.py</code>. <a href="https://huggingface.co/blog/gradio-spaces" rel="nofollow">Прочитайте пошаговое руководство</a> чтобы начать работу, или посмотрите видео с примером ниже.`,Te,x,he,H,Ue,Y,Ve='Используя то, что мы узнали в предыдущих разделах, давайте создадим демо распознавания скетчей, которое мы видели в <a href="../chapter9/1">первом разделе этой главы</a>. Давайте добавим некоторые настройки в наш интерфейс и установим <code>share=True</code>, чтобы создать публичную ссылку, которую мы сможем передавать всем желающим.',we,F,qe='Мы можем загрузить метки из файла <a href="https://huggingface.co/spaces/dawood/Sketch-Recognition/blob/main/class_names.txt" rel="nofollow">class_names.txt</a> и загрузить предварительно обученную модель pytorch из файла <a href="https://huggingface.co/spaces/dawood/Sketch-Recognition/blob/main/pytorch_model.bin" rel="nofollow">pytorch_model.bin</a>. Загрузите эти файлы, перейдя по ссылке и нажав кнопку загрузки в левом верхнем углу окна предварительного просмотра файла. Давайте посмотрим на приведенный ниже код, чтобы увидеть, как мы используем эти файлы для загрузки нашей модели и создания функции <code>predict()</code>:',ge,_,be,z,Xe="Теперь у нас есть функция <code>predict()</code>. Следующим шагом будет определение и запуск нашего интерфейса Gradio:",je,E,fe,M,Ae,Ce,L,De=`Обратите внимание на параметр <code>live=True</code> в <code>Interface</code>, который означает, что демо скетча делает | |
| предсказание каждый раз, когда кто-то рисует на скетчпаде (без кнопки “Исполнить (submit)”!).`,Ie,N,Ke=`Кроме того, мы также установили аргумент <code>share=True</code> в методе <code>launch()</code>. | |
| Это создаст общедоступную ссылку, которую вы можете | |
| отправить кому угодно! Когда вы отправите эту ссылку, пользователь на другой стороне сможет опробовать | |
| модель распознавания эскизов. Повторим, что модель также можно разместить на Hugging Face Spaces, | |
| именно так мы и разместили демо выше.`,ke,V,Pe="Далее мы расскажем о других способах использования Gradio в экосистеме Hugging Face!",Be,q,ve,A,Ge;return w=new D({props:{title:"Делимся демо с другими",local:"sharing-demos-with-others",headingTag:"h1"}}),g=new pl({props:{chapter:9,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter9/section4.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter9/section4.ipynb"}]}}),f=new D({props:{title:"Доработка демо Gradio:",local:"polishing-your-gradio-demo",headingTag:"h3"}}),k=new $e({props:{code:"dGl0bGUlMjAlM0QlMjAlMjJBc2slMjBSaWNrJTIwYSUyMFF1ZXN0aW9uJTIyJTBBZGVzY3JpcHRpb24lMjAlM0QlMjAlMjIlMjIlMjIlMEFUaGUlMjBib3QlMjB3YXMlMjB0cmFpbmVkJTIwdG8lMjBhbnN3ZXIlMjBxdWVzdGlvbnMlMjBiYXNlZCUyMG9uJTIwUmljayUyMGFuZCUyME1vcnR5JTIwZGlhbG9ndWVzLiUyMEFzayUyMFJpY2slMjBhbnl0aGluZyElMEElM0NpbWclMjBzcmMlM0QlMjJodHRwcyUzQSUyRiUyRmh1Z2dpbmdmYWNlLmNvJTJGc3BhY2VzJTJGY291cnNlLWRlbW9zJTJGUmlja19hbmRfTW9ydHlfUUElMkZyZXNvbHZlJTJGbWFpbiUyRnJpY2sucG5nJTIyJTIwd2lkdGglM0QyMDBweCUzRSUwQSUyMiUyMiUyMiUwQSUwQWFydGljbGUlMjAlM0QlMjAlMjJDaGVjayUyMG91dCUyMCU1QnRoZSUyMG9yaWdpbmFsJTIwUmljayUyMGFuZCUyME1vcnR5JTIwQm90JTVEKGh0dHBzJTNBJTJGJTJGaHVnZ2luZ2ZhY2UuY28lMkZzcGFjZXMlMkZraW5nYWJ6cHJvJTJGUmlja19hbmRfTW9ydHlfQm90KSUyMHRoYXQlMjB0aGlzJTIwZGVtbyUyMGlzJTIwYmFzZWQlMjBvZmYlMjBvZi4lMjIlMEElMEFnci5JbnRlcmZhY2UoJTBBJTIwJTIwJTIwJTIwZm4lM0RwcmVkaWN0JTJDJTBBJTIwJTIwJTIwJTIwaW5wdXRzJTNEJTIydGV4dGJveCUyMiUyQyUwQSUyMCUyMCUyMCUyMG91dHB1dHMlM0QlMjJ0ZXh0JTIyJTJDJTBBJTIwJTIwJTIwJTIwdGl0bGUlM0R0aXRsZSUyQyUwQSUyMCUyMCUyMCUyMGRlc2NyaXB0aW9uJTNEZGVzY3JpcHRpb24lMkMlMEElMjAlMjAlMjAlMjBhcnRpY2xlJTNEYXJ0aWNsZSUyQyUwQSUyMCUyMCUyMCUyMGV4YW1wbGVzJTNEJTVCJTVCJTIyV2hhdCUyMGFyZSUyMHlvdSUyMGRvaW5nJTNGJTIyJTVEJTJDJTIwJTVCJTIyV2hlcmUlMjBzaG91bGQlMjB3ZSUyMHRpbWUlMjB0cmF2ZWwlMjB0byUzRiUyMiU1RCU1RCUyQyUwQSkubGF1bmNoKCk=",highlighted:`title = <span class="hljs-string">"Ask Rick a Question"</span> | |
| description = <span class="hljs-string">""" | |
| The bot was trained to answer questions based on Rick and Morty dialogues. Ask Rick anything! | |
| <img src="https://huggingface.co/spaces/course-demos/Rick_and_Morty_QA/resolve/main/rick.png" width=200px> | |
| """</span> | |
| article = <span class="hljs-string">"Check out [the original Rick and Morty Bot](https://huggingface.co/spaces/kingabzpro/Rick_and_Morty_Bot) that this demo is based off of."</span> | |
| gr.Interface( | |
| fn=predict, | |
| inputs=<span class="hljs-string">"textbox"</span>, | |
| outputs=<span class="hljs-string">"text"</span>, | |
| title=title, | |
| description=description, | |
| article=article, | |
| examples=[[<span class="hljs-string">"What are you doing?"</span>], [<span class="hljs-string">"Where should we time travel to?"</span>]], | |
| ).launch()`,wrap:!1}}),v=new D({props:{title:"Распространение демо с помощью временных ссылок",local:"sharing-your-demo-with-temporary-links",headingTag:"h3"}}),R=new $e({props:{code:"Z3IuSW50ZXJmYWNlKGNsYXNzaWZ5X2ltYWdlJTJDJTIwJTIyaW1hZ2UlMjIlMkMlMjAlMjJsYWJlbCUyMikubGF1bmNoKHNoYXJlJTNEVHJ1ZSk=",highlighted:'gr.Interface(classify_image, <span class="hljs-string">"image"</span>, <span class="hljs-string">"label"</span>).launch(share=<span class="hljs-literal">True</span>)',wrap:!1}}),W=new D({props:{title:"Хостинг вашего демо на Hugging Face Spaces",local:"hosting-your-demo-on-hugging-face-spaces",headingTag:"h3"}}),x=new ol({props:{id:"LS9Y2wDVI0k"}}),H=new D({props:{title:"✏️ Давайте применим это!",local:"lets-apply-it",headingTag:"h2"}}),_=new $e({props:{code:"ZnJvbSUyMHBhdGhsaWIlMjBpbXBvcnQlMjBQYXRoJTBBaW1wb3J0JTIwdG9yY2glMEFpbXBvcnQlMjBncmFkaW8lMjBhcyUyMGdyJTBBZnJvbSUyMHRvcmNoJTIwaW1wb3J0JTIwbm4lMEElMEFMQUJFTFMlMjAlM0QlMjBQYXRoKCUyMmNsYXNzX25hbWVzLnR4dCUyMikucmVhZF90ZXh0KCkuc3BsaXRsaW5lcygpJTBBJTBBbW9kZWwlMjAlM0QlMjBubi5TZXF1ZW50aWFsKCUwQSUyMCUyMCUyMCUyMG5uLkNvbnYyZCgxJTJDJTIwMzIlMkMlMjAzJTJDJTIwcGFkZGluZyUzRCUyMnNhbWUlMjIpJTJDJTBBJTIwJTIwJTIwJTIwbm4uUmVMVSgpJTJDJTBBJTIwJTIwJTIwJTIwbm4uTWF4UG9vbDJkKDIpJTJDJTBBJTIwJTIwJTIwJTIwbm4uQ29udjJkKDMyJTJDJTIwNjQlMkMlMjAzJTJDJTIwcGFkZGluZyUzRCUyMnNhbWUlMjIpJTJDJTBBJTIwJTIwJTIwJTIwbm4uUmVMVSgpJTJDJTBBJTIwJTIwJTIwJTIwbm4uTWF4UG9vbDJkKDIpJTJDJTBBJTIwJTIwJTIwJTIwbm4uQ29udjJkKDY0JTJDJTIwMTI4JTJDJTIwMyUyQyUyMHBhZGRpbmclM0QlMjJzYW1lJTIyKSUyQyUwQSUyMCUyMCUyMCUyMG5uLlJlTFUoKSUyQyUwQSUyMCUyMCUyMCUyMG5uLk1heFBvb2wyZCgyKSUyQyUwQSUyMCUyMCUyMCUyMG5uLkZsYXR0ZW4oKSUyQyUwQSUyMCUyMCUyMCUyMG5uLkxpbmVhcigxMTUyJTJDJTIwMjU2KSUyQyUwQSUyMCUyMCUyMCUyMG5uLlJlTFUoKSUyQyUwQSUyMCUyMCUyMCUyMG5uLkxpbmVhcigyNTYlMkMlMjBsZW4oTEFCRUxTKSklMkMlMEEpJTBBc3RhdGVfZGljdCUyMCUzRCUyMHRvcmNoLmxvYWQoJTIycHl0b3JjaF9tb2RlbC5iaW4lMjIlMkMlMjBtYXBfbG9jYXRpb24lM0QlMjJjcHUlMjIpJTBBbW9kZWwubG9hZF9zdGF0ZV9kaWN0KHN0YXRlX2RpY3QlMkMlMjBzdHJpY3QlM0RGYWxzZSklMEFtb2RlbC5ldmFsKCklMEElMEElMEFkZWYlMjBwcmVkaWN0KGltKSUzQSUwQSUyMCUyMCUyMCUyMHglMjAlM0QlMjB0b3JjaC50ZW5zb3IoaW0lMkMlMjBkdHlwZSUzRHRvcmNoLmZsb2F0MzIpLnVuc3F1ZWV6ZSgwKS51bnNxdWVlemUoMCklMjAlMkYlMjAyNTUuMCUwQSUyMCUyMCUyMCUyMHdpdGglMjB0b3JjaC5ub19ncmFkKCklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXQlMjAlM0QlMjBtb2RlbCh4KSUwQSUyMCUyMCUyMCUyMHByb2JhYmlsaXRpZXMlMjAlM0QlMjB0b3JjaC5ubi5mdW5jdGlvbmFsLnNvZnRtYXgob3V0JTVCMCU1RCUyQyUyMGRpbSUzRDApJTBBJTIwJTIwJTIwJTIwdmFsdWVzJTJDJTIwaW5kaWNlcyUyMCUzRCUyMHRvcmNoLnRvcGsocHJvYmFiaWxpdGllcyUyQyUyMDUpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCTEFCRUxTJTVCaSU1RCUzQSUyMHYuaXRlbSgpJTIwZm9yJTIwaSUyQyUyMHYlMjBpbiUyMHppcChpbmRpY2VzJTJDJTIwdmFsdWVzKSU3RA==",highlighted:`<span class="hljs-keyword">from</span> pathlib <span class="hljs-keyword">import</span> Path | |
| <span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">import</span> gradio <span class="hljs-keyword">as</span> gr | |
| <span class="hljs-keyword">from</span> torch <span class="hljs-keyword">import</span> nn | |
| LABELS = Path(<span class="hljs-string">"class_names.txt"</span>).read_text().splitlines() | |
| model = nn.Sequential( | |
| nn.Conv2d(<span class="hljs-number">1</span>, <span class="hljs-number">32</span>, <span class="hljs-number">3</span>, padding=<span class="hljs-string">"same"</span>), | |
| nn.ReLU(), | |
| nn.MaxPool2d(<span class="hljs-number">2</span>), | |
| nn.Conv2d(<span class="hljs-number">32</span>, <span class="hljs-number">64</span>, <span class="hljs-number">3</span>, padding=<span class="hljs-string">"same"</span>), | |
| nn.ReLU(), | |
| nn.MaxPool2d(<span class="hljs-number">2</span>), | |
| nn.Conv2d(<span class="hljs-number">64</span>, <span class="hljs-number">128</span>, <span class="hljs-number">3</span>, padding=<span class="hljs-string">"same"</span>), | |
| nn.ReLU(), | |
| nn.MaxPool2d(<span class="hljs-number">2</span>), | |
| nn.Flatten(), | |
| nn.Linear(<span class="hljs-number">1152</span>, <span class="hljs-number">256</span>), | |
| nn.ReLU(), | |
| nn.Linear(<span class="hljs-number">256</span>, <span class="hljs-built_in">len</span>(LABELS)), | |
| ) | |
| state_dict = torch.load(<span class="hljs-string">"pytorch_model.bin"</span>, map_location=<span class="hljs-string">"cpu"</span>) | |
| model.load_state_dict(state_dict, strict=<span class="hljs-literal">False</span>) | |
| model.<span class="hljs-built_in">eval</span>() | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">predict</span>(<span class="hljs-params">im</span>): | |
| x = torch.tensor(im, dtype=torch.float32).unsqueeze(<span class="hljs-number">0</span>).unsqueeze(<span class="hljs-number">0</span>) / <span class="hljs-number">255.0</span> | |
| <span class="hljs-keyword">with</span> torch.no_grad(): | |
| out = model(x) | |
| probabilities = torch.nn.functional.softmax(out[<span class="hljs-number">0</span>], dim=<span class="hljs-number">0</span>) | |
| values, indices = torch.topk(probabilities, <span class="hljs-number">5</span>) | |
| <span class="hljs-keyword">return</span> {LABELS[i]: v.item() <span class="hljs-keyword">for</span> i, v <span class="hljs-keyword">in</span> <span class="hljs-built_in">zip</span>(indices, values)}`,wrap:!1}}),E=new $e({props:{code:"aW50ZXJmYWNlJTIwJTNEJTIwZ3IuSW50ZXJmYWNlKCUwQSUyMCUyMCUyMCUyMHByZWRpY3QlMkMlMEElMjAlMjAlMjAlMjBpbnB1dHMlM0QlMjJza2V0Y2hwYWQlMjIlMkMlMEElMjAlMjAlMjAlMjBvdXRwdXRzJTNEJTIybGFiZWwlMjIlMkMlMEElMjAlMjAlMjAlMjB0aGVtZSUzRCUyMmh1Z2dpbmdmYWNlJTIyJTJDJTBBJTIwJTIwJTIwJTIwdGl0bGUlM0QlMjJTa2V0Y2glMjBSZWNvZ25pdGlvbiUyMiUyQyUwQSUyMCUyMCUyMCUyMGRlc2NyaXB0aW9uJTNEJTIyV2hvJTIwd2FudHMlMjB0byUyMHBsYXklMjBQaWN0aW9uYXJ5JTNGJTIwRHJhdyUyMGElMjBjb21tb24lMjBvYmplY3QlMjBsaWtlJTIwYSUyMHNob3ZlbCUyMG9yJTIwYSUyMGxhcHRvcCUyQyUyMGFuZCUyMHRoZSUyMGFsZ29yaXRobSUyMHdpbGwlMjBndWVzcyUyMGluJTIwcmVhbCUyMHRpbWUhJTIyJTJDJTBBJTIwJTIwJTIwJTIwYXJ0aWNsZSUzRCUyMiUzQ3AlMjBzdHlsZSUzRCd0ZXh0LWFsaWduJTNBJTIwY2VudGVyJyUzRVNrZXRjaCUyMFJlY29nbml0aW9uJTIwJTdDJTIwRGVtbyUyME1vZGVsJTNDJTJGcCUzRSUyMiUyQyUwQSUyMCUyMCUyMCUyMGxpdmUlM0RUcnVlJTJDJTBBKSUwQWludGVyZmFjZS5sYXVuY2goc2hhcmUlM0RUcnVlKQ==",highlighted:`interface = gr.Interface( | |
| predict, | |
| inputs=<span class="hljs-string">"sketchpad"</span>, | |
| outputs=<span class="hljs-string">"label"</span>, | |
| theme=<span class="hljs-string">"huggingface"</span>, | |
| title=<span class="hljs-string">"Sketch Recognition"</span>, | |
| description=<span class="hljs-string">"Who wants to play Pictionary? Draw a common object like a shovel or a laptop, and the algorithm will guess in real time!"</span>, | |
| article=<span class="hljs-string">"<p style='text-align: center'>Sketch Recognition | Demo Model</p>"</span>, | |
| live=<span class="hljs-literal">True</span>, | |
| ) | |
| interface.launch(share=<span class="hljs-literal">True</span>)`,wrap:!1}}),q=new rl({props:{source:"https://github.com/huggingface/course/blob/main/chapters/ru/chapter9/4.mdx"}}),{c(){h=i("meta"),K=a(),X=i("p"),P=a(),m(w.$$.fragment),O=a(),m(g.$$.fragment),ee=a(),b=i("p"),b.innerHTML=We,le=a(),j=i("p"),j.textContent=Ze,te=a(),m(f.$$.fragment),se=a(),U=i("div"),U.innerHTML=Qe,ae=a(),C=i("p"),C.innerHTML=xe,ne=a(),I=i("ul"),I.innerHTML=He,ie=a(),m(k.$$.fragment),oe=a(),B=i("p"),B.textContent=Ye,pe=a(),c=i("iframe"),re=a(),m(v.$$.fragment),ce=a(),G=i("p"),G.innerHTML=_e,Me=a(),m(R.$$.fragment),me=a(),$=i("p"),$.innerHTML=ze,ue=a(),S=i("p"),S.innerHTML=Ee,ye=a(),m(W.$$.fragment),de=a(),Z=i("p"),Z.textContent=Le,Je=a(),Q=i("p"),Q.innerHTML=Ne,Te=a(),m(x.$$.fragment),he=a(),m(H.$$.fragment),Ue=a(),Y=i("p"),Y.innerHTML=Ve,we=a(),F=i("p"),F.innerHTML=qe,ge=a(),m(_.$$.fragment),be=a(),z=i("p"),z.innerHTML=Xe,je=a(),m(E.$$.fragment),fe=a(),M=i("iframe"),Ce=a(),L=i("p"),L.innerHTML=De,Ie=a(),N=i("p"),N.innerHTML=Ke,ke=a(),V=i("p"),V.textContent=Pe,Be=a(),m(q.$$.fragment),ve=a(),A=i("p"),this.h()},l(e){const l=nl("svelte-u9bgzb",document.head);h=o(l,"META",{name:!0,content:!0}),l.forEach(t),K=n(e),X=o(e,"P",{}),Re(X).forEach(t),P=n(e),u(w.$$.fragment,e),O=n(e),u(g.$$.fragment,e),ee=n(e),b=o(e,"P",{"data-svelte-h":!0}),p(b)!=="svelte-1ucl3jt"&&(b.innerHTML=We),le=n(e),j=o(e,"P",{"data-svelte-h":!0}),p(j)!=="svelte-rkaxdn"&&(j.textContent=Ze),te=n(e),u(f.$$.fragment,e),se=n(e),U=o(e,"DIV",{class:!0,"data-svelte-h":!0}),p(U)!=="svelte-nclpfp"&&(U.innerHTML=Qe),ae=n(e),C=o(e,"P",{"data-svelte-h":!0}),p(C)!=="svelte-11847dt"&&(C.innerHTML=xe),ne=n(e),I=o(e,"UL",{"data-svelte-h":!0}),p(I)!=="svelte-zka2tb"&&(I.innerHTML=He),ie=n(e),u(k.$$.fragment,e),oe=n(e),B=o(e,"P",{"data-svelte-h":!0}),p(B)!=="svelte-xtup6g"&&(B.textContent=Ye),pe=n(e),c=o(e,"IFRAME",{src:!0,frameborder:!0,height:!0,title:!0,class:!0,allow:!0,sandbox:!0}),Re(c).forEach(t),re=n(e),u(v.$$.fragment,e),ce=n(e),G=o(e,"P",{"data-svelte-h":!0}),p(G)!=="svelte-6unewf"&&(G.innerHTML=_e),Me=n(e),u(R.$$.fragment,e),me=n(e),$=o(e,"P",{"data-svelte-h":!0}),p($)!=="svelte-18221ng"&&($.innerHTML=ze),ue=n(e),S=o(e,"P",{"data-svelte-h":!0}),p(S)!=="svelte-1k8f2bl"&&(S.innerHTML=Ee),ye=n(e),u(W.$$.fragment,e),de=n(e),Z=o(e,"P",{"data-svelte-h":!0}),p(Z)!=="svelte-ueix3a"&&(Z.textContent=Le),Je=n(e),Q=o(e,"P",{"data-svelte-h":!0}),p(Q)!=="svelte-1wvduip"&&(Q.innerHTML=Ne),Te=n(e),u(x.$$.fragment,e),he=n(e),u(H.$$.fragment,e),Ue=n(e),Y=o(e,"P",{"data-svelte-h":!0}),p(Y)!=="svelte-wlu6wo"&&(Y.innerHTML=Ve),we=n(e),F=o(e,"P",{"data-svelte-h":!0}),p(F)!=="svelte-1fib0dd"&&(F.innerHTML=qe),ge=n(e),u(_.$$.fragment,e),be=n(e),z=o(e,"P",{"data-svelte-h":!0}),p(z)!=="svelte-1igc5vi"&&(z.innerHTML=Xe),je=n(e),u(E.$$.fragment,e),fe=n(e),M=o(e,"IFRAME",{src:!0,frameborder:!0,height:!0,title:!0,class:!0,allow:!0,sandbox:!0}),Re(M).forEach(t),Ce=n(e),L=o(e,"P",{"data-svelte-h":!0}),p(L)!=="svelte-qdsi6r"&&(L.innerHTML=De),Ie=n(e),N=o(e,"P",{"data-svelte-h":!0}),p(N)!=="svelte-6e2nmj"&&(N.innerHTML=Ke),ke=n(e),V=o(e,"P",{"data-svelte-h":!0}),p(V)!=="svelte-9epx9p"&&(V.textContent=Pe),Be=n(e),u(q.$$.fragment,e),ve=n(e),A=o(e,"P",{}),Re(A).forEach(t),this.h()},h(){r(h,"name","hf:doc:metadata"),r(h,"content",Ml),r(U,"class","flex justify-center"),Oe(c.src,Fe="https://course-demos-Rick-and-Morty-QA.hf.space")||r(c,"src",Fe),r(c,"frameborder","0"),r(c,"height","800"),r(c,"title","Gradio app"),r(c,"class","container p-0 flex-grow space-iframe"),r(c,"allow","accelerometer; ambient-light-sensor; autoplay; battery; camera; document-domain; encrypted-media; fullscreen; geolocation; gyroscope; layout-animations; legacy-image-formats; magnetometer; microphone; midi; oversized-images; payment; picture-in-picture; publickey-credentials-get; sync-xhr; usb; vr ; wake-lock; xr-spatial-tracking"),r(c,"sandbox","allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"),Oe(M.src,Ae="https://course-demos-Sketch-Recognition.hf.space")||r(M,"src",Ae),r(M,"frameborder","0"),r(M,"height","650"),r(M,"title","Gradio app"),r(M,"class","container p-0 flex-grow space-iframe"),r(M,"allow","accelerometer; ambient-light-sensor; autoplay; battery; camera; document-domain; encrypted-media; fullscreen; geolocation; gyroscope; layout-animations; legacy-image-formats; magnetometer; microphone; midi; oversized-images; payment; picture-in-picture; publickey-credentials-get; sync-xhr; usb; vr ; wake-lock; xr-spatial-tracking"),r(M,"sandbox","allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads")},m(e,l){il(document.head,h),s(e,K,l),s(e,X,l),s(e,P,l),y(w,e,l),s(e,O,l),y(g,e,l),s(e,ee,l),s(e,b,l),s(e,le,l),s(e,j,l),s(e,te,l),y(f,e,l),s(e,se,l),s(e,U,l),s(e,ae,l),s(e,C,l),s(e,ne,l),s(e,I,l),s(e,ie,l),y(k,e,l),s(e,oe,l),s(e,B,l),s(e,pe,l),s(e,c,l),s(e,re,l),y(v,e,l),s(e,ce,l),s(e,G,l),s(e,Me,l),y(R,e,l),s(e,me,l),s(e,$,l),s(e,ue,l),s(e,S,l),s(e,ye,l),y(W,e,l),s(e,de,l),s(e,Z,l),s(e,Je,l),s(e,Q,l),s(e,Te,l),y(x,e,l),s(e,he,l),y(H,e,l),s(e,Ue,l),s(e,Y,l),s(e,we,l),s(e,F,l),s(e,ge,l),y(_,e,l),s(e,be,l),s(e,z,l),s(e,je,l),y(E,e,l),s(e,fe,l),s(e,M,l),s(e,Ce,l),s(e,L,l),s(e,Ie,l),s(e,N,l),s(e,ke,l),s(e,V,l),s(e,Be,l),y(q,e,l),s(e,ve,l),s(e,A,l),Ge=!0},p:ll,i(e){Ge||(d(w.$$.fragment,e),d(g.$$.fragment,e),d(f.$$.fragment,e),d(k.$$.fragment,e),d(v.$$.fragment,e),d(R.$$.fragment,e),d(W.$$.fragment,e),d(x.$$.fragment,e),d(H.$$.fragment,e),d(_.$$.fragment,e),d(E.$$.fragment,e),d(q.$$.fragment,e),Ge=!0)},o(e){J(w.$$.fragment,e),J(g.$$.fragment,e),J(f.$$.fragment,e),J(k.$$.fragment,e),J(v.$$.fragment,e),J(R.$$.fragment,e),J(W.$$.fragment,e),J(x.$$.fragment,e),J(H.$$.fragment,e),J(_.$$.fragment,e),J(E.$$.fragment,e),J(q.$$.fragment,e),Ge=!1},d(e){e&&(t(K),t(X),t(P),t(O),t(ee),t(b),t(le),t(j),t(te),t(se),t(U),t(ae),t(C),t(ne),t(I),t(ie),t(oe),t(B),t(pe),t(c),t(re),t(ce),t(G),t(Me),t(me),t($),t(ue),t(S),t(ye),t(de),t(Z),t(Je),t(Q),t(Te),t(he),t(Ue),t(Y),t(we),t(F),t(ge),t(be),t(z),t(je),t(fe),t(M),t(Ce),t(L),t(Ie),t(N),t(ke),t(V),t(Be),t(ve),t(A)),t(h),T(w,e),T(g,e),T(f,e),T(k,e),T(v,e),T(R,e),T(W,e),T(x,e),T(H,e),T(_,e),T(E,e),T(q,e)}}}const Ml='{"title":"Делимся демо с другими","local":"sharing-demos-with-others","sections":[{"title":"Доработка демо Gradio:","local":"polishing-your-gradio-demo","sections":[],"depth":3},{"title":"Распространение демо с помощью временных ссылок","local":"sharing-your-demo-with-temporary-links","sections":[],"depth":3},{"title":"Хостинг вашего демо на Hugging Face Spaces","local":"hosting-your-demo-on-hugging-face-spaces","sections":[],"depth":3},{"title":"✏️ Давайте применим это!","local":"lets-apply-it","sections":[],"depth":2}],"depth":1}';function ml(Se){return tl(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ul extends sl{constructor(h){super(),al(this,h,ml,cl,el,{})}}export{Ul as component}; | |
Xet Storage Details
- Size:
- 28.1 kB
- Xet hash:
- da2398663b163cd4eae4dacfeb5d07874ca12189e1e7bee9664ee20f41c28710
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.