メインコンテンツへスキップ
SimplePipeline は、ワークフローに高コストな要素が最大 1 つしかない場合(単一の DataFit または Validation)に、完全な Pipeline の軽量な代替手段として使用できます。ファイア・アンド・フォーゲット方式で実行され、parameter_valuescost、そしてオプションの summary_stats を含むフラットな結果を返します。

使用するタイミング

SimplePipeline を使用Pipeline を使用
DataFit または Validation が最大 1 つ複数の DataFit / Validation 要素
ファイア・アンド・フォーゲット実行要素ごとのステータス追跡
フラットな parameter_values の結果累積的なパラメータの引き継ぎ

設定の構築

型付きで検証済みの設定を構築するには ionworks_schema を使用します。SimplePipelinePipeline からすべてを継承し、高コストな要素を複数含む設定を拒否するクライアントサイドの検証を追加します。
import ionworks_schema as iws

objective = iws.objectives.CurrentDriven(data_input="path/to/discharge.csv")

pipeline = iws.SimplePipeline(
    elements={
        "initial_params": iws.direct_entries.DirectEntry(
            parameters={"Negative particle diffusivity [m2.s-1]": 2e-14},
        ),
        "fit": iws.DataFit(
            objectives={"cycle": objective},
            parameters={
                "Negative particle diffusivity [m2.s-1]": iws.Parameter(
                    "Negative particle diffusivity [m2.s-1]",
                    bounds=(1e-14, 1e-13),
                    initial_value=2e-14,
                )
            },
            cost=iws.costs.RMSE(),
            optimizer=iws.parameter_estimators.ScipyDifferentialEvolution(
                maxiter=10
            ),
        ),
    },
    name="My Fit",
)

config = pipeline.to_config()
複数の DataFit または Validation 要素を渡すと、SimplePipeline は即座に ValueError を発生させます。サーバー側で拒否されるのを待つ必要はありません。

送信とポーリング

from ionworks import Ionworks

client = Ionworks()

# 設定を送信
sp = client.simple_pipeline.create(config, name=pipeline.name)
# sp.status == "pending"

# 完了を待機(自動的にポーリング)
result = client.simple_pipeline.wait_for_completion(sp.id, timeout=600)

# 結果を読み取り
print(result.result["parameter_values"])
# {"Negative particle diffusivity [m2.s-1]": 5.3e-14}
print(result.result["cost"])

検証パイプライン

SimplePipeline は単一の Validation 要素もサポートします。結果には parameter_values に加えて summary_stats が含まれます。
objective = iws.objectives.CurrentDriven(data_input="path/to/cycle.csv")

validation_pipeline = iws.SimplePipeline(
    elements={
        "validate": iws.Validation(
            objectives={"cycle": objective},
        ),
    },
    name="Validate fitted model",
)

sp = client.simple_pipeline.create(
    validation_pipeline.to_config(), name=validation_pipeline.name
)
result = client.simple_pipeline.wait_for_completion(sp.id, timeout=600)
print(result.result["summary_stats"])

API リファレンス

完全なスキーマ API については、ionworks-schema ドキュメントを参照してください。