Przejdź do głównej zawartości

Wprowadzenie do workflow

Workflow pozwala opisać w Pythonie zadania uruchamiane w CGC. Określasz w nim:

  • obraz kontenera zawierający wymagane oprogramowanie,
  • CPU, pamięć oraz opcjonalne zasoby GPU,
  • opcjonalne wolumeny do przechowywania plików,
  • polecenie do wykonania.

SDK udostępnia też metody sprawdzania statusu, odczytu logów i usuwania zasobów.

Gdzie wykonuje się kod?​

Skrypt workflow uruchamiasz na swoim komputerze. Opisuje on zadanie i zleca CGC utworzenie potrzebnych zasobów. Samo polecenie wykonuje się w kontenerze w CGC.

Twój komputer CGC
------------- ---
Uruchom skrypt workflow w Pythonie
Zbuduj komendę shell
Wywołaj submit(), create() lub deploy() -> Utwórz workload
Uruchom komendę w kontenerze
Odczytaj status i logi <- Zwróć informacje o workloadzie

Utworzenie obiektów Image, Volume lub App nie tworzy zasobu CGC. Tworzenie zasobu następuje dopiero po wywołaniu:

  • submit() dla joba,
  • create() dla zasobu, który ma działać bez określonego czasu zakończenia,
  • deploy() dla usługi HTTP.

Podstawowe klasy workflow importuje się z cgc.sdk:

from cgc.sdk import App, Image, ServicePort, ShellCommand, Volume

Gotowe workflow, takie jak YOLO i RT-DETR, oraz klasy do obsługi zbiorów danych importuje się z cgc.sdk.recipes.

Wybierz sposób uruchomienia​

TypKiedy użyćUruchomienieZakończenie
Zadanie (job)Jednorazowe zadanie, np. przetwarzanie pliku albo generowanie raportu.task.submit(...)Polecenie kończy się sukcesem albo błędem.
Zasób (resource)Proces ma działać stale, ale nie potrzebuje publicznego adresu HTTP.resource.create()Usuwasz zasób.
Usługa HTTPSerwer ma przyjmować żądania pod adresem udostępnionym przez CGC.service.deploy(...)Usuwasz usługę.

Zasoby i usługi HTTP domyślnie używają entity="custom". To ustawienie pozwala uruchomić wybrany przez Ciebie obraz. Możesz także wskazać nazwę szablonu zasobu dostępnego w bieżącym środowisku CGC. Zasób oparty na szablonie korzysta z obrazu i polecenia startowego szablonu, a Ty możesz przekazać mu argumenty.

Dla usługi HTTP metoda deploy() tworzy zasób i konfiguruje jego główny port. Jeśli zadeklarowano additional_ports, SDK czeka na stan Running, a następnie dodaje port główny i porty dodatkowe.

Nazwij funkcję​

process_file, generate_report i convert_image to przykładowe nazwy funkcji. Możesz wybrać własną nazwę:

@app.function(cpu=1, memory=2)
def process_file(input_url):
return "command that processes the file"

SDK zastępuje udekorowaną funkcję Pythona obiektem workflow. Potem używasz metod takich jak process_file.submit(...).

Funkcja Pythona wykonuje się lokalnie i przygotowuje polecenie powłoki. CGC uruchamia to polecenie w kontenerze z wybranym obrazem.

Od czego zacząć?​

  1. Utwórz pierwsze zadanie workflow.
  2. Przetwarzaj obrazy z użyciem wolumenu i Filebrowsera.
  3. Uruchom usługę HTTP.
  4. Przejdź do gotowych workflow dla zbiorów danych, YOLO i RT-DETR.
  5. Sprawdź klasy i argumenty w opisie API.

Pełne skrypty z tych przykładów znajdziesz na stronie Przykłady workflow.

Przed uruchomieniem workflow zainstaluj SDK i potwierdź wybrany kontekst CGC:

pip install cgcsdk
cgc context list