{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# パイプラインを構築する\n", "\n", "これは、実験パイプライン構築を支援するためのノートブックです。 \n", "パイプラインを構築することで、定められた順に実験を実行して実験を再現することが出来ます。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ◆◆◆開発メモ◆◆◆\n", "- 実験パイプラインの構築支援は、02_experimental_phaseとパッケージ内のコードipynbで行う\n", " - 02_experimental_phaseではパイプラインの構築(pipeline.yaml作成)の支援と、パッケージのコードに依存関係を記述する支援の2つのセクションを用意する。\n", " - また、パッケージ内のコードipynbでは、最上部に依存関係を記述するセクションを用意する。(Jupyterlab_templatesが使えれば、最上部にparametersタグをつきの依存関係記述用セルを設置したコード用jupyterlab_templatesを用意する)\n", " - pipeline.yamlの保存先をどこにするか また、pipeline.yamlは1つだと想定するのか" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. 前準備\n", "\n", "パイプラインを構築するには、実行順を指定したい実験の全てのコードで依存関係を定義する必要があります。 \n", "コードに依存関係を定義していない場合は、02_experimental_phaseの[依存関係を定義する](./define_experimental_dependencies.ipynb)セクションで依存関係を定義してください。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. パイプライン設定ファイルを生成する\n", "\n", "このステップでは、パイプライン全体の実行に必要な設定ファイルをシステムが作成します。以下のセルを実行してください。" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from ruamel.yaml import YAML\n", "import os\n", "import glob\n", "\n", "files = glob.glob(os.getcwd()+'/*')\n", "code_dict = {}\n", "\n", "# YAMLのベースとなる辞書\n", "yml = {'tasks': []}\n", "\n", "for file in files:\n", " # ソースリストに載っている拡張子なら辞書作成する処理に修正したい\n", " if os.path.splitext(file)[1] == '.ipynb':\n", " code_dict['source'] = os.path.basename(file)\n", " code_dict['product'] = 'output/log_' + os.path.basename(file)\n", " yml['tasks'].append(code_dict)\n", " code_dict = {}\n", "\n", "with open('pipeline.yaml', 'w') as file:\n", " yaml = YAML()\n", " yaml.default_flow_style = False\n", " yaml.dump(yml, file)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. 変更内容を書き戻す" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import papermill as pm\n", "\n", "pm.execute_notebook(\n", " '../util/datalad_save_push.ipynb',\n", " '-',\n", " parameters = dict(SAVE_MESSAGE = 'パイプライン構築', PATH = [未定])\n", ")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.8" } }, "nbformat": 4, "nbformat_minor": 4 }