Przejdź do głównej zawartości

Zbiory danych

Workflow do pobierania danych i trenowania modeli wymagają wolumenu, na którym będą przechowywane zbiory danych i wagi modeli.

Pakiet cgcsdk obsługuje:

  • RoboflowDataset: pobieranie wybranej wersji zbioru danych z Roboflow.
  • VolumeDataset: korzystanie ze zbioru danych zapisanego na wolumenie CGC.

Pobieranie z Roboflow​

import os
import time

from cgc.sdk import Image, Volume
from cgc.sdk.recipes.datasets import RoboflowDataset
from cgc.sdk.recipes.yolo import YoloConfig, YoloWorkflow


data = Volume.from_name(
name="object-detection-data",
mount_path="/root/data",
size=50,
storage_class="ssd-rwx-ec",
create_if_missing=True,
)
data.ensure()
deadline = time.monotonic() + 300
while not data.ready():
if time.monotonic() >= deadline:
raise RuntimeError("Dataset volume did not become ready")
time.sleep(5)

dataset = RoboflowDataset(
workspace_id="your-workspace",
project_id="your-project",
version=1,
format="yolov11",
api_key=os.environ["ROBOFLOW_API_KEY"],
)

workflow = YoloWorkflow(
name="yolo-training",
image=Image.from_registry("ultralytics/ultralytics:latest"),
volume=data,
config=YoloConfig(),
)

download_run = workflow.download(dataset).submit()
status = download_run.wait(timeout_seconds=1800)
print("Download status:", status)
print(download_run.logs(timestamps=True))
if status != "Succeeded":
raise RuntimeError(f"Download failed: {status}; job left for diagnosis: {download_run.name}")
download_run.delete()

Parametry zbioru danych​

ArgumentZnaczenie
workspace_idIdentyfikator obszaru roboczego Roboflow, dostępny w adresie zbioru danych lub w panelu Roboflow.
project_idIdentyfikator projektu Roboflow.
versionNumer wersji zbioru danych do pobrania.
formatFormat eksportu Roboflow. Użyj yolov11 dla pokazanego workflow Ultralytics.
api_keyKlucz API Roboflow. Odczytaj go ze zmiennej środowiskowej zamiast wpisywać bezpośrednio w skrypcie.

workflow.download(dataset) przygotowuje definicję joba, a submit() tworzy go w CGC. Dane zostaną zapisane na wolumenie podłączonym do workflow.

Ustaw klucz przed uruchomieniem skryptu:

# Linux/macOS
export ROBOFLOW_API_KEY="your-key"

# PowerShell
$env:ROBOFLOW_API_KEY="your-key"

Użyj danych zapisanych na wolumenie​

from cgc.sdk.recipes.datasets import VolumeDataset


dataset = VolumeDataset(
name="license-plates",
path="datasets/license-plates",
data_yaml="data.yaml",
)

check_run = workflow.download(dataset).submit()
status = check_run.wait()
print(status)
print(check_run.logs())
if status != "Succeeded":
raise RuntimeError(f"Dataset check failed: {status}; job left for diagnosis: {check_run.name}")
check_run.delete()

Dla VolumeDataset metoda download() nie pobiera danych. Sprawdza, czy istnieje plik konfiguracji zbioru danych.

ArgumentZnaczenie
nameNazwa zbioru danych używana w workflow.
pathKatalog zbioru danych. Ścieżka względna jest liczona od katalogu, w którym zamontowano wolumen.
data_yamlŚcieżka do pliku konfiguracji zbioru danych YOLO. Jest liczona od path, chyba że podasz ścieżkę bezwzględną.
target_classOpcjonalna nazwa klasy, którą może wykorzystać Twoja aplikacja. Domyślnie pusta.

Katalog powinien zawierać obrazy, etykiety i plik data.yaml w formacie obsługiwanym przez Ultralytics.

Pełny skrypt roboflow_dataset.py znajdziesz na stronie Przykłady workflow.

Przed uruchomieniem joba zaczekaj na gotowość wolumenu. Usunięcie joba nie usuwa danych zapisanych na PVC.