Commit
β’
4ae5bf7
0
Parent(s):
Duplicate from LabelStudio/LabelStudio
Browse filesCo-authored-by: Chris Hoge <hogepodge@users.noreply.huggingface.co>
- .gitattributes +34 -0
- Dockerfile +127 -0
- README.md +168 -0
.gitattributes
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
28 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
29 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
30 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
31 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
32 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
33 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
34 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
Dockerfile
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FROM heartexlabs/label-studio:hf-latest
|
2 |
+
|
3 |
+
################################################################################
|
4 |
+
#
|
5 |
+
# How to Disable Public Account Creation
|
6 |
+
# --------------------------------------
|
7 |
+
# By default this space allows for the unrestricted creation of new accounts
|
8 |
+
# will full access to all projects and data. This is great for trying out
|
9 |
+
# Label Studio and collaborating on projects, but you may want to restrict
|
10 |
+
# access to your space to only authorized users. Uncomment the following line
|
11 |
+
# to disable public account creation for this space.
|
12 |
+
#
|
13 |
+
# ENV LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINK=true
|
14 |
+
#
|
15 |
+
# Set secrets in your space to create an inital user, and log in with your
|
16 |
+
# provided username and password. Do not set these in your Dockerfile, as they
|
17 |
+
# globally visible on a public space.
|
18 |
+
#
|
19 |
+
# LABEL_STUDIO_USERNAME
|
20 |
+
# LABEL_STUDIO_PASSWORD
|
21 |
+
#
|
22 |
+
# You will need to provide new users with an invitation link to join the space.
|
23 |
+
#
|
24 |
+
################################################################################
|
25 |
+
|
26 |
+
################################################################################
|
27 |
+
#
|
28 |
+
# How to Enable Persistent Storage for Label Studio in Hugging Face Spaces
|
29 |
+
# ------------------------------------------------------------------------
|
30 |
+
#
|
31 |
+
# By default this space stores all project configuration and data annotations
|
32 |
+
# in local storage with sqlite. If the space is reset, all configuration and
|
33 |
+
# annotation data in the space will be lost. You can enable configuration
|
34 |
+
# persistence through one of two methods:
|
35 |
+
#
|
36 |
+
# 1) Enabling Hugging Face Persistent Storage for saving project and annotation
|
37 |
+
# settings, as well as local task storage.
|
38 |
+
# 2) Connecting an external Postgres database for saving project and annotation
|
39 |
+
# settings, and cloud by connecting cloud storage for tasks.
|
40 |
+
#
|
41 |
+
################################################################################
|
42 |
+
|
43 |
+
################################################################################
|
44 |
+
#
|
45 |
+
# How to Enable Hugging Face Persistent Storage for Label Studio
|
46 |
+
# --------------------------------------------------------------
|
47 |
+
#
|
48 |
+
# In the Hugging Face Label Studio Space settings, select the appropriate
|
49 |
+
# Persistent Storage tier. Note that Persistent Storage is a paid add-on.
|
50 |
+
# By default, persistent storage is mounted to /data. In your Space settings,
|
51 |
+
# set the following variables:
|
52 |
+
#
|
53 |
+
# LABEL_STUDIO_BASE_DATA_DIR=/data
|
54 |
+
# ENV STORAGE_PERSISTENCE=1
|
55 |
+
#
|
56 |
+
# Your space will restart. NOTE: if you have existing settings and data,
|
57 |
+
# they will be lost in this first restart. Data and setting will only be
|
58 |
+
# preserved on subsequent restarts of the space.
|
59 |
+
#
|
60 |
+
################################################################################
|
61 |
+
|
62 |
+
################################################################################
|
63 |
+
#
|
64 |
+
# How to Enable Configuration Persistence with Postgres
|
65 |
+
# -----------------------------------------------------
|
66 |
+
#
|
67 |
+
# Set the following secret variables to match your own hosted instance of
|
68 |
+
# Postgres. We strongly recommend setting these as secrets to prevent leaking
|
69 |
+
# information about your database service to the public in your spaces
|
70 |
+
# definition.
|
71 |
+
#
|
72 |
+
# ENV DJANGO_DB=default
|
73 |
+
# ENV POSTGRE_NAME=<postgres_name>
|
74 |
+
# ENV POSTGRE_PORT=<db_port>
|
75 |
+
# ENV POSTGRE_USER=<postgres_user>
|
76 |
+
# ENV POSTGRE_PASSWORD=<password>
|
77 |
+
# ENV POSTGRE_PORT=<db_port>
|
78 |
+
# ENV POSTGRE_HOST=<db_host>
|
79 |
+
#
|
80 |
+
# Uncomment the following line or set the following Space variable to remove
|
81 |
+
# the warning about ephemeral storage
|
82 |
+
#
|
83 |
+
# ENV STORAGE_PERSISTENCE=1
|
84 |
+
#
|
85 |
+
# Note that you will need to connect cloud storage to host data items that you
|
86 |
+
# want to annotate, as local storage will not be preserved across a space reset.
|
87 |
+
#
|
88 |
+
#
|
89 |
+
# How to Enable Cloud Storage
|
90 |
+
# ---------------------------
|
91 |
+
# By default the only data storage enabled for this space is local. In the case
|
92 |
+
# of a space reset, all data will be lost. To enable permanent storage, you
|
93 |
+
# must enable a cloud storage connector. We also strongly recommend enabling
|
94 |
+
# configuration persistence to preserve project data, annotations, and user
|
95 |
+
# settings. Choose the appropriate cloud connector and configure the secrets
|
96 |
+
# for it.
|
97 |
+
#
|
98 |
+
# Amazon S3
|
99 |
+
# =========
|
100 |
+
# STORAGE_TYPE=s3
|
101 |
+
# STORAGE_AWS_ACCESS_KEY_ID="<YOUR_ACCESS_KEY_ID>"
|
102 |
+
# STORAGE_AWS_SECRET_ACCESS_KEY="<YOUR_SECRET_ACCESS_KEY>"
|
103 |
+
# STORAGE_AWS_BUCKET_NAME="<YOUR_BUCKET_NAME>"
|
104 |
+
# STORAGE_AWS_REGION_NAME="<YOUR_BUCKET_REGION>"
|
105 |
+
# STORAGE_AWS_FOLDER=""
|
106 |
+
#
|
107 |
+
# Google Cloud Storage
|
108 |
+
# ====================
|
109 |
+
#
|
110 |
+
# STORAGE_TYPE=gcs
|
111 |
+
# STORAGE_GCS_BUCKET_NAME="<YOUR_BUCKET_NAME>"
|
112 |
+
# STORAGE_GCS_PROJECT_ID="<YOUR_PROJECT_ID>"
|
113 |
+
# STORAGE_GCS_FOLDER=""
|
114 |
+
# GOOGLE_APPLICATION_CREDENTIALS="/opt/heartex/secrets/key.json"
|
115 |
+
#
|
116 |
+
# Azure Blob Storage
|
117 |
+
# ==================
|
118 |
+
#
|
119 |
+
# STORAGE_TYPE=azure
|
120 |
+
# STORAGE_AZURE_ACCOUNT_NAME="<YOUR_STORAGE_ACCOUNT>"
|
121 |
+
# STORAGE_AZURE_ACCOUNT_KEY="<YOUR_STORAGE_KEY>"
|
122 |
+
# STORAGE_AZURE_CONTAINER_NAME="<YOUR_CONTAINER_NAME>"
|
123 |
+
# STORAGE_AZURE_FOLDER=""
|
124 |
+
#
|
125 |
+
################################################################################
|
126 |
+
|
127 |
+
CMD exec label-studio --host=$SPACE_HOST
|
README.md
ADDED
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
title: LabelStudio
|
3 |
+
emoji: π§
|
4 |
+
colorFrom: yellow
|
5 |
+
colorTo: purple
|
6 |
+
sdk: docker
|
7 |
+
tags:
|
8 |
+
- label-studio
|
9 |
+
fullwidth: true
|
10 |
+
license: apache-2.0
|
11 |
+
app_port: 8080
|
12 |
+
---
|
13 |
+
<img src="https://user-images.githubusercontent.com/12534576/192582340-4c9e4401-1fe6-4dbb-95bb-fdbba5493f61.png"/>
|
14 |
+
|
15 |
+
[Website](https://hubs.ly/Q01CNgsd0) β’ [Docs](https://hubs.ly/Q01CN9Yq0) β’ [12K+ GitHub βοΈ!](https://hubs.ly/Q01CNbPQ0) β’ [Slack Community](https://hubs.ly/Q01CNb9H0)
|
16 |
+
|
17 |
+
## What is Label Studio?
|
18 |
+
|
19 |
+
Label Studio is an open source data labeling platform. It lets you label audio,
|
20 |
+
text, images, videos, and time series data with a simple, straightforward, and
|
21 |
+
highly-configurable user interface. Label Studio can prepare new data or
|
22 |
+
improve existing training data to get more accurate ML models.
|
23 |
+
|
24 |
+
|
25 |
+
## Label Studio in Hugging Face Spaces
|
26 |
+
|
27 |
+
The Label Studio community is thrilled to offer Label Studio as a Hugging Face
|
28 |
+
Spaces application. You can try the data-annotation interface, connect popular
|
29 |
+
machine learning models, and share the application with collaborators. You can
|
30 |
+
start immediately by creating an account or replicate the space and work in
|
31 |
+
your own environment.
|
32 |
+
|
33 |
+
## Creating a Use Account and Logging In
|
34 |
+
|
35 |
+
Begin by creating a new account in the Label Studio space, then log in with your
|
36 |
+
credentials.
|
37 |
+
|
38 |
+
**By default, these spaces permit anyone to create a new login
|
39 |
+
account, allowing them to view and modify project configuration, data sets, and
|
40 |
+
annotations. Without any modifications, treat this space like a demo environment.**
|
41 |
+
|
42 |
+
## Creating a Labeling Project
|
43 |
+
|
44 |
+
After logging in, Label Studio will present you with a project view. Here you
|
45 |
+
can create a new project with prompts to upload data and set up a custom
|
46 |
+
configuration interface.
|
47 |
+
|
48 |
+
**Note that in the default configuration, storage is local and temporary. Any
|
49 |
+
projects, annotations, and configurations will be lost if the space is restarted.**
|
50 |
+
|
51 |
+
## Next Steps and Additional Resources
|
52 |
+
|
53 |
+
To help with getting started, the Label Studio community curated a list of
|
54 |
+
resources including tutorials and documentation.
|
55 |
+
|
56 |
+
- π [Zero to One with Label Studio Tutorial](https://labelstud.io/blog/introduction-to-label-studio-in-hugging-face-spaces/)
|
57 |
+
- π [Try Label Studio Enterprise](https://hubs.ly/Q01CMLll0)
|
58 |
+
- π€ [Tutorial: Using Label Studio with Hugging Face Datasets Hub](https://danielvanstrien.xyz/huggingface/huggingface-datasets/annotation/full%20stack%20deep%20learning%20notes/2022/09/07/label-studio-annotations-hub.html)
|
59 |
+
- π‘ [Label Studio Docs](https://hubs.ly/Q01CN9Yq0)
|
60 |
+
|
61 |
+
|
62 |
+
![Gif of Label Studio annotating different types of data](https://raw.githubusercontent.com/heartexlabs/label-studio/master/images/annotation_examples.gif)
|
63 |
+
|
64 |
+
### Making your Label Studio Hugging Face Space production-ready
|
65 |
+
|
66 |
+
By default this space allows for the unrestricted creation of new accounts
|
67 |
+
will full access to all projects and data. This is great for trying out
|
68 |
+
Label Studio and collaborating on projects, but you may want to restrict
|
69 |
+
access to your space to only authorized users. Add the following environment
|
70 |
+
variable to your spaces Dockerfile to disable public account creation for
|
71 |
+
this space.
|
72 |
+
|
73 |
+
ENV LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINK=true
|
74 |
+
|
75 |
+
Set secrets in your space to create an inital user, and log in with your
|
76 |
+
provided username and password. Do not set these in your Dockerfile, as they
|
77 |
+
globally visible on a public space.
|
78 |
+
|
79 |
+
LABEL_STUDIO_USERNAME
|
80 |
+
LABEL_STUDIO_PASSWORD
|
81 |
+
|
82 |
+
You will need to provide new users with an invitation link to join the space,
|
83 |
+
which can be found in the Organizations interface of Label Studio.
|
84 |
+
|
85 |
+
By default this space stores all project configuration and data annotations
|
86 |
+
in local storage with Sqlite. If the space is reset, all configuration and
|
87 |
+
annotation data in the space will be lost. You can enable configuration
|
88 |
+
persistence in one of two ways:
|
89 |
+
|
90 |
+
1. Enabling Persistent Storage in your Space settings and configuring Label
|
91 |
+
Studio to write its database and task storage there.
|
92 |
+
|
93 |
+
2. Connecting an external Postgres database and cloud storage to your space,
|
94 |
+
guaranteeing that all project and annotation settings are preserved.
|
95 |
+
|
96 |
+
### Enabling Hugging Face Persistent Storage
|
97 |
+
|
98 |
+
In the Hugging Face Label Studio Space settings, select the appropriate
|
99 |
+
Persistent Storage tier. Note that Persistent Storage is a paid add-on.
|
100 |
+
By default, persistent storage is mounted to /data. In your Space settings,
|
101 |
+
set the following variables:
|
102 |
+
|
103 |
+
LABEL_STUDIO_BASE_DATA_DIR=/data
|
104 |
+
ENV STORAGE_PERSISTENCE=1
|
105 |
+
|
106 |
+
Your space will restart. NOTE: if you have existing settings and data,
|
107 |
+
they will be lost in this first restart. Data and setting will only be
|
108 |
+
preserved on subsequent restarts of the space.
|
109 |
+
|
110 |
+
### Enabling Postgres Database and Cloud Storage
|
111 |
+
|
112 |
+
Set the following secret variables to match your own hosted instance of
|
113 |
+
Postgres. We strongly recommend setting these as secrets to prevent leaking
|
114 |
+
information about your database service to the public in your spaces
|
115 |
+
definition.
|
116 |
+
|
117 |
+
DJANGO_DB=default
|
118 |
+
POSTGRE_NAME=<postgres_name>
|
119 |
+
POSTGRE_PORT=<db_port>
|
120 |
+
POSTGRE_USER=<postgres_user>
|
121 |
+
POSTGRE_PASSWORD=<password>
|
122 |
+
POSTGRE_PORT=<db_port>
|
123 |
+
POSTGRE_HOST=<db_host>
|
124 |
+
|
125 |
+
Add the following environment variable to remove the warning about ephemeral
|
126 |
+
storage.
|
127 |
+
|
128 |
+
ENV STORAGE_PERSISTENCE=1
|
129 |
+
|
130 |
+
Note that you will need to connect cloud storage to host data items that you
|
131 |
+
want to annotate, as local storage will not be preserved across a space reset.
|
132 |
+
|
133 |
+
By default the only data storage enabled for this space is local. In the case
|
134 |
+
of a space reset, all data will be lost. To enable permanent storage, you
|
135 |
+
must enable a cloud storage connector. We also strongly recommend enabling
|
136 |
+
configuration persistence to preserve project data, annotations, and user
|
137 |
+
settings. Choose the appropriate cloud connector and configure the secrets
|
138 |
+
for it.
|
139 |
+
|
140 |
+
#### Amazon S3
|
141 |
+
STORAGE_TYPE=s3
|
142 |
+
STORAGE_AWS_ACCESS_KEY_ID="<YOUR_ACCESS_KEY_ID>"
|
143 |
+
STORAGE_AWS_SECRET_ACCESS_KEY="<YOUR_SECRET_ACCESS_KEY>"
|
144 |
+
STORAGE_AWS_BUCKET_NAME="<YOUR_BUCKET_NAME>"
|
145 |
+
STORAGE_AWS_REGION_NAME="<YOUR_BUCKET_REGION>"
|
146 |
+
STORAGE_AWS_FOLDER=""
|
147 |
+
|
148 |
+
#### Google Cloud Storage
|
149 |
+
|
150 |
+
STORAGE_TYPE=gcs
|
151 |
+
STORAGE_GCS_BUCKET_NAME="<YOUR_BUCKET_NAME>"
|
152 |
+
STORAGE_GCS_PROJECT_ID="<YOUR_PROJECT_ID>"
|
153 |
+
STORAGE_GCS_FOLDER=""
|
154 |
+
GOOGLE_APPLICATION_CREDENTIALS="/opt/heartex/secrets/key.json"
|
155 |
+
|
156 |
+
Azure Blob Storage
|
157 |
+
==================
|
158 |
+
|
159 |
+
STORAGE_TYPE=azure
|
160 |
+
STORAGE_AZURE_ACCOUNT_NAME="<YOUR_STORAGE_ACCOUNT>"
|
161 |
+
STORAGE_AZURE_ACCOUNT_KEY="<YOUR_STORAGE_KEY>"
|
162 |
+
STORAGE_AZURE_CONTAINER_NAME="<YOUR_CONTAINER_NAME>"
|
163 |
+
STORAGE_AZURE_FOLDER=""
|
164 |
+
|
165 |
+
|
166 |
+
## Questions? Concerns? Want to get involved?
|
167 |
+
|
168 |
+
Email the community team at [community@labelstud.io](mailto:community@labelstud.io)
|