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
| Typ | Kiedy użyć | Uruchomienie | Zakoń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 HTTP | Serwer 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ąć?
- Utwórz pierwsze zadanie workflow.
- Przetwarzaj obrazy z użyciem wolumenu i Filebrowsera.
- Uruchom usługę HTTP.
- Przejdź do gotowych workflow dla zbiorów danych, YOLO i RT-DETR.
- 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