Ultralytics HUB-SDK ๋ชจ๋ธ ๊ด๋ฆฌ ์ด์ ๊ฐ์ด๋
Ultralytics HUB-SDK ๋ชจ๋ธ ๊ด๋ฆฌ ์ค๋ช ์์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค! ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ ๊ด๋ฆฌ๋ฅผ ์ด์ ๋ง ์์ํ์ จ๋ , ๊ตฌ์ฒด์ ์ธ ์์ ์ง์นจ์ ์ฐพ๊ณ ๊ณ์ ์๋ จ๋ ๋ฐ์ดํฐ ๊ณผํ์์ด๋ , ์ ๋๋ก ์ฐพ์ ์ค์ จ์ต๋๋ค. HUB-SDK ๊ธฐ๋ฅ์ ํตํด ๋ชจ๋ธ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ ธํ์ฐ๋ฅผ ์ตํ ์ ์๋ ์์กฐ๋ก์ด ์ฌ์ ์ ์์ํ์ธ์.
๊ณ ์ ์๋ณ์๋ก ๋ชจ๋ธ ๊ฒ์ํ๊ธฐ
๋จธ์ ๋ฌ๋ ์ํฌํ๋ก์์๋ ํน์ ๋ชจ๋ธ์ ์ก์ธ์คํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Ultralytics HUB-SDK๋ฅผ ์ฌ์ฉํ๋ฉด ID๋ก ๋ชจ๋ธ์ ์ฝ๊ฒ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ์ด ํ์ ๊ธฐ๋ฅ์ ์ ๊ณต๋ ๊ณ ์ ์๋ณ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ์ค์ ํ์ฌ ๋ชจ๋ธ์ ์ธ๋ถ ์ ๋ณด ๋ฐ ์์ ์ ๋ํ ์ ์ฒด ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
print(model.data) # Outputs the model's metadata and configuration
ํ๋ก์ ํธ ๋ฐ ๋ฐ์ดํฐ ์งํฉ ์ฌ์ ์๊ตฌ ์ฌํญ ์ก์ธ์ค
๋ชจ๋ธ์ ๋ง๋ค๊ฑฐ๋ ํ๋ จํ๊ธฐ ์ ์ ํ๋ก์ ํธ์ ๋ฐ์ดํฐ ์ธํธ๊ฐ ๋ชจ๋ ์๋์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด ๊ฐ๋จํ ์ฝ๋ ์ค๋ํซ์ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ์ฌ ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ ์ ์๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ชจ๋ธ ํ์ต์ ๊ตฌ์ฑํ๋ ๋ฐ ํ๋ก์ ํธ์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํ์ฉํ๋ ๊ฒ์ ์ ์ฉํ์ง๋ง, ๋ฐ๋์ ํ์ํ ๊ฒ์ ์๋๋ผ๋ ์ ์ ์ ์ํ์ธ์. ๋ ID ์ค ํ๋๊ฐ ๋๋ฝ๋ ๊ฒฝ์ฐ ๊ฐ์ฒด ๋ฐ์ดํฐ(project.data
, dataset.data
)๋ ๋น์ด ์์ต๋๋ค.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
project = client.project("<Project ID>")
dataset = client.dataset("<Dataset ID>")
์ฌ์ฉ์ ์ง์ ๊ตฌ์ฑ์ผ๋ก ์ ๋ชจ๋ธ ๋ง๋ค๊ธฐ
์ด ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ์ ๋ง๋ ์ ๋ชจ๋ธ์ ๊ฐํธํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋ชจ๋ธ ์ด๋ฆ์ ์ง์ ํ๊ณ ํ๋ก์ ํธ ๋ฐ ๋ฐ์ดํฐ ์ธํธ์ ์ฐ๊ฒฐํ์ธ์. ๋ฐฐ์น ํฌ๊ธฐ๋ ๋๋ฐ์ด์ค ์ค์ ๋ฑ ํ์์ ๋ง๊ฒ ๊ตฌ์ฑ์ ์ฌ์ฉ์ ์ง์ ํ ์๋ ์์ต๋๋ค. ์ฐธ๊ณ ์ฌํญ projectId
๊ทธ๋ฆฌ๊ณ datasetId
๋งค๊ฐ ๋ณ์๋ ์์ง ๋ชจ๋ธ์ ํ๋ก์ ํธ๋ ๋ฐ์ดํฐ ์งํฉ์ ์ฐ๊ฒฐํ ์ค๋น๊ฐ ๋์ง ์์ ๊ฒฝ์ฐ ์ ํ ์ฌํญ์
๋๋ค.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
data = {
"meta": {"name": "sdk model"}, # Give your model a recognizable name
"projectId": project.id, # Associate with an existing project
"datasetId": dataset.id, # Associate with an existing dataset
"config": { # Define hyperparameters and settings
"batchSize": "-1",
"cache": "ram",
"device": "name",
"epochs": "5",
"imageSize": "640",
"patience": "5", # Stop training if validation doesn't improve
},
}
model = client.model()
model.create_model(data) # Creates the model with your specified details
๊ธฐ์กด ๋ชจ๋ธ์ ๋ฉํ๋ฐ์ดํฐ ๋๋ ๊ตฌ์ฑ ์ ๋ฐ์ดํธ
ํ๋ก์ ํธ๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ๋ช ํ์ฑ์ ์ํด ๋ชจ๋ธ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ ๋ฑ ๋ชจ๋ธ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ ์๋ ์์ต๋๋ค. SDK๋ ์ด๋ฌํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์์ฝ๊ฒ ์๋ก ๊ณ ์น ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ์๋ ์ค๋ฅ๋ฅผ ์ต์ํํ๊ณ ๊ท์คํ ์๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
model.update({"meta": {"name": "Updated Model Name"}}) # Renames the specified model
๋ชจ๋ธ์ ์์ ํ๊ฒ ์ญ์ ํ๊ธฐ
๋ชจ๋ธ ์ญ์ ๋ ๋๋๋ฆด ์ ์์ผ๋ฏ๋ก ์ด ๊ธฐ๋ฅ์ ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์์คํ ์์ ๋ชจ๋ธ์ ์ ๊ฑฐํ๋ ค๋ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ ์คํํ๋ฉด ์ง์ ๋ ๋ชจ๋ธ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์๊ตฌ์ ์ผ๋ก ์ญ์ ๋ฉ๋๋ค.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
model.delete(hard=True) # Permanently deletes the specified model
๊ธฐ๋ณธ์ ์ผ๋ก ์ญ์ ๋ฉ์๋๋ ๋ชจ๋ธ์ ์๊ตฌ์ ์ผ๋ก ์ ๊ฑฐํ์ง ์๊ณ ๋นํ์ฑ ์ํ๋ก ํ์ํ๋ ์ํํธ ์ญ์ ๋ฅผ ์ํํฉ๋๋ค. ํ๋ ์ญ์ ๋ฅผ ์ํํ์ฌ ๋ชจ๋ธ์ ๊ด๋ จ ๋ฐ์ดํฐ์ ํจ๊ป ์๊ตฌ์ ์ผ๋ก ์ ๊ฑฐํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ธ์๋ฅผ ์ ๋ฌํ๋ฉด ๋ฉ๋๋ค. hard=True
๋ฅผ ์
๋ ฅํฉ๋๋ค. ํ๋ ์ญ์ ์ต์
์ ๋๋๋ฆด ์ ์์ผ๋ฉฐ ์ง์ ๋ ๋ชจ๋ธ์ด ์์คํ
์์ ์์ ํ ์ ๊ฑฐ๋๋ฏ๋ก ์ฃผ์ํ์ธ์.
ํ์ด์ง ๋งค๊น์ผ๋ก ๋ชจ๋ ๋ชจ๋ธ ๋์ดํ๊ธฐ
Ultralytics HUB-SDK๋ ๋ชจ๋ธ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๋ ์์
์ ๊ฐ์ํํ๋ ๋์์ ํ์ด์ง ๋งค๊น์ ๊ตฌํํ์ฌ ์ ์ฌ์ ์ผ๋ก ํฐ ๋ชจ๋ธ ์ปฌ๋ ์
์ ํจ์จ์ ์ผ๋ก ํ์ํ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ์ธ์๋ฅผ ์ฌ์ฉ์ ์ง์ ํ์ฌ page_size
๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๊ณต๊ฐ ํ๋ก์ ํธ์ ๊ณต๊ฐ ํ๋ก์ ํธ๋ฅผ ๋ชจ๋ ๋ณผ ์ ์๋ ๊ธฐ๋ฅ์ ํฌํจํ์ฌ ํ์์ ๋ง๊ฒ ์ถ๋ ฅ์ ์กฐ์ ํ ์ ์์ต๋๋ค.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model_list = client.model_list(page_size=10) # Fetches the first page with 10 models
print("Current result:", model_list.results) # Displays the current page's models
model_list.next() # Move to the next page of results
print("Next page result:", model_list.results) # Displays the next page's models
model_list.previous() # Return to the previous page of results
print("Previous page result:", model_list.results) # Displays the previous page's models
๊ต์ก ์งํ ์ ๋ก๋ ๋ฐ ์๊ฐํ
ํ์ต ํ๋ก์ธ์ค ์ ๋ฐ์ ๊ฑธ์ณ ๋ชจ๋ธ์ ์ฑ๋ฅ ์งํ๋ฅผ ์ถ์ ํ๊ณ ์๊ฐํํ๋ ค๋ฉด ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์์ค ๋ฐ ์ ํ๋์ ๊ฐ์ ์งํ๋ฅผ ์ ๋ก๋ํ์ธ์. ์ด๋ฅผ ํตํด ํ๋ จ ์งํ ์ํฉ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ๋ถ์ ๋จ๊ณ๋ฅผ ๊ฐ์ํํ ์ ์์ต๋๋ค.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
# Define your metrics structure. Keys are steps, and values are JSON strings of metrics.
data = {
1: '{"loss/1": 0.5, "accuracy/1": 0.85}',
2: '{"loss/2": 0.4, "accuracy/2": 0.88}',
3: '{"loss/3": 0.3, "accuracy/3": 0.90}',
}
model.upload_metrics(data) # Uploads the specified metrics to the model
๋ฐฐํฌ ๋๋ ๋ถ์์ ์ํด ๋ชจ๋ธ ๋ด๋ณด๋ด๊ธฐ
๋ฐฐํฌ ๋๋ ์ฌ์ธต ๋ถ์ ๋ฑ ๋ค์ํ ๋ชฉ์ ์ผ๋ก ๋ชจ๋ธ์ ๋ด๋ณด๋ด๋ ๊ฒ์ด ๊ทธ ์ด๋ ๋๋ณด๋ค ์ฌ์์ก์ต๋๋ค. ํ์ํ ํ์์ ์ง์ ํ๋ฉด ์ด ๊ธฐ๋ฅ์ด ๊ทธ์ ๋ฐ๋ผ ๋ชจ๋ธ์ ์ค๋นํฉ๋๋ค. Tensorflow ํ์์ด ํ์ํ๋ PyTorch ํ์์ด ํ์ํ๋ SDK๋ ์ด๋ฅผ ์ํํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
model.export(format="pyTorch") # Exports the model as a PyTorch file
์ง์ ๊ฐ์ค์น URL ๊ฒ์
๋๋๋ก ์๊ฒฉ์ผ๋ก ์ ์ฅ๋ ๋ชจ๋ธ์ ์ํฐํฉํธ์ ์ง์ ์ก์ธ์คํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ๊ฐ์ฅ ์ค์ ์ด ์ข์ ๋ชจ๋ธ ๊ฐ์ค์น์ ๊ฐ์ ํน์ ํ์ผ์ ์ก์ธ์คํ ์ ์๋ URL์ ์ ๊ณตํฉ๋๋ค.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
weight_url = model.get_weights_url("best") # or "last"
print("Weight URL link:", weight_url) # Prints out the weight url link
๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ ์ ๋ก๋
๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ๋ฅผ ์
๋ก๋ํ๋ ๊ฒ์ upload_model
ํจ์๋ฅผ ์ฌ์ฉํ์ธ์. ์ฒดํฌํฌ์ธํธ์ ์ค์๋๋ฅผ ํ์ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. is_best
ํ๋๊ทธ์ ๊ต์ก ๊ธฐ๊ฐ์ ๋ช
ํํ๊ฒ ํ์ํฉ๋๋ค.
from hub_sdk import HUBClient
credentials = {"api_key": "<YOUR-API-KEY>"}
client = HUBClient(credentials)
model = client.model("<Model ID>")
model.upload_model(is_best=True, epoch=5, weights="<Weight File>") # Uploads the specified model checkpoint
๊ฒฐ๋ก ์ ์ผ๋ก, Ultralytics HUB-SDK๋ ํจ๊ณผ์ ์ธ ๋ชจ๋ธ ๊ด๋ฆฌ๋ฅผ ์ํ ํฌ๊ด์ ์ธ ์์ ์ธํธ๋ฅผ ์ ๊ณตํ์ฌ ์ฌ์ฉ์๊ฐ ๋จธ์ ๋ฌ๋ ์์ ์์ ์ต์์ ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๋ฐ ์ง์คํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์ถ๊ฐ ์ง๋ฌธ์ด ์๊ฑฐ๋ ๋์์ด ํ์ํ ๊ฒฝ์ฐ, ์น์ ํ ์ปค๋ฎค๋ํฐ ๋๋ ์ง์ํ์ ๋ฌธ์ํด ์ฃผ์ธ์. ํ๋ณตํ ๋ชจ๋ธ๋ง! ๐