Beispiel #1
0
def runs_set_artifacts(run_id: int, run: Optional[BaseRun], artifacts: List[Dict]):
    run = get_run(run_id=run_id, run=run)
    if not run:
        return

    artifacts = [V1RunArtifact.from_dict(a) for a in artifacts]
    set_artifacts(run=run, artifacts=artifacts)
Beispiel #2
0
 def _resolve_artifacts_lineage_state(self):
     if self.artifacts:
         set_artifacts(self.run, self.artifacts)
Beispiel #3
0
    def test_set_metric_artifacts(self):
        state = self.run.uuid
        assert Artifact.objects.count() == 0
        metric1 = V1RunArtifact(
            name="accuracy",
            kind=V1ArtifactKind.METRIC,
            path="accuracy",
            summary=dict(last_value=0.9, max_value=0.9, min_value=0.1),
        )
        metric2 = V1RunArtifact(
            name="precision",
            kind=V1ArtifactKind.METRIC,
            path="precision",
            state=state,
            summary=dict(last_value=0.8, max_value=0.9, min_value=0.1),
        )
        set_artifacts(run=self.run, artifacts=[metric1, metric2])
        assert Artifact.objects.count() == 2
        results = {
            r.name: V1RunArtifact.from_model(r)
            for r in Artifact.objects.all()
        }
        result1 = results["accuracy"].to_dict()
        # State is generated
        assert result1.pop("state") is not None
        assert result1 == metric1.to_dict()
        result2 = results["precision"].to_dict()
        assert result2 == metric2.to_dict()

        metric1 = V1RunArtifact(
            name="accuracy",
            kind=V1ArtifactKind.METRIC,
            path="accuracy",
            state=state,
            summary=dict(last_value=0.9,
                         max_value=0.99,
                         min_value=0.1,
                         max_step=100),
        )
        metric2 = V1RunArtifact(
            name="precision",
            kind=V1ArtifactKind.METRIC,
            path="precision",
            state=state,
            summary=dict(last_value=0.8,
                         max_value=0.99,
                         min_value=0.1,
                         max_step=100),
        )
        set_artifacts(run=self.run, artifacts=[metric1, metric2])
        assert Artifact.objects.count() == 2
        results = {
            r.name: V1RunArtifact.from_model(r)
            for r in Artifact.objects.all()
        }
        assert results["accuracy"].to_dict() == metric1.to_dict()
        assert results["precision"].to_dict() == metric2.to_dict()

        metric1 = V1RunArtifact(
            name="accuracy",
            kind=V1ArtifactKind.METRIC,
            path="accuracy",
            state=state,
            summary=dict(last_value=0.77,
                         max_value=0.99,
                         min_value=0.1,
                         max_step=100),
        )
        metric3 = V1RunArtifact(
            name="new",
            kind=V1ArtifactKind.METRIC,
            path="new",
            state=state,
            summary=dict(last_value=0.8,
                         max_value=0.99,
                         min_value=0.11,
                         max_step=100),
        )
        set_artifacts(run=self.run, artifacts=[metric1, metric3])
        assert Artifact.objects.count() == 3
        results = {
            r.name: V1RunArtifact.from_model(r)
            for r in Artifact.objects.all()
        }
        assert results["accuracy"].to_dict() == metric1.to_dict()
        assert results["precision"].to_dict() == metric2.to_dict()
        assert results["new"].to_dict() == metric3.to_dict()
Beispiel #4
0
    def test_set_artifacts(self):
        state = self.run.uuid
        assert Artifact.objects.count() == 0
        artifact1 = V1RunArtifact(
            name="histo",
            path="histo",
            state=state,
            kind=V1ArtifactKind.HISTOGRAM,
            summary=dict(max_step=9, min_step=1),
        )
        artifact2 = V1RunArtifact(
            name="dataframe",
            path="df",
            state=state,
            kind=V1ArtifactKind.DATAFRAME,
            summary=dict(max_step=9, min_step=1),
        )
        set_artifacts(run=self.run, artifacts=[artifact1, artifact2])
        assert Artifact.objects.count() == 2
        results = {
            r.name: V1RunArtifact.from_model(r)
            for r in Artifact.objects.all()
        }
        assert (results["histo"]).to_dict() == artifact1.to_dict()
        assert results["dataframe"].to_dict() == artifact2.to_dict()

        artifact1 = V1RunArtifact(
            name="histo",
            path="histo",
            state=state,
            kind=V1ArtifactKind.HISTOGRAM,
            summary=dict(max_step=90, min_step=1),
        )
        artifact2 = V1RunArtifact(
            name="dataframe",
            path="df",
            state=state,
            kind=V1ArtifactKind.DATAFRAME,
            summary=dict(max_step=90, min_step=1),
        )
        set_artifacts(run=self.run, artifacts=[artifact1, artifact2])
        assert Artifact.objects.count() == 2
        results = {
            r.name: V1RunArtifact.from_model(r)
            for r in Artifact.objects.all()
        }
        assert results["histo"].to_dict() == artifact1.to_dict()
        assert results["dataframe"].to_dict() == artifact2.to_dict()

        artifact1 = V1RunArtifact(
            name="histo",
            path="histo",
            state=state,
            kind=V1ArtifactKind.HISTOGRAM,
            summary=dict(max_step=900, min_step=1),
        )
        artifact3 = V1RunArtifact(
            name="audio",
            path="audio",
            state=state,
            kind=V1ArtifactKind.AUDIO,
            summary=dict(max_step=900, min_step=1),
        )
        set_artifacts(run=self.run, artifacts=[artifact1, artifact3])
        assert Artifact.objects.count() == 3
        results = {
            r.name: V1RunArtifact.from_model(r)
            for r in Artifact.objects.all()
        }
        assert results["histo"].to_dict() == artifact1.to_dict()
        assert results["dataframe"].to_dict() == artifact2.to_dict()
        assert results["audio"].to_dict() == artifact3.to_dict()
Beispiel #5
0
 def _persist_artifacts(self):
     if self.artifacts:
         set_artifacts(self.run, self.artifacts)