Hub documentation

๐ŸŸง Spaces์˜ Label Studio

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

๐ŸŸง Spaces์˜ Label Studio

Label Studio๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๋ผ๋ฒจ๋ง, ์ฃผ์„ ๋ฐ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ฐ์ดํ„ฐ ๋ผ๋ฒจ๋ง ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Label Studio์—๋Š” ์ƒˆ๋กœ์šด ๋ชจ๋ธ ํ•™์Šต, ๋Šฅ๋™ ํ•™์Šต, ์ง€๋„ ํ•™์Šต ๋ฐ ๊ธฐํƒ€ ๋‹ค์–‘ํ•œ ํ•™์Šต ๊ธฐ๋ฒ•์„ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๋จธ์‹ ๋Ÿฌ๋‹ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” Hugging Face Hub ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ ๋ผ๋ฒจ๋ง ๋ฐ ์ฃผ์„์„ ์œ„ํ•ด Label Studio๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ๋ฐ๋ชจ ๋ฐ ํ‰๊ฐ€ ๋ชฉ์ ์œผ๋กœ Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Hub์— ์™„์ „ํžˆ ํ˜ธ์ŠคํŒ…๋˜๋Š” ์ž์ฒด ์™„๊ฒฐํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ Label Studio์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ Spaces์— ํ˜ธ์ŠคํŒ…๋˜๋Š” ์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ํ”„๋กœ๋•์…˜๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

โšก๏ธ Spaces์— Label Studio ๋ฐฐํฌ

Label Studio๋ฅผ Spaces์— ๋ช‡ ๋ฒˆ์˜ ํด๋ฆญ๋งŒ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Spaces๋Š” ๋‹ค์Œ์„ ์ •์˜ํ•˜๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค:

  • Owner: ๊ฐœ์ธ ๊ณ„์ • ๋˜๋Š” ์†Œ์†๋œ ์กฐ์ง

  • Space ์ด๋ฆ„: Space๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋Š” ๊ณ„์ • ๋‚ด์—์„œ ํ•ด๋‹น Space์— ๋ถ€์—ฌํ•  ์ด๋ฆ„

  • Space๋ฅผ ๋ณธ์ธ ๋˜๋Š” ์กฐ์ง์—์„œ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๋ฉด Visibility: private์„, Label Studio API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๋ฉด public์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค(๊ถŒ์žฅ).

๐Ÿš€ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์‚ฌ์šฉ

๊ธฐ๋ณธ์ ์œผ๋กœ Label Studio๋Š” Spaces์— ์„ค์น˜๋˜๋ฉฐ, ์ด ๊ตฌ์„ฑ์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ, ๊ณ„์ • ์ž๊ฒฉ ์ฆ๋ช…, ํ”„๋กœ์ ํŠธ ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ผ๋ฒจ๋ง ์ž‘์—… ๋ฐ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ๋„ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ๋ณด๊ด€๋ฉ๋‹ˆ๋‹ค.

Hugging Face Spaces์˜ ์Šคํ† ๋ฆฌ์ง€๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ผ์‹œ์ ์ž…๋‹ˆ๋‹ค. ์žฌ์‹œ์ž‘ ํ›„์—๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๋ ค๋ฉด Storage Bucket์„ ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ์ง€์†์„ฑ ์„น์…˜์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Label Studio๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ‘œ์ค€ ๋กœ๊ทธ์ธ ํ™”๋ฉด์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ  ์ƒˆ ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ ๋กœ๊ทธ์ธํ•˜์—ฌ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ํ›„ ์ฃผ๊ธฐ์ ์œผ๋กœ Label Studio๊ฐ€ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์ผ์‹œ์ (ephemeral)์ด๋ฉฐ Space๊ฐ€ ์žฌ์‹œ์ž‘๋˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ฐ์ดํ„ฐ ๋ผ๋ฒจ๋ง์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋ผ๋Š” Label Studio์˜ ์นœ์ ˆํ•œ ๋งˆ์Šค์ฝ”ํŠธ์ธ Heidi์˜ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋ฏธ๋ฆฌ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•˜๋ ค๋ฉด, ๊ฐ์ • ๋ถ„์„์„ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•˜๋Š” Label Studio โ€œZero to Oneโ€ ํŠœํ† ๋ฆฌ์–ผ์„ ํ™•์ธํ•ด ๋ณด์„ธ์š”.

