Skip to content

This feature is currently in Preview.

Monitor training

When you call gnn.fit(), the training job runs asynchronously inside the RelationalAI Native App and streams its progress to Snowflake Experiment Tracking in real time. Each call creates a run that lives under an experiment. Inside the experiment you can browse the per-epoch loss curves, evaluation metric values, training hyperparameters, and other run metadata while training is still in progress.

The experiment lives in the Snowflake database and schema you passed as exp_database and exp_schema to the GNN constructor. To open it, navigate to Snowsight and click the Experiments tab.

When gnn.fit() submits the training job, it prints the experiment name and job ID to the training log:

...
Step 2/3: Preparing trainer configuration...
✓ Step 2 completed (1.73s)
Step 3/3: Submitting training job...
✓ Training job submitted
• Job ID: 01c4026d-0312-c8a1-000a-1dc709f5fbc2
• Experiment: <username>_<role>_binary_classification_<source_concept>
• Location: <exp_database>.<exp_schema>
✓ Step 3 completed (4.99s)
...

The experiment name follows one of two patterns, depending on whether you passed a dataset_alias to the GNN constructor:

  • With dataset_alias: <dataset_alias>_<task_type>_<source_concept>
  • Without dataset_alias: <username>_<role>_<task_type>_<source_concept> — where <username> is your Snowflake user name with special characters replaced by underscores, and <role> is the role you connected with in the raiconfig.yaml.

Use the experiment name to locate the experiment in Snowsight. A single experiment can hold many runs — each .fit() call adds one — and they appear in Snowsight as RUN_<job_id>. The job ID printed in your training log is the suffix that picks out the specific run you’re looking for.

Beyond viewing runs in Snowsight, the job ID is also the handle you use to inspect or control a job programmatically through the RelationalAI client. Connect with connect_sync() (or connect() in async code) to obtain a ClientSync, then use its jobs attribute. Common operations:

When calling any of these, pass "Predictive" as the reasoner kind along with the job ID from the training logs.