gradio/guides/10_other-tutorials/setting-up-a-demo-for-maximum-performance.md
Abubakar Abid 6f95286337
5.0 dev -> main (#8843)
* enter pre-release mode

* Remove deprecated parameters and classes for the 5.0 release (#8797)

* 5.0

* add changeset

* deprecate more

* add changeset

* lint

* Update rotten-bears-bathe.md

* Update icy-clocks-juggle.md

* changes

* Delete .changeset/icy-clocks-juggle.md

* every

* more deprecation

* deprecate inits

* fix

* fix func

* fix some tests

* format

* fix more tests

* fixes

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* fix (#8830)

* fix

* Prevent invalid values from being submitted to dropdown, etc. (#8810)

* prevent invalid values

* error

* add changeset

* component

* add tests

* fix tests

* spec ts

* format

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* fixes

* Remove manual ip address check and launch counter (#8884)

* changes

* add changeset

* hash

* changes

* remove

* changes

* rename

* internal

* changes

* remove json path

* merge

* fix tests

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Remove deprecated documentation  (#8940)

* remove logoutbutton page

* remove huggingfacedatasetsaver

* Use HTTP Livestreaming for audio/video streaming out (#8906)

* HTTP live streaming

* type check

* fix code

* Fix code

* add code

* Video demo

* Fix tests

* Update notebook

* Add guide

* Fix demo

* Allow downloading

* revert

* Fix download filename

* lint

* notebooks

* fix video demo

* Fix config

* Fix audio repeated play bug

* Improve guide

* fix audio?

* Use cantina

* Code

* type check

* add code

* Use runtimeerror

* Add code

* Adds `strict_cors` parameter to `launch()` (#8959)

* prevent null origin requests by default

* changes

* add changeset

* format

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fi

* Streaming out tweaks (#8976)

* Tweaks

* Better

* typo

* lint

* Improve url downloads for file objects (#8978)

* changes

* changes

* add changeset

* add changeset

* Ci security tweaks (#9010)

* asd

* asd

* asd

* asd

* asd

* asd

* asd

* asd

* asd

* asd

* asd

* asd

* asd

* asd

* change

* changes

* changes

* changes

* changes

* changes

* changes

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: pngwn <hello@pngwn.io>

* merge main (#9050)

* lint

* Have gr.on set value at start as well (#9065)

* changes

* changes

* changes

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>

* No token passed by default in `gr.load()` (#9069)

* changes

* add changeset

* docstring

* change

* client changess

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* changes

* Set default `format` in `gr.Audio` to be `None` to avoid unnecessary preprocessing (#9073)

* audio format

* add changeset

* lint

* docstring

* format

* fix tests

* tweaks

* refactor

* fix

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Streaming inputs for 5.0 (#8941)

* Fix code

* Add code

* Add code

* working demo

* hacky video

* Add code for video

* Fixing some code

* clean queieing

* low streaming mode audio

* reworking

* remove console

* Pretty good spot

* Delete unused

* consolidate

* Add progress bar

* Set time limit null

* delete

* Fix then issue

* merge out

* Add code

* clean up

* Remove base64

* Add code

* minor bugs

* End stream

* Fix rerender

* remove unwanted

* Address streaming comments

* Commit file lol

* ;int

* lint backend

* lint

* Fix queue status. Stream_every defined in event

* Fix types

* Add code

* Add code

* Add code

* queue time

* docstring wording

* Fix typo

* add changeset

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* 3.10 (#9133)

* Deprecate passing a tuple for gr.Code value (#9132)

* Add code

* add changeset

* lint

* type check

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Postprocess hardening (#9122)

* hardenning

* Fix code

* add changeset

* Fix tests

* add test fuzzer

* Clean up

* revert

* Fix

* Add code

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Drop python 3.8 and 3.9 (#9140)

* drop support for python 3.8 and 3.9

* add changeset

* format

* changes

* add changeset

* changes

* add changeset

* changes

* 3.10

* string

* tweak

* tweak

* changes

* changes

* format

* more tweaks

* update actions

* website docs build

* fix func tests

* rev req

* test fix

* remove ruff rule for zip strict

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Raise WasmUnsupportedError for ffmpeg usage on Lite (#9130)

* Raise WasmUnsupportedError for ffmpeg usage on Lite

* add changeset

* add changeset

* Add WasmUnsupportedError in Audio._convert_to_adts

* Add WasmUnsupportedError in processing_utils.audio_to_file

* Fix

* Raise WasmUnsupportedError from processing_utils.audio_from_file

* empty commit

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Video gallery (#9052)

* video support

* tests and backend changes

* undo main merge

* upload fix

* Revert "undo main merge"

This reverts commit e2a26e6d28.

* type fixes

* format

* pr fixes

* Update gradio/components/gallery.py

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Update gradio/components/gallery.py

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* type fix

* thumbnails

* thumbnail type

* remove thumbnail generation

* add changeset

* test fixes

* test fixes

* python test fix

* python test fixc

* fix

* fix

* story fix

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Open audio/image input stream only when queue is ready (#9149)

* fix

* submit logic happens in Blocks

* add changeset

* trigger ci

* trigger ci

* Add code

* Add code

* Fix retrigger refactor

* Add code

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* trigger ci

* update (#9176)

* File access security guide (#9156)

* first draft

Add code

Add code

Add code

emphasis

* suggestions

* redirects

* add changeset

* trigger ci

* typos

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* fix guide

* Fix notebook (#9181)

* DNS resolver on ip check (#9150)

* changes

* changes

* add changeset

* chaanges

* changes

* changes

* changes

* changes

* add caching and whitelist

* remove hf.space

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Change dark mode color theme from `gray` to `zinc` (#9175)

* use zinc as neutral colour

* add changeset

* fix test

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Streaming Guides  (#9173)

* Fix unified case

* commit

* Add code

* add changeset

* notebook

* Lint

* delete

* Fix code

* fix tests

* File access security guide (#9156)

* first draft

Add code

Add code

Add code

emphasis

* suggestions

* redirects

* add changeset

* trigger ci

* typos

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* redirect

* typos

* link

* fix

* See what the problem is

* less time

* fix

* try again with busted cache

* try again

* Code

* Demo and code

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: pngwn <hello@pngwn.io>

* Fix (#9215)

* Deprecate type='tuples for chatbot and focus chatbot docs on 'messages' type (#9194)

* Remove grey background behind all components (#9213)

* remove panel padding and border

* add changeset

* revert radius change

* add changeset

* format

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* changes

* changes

* Revert "changes"

This reverts commit 9e2ae43330.

* Revert "changes"

This reverts commit 9f4c3eec0f.

* Redesign `gr.Slider()` (#9197)

* redesign slider

* add changeset

* fix test

* update slider design

* slider tweaks

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* 🔡 Update default core Gradio font  (#9204)

* change sans font from Source Sans Pro to Asap

* change misc refs to Source Sans Pro

* add changeset

* revert old changes

* add changeset

* replace asap with IBM Plex Sans

* add changeset

* repalce asaps with ibm plex

* tweak

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Redesign `gr.Button()` (#9167)

* *add new button styling
*add origin theme class with old button styling

* add changeset

* remove new colour

* add changeset

* color and radius tweaks

* remove neutral hue change

* *update button demo
*style tweaks

* format

* fix test

* use white text on primary btn

* adjust primary orange

* tweak colour

* disabled fixes

* refactor

* refactor

* refactor

* refactor

* remove non-button changes

* test

* revert test

* make cancel btn darker in light mode

* change button stories to interactive

* fix slider test

* fix test

* tweak

* tweak secondary colour to work with gr.group()

* add changeset

* tweak

* tweak button hover grey

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: pngwn <hello@pngwn.io>

* Minor changes to flagging for 5.0 (#9166)

* init

* add changeset

* rename

* flagging

* flagging

* changes

* update

* changes

* more

* more

* changes

* add changeset

* fix test

* changes

* update demos

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Adds TLS to FRP tunnel (#9218)

* tls tunnel

* add changeset

* add changeset

* arm64

* checksums

* changes

* tweaks

* tweak

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Move buttons from chat_interface into Chatbot (#9201)

* First draft

* type check

* test

* add changeset

* Fix e2e styling and tests

* fix lint

* Add code

* add changeset

* Remove shadow of copy button, make a box

* lint

* add changeset

* fix padding + lint

* make buttons a bit smaller. use different icon

* Add code

* add changeset

* tunneling

* fix

* Add code

* fix + lint

* Add code

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Improve button consistency across light/dark mode (#9236)

* ensure btn borders are consistent in light and dark mode

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Redesign `gr.Tabs()` (#9199)

* Decrease component radii and remove input shadows (#9216)

* fix py chatbot test

* Lighten secondary button grey fill (#9245)

* lighten secondary button grey

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Stop using `multiprocessing` in `flagging.CSVLogger` on Lite v5 (#9246)

* Fix the default demo code for the dev

* Use ClassicCSVLogger for Lite

* add changeset

* add changeset

* Revert "Use ClassicCSVLogger for Lite"

This reverts commit a89fcb1134.

* Avoid using multiprocessing.Lock on Lite

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* prefix api routes (#9200)

* Built-in submit and stop buttons in `gr.ChatInterface(multimodal=False)`, adding `submit_btn` and `stop_btn` props to `gr.Textbox()` and `gr.MultimodalText()` (#9235)

* Add submit_btn prop to the Textbox component and use it in ChatInterface for a consistent design with multimodal=True

* Change the default value of MultimodalTextbox.submit_btn to False for consistency with Textbox.submit_btn

* add changeset

* Set the default value of Textbox.submit_btn as False for consistency

* add changeset

* Add stop_btn prop to Textbox and MultimodalTextbox and use it in ChatInterface for a built-in stop button

* add changeset

* add changeset

* Fix Python tests

* Fix JS tests

* nit fix

* Make the submit and stop buttons not exclusive for simplicity

* Replace the Pause icon with the Square icon

* add changeset

* Update the docstring

* Preserve the original values of textbox.submit_btn and .stop_btn after running a generator

* Show the stop button only when the submit_btn is enabled from the beginning

* Respect the user-specified values of submit_btn and stop_btn

* Add ChatInterface.submit_btn and .stop_btn params

* Fix Textbox.svelte style with string values of submit_btn and stop_btn

* Fix Python tests

* Fix Python code

* fix test

* Apply suggestions from code review

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Adds a "huggingface" button variant, and makes it the default for `gr.LoginButton` and `gr.DuplicateButton` (#9254)

* add clear variant

* add changeset

* duplicate button

* add changeset

* tweak

* tweak

* format

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#8829)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix cs

* chore: update versions (beta) (#9262)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Improve Icon Button consistency  (#9250)

* * update icon buttons
* add image editor specific icon button

* tweak hover

* margin tweak

* add changeset

* improve gr.Video button UI

* radius tweak

* ensure even spacing

* fix typechecks

* add changeset

* revert irrelevant changes

* typefix

* fix image editor buttons

* fix download link icon

* disable undo if no change events dispatched in model3d and video

* add changeset

* add iconbuttonwrapper around gallery share btn

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* format

* Fix reload mode and streaming in 5.0 dev (#9269)

* Fix reload mode + streaming

* use api_prefix for reload

* add changeset

* comments

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Raise error instead of warning if checksums for binary do not match (#9268)

* tunneling

* add changeset

* format

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix stop recording button colors (#9270)

* Add code

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Match style of textbox stop button to submit button (#9280)

* Change styles

* styling

* add changeset

* add changeset

* consistent width

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Raise ChecksumMismatchError (#9300)

* raise mismatch

* add changeset

* changes

* format backend

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Further tweak to is_in_or_equal (#9282)

* Add code

* add changeset

* add changeset

* is_launching tweak

* no resolve symlink

* Use has_launched

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* changes (#9301)

* Fixes race condition in `update_root_in_config` (#9306)

* test

* lint

* tests

* add changeset

* change

* lint

* reduce num attempts

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* docstring

* Adds ability to block event trigger when file is uploading (#9253)

* input_ready

* add changeset

* update value

* block event when input waiting

* format

* add changeset

* dep index

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* 5.0 merge (#9318)

* merge

* pythong format

* fix typecheck

* fix json scroll

* fix test

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: Hannah <hannahblair@users.noreply.github.com>

* Proposal: remove `gr.make_waveform` and remove `matplotlib` as a dependency (#9312)

* remove matplotlib

* add changeset

* remove tests, demo

* Fix the Lite worker to set the matplotlib backend engine only when the matplotlib package is installed

* add changeset

* Fix comment

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Yuichiro Tachibana (Tsuchiya) <t.yic.yt@gmail.com>

* Dont move files to cache automatically in chatbot postprocess (#9303)

* Fix

* add changeset

* Add code

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Remove two dependencies: `importlib_resources` and `urllib3` (if not in Wasm) (#9321)

* remove-importlib_resources

* add changeset

* urllib only on wasm

* add changeset

* format

* format

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Make `gr.Image` preprocessing more efficient (#9314)

* image preprocess

* add changeset

* changes

* fix tests

* docstring

* docstring

* image

* fix

* format

* changes

* fix test

* changes

* handle svg files

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* 5.0 merge take 2 (#9326)

* chore: update versions (#9168)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* chore: update error.svx (#9291)

* chore: update error.svx

occured -> occurred

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Update docs to use new Image init (#9304)

* Fix scrollbars everywhere (#9276)

* changes

* add changeset

* scroll fix

* remove .json css, adjust scroll height to account for label

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Hannah <hannahblair@users.noreply.github.com>

* Separate starlette.Request from PredictBody. Only set in new PredictBodyInternal object (#9279)

* use custom pydantic type annotatio

* add changeset

* Add code

* add changeset

* rework

* dont use arbitrary_types_allowed

* add changeset

* fix test

* revert path change

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Add root_url to components created by gr.render (#9267)

* Fix bug

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fileformat whitelist (#9302)

* changes

* add changeset

* Update routes.py

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix multiple trigger bug when function has js (#9188)

* add code

* add changeset

* lint

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (#9298)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* fix json

* harden test

* harden test

* clean

* format

* add changeset

* notebooks

* fix old conflicts

---------

Co-authored-by: Gradio PR Bot <121576822+gradio-pr-bot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Tayfun Sen <tayfun.sen@gmail.com>
Co-authored-by: aliabid94 <aabid94@gmail.com>
Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: Hannah <hannahblair@users.noreply.github.com>
Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com>

* Add `matplotlib` requirements to several demos (#9327)

* add matplotlib req to demos

* add matplotlib req to demos

* more

* update reqs

* clean

* format

* Standardize `height` across components and add `max_height` and `min_height` parameters where appropriate (#9313)

* height

* changelog

* height

* add changeset

* add changeset

* add changeset

* revert clog

* more changes

* add changeset

* chatbot

* restore

* filexplorer

* add changeset

* json

* add changeset

* markdown

* add changeset

* row

* add changeset

* height

* format frontend

* revert

* max height

* fix

* fix docstrings

* fix py tests

* add story

---------

Co-authored-by: Dawood <dawoodkhan82@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix typo in `tunneling.py` (#9338)

* tunneling fix

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Set the color of placeholder in a disabled textbox to gray instead of black, and disable typing while a response is generating in `gr.ChatInterface`, allow `gr.MultimodalTextbox` to accept string values (#9328)

* textbox

* add changeset

* changes'

* revert demos

* add changeset

* add changeset

* changes

* multimodal

* add changeset

* changes

* format

* revert demo

* fix test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Improve is_in_or_equal and fuzzer (#9341)

* improve fuzzer

* test case

* add changeset

* verify

* Update gradio/utils.py

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Add info about Powershell client (#9343)

* clients

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Remove lite/theme.css from the Git-managed file tree (#9335)

* Delete js/lite/src/theme.css from the Git managed file tree as it's dynamically generated

* Remove lite-related npm scripts from spa/package.json

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* 9227 chatinterface retry bug (#9316)

* first draft

* add code

* tip

* add changeset

* delete dead code

* Type check notebook

* consolidate like section with guide

* Add comments

* add value

* Lint

* lint

* guide

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Move icons into `IconButtonWrapper` (#9261)

* * update icon buttons
* add image editor specific icon button

* tweak hover

* margin tweak

* add changeset

* improve gr.Video button UI

* radius tweak

* ensure even spacing

* fix typechecks

* add changeset

* revert irrelevant changes

* typefix

* fix image editor buttons

* fix download link icon

* disable undo if no change events dispatched in model3d and video

* use icons with iconbuttonwrapper

* add iconbuttonwrapper around gallery share btn

* Revert "add iconbuttonwrapper around gallery share btn"

This reverts commit 4605302df4.

* add changeset

* design fixes

* add changeset

* move status tracker progress to  bottom of component

* add changeset

* use iconbutton for like/dislike

* fix lint error

* fix type errors

* type errors

* fix test

* revert undo icon change

* btn spacing

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Added gradio-in-r (#9340)

* Added gradio-in-r

* add changeset

* section

* remove

* tweaks

* delete changeset

* R

* Updated using-gradio-in-other-programming-languages.md

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Enhance Lite E2E tests and fix a networking problem on Lite (#9333)

* Add Lite E2E test to check a matplotlib problem which was fixed in https://github.com/gradio-app/gradio/pull/9312

* Restore js/app/test/image_remote_url.spec.ts, which was deleted in https://github.com/gradio-app/gradio/pull/8716

* Fix tootils import

* Format

* Fix processing_utils.resolve_with_google_dns to use the HTTPX client instead of urllib so it works on Lite

* add changeset

* add changeset

* Move js/app/test/image_remote_url.spec.ts -> js/spa/test/image_remote_url.spec.ts

* Use pyodide.http in resolve_with_google_dns on Lite

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Do not attach `content_disposition_type = "attachment"` headers for files explicitly allowed by developer (#9348)

* changes

* add changeset

* format

* fix type

* type

* add test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix overflowing markdown in Chatbot (#9260)

* fix markdown overflowing table

* add changeset

* revert undo icon

* add changeset

* Revert "revert undo icon"

This reverts commit 855b012a20.

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Small tweak to how thoughts are shown in `gr.Chatbot` (#9359)

* thiknk chat

* add changeset

* lint

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Use `container` param in `gr.Markdown` (#9356)

* * add param
* add story

* add changeset

* Use IconButton for copy btn

* fix test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* run format

* Fixes website build in 5.0-dev (#9382)

* changes

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Small tweaks to improve the DX for the "tuples"/"messages" argument in `gr.Chatbot` (#9358)

* change format

* format

* add changeset

* revert

* revert

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Update babylon.js to `v7` for `gr.Model3D` (#9377)

* update package.json

* add changeset

* add changeset

* update pnpm lock

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix `gr.ImageEditor` toolbar cutoff (#9371)

* fix wrap alignment

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Adds LLM to the Playground (#9233)

* simple system prompt

* faster model and streaming and better system prompt

* changes

* changes

* add changeset

* formatting

* add placeholder wheel

* changes

* save to db finally working

* clean

* fix open in playground button

* better fix for open in playground

* changes

* format

* fix

* try

* remove

* remove make waveform

* fix

* using fallback mode and other changes

* add show_error

* fix lite refresh issue

* fix css

* add demo

* format

* lite using latest wheel

* cleanup

* formatting

* hack fix for b vs betta

* formatting

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Refactor lazy caching (#9361)

* changes

* lazy

* redo lazy

* add changeset

* changes

* helpers

* docstrings'

* lint

* Update guides/04_additional-features/09_environment-variables.md

Co-authored-by: Charles <charles@huggingface.co>

* Update gradio/chat_interface.py

Co-authored-by: Dawood Khan <dawoodkhan82@gmail.com>

* Update gradio/chat_interface.py

Co-authored-by: Dawood Khan <dawoodkhan82@gmail.com>

* tolerant

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Charles <charles@huggingface.co>
Co-authored-by: Dawood Khan <dawoodkhan82@gmail.com>

* Added max lines and overflow scrollbar for `gr.Code` (#9311)

* add max lines for gr.Code

* add changeset

* revert default lines to 5

* fix tests

* lint

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix File Types for MultimodalTextbox (#9393)

* fix file_types

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Prevent HTML and Markdown height changing when status is hidden (#9363)

* fix markdown height changing

* * add min_height param to html
* prevent height from changing based on status

* add changeset

* add changeset

* param desc change

* fix test

* format

* * add max height to html
* share css_units func

* add changeset

* fix backend test

* fe

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Object Detection From Webcam Stream Guide (#9336)

* guides

* Add demo

* guide

* Add info about Powershell client (#9343)

* clients

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Remove lite/theme.css from the Git-managed file tree (#9335)

* Delete js/lite/src/theme.css from the Git managed file tree as it's dynamically generated

* Remove lite-related npm scripts from spa/package.json

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* 9227 chatinterface retry bug (#9316)

* first draft

* add code

* tip

* add changeset

* delete dead code

* Type check notebook

* consolidate like section with guide

* Add comments

* add value

* Lint

* lint

* guide

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Move icons into `IconButtonWrapper` (#9261)

* * update icon buttons
* add image editor specific icon button

* tweak hover

* margin tweak

* add changeset

* improve gr.Video button UI

* radius tweak

* ensure even spacing

* fix typechecks

* add changeset

* revert irrelevant changes

* typefix

* fix image editor buttons

* fix download link icon

* disable undo if no change events dispatched in model3d and video

* use icons with iconbuttonwrapper

* add iconbuttonwrapper around gallery share btn

* Revert "add iconbuttonwrapper around gallery share btn"

This reverts commit 4605302df4.

* add changeset

* design fixes

* add changeset

* move status tracker progress to  bottom of component

* add changeset

* use iconbutton for like/dislike

* fix lint error

* fix type errors

* type errors

* fix test

* revert undo icon change

* btn spacing

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Added gradio-in-r (#9340)

* Added gradio-in-r

* add changeset

* section

* remove

* tweaks

* delete changeset

* R

* Updated using-gradio-in-other-programming-languages.md

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Enhance Lite E2E tests and fix a networking problem on Lite (#9333)

* Add Lite E2E test to check a matplotlib problem which was fixed in https://github.com/gradio-app/gradio/pull/9312

* Restore js/app/test/image_remote_url.spec.ts, which was deleted in https://github.com/gradio-app/gradio/pull/8716

* Fix tootils import

* Format

* Fix processing_utils.resolve_with_google_dns to use the HTTPX client instead of urllib so it works on Lite

* add changeset

* add changeset

* Move js/app/test/image_remote_url.spec.ts -> js/spa/test/image_remote_url.spec.ts

* Use pyodide.http in resolve_with_google_dns on Lite

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Do not attach `content_disposition_type = "attachment"` headers for files explicitly allowed by developer (#9348)

* changes

* add changeset

* format

* fix type

* type

* add test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix overflowing markdown in Chatbot (#9260)

* fix markdown overflowing table

* add changeset

* revert undo icon

* add changeset

* Revert "revert undo icon"

This reverts commit 855b012a20.

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* demo name

* Guide on Streaming Video for Object Detection (#9365)

* Add code

* notebooks

* Suggestions

* Add gif

* Small tweak to how thoughts are shown in `gr.Chatbot` (#9359)

* thiknk chat

* add changeset

* lint

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Use `container` param in `gr.Markdown` (#9356)

* * add param
* add story

* add changeset

* Use IconButton for copy btn

* fix test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* small fixes (#9347)

* Updated Guide: Real Time Speech Recognition (#9349)

* Update real-time-speech-recognition.md

added necessary dependency

* Update run.py

updated code to handle cases with stereo microphone

* Update real-time-speech-recognition.md

improved english

* Update run.py

updated code for streaming

* Update run.py

* chunk space uploads (#9360)

* chunk space uploads

* Update upload_demo_to_space.py

Co-authored-by: Lucain <lucainp@gmail.com>

* address comments + tweak CI

---------

Co-authored-by: Lucain <lucainp@gmail.com>

* add find (#9368)

* New branch (#9369)

* add find

* fix syntax

* New branch (#9370)

* add find

* fix syntax

* add hidden files

* run format

* Testing CI  (#9379)

* remove unnecessary redirects

* add changeset

* fix

* formatting

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fixes website build in 5.0-dev (#9382)

* changes

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Small tweaks to improve the DX for the "tuples"/"messages" argument in `gr.Chatbot` (#9358)

* change format

* format

* add changeset

* revert

* revert

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Update babylon.js to `v7` for `gr.Model3D` (#9377)

* update package.json

* add changeset

* add changeset

* update pnpm lock

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix `gr.ImageEditor` toolbar cutoff (#9371)

* fix wrap alignment

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* add lite upload (#9385)

* fix sha (#9386)

* Fix lite ci (#9387)

* fix sha

* fix name

* fix name

* Add code

* feedback

* link

* add changeset

* code

* check

* Update guides/04_additional-features/02_streaming-outputs.md

* Update guides/07_streaming/02_object-detection-from-webcam.md

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Yuichiro Tachibana (Tsuchiya) <t.yic.yt@gmail.com>
Co-authored-by: Hannah <hannahblair@users.noreply.github.com>
Co-authored-by: Ifeanyi Idiaye <72707830+Ifeanyi55@users.noreply.github.com>
Co-authored-by: Julien Chaumond <julien@huggingface.co>
Co-authored-by: Nikita Krasnytskyi <nikita.kras.kyiv@gmail.com>
Co-authored-by: pngwn <hello@pngwn.io>
Co-authored-by: Lucain <lucainp@gmail.com>
Co-authored-by: Ali Abdalla <ali.si3luwa@gmail.com>

* Fix gradio.js aws path  (#9397)

* fix folder path for beta

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Trigger state change event on iterators (#9299)

* Fix render async

* add changeset

* Fix regression

* tests

* Add code

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* add local fonts and update themes (#9367)

* add local fonts and update themes

* add changeset

* tweak

* - dedent css
- fix if logic

* store theme fonts locally + update themes with `LocalFont`

* lint

* fix font loading

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: freddyaboulton <alfonsoboulton@gmail.com>

* Disable liking user message in chatbot by default but make it configurable (#9323)

* Code

* add changeset

* revert

* test"
"

* typo

* Fix code

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix Cached Examples for Streamed Media (#9373)

* fix problem

* add changeset

* gitignore

* lint

* Add code

* Add code

* Fix extension

* add changeset

* unit test

* typecheck

* typecheck

* lint

* test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fixes annoying height bug in playground (#9402)

* fix styling issue

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Chatbot Examples (#8966)

* examples

* examples

* first pass

* remove comments

* remove comments

* add changeset

* Fix chatinterface e2e test (#9104)

* Refactor test

* comment

* Fix image

* add changeset

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* fix version + pkg name (#9110)

* fix version + pkg name

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* fix dev (#9115)

* fix asset locations

* fix changeset

* Be able to set optimizeDeps options in gradio.config.js (#9091)

* Add code

* add changeset

* build

* Remove unused import

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Better text styling on docs (#9108)

* margin and size

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* setup npm-previews of all packages (#9118)

* add workflow

* fix pkg jsons

* workflow name

* add changeset

* fix

* add changeset

* fix build command

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix chatinterface multimodal bug (#9119)

* Add test

* add changeset

* comments

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chatbot examples

* examples changes

* chatinterface

* chatinterface

* pr fixes

* remove html demo change

* suggestion width

* type fixes

* format

* comment our examples test

* remove cache

* comment example caching test

* bug fix

* bug fix

* format

* type fix

* Proposal: remove `gr.make_waveform` and remove `matplotlib` as a dependency (#9312)

* remove matplotlib

* add changeset

* remove tests, demo

* Fix the Lite worker to set the matplotlib backend engine only when the matplotlib package is installed

* add changeset

* Fix comment

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Yuichiro Tachibana (Tsuchiya) <t.yic.yt@gmail.com>

* Dont move files to cache automatically in chatbot postprocess (#9303)

* Fix

* add changeset

* Add code

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* test fix

* format

* changes

* update guide

* cache examples

* add changeset

* format

* changes

* changes

* changes

* changes

* changes

* changes

* format

* fixes

* test chat interface fixes

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com>
Co-authored-by: pngwn <hello@pngwn.io>
Co-authored-by: Ali Abdalla <ali.si3luwa@gmail.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: Yuichiro Tachibana (Tsuchiya) <t.yic.yt@gmail.com>
Co-authored-by: Ali Abid <aliabid94@gmail.com>

* Ssr part 2 (#9339)

* chore: update versions (beta) (#9263)

* Center icon in button when no text is present (#9405)

* center button when only icon is present

* add changeset

* format

* add story

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* fix SSR apps on spaces (#9412)

* test

* add changeset

* test

* test

* test

* fix?

* fix?

* add changeset

* fix

* fix

* fix

* fix

* fix finally?

* fix

* add changeset

* lints etc

* add changeset

* remove spa mode

* fix env

* typing

* change

* lint

* remove node logs

* remove node logs

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Small fixes to `gr.Dataframe` and chatbot docs (#9376)

* docs

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#9416)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Allow skipping an arbitrary number of output components, and also raise a warning if the number of output components does not match the number of values returned from a function (#9406)

* demo

* add warnings

* add changeset

* add changeset

* add doc section

* format

* fix check

* fix typing issues

* docs

* lint

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* fix css (#9427)

* fix css

* add changeset

* format

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Dawood <dawoodkhan82@gmail.com>

* Fix Python unit tests on `5.0-dev` branch (#9432)

* fix python unit tests

* changes

* changes

* fix

* Lite: HTTPX client improvement (#9413)

* Use the httpx client in resolve_with_google_dns both for normal and Lite

* add changeset

* Set decode_content=False

* Add type hints

* Set decode_content=True and remove the Content-Encoding header so the content is decoded by urllib3 instead of httpx

* Fix

* Add comment

* Restore the original resolve_with_google_dns to make such changes in another PR

* add changeset

* Update comment

* Updated the test requirements

* Fix type hint

* Revert "Updated the test requirements"

This reverts commit 2e43584a87.

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Use or `pathlib.Path` objects to indicate filepaths for `css`, `js`, and `head` parameters (#9448)

* format

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Reduce analytics that are collected (#9447)

* reduce analytics collected

* analytics

* add changeset

* bring back css

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix SSR mode flag with `mount_gradio_app` and revert changes to pytests  (#9446)

* Revert "Fix Python unit tests on `5.0-dev` branch (#9432)"

This reverts commit 278645b649.

* revert changes to pytest

* add changeset

* fix

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Small changes to caching (#9438)

* caching changes

* add changeset

* typo

* typo

* changes

* fix

* fix

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Refactoring playground (#9426)

* Use @gradio/code.BaseCode instead of its default export like https://github.com/gradio-app/gradio/pull/8804

* Delete unused code

* add changeset

* Fix

* Rename a variable to be descriptive

* Mount single <Code> instance instead of creating one for each demo

* Fix the initial value passed to createGradioApp

* Use const instead of let

* Rename variable

* Update

* Fix layout

* Restore the preset requirements

* Delete unused variable

* Add type hint

* Attach the keydown handler directly to the input element instead of the window object

* Add code editor widget

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Chatbot bug fixes (#9453)

* image fixes

* add changeset

* more fixes

* fix

* fix

* css fixes

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Update object detection guide (#9456)

* First draft

* Add code

* update guide

* add changeset

* revert

* edits

* Add code

* notebooks

* fix code

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Start/stop recoding from the backend. Add guide on conversational chatbots (#9419)

* Add code

* stop displatch

* first draft

* edit

* add changeset

* lint

* Docstring

* Make recording

* fix video

* fix guide link

* redirect

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Improve UI on the Playground (#9462)

* ai prompt always there

* fix overflow

* better ui and suggested prompts

* cancel generation and showing erro

* formatting

* add changeset

* fix height issue and button

* changes

* fix

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix. Triggered dataframe change event for header change (#9469)

* Fix. Triggered dataframe change event for header change

* add changeset

* lint

* add changeset

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#9420)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* format

* Fix package.json `exports` of @gradio/preview (#9468)

* Fix package.json exports of @gradio/preview

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Fix plots (#9464)

* fix

* add changeset

* lint

* clean

* ts

* format

* add changeset

* format

* remove test that is wrong

* fixxxxxx

* add changeset

* format

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Pre/post-processing download requests (#9383)

* changes

* add changeset

* changes

* change

* changes

* changes

* changes

* changes

* change

* changes

* changes

* changes

* changes

* changes

* changes

* changes

* Update gradio/processing_utils.py

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* changes

* changes

* changes

* changes

* changes

* changes

* Fix Lite's ASGI receiver to convert memoryview to bytes as the multipart parser called in 98cbcaef82/gradio/route_utils.py (L650) calls bytes.find() and memoryview objects don't have the method

* add changeset

* Fix async_get_with_secure_transport to use the unsecure but Pyodide-compatible transport in the case of Wasm

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: Yuichiro Tachibana (Tsuchiya) <t.yic.yt@gmail.com>

* Add support for 3rd party providers to `gr.load`, and provide a better UX for conversational models (#9470)

* changes

* add changeset

* changes

* changes

* docstring

* chatbot

* changes

* fix test

* format

* add changeset

* update req

* remove conversational

* add changeset

* remove args

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#9476)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Fix `slider-color` var (#9481)

* fix slider-color

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Playground requirements tab (#9460)

* Add a tab navigation to the playground so the user can specify the requirement packages

* Add Transformers.js.py demo and fix the playground to install the requirements immediately after switching the demo

* add changeset

* Format

* add changeset

* Fix preview flex

* Add requirements to the share link and deploy to Spaces buttons

* Add requirements.txt to each demo

* Format

* Update notebooks

* Fix

* Update

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: aliabd <ali.si3luwa@gmail.com>

* Fix prettierignore (#9486)

* Minor fixes to docs and a demo (#9493)

* small things

* docstring

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Check for `file_types` parameter in the backend (#9431)

* file check fix

* format

* add changeset

* tests

* add changeset

* Update gradio/components/file.py

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Update client/python/gradio_client/utils.py

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* fixes

* fixes

* test fix

* test fix

* test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Ensure media queries work for SSR mode (#9428)

* asd

* asd

* fix

* add changeset

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Fix custom component CLI unit tests (#9495)

* fix

* fix audio test

* fix template

* add changeset

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fixes: Chatbot examples for custom chatbot + rename `suggestions` -> `examples` (#9488)

* fix

* add changeset

* notebooks

* fixes

* fix

* type fix

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* UI theme fixes (#9496)

* changes

* add changeset

* changes

* changes

* add changeset

* changes

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Centre components within `Block` when height and width are set (#9504)

* add centering margin

* add changeset

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Improve `gr.Code` (#9450)

* fix check icon on download

* * apply unused min_width param
* improve gutter spacing

* hide `BlockLabel` spacing if `show_label` is false

* format

* tweak spacing, remove `fit-content`

* add changeset

* revert height change

* fix

* allow setting max_lines to None

* add line wrapping

* add wrap lines param

* fix type error

* fix py test

* fix type check

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix node process to run with correct server name (#9506)

* fix node process

* add changeset

* add changeset

* format

* cleanup

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* yaml lint

* Add Bokeh plot demo (#9423)

* Add Bokeh plot demo

* Update notebook

---------

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Expanding AI Playground Prompt for Qwen (#9452)

* expand prompt for qwen

* add changeset

* clean

* add changeset

* heavily modify prompt

* changes

* many changes

* fix weird syntax error

* fix

* ?

* changes

* fix requirements

* formatting

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* docs: update 01_quickstart.md (#9515)

arbitary -> arbitrary

Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Fix change triggers for dropdown and radio (#9519)

* fix change triggers

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#9485)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Fix single select dropdown (#9526)

* Set the default value of Dropdown as undefined instead of [] when multiselect=false

* Refactoring

* add changeset

* Fix tests

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Hide x axis labels (#9497)

* changes

* add changeset

* fix

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Add Jinja2 language to Code component (#9545)

* Add jinja2 codemirror language

* add jinja2

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Disable sagemaker_check() for now (#9546)

* Add is_sagemaker param to Blocks, so sagemaker_check() can be explicitly disabled

* revert

* add changeset

* format

* add changeset

---------

Co-authored-by: Mate Valko <>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#9544)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Update gr.ColorPicker UI (#9570)

* update color picker dialog

* add changeset

* add tinycolor types

* fix disabled param

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix cut off in gr.ImageEditor (#9525)

* remove default height value

* remove canvas w x h

* revert comment

* add changeset

* add changeset

* fix stage-wrap shift

* empty tweak

* add changeset

* tweak

* type fix

* test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Change caching to occur not at the creation of a `gr.Examples()` but when the Blocks is actually launched (#9508)

* changes

* changes

* add changeset

* await

* add changeset

* changes

* changes

* changes

* changes

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Add `css_paths` and `head_paths` parameters (#9524)

* paths

* add changeset

* changes

* fixes

* add new lines

* remove js_paths

* add changeset

* format

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix most flaky Python tests in `5.0-dev` branch (#9550)

* fix flaky tests

* add changeset

* token

* changes

* fixes

* hf token

* format

* test

* format

* root url

* format

* fix

* fix tests

* add changeset

* remove huggingface hub fixed version

* add changeset

* remove print

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Api info fix (#9522)

* api-info-fix

* add changeset

* Add with fallback

* route utils

* update

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Send Streaming data over Websocket if possible. Also support base64 output format for images.  (#9483)

* b64 first draft

* ws

* onMount + demos and guide

* guide

* add changeset

* Add code

* lint

* type check

* Have a fallback

* Add code

* delete unneccessary input

* API info tweaks

* Revert type param type hint

* Add code

* api-info-fix

* add changeset

* Add with fallback

* route utils

* update

* final tweaks

* type check

* fix

* add changeset

* fix

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Allow `info=` to render markdown (#9521)

* allow info to render markdown

* add changeset

* update docstrings

* format

* fixes

* add changeset

* fix

* add changeset

* root

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Equal height columns (#9577)

* changes

* add changeset

* add changeset

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix chatinterface embedding height issues (#9571)

* changes

* add changeset

* changes

* changes

* lint

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* chore: update versions (beta) (#9572)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Update gr.Dataframe UI with action popover (#9575)

* add dialog for actions

* add changeset

* add story

* add changeset

* * remove temp select column
* change open dialog UX in mobile

* fix border

* fix test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Disable the submit button and enter-key submit when the text is empty (#9583)

* Disable the submit button and enter-key submit when the text is empty

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Chat Interface Multimodal Fix & Fallback to `gr.Examples()` (#9584)

* fic

* add changeset

* fallback to original examples

* add changeset

* lint

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Fix `gr.Chatbot` panels layout (#9499)

* fix avatar margins

* separate component logic out and add message component

* fix panel mode and upate chatbot buttons

* add changeset

* fix type check

* fix typecheck

* reduce message padding

* fix empty message

* revert css removal

* test

* test

* Revert "test"

This reverts commit 40c9e396a1.

* Revert "test"

This reverts commit 660a6b06ea.

* move message-wrap styes

* bubble width + markdown tweak

* fix test

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Equal height in row false by default (#9591)

* changes

* add changeset

* changes

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix reload mode (#9576)

* Ddebuig

* Fixing

* fix

* notebook

* add changeset

* SSR MODE

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Chatbot autoscroll (#9582)

* Auto scroll on the Chatbot component

* Scroll down button's design

* Parameterize autoscroll

* add changeset

* Fix test

* Fix

* Fix the <Video> component to dispatch the load event after the metadata is loaded

* add changeset

* Add tick

* Fix

* Fix

* Add loadstart and loadeddata and remove load event forwarder from <Video> because <video> doesn't dispatch the load event

* Fix <Player> as well

* Fix

* Add pending_message as the scroll trigger and remove unnecessary tick

* Refactoring <Image>

* add changeset

* Fix

* Fix

* icon fix

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: Dawood <dawoodkhan82@gmail.com>

* Only move files to the cache that have a meta key (#9589)

* Fix code

* add changeset

* Code

* test

* tests

* add changeset

* lint

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Some more chatbot fixes (#9593)

* some fixes

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix favicon in ssr mode (#9592)

* Fix favicon

* fix

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* SSR e2e + fixes (#9590)

* fix tests in ssr mode

* fix loading race condition

* fix some tests

* add ci

* cleanup

* format

* add changeset

* clean

* test name

* broke it, fix

* fix?

* clean

* lint

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Deep equal check with hash (#9580)

* check_equal_by_hash

* add changeset

* changes

* change

* changes

* hash

---------

Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>

* Adding new themes to Gradio 5.0 (#9437)

* Adding citrus, colorful and headlines themes

* add changeset

* Fix from running format_backend

* Add new themes to theming guide

* Rename headlines theme demo file

* changes

* add changeset

* changes

* changes

* fix name

* revert kitchen sink

* ocean and docs

* changes

* add changeset

* changes

* changes

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: Ali Abid <aliabid94@gmail.com>

* Fix custom component CLI on main/5.0 (#9482)

* Add code

* add changeset

* WIP

* add changeset

* Working SSR

* WIP

* Proper ssr build

* fix paths

* fix

* revert .vscode change

* format

* lint

* uncomment

* fix

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Fix e2e test bug (#9597)

* code

* try this out

* Fix markdown code copy/check button in gr.Chatbot (#9598)

* fix broken copy button

* tweak

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* Update `README.md` with 5.0 info and GIFs (#9564)

* update gif

* format

* changes

* readme

* language

* Tweak gr.Dataframe menu UX (#9601)

* * show menu on click
* only show column options in headers

* improve spacing

* add changeset

* fix type check

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>

* chore: update versions (beta) (#9586)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Ensure undo/try shows for final bot message in gr.Chatbot (#9600)

* fix undo and retry reactivity

* add changeset

* tweak

* fix ts check

* changes

* changes

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Abubakar Abid <abubakar@huggingface.co>
Co-authored-by: Ali Abid <aliabid94@gmail.com>

* chore: update versions (beta) (#9604)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

---------

Co-authored-by: pngwn <hello@pngwn.io>
Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Freddy Boulton <alfonsoboulton@gmail.com>
Co-authored-by: Ali Abdalla <ali.si3luwa@gmail.com>
Co-authored-by: aliabid94 <aabid94@gmail.com>
Co-authored-by: Ali Abid <aliabid94@gmail.com>
Co-authored-by: Yuichiro Tachibana (Tsuchiya) <t.yic.yt@gmail.com>
Co-authored-by: Dawood Khan <dawoodkhan82@gmail.com>
Co-authored-by: Hannah <hannahblair@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Gradio PR Bot <121576822+gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: Tayfun Sen <tayfun.sen@gmail.com>
Co-authored-by: Ifeanyi Idiaye <72707830+Ifeanyi55@users.noreply.github.com>
Co-authored-by: Charles <charles@huggingface.co>
Co-authored-by: Michał Pstrąg <m.pstrag.kontakt@gmail.com>
Co-authored-by: Julien Chaumond <julien@huggingface.co>
Co-authored-by: Nikita Krasnytskyi <nikita.kras.kyiv@gmail.com>
Co-authored-by: Lucain <lucainp@gmail.com>
Co-authored-by: Joodith <67360396+Joodith@users.noreply.github.com>
Co-authored-by: Col0ring <47329987+Col0ring@users.noreply.github.com>
Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
Co-authored-by: Mate Valko <3168272+vmatt@users.noreply.github.com>
Co-authored-by: Allison <allison@huggingface.co>
2024-10-08 22:17:17 -07:00

10 KiB

Setting Up a Demo for Maximum Performance

Tags: CONCURRENCY, LATENCY, PERFORMANCE

Let's say that your Gradio demo goes viral on social media -- you have lots of users trying it out simultaneously, and you want to provide your users with the best possible experience or, in other words, minimize the amount of time that each user has to wait in the queue to see their prediction.

How can you configure your Gradio demo to handle the most traffic? In this Guide, we dive into some of the parameters of Gradio's .queue() method as well as some other related parameters, and discuss how to set these parameters in a way that allows you to serve lots of users simultaneously with minimal latency.

This is an advanced guide, so make sure you know the basics of Gradio already, such as how to create and launch a Gradio Interface. Most of the information in this Guide is relevant whether you are hosting your demo on Hugging Face Spaces or on your own server.

Overview of Gradio's Queueing System

By default, every Gradio demo includes a built-in queuing system that scales to thousands of requests. When a user of your app submits a request (i.e. submits an input to your function), Gradio adds the request to the queue, and requests are processed in order, generally speaking (this is not exactly true, as discussed below). When the user's request has finished processing, the Gradio server returns the result back to the user using server-side events (SSE). The SSE protocol has several advantages over simply using HTTP POST requests:

(1) They do not time out -- most browsers raise a timeout error if they do not get a response to a POST request after a short period of time (e.g. 1 min). This can be a problem if your inference function takes longer than 1 minute to run or if many people are trying out your demo at the same time, resulting in increased latency.

(2) They allow the server to send multiple updates to the frontend. This means, for example, that the server can send a real-time ETA of how long your prediction will take to complete.

To configure the queue, simply call the .queue() method before launching an Interface, TabbedInterface, ChatInterface or any Blocks. Here's an example:

import gradio as gr

app = gr.Interface(lambda x:x, "image", "image")
app.queue()  # <-- Sets up a queue with default parameters
app.launch()

How Requests are Processed from the Queue

When a Gradio server is launched, a pool of threads is used to execute requests from the queue. By default, the maximum size of this thread pool is 40 (which is the default inherited from FastAPI, on which the Gradio server is based). However, this does not mean that 40 requests are always processed in parallel from the queue.

Instead, Gradio uses a single-function-single-worker model by default. This means that each worker thread is only assigned a single function from among all of the functions that could be part of your Gradio app. This ensures that you do not see, for example, out-of-memory errors, due to multiple workers calling a machine learning model at the same time. Suppose you have 3 functions in your Gradio app: A, B, and C. And you see the following sequence of 7 requests come in from users using your app:

1 2 3 4 5 6 7
-------------
A B A A C B A

Initially, 3 workers will get dispatched to handle requests 1, 2, and 5 (corresponding to functions: A, B, C). As soon as any of these workers finish, they will start processing the next function in the queue of the same function type, e.g. the worker that finished processing request 1 will start processing request 3, and so on.

If you want to change this behavior, there are several parameters that can be used to configure the queue and help reduce latency. Let's go through them one-by-one.

The default_concurrency_limit parameter in queue()

The first parameter we will explore is the default_concurrency_limit parameter in queue(). This controls how many workers can execute the same event. By default, this is set to 1, but you can set it to a higher integer: 2, 10, or even None (in the last case, there is no limit besides the total number of available workers).

This is useful, for example, if your Gradio app does not call any resource-intensive functions. If your app only queries external APIs, then you can set the default_concurrency_limit much higher. Increasing this parameter can linearly multiply the capacity of your server to handle requests.

So why not set this parameter much higher all the time? Keep in mind that since requests are processed in parallel, each request will consume memory to store the data and weights for processing. This means that you might get out-of-memory errors if you increase the default_concurrency_limit too high. You may also start to get diminishing returns if the default_concurrency_limit is too high because of costs of switching between different worker threads.

Recommendation: Increase the default_concurrency_limit parameter as high as you can while you continue to see performance gains or until you hit memory limits on your machine. You can read about Hugging Face Spaces machine specs here.

The concurrency_limit parameter in events

You can also set the number of requests that can be processed in parallel for each event individually. These take priority over the default_concurrency_limit parameter described previously.

To do this, set the concurrency_limit parameter of any event listener, e.g. btn.click(..., concurrency_limit=20) or in the Interface or ChatInterface classes: e.g. gr.Interface(..., concurrency_limit=20). By default, this parameter is set to the global default_concurrency_limit.

The max_threads parameter in launch()

If your demo uses non-async functions, e.g. def instead of async def, they will be run in a threadpool. This threadpool has a size of 40 meaning that only 40 threads can be created to run your non-async functions. If you are running into this limit, you can increase the threadpool size with max_threads. The default value is 40.

Tip: You should use async functions whenever possible to increase the number of concurrent requests your app can handle. Quick functions that are not CPU-bound are good candidates to be written as async. This guide is a good primer on the concept.

The max_size parameter in queue()

A more blunt way to reduce the wait times is simply to prevent too many people from joining the queue in the first place. You can set the maximum number of requests that the queue processes using the max_size parameter of queue(). If a request arrives when the queue is already of the maximum size, it will not be allowed to join the queue and instead, the user will receive an error saying that the queue is full and to try again. By default, max_size=None, meaning that there is no limit to the number of users that can join the queue.

Paradoxically, setting a max_size can often improve user experience because it prevents users from being dissuaded by very long queue wait times. Users who are more interested and invested in your demo will keep trying to join the queue, and will be able to get their results faster.

Recommendation: For a better user experience, set a max_size that is reasonable given your expectations of how long users might be willing to wait for a prediction.

The max_batch_size parameter in events

Another way to increase the parallelism of your Gradio demo is to write your function so that it can accept batches of inputs. Most deep learning models can process batches of samples more efficiently than processing individual samples.

If you write your function to process a batch of samples, Gradio will automatically batch incoming requests together and pass them into your function as a batch of samples. You need to set batch to True (by default it is False) and set a max_batch_size (by default it is 4) based on the maximum number of samples your function is able to handle. These two parameters can be passed into gr.Interface() or to an event in Blocks such as .click().

While setting a batch is conceptually similar to having workers process requests in parallel, it is often faster than setting the concurrency_count for deep learning models. The downside is that you might need to adapt your function a little bit to accept batches of samples instead of individual samples.

Here's an example of a function that does not accept a batch of inputs -- it processes a single input at a time:

import time

def trim_words(word, length):
    return word[:int(length)]

Here's the same function rewritten to take in a batch of samples:

import time

def trim_words(words, lengths):
    trimmed_words = []
    for w, l in zip(words, lengths):
        trimmed_words.append(w[:int(l)])
    return [trimmed_words]

The second function can be used with batch=True and an appropriate max_batch_size parameter.

Recommendation: If possible, write your function to accept batches of samples, and then set batch to True and the max_batch_size as high as possible based on your machine's memory limits.

Upgrading your Hardware (GPUs, TPUs, etc.)

If you have done everything above, and your demo is still not fast enough, you can upgrade the hardware that your model is running on. Changing the model from running on CPUs to running on GPUs will usually provide a 10x-50x increase in inference time for deep learning models.

It is particularly straightforward to upgrade your Hardware on Hugging Face Spaces. Simply click on the "Settings" tab in your Space and choose the Space Hardware you'd like.

While you might need to adapt portions of your machine learning inference code to run on a GPU (here's a handy guide if you are using PyTorch), Gradio is completely agnostic to the choice of hardware and will work completely fine if you use it with CPUs, GPUs, TPUs, or any other hardware!

Note: your GPU memory is different than your CPU memory, so if you upgrade your hardware, you might need to adjust the value of the default_concurrency_limit parameter described above.

Conclusion

Congratulations! You know how to set up a Gradio demo for maximum performance. Good luck on your next viral demo!