๐Ÿ› ๏ธ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•œ Label Studio ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ

Space๋ฅผ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ค€๋น„ํ•˜๋ ค๋ฉด ์„ธ ๊ฐ€์ง€ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:

  • ์ƒˆ ๊ณ„์ • ์ƒ์„ฑ์„ ์ œํ•œ ์—†์ด ํ—ˆ์šฉํ•˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • Storage Bucket ๋˜๋Š” ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ์ง€์†์„ฑ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ์„ ํƒ์ ์œผ๋กœ ๋ผ๋ฒจ๋ง ์ž‘์—…์— ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ๊ณ„์ • ๋ฌด์ œํ•œ ์ƒ์„ฑ ๋น„ํ™œ์„ฑํ™”

Label Studio์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ URL์„ ๊ฐ€์ง„ ๋ˆ„๊ตฌ๋‚˜ ์ƒˆ ๊ณ„์ •์„ ์ž์œ ๋กญ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. Space์˜ Settings์— ๋‹ค์Œ ๊ตฌ์„ฑ ์‹œํฌ๋ฆฟ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํšŒ์›๊ฐ€์ž…์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINK: ์ด ๊ฐ’์„ true(์œผ)๋กœ ์„ค์ •ํ•˜๋ฉด ์ œํ•œ ์—†๋Š” ๊ณ„์ • ์ƒ์„ฑ์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • LABEL_STUDIO_USERNAME: Label Studio Space์˜ ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž๋กœ ์‚ฌ์šฉํ•  ๊ณ„์ •์˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์œ ํšจํ•œ ์ด๋ฉ”์ผ ์ฃผ์†Œ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • LABEL_STUDIO_PASSWORD: ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž ๊ณ„์ •์— ์—ฐ๊ฒฐ๋  ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.

์ด ์„ค์ •์„ ์ ์šฉํ•˜๋ ค๋ฉด Space๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์„ธ์š”. ๋กœ๊ทธ์ธ ํ™”๋ฉด์—์„œ ์ƒˆ ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์ƒˆ ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด Label Studio ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Organization ์„ค์ •์—์„œ ์ƒˆ ์‚ฌ์šฉ์ž๋ฅผ ์ดˆ๋Œ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

HF Storage Buckets๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜์†์„ฑ ํ™œ์„ฑํ™”

๊ธฐ๋ณธ์ ์œผ๋กœ ์ด Space๋Š” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ ์ฃผ์„์„ SQLite๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. Space๊ฐ€ ์žฌ์„ค์ •๋˜๋ฉด Space ๋‚ด์˜ ๋ชจ๋“  ๊ตฌ์„ฑ ๋ฐ ์ฃผ์„ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋ฉ๋‹ˆ๋‹ค.

์ง€์†์„ฑ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ Storage Bucket์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์˜๊ตฌ ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€๊ฐ€ Space์— ์ง์ ‘ ๋งˆ์šดํŠธ๋ฉ๋‹ˆ๋‹ค. Label Studio๋Š” ๋งˆ์šดํŠธ๋œ ๋ฒ„ํ‚ท์— SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋ฏธ๋””์–ด ์—…๋กœ๋“œ๋ฅผ ๊ธฐ๋กํ•˜๋ฏ€๋กœ, ํ”„๋กœ์ ํŠธ์™€ ์ฃผ์„์ด ์žฌ์‹œ์ž‘ ํ›„์—๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

  1. ๋ฒ„ํ‚ท ์ƒ์„ฑ:

    hf buckets create <your-namespace>/label-studio-data
  2. Space Settings โ†’ Storage Buckets์—์„œ ์—ฐ๊ฒฐํ•˜๊ณ , ๋งˆ์šดํŠธ ๊ฒฝ๋กœ๋ฅผ /data๋กœ ์„ค์ •ํ•˜์„ธ์š”.

  3. ๋‘ ๊ฐœ์˜ Space ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค:

    LABEL_STUDIO_BASE_DATA_DIR=/data
    STORAGE_PERSISTENCE=1
  4. Space๋ฅผ Factory rebuildํ•ฉ๋‹ˆ๋‹ค.

