from siflow import SiFlow
from siflow.types import (
TaskEnv,
TaskEnhancements,
TaskEnhancementsFaultTolerance,
TaskEnhancementsPreemptNotify,
TaskEnhancementsVscs,
TaskMetricsMonitor,
TaskUserSelectedInstance,
TaskVolume,
)
client = SiFlow(region="cn-beijing", cluster="auriga")
uuid = client.tasks.create(
name_prefix="demo-training",
image_url="registry-cn-beijing.siflow.cn/siflow/ray:2.50.1-root",
type="pytorchjob",
priority=6,
guarantee=False,
enable_idle_resource=False,
force_single_pod=False,
cmd="python train.py --epochs 3",
workers=1,
resource_pool="<RESOURCE_POOL>",
instances=[
TaskUserSelectedInstance(name="sci.c23-2", count_per_pod=1),
],
volumes=[
TaskVolume(mount_dir="/volume/data", volume_id=1),
TaskVolume(
mount_dir="/volume/project",
volume_id=11,
sub_path="project-a/",
read_only=False,
),
],
enhancements=TaskEnhancements(
fault_tolerance=TaskEnhancementsFaultTolerance(
enabled=True,
max_retry_count=1,
),
metrics_monitor=TaskMetricsMonitor(
enabled=True,
port=9090,
path="/metrics",
),
vscs=TaskEnhancementsVscs(
enabled=True,
extension_dir="/volume/project/code-server/extensions",
user_data_dir="/volume/project/code-server/user-data",
),
preempt_notify=TaskEnhancementsPreemptNotify(
enabled=False,
port=9000,
max_wait=600,
),
),
labels={"project": "demo", "stage": "dev"},
task_env=[
TaskEnv(env_key="TOKEN", env_value="<TOKEN>", hide=True),
TaskEnv(env_key="LOG_LEVEL", env_value="INFO", hide=False),
],
scheduling_policy_id_list=[12, 34],
)
print(uuid)