Search runs
Before we perform any search, we will first query the runs in our current project:
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME")
response = run_client.list()
print("Count: {}".format(response.count))
print("Next page: {}".format(response.next))
# Runs in this page
runs = response.resultsThe list method shows the current runs inside our project.
Note that by default the Client will show a table of 20 runs and have previous and next to paginate the full history.
We can filter the results based on a specific metric.
The params query, sort, offset, and limit allows to restrict the list based on the query specification, order by fields, and to limit or offset the results.
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME")
response = run_client.list(query="kind: job, metrics.loss: <0.3", sort="-metrics.loss", limit=3)
runs = response.resultsWe can for instance iterate over the runs to show some details:
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME")
response = run_client.list(query="kind: job, metrics.loss: <0.3", sort="-metrics.loss", limit=3)
runs = response.results
for r in runs:
print({"uuid": r.uuid, "learning_rate": r.inputs.get("learning_rate"),
"loss": r.outputs.get("loss"), "accuracy": r.outputs.get("accuracy")})Getting more information about the runs
In order to view and explore the top runs, we can query information about a specific run using the run_uuid,
for example if the first run has uuid value 8aac02e3a62a4f0aaa257c59da5eab80 we can query the run’s information with CLI:
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME", run_uuid="8aac02e3a62a4f0aaa257c59da5eab80")
# All run data
print(run_client.run_data)
# Inputs
print(run_client.get_inputs())
# Outputs
print(run_client.get_outputs())
# Lineage metadata
print(run_client.get_artifacts_lineage())
# Statuses history
print(run_client.get_statuses())Downloading artifacts for single runs
The Python Client provides methods to filter and download the assets, events, and artifacts for each run.
- List artifacts tree
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME", run_uuid="8aac02e3a62a4f0aaa257c59da5eab80")
# Root path
print(run_client.get_artifacts_tree())
# Specific path
print(run_client.get_artifacts_tree(path="outputs"))- Download all artifacts
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME", run_uuid="8aac02e3a62a4f0aaa257c59da5eab80")
run_client.download_artifacts()- Specific file based on a path using
download_artifactand specifying the path
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME", run_uuid="8aac02e3a62a4f0aaa257c59da5eab80")
run_client.download_artifact(path="outputs/path/file1")- Specific directory based on a path using
download_artifactsand specifying the path
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME", run_uuid="8aac02e3a62a4f0aaa257c59da5eab80")
run_client.download_artifacts(path="outputs")- Specific artifacts based on the lineage reference name
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME", run_uuid="8aac02e3a62a4f0aaa257c59da5eab80")
lineages = run_client.get_artifacts_lineage(query="name: image-example | debug-csv-file").results
for lineage in lineages:
run_client.download_artifact_for_lineage(lineage=lineage)- Specific artifacts based on the lineage reference kind
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME", run_uuid="8aac02e3a62a4f0aaa257c59da5eab80")
lineages = run_client.get_artifacts_lineage(query="kind: model | env").results
for lineage in lineages:
run_client.download_artifact_for_lineage(lineage=lineage)Pulling metadata and artifacts for single runs
You can package and download the metadata, lineage metadata, and artifacts using the pull method.
- Pulling the metadata and lineage only
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME", run_uuid="8aac02e3a62a4f0aaa257c59da5eab80")
run_client.pull_remote_run(path="/tmp/save/to/path", download_artifacts=False)- Pulling the the metadata, lineage metadata, and artifacts
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME", run_uuid="8aac02e3a62a4f0aaa257c59da5eab80")
run_client.pull_remote_run(path="/tmp/save/to/path", download_artifacts=True)Pulling metadata and artifacts for all top runs
Instead of pulling data for each run, we can using the same query specification above to archive all the best runs:
from polyaxon.client import RunClient
run_client = RunClient(project="PROJECT_NAME")
response = run_client.list(query="kind: job, metrics.loss: <0.3", sort="-metrics.loss", limit=3)
# Runs in this page
runs = response.results
for r in runs:
r_client = RunClient(project="PROJECT_NAME", run_uuid=r.run_uuid)
r_client.pull_remote_run(path="/tmp/save/to/path/{}".format(r.uuid), download_artifacts=True)