File size: 6,067 Bytes
055fea6
 
 
 
 
 
 
 
9fc2dc9
0e407c8
d4afeb7
 
0556bee
 
 
6390942
db4196a
0556bee
cbbce32
 
0556bee
 
897989b
 
0556bee
 
be70e70
b62fb09
c0bb2d2
20b1101
9dfde9a
d4afeb7
 
 
 
 
 
 
 
 
9aa91fc
fdec844
20b1101
 
d4afeb7
30a0f50
d4afeb7
 
0613780
d4afeb7
 
3b19079
d4afeb7
fdec844
 
80ce8ab
0613780
fdec844
30a0f50
d4afeb7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b7ad1d4
fdec844
 
a56d2da
 
 
 
 
 
 
 
 
 
f98389c
 
 
a56d2da
f98389c
a56d2da
f98389c
 
 
 
 
0780add
f98389c
ef2f6ae
 
 
 
 
4bd4641
ef2f6ae
60831e6
ef2f6ae
 
613a4df
b62fb09
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
---
title: README
emoji: 🌍
colorFrom: indigo
colorTo: indigo
sdk: static
pinned: false
---
<div style="height: 15px;"></div>

# ZeroGPU Spaces

<div class="not-prose bg-gradient-to-r from-gray-50-to-white text-gray-900 border" style="border-radius: 8px; padding: 0.5rem 1rem;">
  <span style="font-weight: 600;">ZeroGPU is currently in beta:</span> 
  <ul class="list-disc list-inside pl-8">
    <li>It's available for everyone to use: <a class="underline" target="_blank" href="https://huggingface.co/spaces/enzostvs/zero-gpu-spaces">Browse dedicated Spaces list</a>.</li>
    <li><a target="_blank" href="https://huggingface.co/subscribe/pro" class="underline">PRO</a> users or <a target="_blank" class="underline" href="https://huggingface.co/enterprise" style="color: inherit;">Enterprise</a> organizations can <a href="https://huggingface.co/new-space?sdk=gradio" target="_blank" class="underline">host their own ZeroGPU Spaces<a/> under their namespaces. </li>
  </ul>
</div>

<div class="not-prose bg-gradient-to-r from-gray-50-to-white text-gray-900 border" style="border-radius: 8px; padding: 0.5rem 1rem; margin-top: 10px;">
  <span style="font-weight: 600;">Please share your feedback about ZeroGPU</span> in the <a class="underline" target="_blank" href="https://huggingface.co/spaces/zero-gpu-explorers/README/discussions" style="color: inherit;">Community tab</a>.
</div>

<div class="not-prose bg-gradient-to-r from-gray-50-to-white text-gray-900 border" style="border-radius: 8px; padding: 0.5rem 1rem; margin-top: 10px;">
  <span style="font-weight: 600;">ZeroGPU works great with Dev Mode.</span> Learn more about <a target="_blank" href="https://huggingface.co/spaces/dev-mode-explorers/README" class="underline">Dev Mode</a>.
</div>

<img src="https://cdn-uploads.huggingface.co/production/uploads/5f17f0a0925b9863e28ad517/cAlvAOu9QC547zrmRVpS5.gif" style="width: 100%; max-width:950px"/>


*ZeroGPU* is a new kind of hardware for Spaces.

It has two goals :
- Provide **free GPU access** for Spaces
- Allow Spaces to run on **multiple GPUs**

This is achieved by making Spaces efficiently hold and release GPUs as needed
(as opposed to a classical GPU Space that holds exactly one GPU at any point in time)

ZeroGPU uses _Nvidia A100_ GPU devices under the hood (40GB of vRAM are available for each workloads)

<img src="https://cdn-uploads.huggingface.co/production/uploads/5f17f0a0925b9863e28ad517/naVZI-v41zNxmGlhEhGDJ.gif" style="width: 100%; max-width:550px"/>


## Compatibility

*ZeroGPU* Spaces should mostly be compatible with any PyTorch-based GPU Space.<br>
Compatibility with high level HF libraries like `transformers` or `diffusers` is slightly more guaranteed<br>
That said, ZeroGPU Spaces are not as broadly compatible as classical GPU Spaces and you might still encounter unexpected bugs

Also, for now, ZeroGPU Spaces only works with the **Gradio SDK**

Supported versions:
- Gradio: 4+
- PyTorch: All versions from `2.0.0` to `2.2.0` and `2.4.x` (2.3.x is not supported due to a PyToch [bug](https://github.com/pytorch/pytorch/issues/122085))
- Python: `3.10.13`

## Usage

In order to make your Space work with ZeroGPU you need to **decorate** the Python functions that actually require a GPU with `@spaces.GPU`<br>
During the time when a decorated function is invoked, the Space will be attributed a GPU, and it will release it upon completion of the function.<br>
Here is a practical example :

```diff
+import spaces
from diffusers import DiffusionPipeline

pipe = DiffusionPipeline.from_pretrained(...)
pipe.to('cuda')

[email protected]
def generate(prompt):
    return pipe(prompt).images

gr.Interface(
    fn=generate,
    inputs=gr.Text(),
    outputs=gr.Gallery(),
).launch()
```

1. We first `import spaces` (importing it first might prevent some issues but is not mandatory)
2. Then we decorate the `generate` function by adding a `@spaces.GPU` line before its definition

Note that `@spaces.GPU` is effect-free and can be safely used on non-ZeroGPU environments

## Duration

If you expect your GPU function to take more than __60s__ then you need to specify a `duration` param in the decorator like:

```python
@spaces.GPU(duration=120)
def generate(prompt):
   return pipe(prompt).images
```

It will set the maximum duration of your function call to 120s.  
You can also specify a duration if you know that your function will take far less than the 60s default.  
The lower the duration, the higher priority your Space visitors will have in the queue

## Getting Started

To **explore and use existing ZeroGPU Spaces**, browse the following list: https://huggingface.co/spaces/enzostvs/zero-gpu-spaces

To **create and host your own ZeroGPU Spaces**:

  - For personal accounts:
    - <a href="https://huggingface.co/settings/billing/subscription" target="_blank">Subscribe to PRO</a>. Once subscribed, ZeroGPU will appear in the hardware list on <a href="https://huggingface.co/new-space" target="_blank">New Space page</a> when you select the Gradio SDK.
  - For organizations:
    - <a href="https://huggingface.co/enterprise" target="_blank">Subscribe to the Enterprise Hub</a>. This will enable you to host and collaborate on ZeroGPU Spaces with all your organization members.


## Limitations

**Personal accounts** (PRO subscribers) can host up to 10 ZeroGPU Spaces.

**Organization accounts** subscribed to the Enterprise Hub can host up to 50 ZeroGPU Spaces.


<div style="height: 35px;"></div>
<style>
  :root {
    --bg-color-light: rgba(255, 255, 255, 0.3);
    --bg-color-dark: rgba(0, 0, 0, 0.3);
    --text-color-light: rgb(0, 0, 0);
    --text-color-dark: rgb(255, 255, 255);
  }

  .theme-light {
    --bg-color: var(--bg-color-light);
    --text-color: var(--text-color-light);
  }

  .theme-dark {
    --bg-color: var(--bg-color-dark);
    --text-color: var(--text-color-dark);
  }

  .notice {
    background-color: var(--bg-color);
    color: var(--text-color);
    border-radius: 8px;
    padding: 0.5rem 1rem;
    margin-top: 10px;
  }

  .notice span {
    font-weight: 600;
  }
</style>