์žฌ์‹œ์ž‘ ํ›„์—๋„ ์‚ฌ์šฉ์ž ์„ธ์…˜์ด ์œ ์ง€๋˜๋„๋ก SECRET_KEY Space Secret์„ ์„ค์ •ํ•˜์„ธ์š”. ์ด ๊ฐ’์„ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด Label Studio๋Š” ๋ถ€ํŒ…ํ•  ๋•Œ๋งˆ๋‹ค ๋ฌด์ž‘์œ„ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์žฌ์‹œ์ž‘ ์‹œ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒ๋ฉ๋‹ˆ๋‹ค.

์ฝ”๋”ฉ ์—์ด์ „ํŠธ๊ฐ€ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค

Space ์„ค์ •์„ ์ง์ ‘ ํด๋ฆญํ•ด์„œ ์ด๋™ํ•˜๊ธฐ๋ณด๋‹ค, huggingface_hub์— ์ ‘๊ทผ ๊ถŒํ•œ์ด ์žˆ๋Š” ์ฝ”๋”ฉ ์—์ด์ „ํŠธ์—๊ฒŒ Space๋ฅผ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋„๋ก ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Space ID์™€ ๋ฒ„ํ‚ท ์ด๋ฆ„์„ ์•Œ๋ ค์ฃผ๋ฉด, ์—์ด์ „ํŠธ๊ฐ€ ๋‹ค์Œ๊ณผ ๋™๋“ฑํ•œ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

from huggingface_hub import HfApi, Volume

api = HfApi()
space_id = "<your-namespace>/<your-space>"

# Attach the bucket at /data
api.set_space_volumes(
    space_id,
    volumes=[
        Volume(type="bucket", source="<your-namespace>/label-studio-data", mount_path="/data"),
    ],
)

# Tell Label Studio to write its SQLite DB and media into the mounted bucket
api.add_space_variable(space_id, "LABEL_STUDIO_BASE_DATA_DIR", "/data")
api.add_space_variable(space_id, "STORAGE_PERSISTENCE", "1")

# Optional: set a stable SECRET_KEY so sessions survive restarts
api.add_space_secret(space_id, "SECRET_KEY", "<random-string>")

# Factory rebuild so the new mount and variables take effect
api.restart_space(space_id, factory_reboot=True)

huggingface_hub๋ฅผ ํ†ตํ•ด ์ŠคํŽ˜์ด์Šค ๋ฐ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ manage-spaces ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Postgres๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜์†์„ฑ ํ™œ์„ฑํ™”

๋” ๋ฌด๊ฑฐ์šด ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ๋Š” ์™ธ๋ถ€ Postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ŠคํŽ˜์ด์Šค์— ์—ฐ๊ฒฐํ•˜์—ฌ ์ง€์†์„ฑ์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ํ”„๋กœ์ ํŠธ ๋ฐ ์ฃผ์„ ์„ค์ •์ด ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์‹œํฌ๋ฆฟ ๋ณ€์ˆ˜๋ฅผ ์ž์ฒด ํ˜ธ์ŠคํŒ…๋œ Postgres ์ธ์Šคํ„ด์Šค์— ๋งž๊ฒŒ ์„ค์ •ํ•˜์„ธ์š”. Spaces ์ •์˜์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๊ณต๊ฐœ๋กœ ๋ˆ„์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ์ด๋Ÿฌํ•œ ๊ฐ’์„ ์‹œํฌ๋ฆฟ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

  • DJANGO_DB: ์ด ๊ฐ’์„ default(์œผ)๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • POSTGRE_NAME: Postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • POSTGRE_USER: Postgres ์‚ฌ์šฉ์ž ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • POSTGRE_PASSWORD: Postgres ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • POSTGRE_HOST: Postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ํ˜ธ์ŠคํŠธ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • POSTGRE_PORT: Postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ํฌํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • STORAGE_PERSISTENCE: ์ž„์‹œ ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ์ด ๊ฐ’์„ 1๋กœ ์„ค์ •ํ•˜์„ธ์š”.

์ด ์„ค์ •์„ ์ ์šฉํ•˜๋ ค๋ฉด Space๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์„ธ์š”. ์‚ฌ์šฉ์ž, ํ”„๋กœ์ ํŠธ, ๋ฐ ์–ด๋…ธํ…Œ์ด์…˜์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜๋ฉฐ, Space๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ ๋ฆฌ์…‹๋˜๋ฉด Label Studio์— ์˜ํ•ด ๋‹ค์‹œ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€ ํ™œ์„ฑํ™”

๊ธฐ๋ณธ์ ์œผ๋กœ ์ด Space์— ํ™œ์„ฑํ™”๋œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋Š” local๋ฟ์ž…๋‹ˆ๋‹ค. Space๊ฐ€ ๋ฆฌ์…‹๋˜๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ์˜๊ตฌ ์ €์žฅ์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด cloud storage connector๋ฅผ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ cloud connector๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•ด๋‹น secrets๋ฅผ ๊ตฌ์„ฑํ•˜์„ธ์š”.

Amazon S3

  • STORAGE_TYPE: ์ด ๊ฐ’์„ s3(์œผ)๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • STORAGE_AWS_ACCESS_KEY_ID: <YOUR_ACCESS_KEY_ID>

  • STORAGE_AWS_SECRET_ACCESS_KEY: <YOUR_SECRET_ACCESS_KEY>

  • STORAGE_AWS_BUCKET_NAME: <YOUR_BUCKET_NAME>

  • STORAGE_AWS_REGION_NAME: <YOUR_BUCKET_REGION>

  • STORAGE_AWS_FOLDER: ์ด ๊ฐ’์„ ๋นˆ ๋ฌธ์ž์—ด๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Google Cloud Storage

  • STORAGE_TYPE: ์ด ๊ฐ’์„ gcs(์œผ)๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • STORAGE_GCS_BUCKET_NAME: <YOUR_BUCKET_NAME>

  • STORAGE_GCS_PROJECT_ID: <YOUR_PROJECT_ID>

  • STORAGE_GCS_FOLDER: ์ด ๊ฐ’์„ ๋นˆ ๋ฌธ์ž์—ด๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • GOOGLE_APPLICATION_CREDENTIALS: ์ด ๊ฐ’์„ /opt/heartex/secrets/key.json์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Azure Blob Storage

  • STORAGE_TYPE: azure(์œผ)๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • STORAGE_AZURE_ACCOUNT_NAME: <YOUR_STORAGE_ACCOUNT>

  • STORAGE_AZURE_ACCOUNT_KEY: <YOUR_STORAGE_KEY>

  • STORAGE_AZURE_CONTAINER_NAME: <YOUR_CONTAINER_NAME>

  • STORAGE_AZURE_FOLDER: ์ด ๊ฐ’์„ ๋นˆ ๋ฌธ์ž์—ด๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿค— ๋‹ค์Œ ๋‹จ๊ณ„, ํ”ผ๋“œ๋ฐฑ ๋ฐ ์ง€์›

Label Studio๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด, ๊ฐ์„ฑ ๋ถ„์„ ์–ด๋…ธํ…Œ์ด์…˜ ํ”„๋กœ์ ํŠธ ์˜ˆ์‹œ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ์•ˆ๋‚ดํ•˜๋Š” Label Studio โ€œZero to Oneโ€ ํŠœํ† ๋ฆฌ์–ผ์„ ํ™•์ธํ•ด ๋ณด์„ธ์š”. Label Studio ๋ฐ Label Studio ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋Œ€ํ•œ ์ „์ฒด ๋ฆฌ์†Œ์Šค๋Š” Label Studio ํ™ˆ ํŽ˜์ด์ง€์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ „์ฒด ๋ฌธ์„œ, ๋‹ค์–‘ํ•œ ์–ด๋…ธํ…Œ์ด์…˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‹œํ—˜ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ, ๊ทธ๋ฆฌ๊ณ  Label Studio Slack ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ฐ€์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Update on GitHub