From 5bd7b040697cc78c42dd975da1832e787769e449 Mon Sep 17 00:00:00 2001 From: Hiroshi Noji Date: Tue, 3 Feb 2015 19:23:47 +0900 Subject: [PATCH 1/8] Update quickstart (halfway) --- document/source/figures/size_vs_accuracy.png | Bin 0 -> 48506 bytes document/source/quickstart.rst | 107 +++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 document/source/figures/size_vs_accuracy.png create mode 100644 document/source/quickstart.rst diff --git a/document/source/figures/size_vs_accuracy.png b/document/source/figures/size_vs_accuracy.png new file mode 100644 index 0000000000000000000000000000000000000000..059971802877dbb96a2f27df12d4f8b612eff39f GIT binary patch literal 48506 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 literal 0 HcmV?d00001 diff --git a/document/source/quickstart.rst b/document/source/quickstart.rst new file mode 100644 index 0000000..d5018d9 --- /dev/null +++ b/document/source/quickstart.rst @@ -0,0 +1,107 @@ +クイックスタート +---------------- + +maf は機械学習の実験管理などをやりやすくするためのツールです。ここでは maf の基本的な使い方を具体例を通して紹介します。 + +インストール +~~~~~~~~~~~~ + +maf では実験を一つのディレクトリの中で行うことを想定しています。 +まずはどこかのディレクトリに移動しましょう。 + +.. code-block:: sh + + $ mkdir experiment && cd experiment + +mafを動かすためには、 ``waf`` および ``maf.py`` という二つのpythonスクリプトが必要です。 +これらは実験を行う各ディレクトリ毎に配置するのが良いでしょう。 +これらは以下のコマンドでダウンロードできます。 + +.. code-block:: sh + + $ wget https://github.com/pfi/maf/raw/master/waf && wget https://github.com/pfi/maf/raw/master/maf.py && chmod +x waf + +mafでは実験の手順を ``wscript`` というファイルに記述していきます。 +以下は実験ではないですが、 ``wscript`` の書き方の簡単な例です。 + +.. code-block:: sh + + $ cat wscript + import maf + + def configure(conf): pass + + def build(exp): + exp(target='output', + rule='echo hoge > ${TGT}') + + $ ./waf configure # wscriptに書いたconfigureが実行される。実験を始める前に必要。 + Setting top to : /.../experiment + Setting out to : /.../experiment/build + 'configure' finished successfully (0.004s) + $ ./waf build # wscriptに書いたbuildの手順が実行される。 + Waf: Entering directory `/.../experiment/build' + [1/1] output: -> build/output + Waf: Leaving directory `/.../experiment/build' + 'build' finished successfully (0.016s) + $ cat build/output + hoge + +``wscript`` 自体もpythonのスクリプトとなっていて、これが ``waf`` を実行することで読み込まれます。 +最初のコマンド ``configure`` はとりあえず気にする必要はありませんが、実験を行う前に実行する必要があります。 +次の ``build`` がメインの実行で、 ``wscript`` に書いた ``build`` 関数を実行します。 +この例では、ここに書いた ``rule`` 内の ``${TGT}`` が自動で置き換えられた、以下のコマンドが実行されます。 + +.. code-block:: sh + + $ echo hoge > build/output + +この ``${TGT}`` の対応が、 ``target`` 変数で指定されています。 +maf では実験途中のモデルや結果を繋げて処理を行っていきますが、このように結果は全て自動的に ``build`` ディレクトリ以下に作られます。 + +実際の実験例 +~~~~~~~~~~~~ + +mafで実験がやりやすくなることを実感してもらうために、もう少し具体的な例を紹介します。 +mafが特に役に立つのは、様々なパラメータや手法に関する試行錯誤を行わないといけない場面です。 +簡単な例として、ここでは `LIBLINEAR `_ を使用し、このパラメータのチューニングを行う場面を考えます。 +mafを使えば、図1のような特定のパラメータを変化させた場合の性能の変化や、図2のような訓練データ量に対する性能の変化といった結果を、20行程度の ``wscript`` を書くことで得ることができます。 + +.. _size_vs_accuracy: +.. figure:: figures/size_vs_accuracy.png + :scale: 40% + +.. code-block:: python + + import maf + import maflib.util + import maflib.plot + + def configure(conf): pass + + def build(exp): + exp(source='mnist.scale', + target='model', + parameters=maflib.util.product({ + 's': [0, 1, 2, 3], + 'C': [0.001, 0.01, 0.1, 1, 10]}), + rule='liblinear-train -s ${s} -c ${C} ${SRC} ${TGT} > /dev/null') + + exp(source='mnist.scale.t model', + target='accuracy', + rule='liblinear-predict ${SRC} /dev/null > ${TGT}') + + exp(source='accuracy', + target='accuracy.json', + rule=maflib.rules.convert_libsvm_accuracy) + + exp(source='accuracy.json', + target='accuracy.png', + for_each='', + rule=maflib.plot.plot_line( + x={'key': 'C', 'scale': 'log'}, + y='accuracy', + legend={'key': 's'})) + + + From db67e1421810f69323ebba37e7c1de41395aaf85 Mon Sep 17 00:00:00 2001 From: Hiroshi Noji Date: Tue, 17 Feb 2015 18:37:57 +0900 Subject: [PATCH 2/8] Once filled quickstart --- document/source/figures/c_vs_accuracy.png | Bin 0 -> 41147 bytes document/source/quickstart.rst | 309 ++++++++++++++++++++-- 2 files changed, 290 insertions(+), 19 deletions(-) create mode 100644 document/source/figures/c_vs_accuracy.png diff --git a/document/source/figures/c_vs_accuracy.png b/document/source/figures/c_vs_accuracy.png new file mode 100644 index 0000000000000000000000000000000000000000..556de67f18f07108c2c9d31060133689becb9779 GIT binary patch literal 41147 zcmeFZbySsW_cn?FNP|e1fPi#&DUCEpx0G~u3JOR{H%NCQ9Rkv^=6a zt+l0Hn2Bcd&EMj|H2wsi`x`7$(&3}kPR&{?g2~CrA)j(IA}$u6JGYLGj-AP3JPd&& zxXsPYQtuD{wnY*cX`&flhd8QMYqQwzJgqDF_;BBFx#Vfjm)3lDGB9)C!ezT8>)^l! zXJTR^CL!T)@M}6cK3?MTaB;T6@L74w1tB)ItifWVGoDvDwDmT^vb-feQ#9x#o9sTg zGYI4K?iAwKiN;-FFYLSArZ`?E1f*whscn;+=t=-_}e ze|{wdXVbV#4d-$&=e%@DOG|5bF!yW0eLL-Z^_f9mG}YIjplYw{lPMk&nA1d|=gYuj z26eudl9I~a78Mn>=ONyosa$U^7q(w}4rgy~zb$Cf6G1XDHN|E+n1}#DeEyupV&ZM< z{lz?Pgw8)lbUeDefSXhP@Bx{K+vd-v!|I-8RYK>g0XPgeVt$wX=5pVQS+nmUA)mGe zlePs9ua4K@&i+mok7k^Mr#FJf<35NZBHtUuyN8Q}*O{z2Dban%3QM8>lMy#bCh@D(Q2K;&Z-V z&7;F);YXN&5;X8_eQ@2o$@O$0(pSfKks1$nkAAr_2`5LL7}bv3@>y9~_$8&Un1rHf@pA-Bs14otljx6PAZAwGauC5fh`nv#_93*RdC` zhUBvcM?~1TZZF^(SsYw`4u`l_W@P7u+(n>GjFx`JM!m@l1u`)$Q%+`Lw>{UTNKwFw~Cc3fz%K&1a>(R4JNDx8qN? z7@1ME_$rodl9pbrq4&g$-nx#Fwvo$32hyImH#L)PU?1|Hw+#)6kj2TGx^l=Se&j&a zU*-`KGo~8bRN;)Y&CPJ;6A16&e(239iR;PDUQ&~hWOaaFXO&%g%Wdb*=-K1nV$+P6 zj7W_4LPA$Mt|Y#EE@7|r^`Clsy*N4NBr_vLOm`<1~ z_r1(RC0p9CZ)k5%^`)xdkW83E{1Y=cD2vOiH;BUA{5t?cNaN8Op*YYw<3-fFB$ujlLr(Y28_P%WE)N?l;*|ytn zqo8i{GmT8+wXs)YEamL|ni|bDeJAvI=jd}gzs%-+dM?i*NYB^skEr>KM+1?@uQqJgM}Yk$6bo%GS1Lm0Jd!|d0)S?$-v zV2~F<%-iAnu#z>t_;%i)G+{w0hsJL7@;wh@hmoIW0gEO)vLjDML@}@k2>KRXmxrJ}mrVnX z4ivf?p7i;cyDx?>9oGxJ@^f9+nI$pp^g49!8&A@9yZ17f~Ati(ert ztJuw6n>W_6(7ntX@Zk5Gsvi?IBmAFE;o+%RYKFZ)S?_7_WT#<@D5jvOxp*%&M*?F~ zQRrFSo1a9brSCl=7IAQ%-(1;&H9m5F#;msHy0Hv0#WLUiN7Uw6J>}5I(rHU?Mr`s6 zYU4@2e94)$5@5G`9b@$A#pUVg1&g>?@_!aeQppgy7#CO43o$c!|3p7NcBO_vA}Hvz zTF6_fdbXa8;;DX|+IK0$e@C!pf}Rk1-qm%UtLjNlk92Wv@Nd$59Lj?b9f5|Y?OV{}-%U;ndIKNC&kY3I^@ zh?$Wz60V)9*z>mFNVABc?t&vb>oppRv~(Do>@`t7a5y$s!lH)^IuREXQA|uHm{(Tb zQBi#Zhbs8&S&N|T|8Y+t@_fW4eAV1NlHb0?@~8blglFwBHImmMj>*afYd(kVzWE

ky&SVM2J0=;)|JY|cf54PLBl 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 build/output この ``${TGT}`` の対応が、 ``target`` 変数で指定されています。 -maf では実験途中のモデルや結果を繋げて処理を行っていきますが、このように結果は全て自動的に ``build`` ディレクトリ以下に作られます。 +mafでは実験途中のモデルや結果を繋げて処理を行っていきますが、このように結果は全て ``build`` ディレクトリ以下に作られます。 実際の実験例 -~~~~~~~~~~~~ +------------ -mafで実験がやりやすくなることを実感してもらうために、もう少し具体的な例を紹介します。 +もう少し具体的な例を通して、mafでの実験手順を紹介します。 mafが特に役に立つのは、様々なパラメータや手法に関する試行錯誤を行わないといけない場面です。 簡単な例として、ここでは `LIBLINEAR `_ を使用し、このパラメータのチューニングを行う場面を考えます。 -mafを使えば、図1のような特定のパラメータを変化させた場合の性能の変化や、図2のような訓練データ量に対する性能の変化といった結果を、20行程度の ``wscript`` を書くことで得ることができます。 +mafを使えば、Figure :num:`c-vs-accuracy` のような特定のパラメータを変化させた場合の性能の変化や、Figure :num:`size-vs-accuracy` のような訓練データ量に対する性能の変化といった結果を、20行程度の ``wscript`` を書くことで得ることができます。 +またmafでは試行錯誤をやりやすくするために、パラメータの設定の変更などが容易に行えます。 +例えばFigure :num:`c-vs-accuracy` ではパラメータ ``C`` の値を ``10^-3`` から ``1`` まで変化させていますが、もっと大きくした ``C=10`` の値まで含めたいと思った場合、そのように ``wscript`` を書き換えれば ``C=10`` での実験のみが追加で行われ、新しいグラフを得ることができます。 +つまり既に実行済みのパラメータ設定を自動的に検出し、図を描くのに足りない設定のみを追加で実行してくれます。 + +.. _c_vs_accuracy: +.. figure:: figures/c_vs_accuracy.png + :height: 350px + :scale: 80% + + 手法毎の、パラメータCを変化させたときの性能変化 .. _size_vs_accuracy: .. figure:: figures/size_vs_accuracy.png - :scale: 40% + :height: 350px + :scale: 80% + + 訓練データを増やしたときの学習曲線 + +データとツールの準備 +~~~~~~~~~~~~~~~~~~~~ + +ここでは実験用のツールとして `LIBLINEAR `_ を、データとして `MNIST `_ という画像処理の分類タスク用のデータを用います。 +LIBLINEARは各データが特徴ベクトルに変換された入力を必要としますが、MNIST をこの形式に変換したデータが手に入るのでこれを使いましょう。 + +.. code-block:: sh + + $ wget http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/mnist.scale.bz2 + $ wget http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/mnist.scale.t.bz2 + $ bunzip2 *.bz2 + $ ls + maf.py mnist.scale mnist.scale.t waf wscript + +``mnist.scale`` が訓練データ、 ``mnist.scale.t`` がテストデータです。 + +LIBLINEARがマシンにインストールされていない場合は事前にインストールが必要です。 +以下は各種パッケージ管理でのインストール例です。 + +.. code-block:: sh + + $ sudo apt-get install liblinear1 liblinear-tools # apt + $ sudo yum install liblinear liblinear-devel # yum + $ brew install liblinear # homebrew + +これで実験の準備が整いました。 + +図を描くためのwscript +~~~~~~~~~~~~~~~~~~~~~ + +wscript を以下のように書き換えて実行 ( ``./waf build`` ) すると、Figure :num:`c-vs-accuracy` を得ることができます。 +結果は ``build/accuracy.png`` に得られます。 .. code-block:: python - + import maf import maflib.util import maflib.plot @@ -80,11 +126,11 @@ mafを使えば、図1のような特定のパラメータを変化させた場 def configure(conf): pass def build(exp): - exp(source='mnist.scale', + exp(source='mnist.scale', # exp(...) を複数定義すると、それらが順に実行される target='model', parameters=maflib.util.product({ 's': [0, 1, 2, 3], - 'C': [0.001, 0.01, 0.1, 1, 10]}), + 'C': [0.001, 0.01, 0.1, 1]}), rule='liblinear-train -s ${s} -c ${C} ${SRC} ${TGT} > /dev/null') exp(source='mnist.scale.t model', @@ -95,13 +141,238 @@ mafを使えば、図1のような特定のパラメータを変化させた場 target='accuracy.json', rule=maflib.rules.convert_libsvm_accuracy) - exp(source='accuracy.json', - target='accuracy.png', - for_each='', - rule=maflib.plot.plot_line( - x={'key': 'C', 'scale': 'log'}, - y='accuracy', - legend={'key': 's'})) + exp(source='accuracy.json', + target='accuracy.png', # 最終的な結果が、 build/accuracy.png に得られる + for_each='', + rule=maflib.plot.plot_line( + x = {'key': 'C', 'scale': 'log'}, + y = 'accuracy', + legend = {'key': 's'})) + +この例では、 ``build(exp)`` の中に計4個の ``exp(...)`` が存在します。 +実験は、訓練データからのモデルの学習、それを使ってのテストデータの予測など複数の手順からなりますが、この際の各手順を ``exp(...)`` の中に定義しています。 +具体的には、このwscriptでは以下のような手順で実験が進みます。 + +1. 様々なパラメータの設定で ``liblinear-train`` を実行し、訓練後のモデルファイルの集合を得る。 +2. 得られた各モデルファイルを用いて ``liblinear-predict`` を実行し、モデル毎のテストデータに対する精度を計算する。 +3. 得られた各精度の数値をjson形式に変換する。次のグラフ描画のために必要。 +4. これまで得られた各モデル毎の精度をもとに、グラフを描画する。 + +パラメータの管理 +~~~~~~~~~~~~~~~~~ + +Figure :num:`c-vs-accuracy` では、横軸で ``C`` を変化させ、各 ``s`` の値毎に精度をプロットしています。 +この ``C`` と ``s`` はどちらもLIBLINEARのパラメータです。 + +.. code-block:: none + + $ liblinear-train + Usage: train [options] training_set_file [model_file] + options: + -s type : set type of solver (default 1) + for multi-class classification + 0 -- L2-regularized logistic regression (primal) + 1 -- L2-regularized L2-loss support vector classification (dual) + 2 -- L2-regularized L2-loss support vector classification (primal) + 3 -- L2-regularized L1-loss support vector classification (dual) + 4 -- support vector classification by Crammer and Singer + ... + -c cost : set the parameter C (default 1) + ... + +このような図を描くためには、各 ``s`` の値毎に、 ``C`` の値を変えて訓練及びテストを行った結果を保持しないといけません。 +mafではこのようなパラメータの組み合わせを保持することが簡単にできます。 +最初の ``exp`` 呼び出しは以下のようになっています。 + +.. code-block:: python + + exp(source='mnist.scale', + target='model', + parameters=maflib.util.product({ + 's': [0, 1, 2, 3], + 'C': [0.001, 0.01, 0.1, 1]}), + rule='liblinear-train -s ${s} -c ${C} ${SRC} ${TGT} > /dev/null') + +一番最初の例と違うのは、 ``parameters`` という変数が指定されている点です。 +ここで用いている :py:func:`maflib.util.product` は、このように複数のリストを与えると、それらの直積を計算してくれる関数です。 +そして、この組み合わせ全てに対して、 ``rule`` で指定したコマンドが実行されます。 +この ``exp`` では、以下のように計 ``4*4=16`` 個のコマンドが実行されます。 + +.. code-block:: sh + + $ liblinear-train -s 0 -c 0.001 mnist.scale build/model/0-model > /dev/null + $ liblinear-train -s 1 -c 0.001 mnist.scale build/model/1-model > /dev/null + $ liblinear-train -s 2 -c 0.001 mnist.scale build/model/2-model > /dev/null + ... + $ liblinear-train -s 2 -c 1 mnist.scale build/model/14-model > /dev/null + $ liblinear-train -s 3 -c 1 mnist.scale build/model/15-model > /dev/null + +このように全てのパラメータの組に対して訓練が実行され、各実行で ``${s}`` などの部分が代入されています。 +また ``${TGT}`` の代入のされ方は先ほどと似ていますが、 ``build/model/0-model`` のように、 ``target`` で指定した出力先はディレクトリとなり、その中にパラメータ別の結果がまとめられます。 + +実験同士の依存関係 +~~~~~~~~~~~~~~~~~~~ + +以下は二番目の ``exp`` 呼び出しです。 + +.. code-block:: python + + exp(source='mnist.scale.t model', + target='accuracy', + rule='liblinear-predict ${SRC} /dev/null > ${TGT}') + +この意味を理解するのも、ここから実際にどのようなコマンドが生成されるかを見たほうが分かりやすいと思います。 +これは以下のように、先ほどと同じく16個のコマンドを生成します。 + +.. code-block:: sh + + $ liblinear-predict mnist.scale.t build/model/0-model /dev/null > build/accuracy/0-accuracy + $ liblinear-predict mnist.scale.t build/model/1-model /dev/null > build/accuracy/1-accuracy + ... + $ liblinear-predict mnist.scale.t build/model/15-model /dev/null > build/accuracy/16-accuracy + +これを見ると以下のことが分かります。 + +1. ``${SRC}`` には、指定した ``source`` が展開された値が代入されます。 + ``source`` には ``'mnist.scale.t model'`` のように複数の値を指定することができます。 + このうち ``mnist.scale.t`` は現在のディレクトリのファイルを指し、全ての実行で変わりませんが、 ``model`` は例のように、先ほど作られた ``build/model/`` 以下のファイルが順に指定され、実行されます。 +2. ``${TGT}`` は、前回と似たように展開されます。 + 今回は ``parameters`` を指定していませんが、代わりに ``model`` が一つ一つのパラメータの組み合わせと結びついているので、各 ``model`` 毎に、 ``build/accuracy`` 以下に結果が格納されます。 + +ここで重要な点は、実験同士の依存関係です。 +今回 ``source`` に指定した ``model`` は、先ほど ``target`` に指定した ``model`` と同じオブジェクトを指す、という風に理解されます。 +このように、 ``source`` や ``target`` に直接ファイルが存在しない名前を指定すると、それら二つの実験の間に依存関係を成り立たせることができます。 +mafはこの依存関係を自動的に解決し、例えば + +.. code-block:: sh + + $ liblinear-predict mnist.scale.t build/model/0-model /dev/null > build/accuracy/0-accuracy + +というコマンドは、 + +.. code-block:: sh + + $ liblinear-train -s 0 -c 0.001 mnist.scale build/model/0-model > /dev/null + +が終了し ``0-model`` が生成されるまで実行されません。 + +関数ルール +~~~~~~~~~~~ + +三番目の ``exp`` 呼び出しはデータの変換を行います。 + +.. code-block:: python + + exp(source='accuracy', + target='accuracy.json', + rule=maflib.rules.convert_libsvm_accuracy) + +この ``accuracy`` は二番目の ``target`` と同じものを指すので、これらの間には依存関係が生まれます。 + +ここでは ``rule`` の指定方法が先ほどまでと異なっています。 +これまでの例では、 ``rule`` にはシェルのコマンドを指定してきましたが、より柔軟にpythonのコマンドを指定することもできます。 +これはその例となっていて、 :py:func:`maflib.rules.convert_libsvm_accuracy` 関数を実行します。 +自分で関数ルールを定義する方法は、...をご覧ください。 + +ここでは何が起きているかだけの説明にとどめます。 + +.. code-block:: sh + + $ cat build/accuracy/0-accuracy + Accuracy = 88.99% (8899/10000) + $ cat build/accuracy.json/0-accuracy.json + {"accuracy": 88.99} + + +``0-accuracy`` などは、 LIBSVM の標準出力を保持したものです。 +:py:func:`maflib.rules.convert_libsvm_accuracy` は、この出力形式を読み取り、それをjsonに変換します。 +このようにjsonにするのは、次のプロットがjson形式の入力を必要とするためです。 +LIBLINEARの出力をjsonに変換するには、この用意された関数を使えば良いのですが、他のソフトの出力をjsonに変換するには、似たような関数を定義する必要があります。 + +集約とプロット +~~~~~~~~~~~~~~~ + +これまでで ``build/accuracy.json`` が得られていて、この中にはパラメータの組み合わせ毎のテストデータに対する精度がjson形式で保存されています。 +最後に、この結果をもとに、パラメータ毎の精度をグラフにまとめます。 + +.. code-block:: python + + exp(source='accuracy.json', + target='accuracy.png', + for_each='', + rule=maflib.plot.plot_line( + x = {'key': 'C', 'scale': 'log'}, + y = 'accuracy', + legend = {'key': 's'})) + +ここで見慣れないのは ``for_each`` です。 +今回は空文字を指定していますが、これは今回の ``plot`` など、得られた結果を集約する場合に必要になるものです。 +今回は全ての結果を一つのグラフにまとめていますが、場合によっては、特定のパラメータの値毎にグラフを複数に分けたい場合も存在します。 +そのような時は、 ``for_each`` に指定したパラメータの値毎にグラフが作成されます。 + +:py:func:`maflib.plot.plot_line` も、用意された、グラフを書く際に便利な関数です。 +例のように、各x,y軸の設定などを指定することができます。 +``y = 'accuracy',`` は、 accuracy.jsonの ``{"accuracy": 88.99}`` の値を取り出していることを意味します。 + +``for_each`` を使うタスクは一般に集約タスクと呼ばれます。 +これについての詳細は、 ... をご覧ください。 + + +別の実験:データ量を変化させる +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +これまで一つのwscriptを例に、mafの簡単な使い方を紹介しましたが、何ができるかをもう少し見るために、別の実験を紹介します。 +この例では、Figure :num:`size-vs-accuracy` のグラフを描くことを考えます。 +先ほどはパラメータ ``C`` の値を変化させましたが、今回は訓練データを変化させた場合のデータ量に対する精度をプロットしています。 +異なる実験は異なるディレクトリで行った方が良いので、まずディレクトリを移動して、ファイルを用意します。 + +.. code-block:: sh + + $ mkdir ../experiment2 && cd ../experiment2 + $ cp ../experiment/maf.py ./ + $ cp ../experiment/waf ./ + +wscriptは以下のようになります。 + +.. code-block:: python + + import maf + import maflib.util + import maflib.plot + + def configure(conf): pass + + def build(exp): + exp(source='mnist.scale', + target='traindata', + parameters=maflib.util.product({'datasize': [10000, 20000, 30000, 40000, 50000, 60000]}), + rule='head -n ${datasize} ${SRC} > ${TGT}') + + exp(source='traindata', + target='model', + parameters=maflib.util.product({'s': [0, 1, 2, 3]}), + rule='liblinear-train -s ${s} -c 1.0 ${SRC} ${TGT} > /dev/null') + + exp(source='mnist.scale.t model', + target='accuracy', + rule='liblinear-predict ${SRC} /dev/null > ${TGT}') + + exp(source='accuracy', + target='accuracy.json', + rule=maflib.rules.convert_libsvm_accuracy) + exp(source='accuracy.json', + target='size_vs_accuracy.png', + for_each='', + rule=maflib.plot.plot_line( + x='datasize', + y='accuracy', + legend={'key': 's'})) +基本的に先ほどとかなり似ています。 +異なるのは、主に最初の二つです。 +まず異なるサイズの訓練データ ``traindata`` を準備します。 +``mnist.scale`` は一行が一つの訓練例となっているので、これでOKです。 +二つ目の ``exp`` が先ほどの最初に対応しますが、今回は ``traindata`` を指定しているので、用意した異なる長さのデータ毎に、各パラメータで実行が行われます。 +このようにパラメータの設定は追加していくことが可能で、今回の例では ``model`` や ``accuracy`` などは、各 ``datasize`` と ``s`` の組み合わせ毎に結果が保持されます。 From e7be8494dd7c498a69d2a4490a4047cd1f44c9b5 Mon Sep 17 00:00:00 2001 From: Hiroshi Noji Date: Tue, 17 Feb 2015 19:43:19 +0900 Subject: [PATCH 3/8] Add description to modifying wscript --- document/source/quickstart.rst | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/document/source/quickstart.rst b/document/source/quickstart.rst index fc288ad..32b66f9 100644 --- a/document/source/quickstart.rst +++ b/document/source/quickstart.rst @@ -317,6 +317,53 @@ LIBLINEARの出力をjsonに変換するには、この用意された関数を ``for_each`` を使うタスクは一般に集約タスクと呼ばれます。 これについての詳細は、 ... をご覧ください。 +実験設定の追加 +~~~~~~~~~~~~~~ + +これまではmafを、パラメータの組み合わせを変化させた場合のグラフの簡単描画ツールのように説明してきました。 +そういう側面もあるのですが、mafのもう一つの売りは、実験結果を構造的に管理することで、結果の再利用がしやすくなる点です。 +言い換えると、実験の条件を書き換えたり修正した場合、まだ実行されていない、実行する必要のあるタスクだけを自動的に実行します。 + +例えば Figure :num:`c-vs-accuracy` で、大まかに ``C`` を大きくするほど精度が良くなる傾向が見られるので、より大きな ``C=10`` での実験も追加してグラフを書きたいとします。 +この場合、次のように最初 ``exp`` の ``C`` に値を追加しましょう。 + +.. code-block:: python + + 'C': [0.001, 0.01, 0.1, 1, 10]}), + +その後再実行を行うと、 ``C=10`` まで含んだグラフを得ることができます。 + +.. code-block:: python + + $ ./waf build + Waf: Entering directory `/Users/noji/private-maf/experiment/build' + [20/61] 16-model: mnist.scale -> build/model/16-model + [21/61] 17-model: mnist.scale -> build/model/17-model + ... + [61/61] accuracy.png: build/accuracy.json/4-accuracy.json build/accuracy.json/10-accuracy.json ... + +この際に、訓練や評価などは、 ``C=10`` の設定が関わる部分だけが追加で実行されます。 +最後のプロットは全ての結果をまとめるので、新しく得られた結果があればそれを関知し、更新します。 + +これとは逆に、 ``C`` の値を減らした場合、例えば + +.. code-block:: python + + 'C': [0.001, 0.01, 0.1]}), + +とすると、すでに必要な結果は全て揃っていますが、グラフを描く際の範囲が変化したことを関知し、 + +.. code-block:: python + + $ ./waf build + Waf: Entering directory `/Users/noji/private-maf/experiment/build' + [37/37] accuracy.png: build/accuracy.json/4-accuracy.json build/accuracy.json/10-accuracy.json ... + +と、グラフ描画を新しく行います。 +新しいグラフには、 ``C`` が ``0.1`` 以下の範囲で結果が描画されます。 + +このように ``wscript`` を書き換えて再実行する場合、その都度バージョン管理で結果を保持しておくことをお勧めします。 +TODO: もうちょっと書く。 別の実験:データ量を変化させる ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From ec3168f0ec034316d7385e7da243a6c5277c6e25 Mon Sep 17 00:00:00 2001 From: Hiroshi Noji Date: Tue, 3 Mar 2015 13:54:15 +0900 Subject: [PATCH 4/8] Add quickstart to index --- document/source/index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/document/source/index.rst b/document/source/index.rst index 2928b47..0522a23 100644 --- a/document/source/index.rst +++ b/document/source/index.rst @@ -12,6 +12,7 @@ https://github.com/pfi/maf で開発されています。 .. toctree:: :maxdepth: 2 + quickstart tutorial/index 古いドキュメント From f77ab0a8f84976481dec362ed8fb6b360e6deb90 Mon Sep 17 00:00:00 2001 From: Hiroshi Noji Date: Tue, 3 Mar 2015 14:11:54 +0900 Subject: [PATCH 5/8] Introduce abbreviation of waf build --- document/source/quickstart.rst | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/document/source/quickstart.rst b/document/source/quickstart.rst index 32b66f9..80e3f73 100644 --- a/document/source/quickstart.rst +++ b/document/source/quickstart.rst @@ -59,6 +59,14 @@ mafでは実験の手順を ``wscript`` というファイルに記述してい この ``${TGT}`` の対応が、 ``target`` 変数で指定されています。 mafでは実験途中のモデルや結果を繋げて処理を行っていきますが、このように結果は全て ``build`` ディレクトリ以下に作られます。 +``./waf build`` がメインのコマンドですが、これは頻繁に使うので、 ``build`` を省略しても良いことになっています。 + +.. code-block:: sh + + $ ./waf # ./waf build の省略形 + +以下の例では、このように ``build`` を省略します。 + 実際の実験例 ------------ @@ -114,7 +122,7 @@ LIBLINEARがマシンにインストールされていない場合は事前に 図を描くためのwscript ~~~~~~~~~~~~~~~~~~~~~ -wscript を以下のように書き換えて実行 ( ``./waf build`` ) すると、Figure :num:`c-vs-accuracy` を得ることができます。 +wscript を以下のように書き換えて実行 ( ``./waf`` ) すると、Figure :num:`c-vs-accuracy` を得ることができます。 結果は ``build/accuracy.png`` に得られます。 .. code-block:: python @@ -335,7 +343,7 @@ LIBLINEARの出力をjsonに変換するには、この用意された関数を .. code-block:: python - $ ./waf build + $ ./waf Waf: Entering directory `/Users/noji/private-maf/experiment/build' [20/61] 16-model: mnist.scale -> build/model/16-model [21/61] 17-model: mnist.scale -> build/model/17-model @@ -355,7 +363,7 @@ LIBLINEARの出力をjsonに変換するには、この用意された関数を .. code-block:: python - $ ./waf build + $ ./waf Waf: Entering directory `/Users/noji/private-maf/experiment/build' [37/37] accuracy.png: build/accuracy.json/4-accuracy.json build/accuracy.json/10-accuracy.json ... From cb404823f0b5fc9993ff596fe0747253553d6336 Mon Sep 17 00:00:00 2001 From: Hiroshi Noji Date: Tue, 10 Mar 2015 19:03:45 +0900 Subject: [PATCH 6/8] Chage data of quickstart to news20 --- document/source/figures/c_vs_accuracy.png | Bin 41147 -> 44075 bytes document/source/figures/size_vs_accuracy.png | Bin 48506 -> 44869 bytes document/source/quickstart.rst | 54 +++++++++---------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/document/source/figures/c_vs_accuracy.png b/document/source/figures/c_vs_accuracy.png index 556de67f18f07108c2c9d31060133689becb9779..9471cc4e298e919834af2e476be03a7a9fe2efbd 100644 GIT binary patch literal 44075 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 literal 41147 zcmeFZbySsW_cn?FNP|e1fPi#&DUCEpx0G~u3JOR{H%NCQ9Rkv^=6a zt+l0Hn2Bcd&EMj|H2wsi`x`7$(&3}kPR&{?g2~CrA)j(IA}$u6JGYLGj-AP3JPd&& zxXsPYQtuD{wnY*cX`&flhd8QMYqQwzJgqDF_;BBFx#Vfjm)3lDGB9)C!ezT8>)^l! zXJTR^CL!T)@M}6cK3?MTaB;T6@L74w1tB)ItifWVGoDvDwDmT^vb-feQ#9x#o9sTg zGYI4K?iAwKiN;-FFYLSArZ`?E1f*whscn;+=t=-_}e ze|{wdXVbV#4d-$&=e%@DOG|5bF!yW0eLL-Z^_f9mG}YIjplYw{lPMk&nA1d|=gYuj z26eudl9I~a78Mn>=ONyosa$U^7q(w}4rgy~zb$Cf6G1XDHN|E+n1}#DeEyupV&ZM< z{lz?Pgw8)lbUeDefSXhP@Bx{K+vd-v!|I-8RYK>g0XPgeVt$wX=5pVQS+nmUA)mGe zlePs9ua4K@&i+mok7k^Mr#FJf<35NZBHtUuyN8Q}*O{z2Dban%3QM8>lMy#bCh@D(Q2K;&Z-V z&7;F);YXN&5;X8_eQ@2o$@O$0(pSfKks1$nkAAr_2`5LL7}bv3@>y9~_$8&Un1rHf@pA-Bs14otljx6PAZAwGauC5fh`nv#_93*RdC` zhUBvcM?~1TZZF^(SsYw`4u`l_W@P7u+(n>GjFx`JM!m@l1u`)$Q%+`Lw>{UTNKwFw~Cc3fz%K&1a>(R4JNDx8qN? z7@1ME_$rodl9pbrq4&g$-nx#Fwvo$32hyImH#L)PU?1|Hw+#)6kj2TGx^l=Se&j&a zU*-`KGo~8bRN;)Y&CPJ;6A16&e(239iR;PDUQ&~hWOaaFXO&%g%Wdb*=-K1nV$+P6 zj7W_4LPA$Mt|Y#EE@7|r^`Clsy*N4NBr_vLOm`<1~ z_r1(RC0p9CZ)k5%^`)xdkW83E{1Y=cD2vOiH;BUA{5t?cNaN8Op*YYw<3-fFB$ujlLr(Y28_P%WE)N?l;*|ytn zqo8i{GmT8+wXs)YEamL|ni|bDeJAvI=jd}gzs%-+dM?i*NYB^skEr>KM+1?@uQqJgM}Yk$6bo%GS1Lm0Jd!|d0)S?$-v zV2~F<%-iAnu#z>t_;%i)G+{w0hsJL7@;wh@hmoIW0gEO)vLjDML@}@k2>KRXmxrJ}mrVnX z4ivf?p7i;cyDx?>9oGxJ@^f9+nI$pp^g49!8&A@9yZ17f~Ati(ert ztJuw6n>W_6(7ntX@Zk5Gsvi?IBmAFE;o+%RYKFZ)S?_7_WT#<@D5jvOxp*%&M*?F~ zQRrFSo1a9brSCl=7IAQ%-(1;&H9m5F#;msHy0Hv0#WLUiN7Uw6J>}5I(rHU?Mr`s6 zYU4@2e94)$5@5G`9b@$A#pUVg1&g>?@_!aeQppgy7#CO43o$c!|3p7NcBO_vA}Hvz zTF6_fdbXa8;;DX|+IK0$e@C!pf}Rk1-qm%UtLjNlk92Wv@Nd$59Lj?b9f5|Y?OV{}-%U;ndIKNC&kY3I^@ zh?$Wz60V)9*z>mFNVABc?t&vb>oppRv~(Do>@`t7a5y$s!lH)^IuREXQA|uHm{(Tb zQBi#Zhbs8&S&N|T|8Y+t@_fW4eAV1NlHb0?@~8blglFwBHImmMj>*afYd(kVzWE

ky&SVM2J0=;)|JY|cf54PLBl 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 UrM)iy2?hUHZM8EmVz|Zr2S}JflK=n! literal 48506 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 diff --git a/document/source/quickstart.rst b/document/source/quickstart.rst index 80e3f73..7296f33 100644 --- a/document/source/quickstart.rst +++ b/document/source/quickstart.rst @@ -95,18 +95,18 @@ mafを使えば、Figure :num:`c-vs-accuracy` のような特定のパラメー データとツールの準備 ~~~~~~~~~~~~~~~~~~~~ -ここでは実験用のツールとして `LIBLINEAR `_ を、データとして `MNIST `_ という画像処理の分類タスク用のデータを用います。 +ここでは実験用のツールとして `LIBLINEAR `_ を、データとして `20 News `_ という文書分類タスク用のデータを用います。 LIBLINEARは各データが特徴ベクトルに変換された入力を必要としますが、MNIST をこの形式に変換したデータが手に入るのでこれを使いましょう。 .. code-block:: sh - $ wget http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/mnist.scale.bz2 - $ wget http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/mnist.scale.t.bz2 + $ wget http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/news20.scale.bz2 + $ wget http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/news20.t.scale.bz2 $ bunzip2 *.bz2 $ ls - maf.py mnist.scale mnist.scale.t waf wscript + maf.py news20.scale news20.t.scale waf wscript -``mnist.scale`` が訓練データ、 ``mnist.scale.t`` がテストデータです。 +``news20.scale`` が訓練データ、 ``news20.t.scale`` がテストデータです。 LIBLINEARがマシンにインストールされていない場合は事前にインストールが必要です。 以下は各種パッケージ管理でのインストール例です。 @@ -134,14 +134,14 @@ wscript を以下のように書き換えて実行 ( ``./waf`` ) すると、Fig def configure(conf): pass def build(exp): - exp(source='mnist.scale', # exp(...) を複数定義すると、それらが順に実行される + exp(source='news20.scale', # exp(...) を複数定義すると、それらが順に実行される target='model', parameters=maflib.util.product({ 's': [0, 1, 2, 3], 'C': [0.001, 0.01, 0.1, 1]}), rule='liblinear-train -s ${s} -c ${C} ${SRC} ${TGT} > /dev/null') - exp(source='mnist.scale.t model', + exp(source='news20.t.scale model', target='accuracy', rule='liblinear-predict ${SRC} /dev/null > ${TGT}') @@ -194,7 +194,7 @@ mafではこのようなパラメータの組み合わせを保持すること .. code-block:: python - exp(source='mnist.scale', + exp(source='news20.scale', target='model', parameters=maflib.util.product({ 's': [0, 1, 2, 3], @@ -208,12 +208,12 @@ mafではこのようなパラメータの組み合わせを保持すること .. code-block:: sh - $ liblinear-train -s 0 -c 0.001 mnist.scale build/model/0-model > /dev/null - $ liblinear-train -s 1 -c 0.001 mnist.scale build/model/1-model > /dev/null - $ liblinear-train -s 2 -c 0.001 mnist.scale build/model/2-model > /dev/null + $ liblinear-train -s 0 -c 0.001 news20.scale build/model/0-model > /dev/null + $ liblinear-train -s 1 -c 0.001 news20.scale build/model/1-model > /dev/null + $ liblinear-train -s 2 -c 0.001 news20.scale build/model/2-model > /dev/null ... - $ liblinear-train -s 2 -c 1 mnist.scale build/model/14-model > /dev/null - $ liblinear-train -s 3 -c 1 mnist.scale build/model/15-model > /dev/null + $ liblinear-train -s 2 -c 1 news20.scale build/model/14-model > /dev/null + $ liblinear-train -s 3 -c 1 news20.scale build/model/15-model > /dev/null このように全てのパラメータの組に対して訓練が実行され、各実行で ``${s}`` などの部分が代入されています。 また ``${TGT}`` の代入のされ方は先ほどと似ていますが、 ``build/model/0-model`` のように、 ``target`` で指定した出力先はディレクトリとなり、その中にパラメータ別の結果がまとめられます。 @@ -225,7 +225,7 @@ mafではこのようなパラメータの組み合わせを保持すること .. code-block:: python - exp(source='mnist.scale.t model', + exp(source='news20.t.scale model', target='accuracy', rule='liblinear-predict ${SRC} /dev/null > ${TGT}') @@ -234,16 +234,16 @@ mafではこのようなパラメータの組み合わせを保持すること .. code-block:: sh - $ liblinear-predict mnist.scale.t build/model/0-model /dev/null > build/accuracy/0-accuracy - $ liblinear-predict mnist.scale.t build/model/1-model /dev/null > build/accuracy/1-accuracy + $ liblinear-predict news20.t.scale build/model/0-model /dev/null > build/accuracy/0-accuracy + $ liblinear-predict news20.t.scale build/model/1-model /dev/null > build/accuracy/1-accuracy ... - $ liblinear-predict mnist.scale.t build/model/15-model /dev/null > build/accuracy/16-accuracy + $ liblinear-predict news20.t.scale build/model/15-model /dev/null > build/accuracy/16-accuracy これを見ると以下のことが分かります。 1. ``${SRC}`` には、指定した ``source`` が展開された値が代入されます。 - ``source`` には ``'mnist.scale.t model'`` のように複数の値を指定することができます。 - このうち ``mnist.scale.t`` は現在のディレクトリのファイルを指し、全ての実行で変わりませんが、 ``model`` は例のように、先ほど作られた ``build/model/`` 以下のファイルが順に指定され、実行されます。 + ``source`` には ``'news20.t.scale model'`` のように複数の値を指定することができます。 + このうち ``news20.t.scale`` は現在のディレクトリのファイルを指し、全ての実行で変わりませんが、 ``model`` は例のように、先ほど作られた ``build/model/`` 以下のファイルが順に指定され、実行されます。 2. ``${TGT}`` は、前回と似たように展開されます。 今回は ``parameters`` を指定していませんが、代わりに ``model`` が一つ一つのパラメータの組み合わせと結びついているので、各 ``model`` 毎に、 ``build/accuracy`` 以下に結果が格納されます。 @@ -254,13 +254,13 @@ mafはこの依存関係を自動的に解決し、例えば .. code-block:: sh - $ liblinear-predict mnist.scale.t build/model/0-model /dev/null > build/accuracy/0-accuracy + $ liblinear-predict news20.t.scale build/model/0-model /dev/null > build/accuracy/0-accuracy というコマンドは、 .. code-block:: sh - $ liblinear-train -s 0 -c 0.001 mnist.scale build/model/0-model > /dev/null + $ liblinear-train -s 0 -c 0.001 news20.scale build/model/0-model > /dev/null が終了し ``0-model`` が生成されるまで実行されません。 @@ -345,8 +345,8 @@ LIBLINEARの出力をjsonに変換するには、この用意された関数を $ ./waf Waf: Entering directory `/Users/noji/private-maf/experiment/build' - [20/61] 16-model: mnist.scale -> build/model/16-model - [21/61] 17-model: mnist.scale -> build/model/17-model + [20/61] 16-model: news20.scale -> build/model/16-model + [21/61] 17-model: news20.scale -> build/model/17-model ... [61/61] accuracy.png: build/accuracy.json/4-accuracy.json build/accuracy.json/10-accuracy.json ... @@ -398,9 +398,9 @@ wscriptは以下のようになります。 def configure(conf): pass def build(exp): - exp(source='mnist.scale', + exp(source='news20.scale', target='traindata', - parameters=maflib.util.product({'datasize': [10000, 20000, 30000, 40000, 50000, 60000]}), + parameters=maflib.util.product({'datasize': [1000, 3000, 6000, 9000, 12000, 15000]}), rule='head -n ${datasize} ${SRC} > ${TGT}') exp(source='traindata', @@ -408,7 +408,7 @@ wscriptは以下のようになります。 parameters=maflib.util.product({'s': [0, 1, 2, 3]}), rule='liblinear-train -s ${s} -c 1.0 ${SRC} ${TGT} > /dev/null') - exp(source='mnist.scale.t model', + exp(source='news20.t.scale model', target='accuracy', rule='liblinear-predict ${SRC} /dev/null > ${TGT}') @@ -427,7 +427,7 @@ wscriptは以下のようになります。 基本的に先ほどとかなり似ています。 異なるのは、主に最初の二つです。 まず異なるサイズの訓練データ ``traindata`` を準備します。 -``mnist.scale`` は一行が一つの訓練例となっているので、これでOKです。 +``news20.scale`` は一行が一つの訓練例となっているので、これでOKです。 二つ目の ``exp`` が先ほどの最初に対応しますが、今回は ``traindata`` を指定しているので、用意した異なる長さのデータ毎に、各パラメータで実行が行われます。 このようにパラメータの設定は追加していくことが可能で、今回の例では ``model`` や ``accuracy`` などは、各 ``datasize`` と ``s`` の組み合わせ毎に結果が保持されます。 From 8c122c3a4dc894b2092dbe8a8cc9c20f2e5669d9 Mon Sep 17 00:00:00 2001 From: Hiroshi Noji Date: Tue, 10 Mar 2015 19:09:16 +0900 Subject: [PATCH 7/8] Write own_rule --- document/source/tutorial/index.rst | 1 + document/source/tutorial/maf_basic.rst | 4 + document/source/tutorial/own_rule.rst | 315 ++++++++++++++++++ .../source/tutorial/parameter_combination.rst | 2 + 4 files changed, 322 insertions(+) create mode 100644 document/source/tutorial/own_rule.rst diff --git a/document/source/tutorial/index.rst b/document/source/tutorial/index.rst index 0e90988..cfbb718 100644 --- a/document/source/tutorial/index.rst +++ b/document/source/tutorial/index.rst @@ -10,3 +10,4 @@ maf の使い方をひと通り学びたい人は、このチュートリアル maf_basic parameter parameter_combination + own_rule diff --git a/document/source/tutorial/maf_basic.rst b/document/source/tutorial/maf_basic.rst index 7ea6ec9..46e04aa 100644 --- a/document/source/tutorial/maf_basic.rst +++ b/document/source/tutorial/maf_basic.rst @@ -8,6 +8,8 @@ この章では、maf をつかった簡単なファイル処理を通して、maf の基本的な概念を学びます。 はじめなので、基本的な用語の説明などですこし分量が多いですが、内容はとても簡単ですのでさらさらとお読みください。 +.. _first-wscript: + 実験内容 -------- @@ -200,6 +202,8 @@ wscript 内で ``message`` と書いていても、実体は ``build/message`` 多くの場合、出力ノードの名前をそのままタスクの名前として用います。 たとえば上の例だと ``message`` タスク、 ``message2`` タスク、のように呼びます。 +.. _directory-node: + ディレクトリノード ------------------ diff --git a/document/source/tutorial/own_rule.rst b/document/source/tutorial/own_rule.rst new file mode 100644 index 0000000..b7ca198 --- /dev/null +++ b/document/source/tutorial/own_rule.rst @@ -0,0 +1,315 @@ +ルールをPythonスクリプトで定義する +================================== + +.. + 対象読者:パラメータを使ったタスクとコマンドルールの書き方がわかっている人 + 目標:独自のルールを定義できるようになる + +これまで、各タスクのルールにはシェルスクリプトを記述していました。 +本章では、このルールをPythonの関数で定義する方法を学びます。 +これにより、シェルスクリプトで簡単に書けないような処理を各タスクで行うことができ、実験の幅が大きく広がります。 + +単純な例 +--------- + +まず感覚を掴んでもらうため、シェルスクリプトでもできることを関数で書くとどのようになるか、を説明します。 + +以下は一番最初の :ref:`first-wscript` で紹介したwscriptの一部です。 + +.. code-block:: python + + import maf + + def configure(conf): + pass + + def build(exp): + exp(target='message', rule='echo "Hello" > ${TGT}') + +これと同じことを、関数ルールを用いて書こうとすると、以下のようになります。 + +.. code-block:: python + + import maf + import maflib.util # 1 + + @maflib.util.rule # 2 + def my_echo(task): + task.outputs[0].write('Hello') + + def configure(conf): + pass + + def build(exp): + exp(target='message', rule=my_echo) # 3 + +変更した点をまとめると、 + +(1) 関数を定義するためのライブラリの読み込み +(2) 関数の定義 +(3) ``rule`` に、定義した関数を指定 + +となります。ルールを定義する場合、上のように、 + +.. code-block:: python + + @maflib.util.rule + def function_name(task): + # 実際の処理を記述 + +という部分は、こうするという決まりです。こうやって定義しておくと、 + +.. code-block:: python + + exp(target='...', rule=function_name) + +などと、exp呼び出しの際に ``rule`` に関数名を指定することで、この関数が実行されるようになります。 + +タスクオブジェクト +------------------ + +定義した関数の中身を詳しく見ていきます。 + +.. code-block:: python + + @maflib.util.rule + def my_echo(task): + task.outputs[0].write('Hello') + +``my_echo`` が実行される際、この実行は、引数である ``task`` というオブジェクトを通して行われます。 +このオブジェクトはタスクオブジェクトと呼ばれます。 +これは、そのタスクに固有の情報を全て保持しています。 +例えば、上の ``task.outputs`` はそのタスクの出力ノードの情報を保持します。 +後で紹介するように、タスクに紐づいたパラメータにアクセスしたい場合、 ``task.parameter`` でアクセスができます。 + +``task.outputs[0]`` は、出力ノードを指します。 +今回の例では ``exp(target='message', ...)`` と記述したように出力のメタノードは一種類ですが、 ``task.output`` 自体はリストなので、最初の要素を指定するために ``[0]`` と指定しなければいけません。 +ここではノードオブジェクトの ``write()`` 関数を使っています。 +これは、引数で与えた文字列をノードに書き出す関数で、つまり、先ほどの ``echo`` と全く同じことをしていることになります。 + +最初の ``@maflib.util.rule`` デコレータについては説明を省略します。 +これは独自のルールを定義する際に必要なものだと覚えておいてください。 + +実際の使用例 +-------------- + +先ほどの例はほぼ実用性はありませんが、関数ルールが具体的にどのような場面で役に立つかを紹介します。 +基本的にこれは、シェルで一行で書くことができない処理、もしくはできるけれど、pythonで書いた方が簡単な処理を行いたい場合に利用するものです。 + +クイックスタートで用いた例を再掲します。 + +.. code-block:: python + + import maf + import maflib.util + import maflib.plot + + def configure(conf): pass + + def build(exp): + exp(source='news20.scale', + target='model', + parameters=maflib.util.product({ + 's': [0, 1, 2, 3], + 'C': [0.001, 0.01, 0.1, 1]}), + rule='liblinear-train -s ${s} -c ${C} ${SRC} ${TGT} > /dev/null') + + exp(source='news20.t.scale model', + target='accuracy', + rule='liblinear-predict ${SRC} /dev/null > ${TGT}') + + exp(source='accuracy', + target='accuracy.json', + rule=maflib.rules.convert_libsvm_accuracy) + + exp(source='accuracy.json', + target='accuracy.png', + for_each='', + rule=maflib.plot.plot_line( + x = {'key': 'C', 'scale': 'log'}, + y = 'accuracy', + legend = {'key': 's'})) + +ここで用いている :py:func:`maflib.rules.convert_libsvm_accuracy` が、関数ルールの使用例です。 +二つ目のexp呼び出しまでで得られた ``accuracy`` メタノードの各ノードは、次のように、LIBSVM の標準出力を保持しています。 + +.. code-block:: sh + + $ ./cat build/accuracy/0-accuracy + Accuracy = 88.99% (8899/10000) + +``maflib.rules.convert_libsvm_accuracy`` は、これらをjsonに変換します。 + +.. code-block:: sh + + $ ./cat build/accuracy.json/0-accuracy.json + {"accuracy": 88.99} + +これは次のように実装されています。 + +.. code-block:: python + + @maflib.util.rule + def convert_libsvm_accuracy(task): + content = task.inputs[0].read() # ノードの read() メソッドで中身をstringで得る + j = {'accuracy': float(content.split(' ')[2][:-1])} # 数値の部分を取り出してdictionaryに変換 + task.outputs[0].write(json.dumps(j)) # json.dumps() でjsonに変換し、書き出す + +こういった文字列処理などをシェルのコマンドで実現するのは大変なので、関数ルールが便利です。 + +パラメータとsubprocess +------------------------ + +別の例として、関数の中でこれまでのようなコマンド呼び出しを行う例を紹介します。 + +上のLIBLINEARを例にとって、例えば、設定毎に訓練にかかった時間を計測したいとします。 +この場合は、最初のexp呼び出しを次のように書き換えればOKです。 + +.. code-block:: python + + @maflib.util.rule + def train_with_time(task): + import time, subprocess + begin = time.time() # 開始時刻 + + cmd = 'liblinear-train -s {s} -c {C} {src} {tgt} > /dev/null'.format( + s = task.parameter['s'], # タスクのパラメータはこのように辞書形式でアクセスできる + C = task.parameter['C'], + src = task.inputs[0].abspath(), + tgt = task.outputs[0].abspath()) + + subprocess.check_call(cmd, shell = True) # 関数内でのコマンド呼び出しにはsubprocessを使う + + sec = time.time() - begin # 終了時刻から時間を計測 + + task.outputs[1].write(str(sec)) # それを二番目の出力ノードに書き出す + + def build(exp): + exp(source='news20.scale', + target='model train_time', # train_time という出力ノードを追加 + parameters=maflib.util.product({ + 's': [0, 1, 2, 3], + 'C': [0.001, 0.01, 0.1, 1]}), + rule=train_with_time) # コマンドの代わりに関数を呼び出す + + ... + +ここでは ``target`` を二種類に増やしています。 +またこれまで ``rule='liblinear_train ...'`` とコマンドを記述していた部分の処理が、関数 ``train_with_time`` に置き換わっています。 + +ここでは、シェルのコマンドの実行時間を、関数内で計測しているので、関数内部でコマンドを呼び出さないといけません。 +このような場合は、 python の `subprocess `_ モジュールなどを使って、自分でコマンドを呼び出さないといけません。 +ここで使っている ``subprocess.check_call()`` は、引数のコマンドを実行します。 +その際 ``shell = True`` を与えておかないと、このようにコマンドを一つの文字列で指定することができないので、注意して下さい。 + +タスクパラメータ +----------------- + +最後に、タスクに固有の定数を外部から与える方法を紹介します。 + +ここではまた前に戻って、簡単なechoを関数で置き換える例を取り上げます。 +以下の二つのタスク定義で、異なるのは ``Hello`` か ``Hi`` かだけなので、これを抽象化したいとしましょう。 + +.. code-block:: python + + def build(exp): + exp(target='message', rule='echo "Hello" > ${TGT}') + exp(target='message2', rule='echo "Hi" > ${TGT}') + +この際、同じことを次のように書くことができます。 + +.. code-block:: python + + @maflib.util.rule + def my_echo(task): + task.outputs[0].write(task.parameter['msg']) + + def build(exp): + exp(target='message', rule=my_echo(msg='Hello')) + exp(target='message', rule=my_echo(msg='Hi')) + +このように、 ``rule`` の関数指定に、引数でキーと値を指定すると、それらが関数内で ``parameter`` として使えるようになります。 + +これを使うと、例えば関数内で使われる定数を外部から与えることが可能になります。 + +.. code-block:: python + + @maflib.util.rule + def train_with_time(task): + ... + + cmd = 'liblinear-train -s {s} -c {C} -B {B} {src} {tgt} > /dev/null'.format( + s = task.parameter['s'], + C = task.parameter['C'], + B = task.parameter['B'], # 'B' の値を追加。これは定数で与える。 + src = task.inputs[0].abspath(), + tgt = task.outputs[0].abspath()) + + subprocess.check_call(cmd, shell = True) + ... + + def build(exp): + exp(source='news20.scale', + target='model train_time', + parameters=maflib.util.product({ + 's': [0, 1, 2, 3], + 'C': [0.001, 0.01, 0.1, 1]}), + rule=train_with_time(B = 0)) + + ... + +ここで ``B`` の値は関数の中で変化しない定数です。 +このようなタスク固有の定数を与える際には、この機能が役に立ちます。 + +以下は少し補足的な内容です。このような方法ではなく、 ``parameters`` の中に一種類の値を指定してはダメなのかと思われるかもしれませんが、これには別の問題が発生します。 + +.. code-block:: python + + # 以下のコードは非推薦 + def build(exp): + exp(source='news20.scale', + target='model train_time', + parameters=maflib.util.product({ + 's': [0, 1, 2, 3], + 'C': [0.001, 0.01, 0.1, 1], + 'B': [0]}), # Bは一種類だけなので、定数の役割を果たす。 + rule=train_with_time) + + ... + +この方法の問題点として、 ``B`` というパラメータが以降のタスクで使えなくなってしまいます。 +:ref:`meta-node-to-parameterized-task` で述べたように、複数のタスクで同じ種類のパラメータを定義した場合、それらに食い違いが発生すると、タスクが実行されません。 +このように発生する問題を防ぐために、mafの書き方として、先に述べたように **タスクに定数を指定する場合は、呼び出し時に指定する** ことを推薦しています。 + +maflib.rules +--------------- + +:py:mod:`maflib.rules` モジュールには、いくつかの便利な関数が実装済みなので、参考にして下さい。 +例えば :py:func:`maflib.rules.download` は、指定したURLからファイルをダウンロードして使えるようにします。 + +.. code-block:: python + + def build(exp): + exp(target='news20.scale', + rule=maflib.rules.download( + url='http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/news20.scale.bz2', + decompresss_as='bz2')) # 省略した場合、解凍を行わない + +このように、 ``url`` でダウンロード先のURLを、 ``decompress_as`` で解凍方法を指定できます。 +この後のタスクでは、 ``source='news20.scale'`` とすると、解凍したファイルを入力ノードに指定することができるようになります。 + +まとめ +-------- + +本章では maf の機能のうち、以下の項目を紹介しました。 + +- 関数ルールの定義の仕方と呼び出し方 +- 関数内でのタスクオブジェクトの使い方 + + - ``inputs, outputs, parameters`` の呼び出し + - subprocessを使ったコマンド実行 + +- タスクパラメータによる定数の指定法 + +ルールを関数で定義することで、コマンドでは表せないような複雑な処理を実験の中に組み込むことができます。 +本章では、簡単なタスクを自分で定義する方法を紹介しましたが、次章では、集約タスクを自分で定義する方法を扱います。 diff --git a/document/source/tutorial/parameter_combination.rst b/document/source/tutorial/parameter_combination.rst index 08cd8bc..c2bb597 100644 --- a/document/source/tutorial/parameter_combination.rst +++ b/document/source/tutorial/parameter_combination.rst @@ -137,6 +137,8 @@ maf の精神としては、あくまで同じメタノードには同じ処理 同じターゲットへのタスクを 2 つ以上書くのは、ほかに手段がないときに限りましょう。 (この例のように、入力ファイルをパラメータで区別したい場合に必要となることが多いです) +.. _meta-node-to-parameterized-task: + パラメータづけられたタスクにメタノードを入力する ------------------------------------------------ From 0521342d2236142b6b0097b4dd43f4a4367c68ea Mon Sep 17 00:00:00 2001 From: Hiroshi Noji Date: Tue, 31 Mar 2015 21:06:56 +0900 Subject: [PATCH 8/8] Writing own_aggregator --- document/source/tutorial/index.rst | 1 + document/source/tutorial/own_aggregator.rst | 125 ++++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 document/source/tutorial/own_aggregator.rst diff --git a/document/source/tutorial/index.rst b/document/source/tutorial/index.rst index cfbb718..6aa7e4d 100644 --- a/document/source/tutorial/index.rst +++ b/document/source/tutorial/index.rst @@ -11,3 +11,4 @@ maf の使い方をひと通り学びたい人は、このチュートリアル parameter parameter_combination own_rule + own_aggregator diff --git a/document/source/tutorial/own_aggregator.rst b/document/source/tutorial/own_aggregator.rst new file mode 100644 index 0000000..03f741a --- /dev/null +++ b/document/source/tutorial/own_aggregator.rst @@ -0,0 +1,125 @@ +集約処理を自分で書く +==================== + +.. + 対象読者:関数ルールの書き方を分かっている人 + 目標:集約処理の関数を定義できるようになる + +前章ではルールをPythonの関数として定義する方法を紹介しましたが、集約を行う処理を自分で定義する方法については説明していませんでした。 +ここでは自分で集約処理を行うルールを書く方法を見ていきましょう。 + +集約タスクの例 +---------------- + +集約タスクを定義すること自体は、ほとんど通常のタスクと同じように行うことができます。 +最初はまたあまり意味のない例から始めましょう。 + +.. code-block:: python + + @maflib.util.rule + def combine(task): + for node in task.inputs: # task.inputs は集約された入力ノードのリスト + task.outputs[0].write(node.read(), 'a') + + def build(exp): + exp(target='number', + parameters=maflib.util.product({'n': [0, 1, 2]}), + rule='echo n=${n} > ${TGT}') + + exp(source='number', + target='combined', + for_each='', # 集約タスクであることを知らせるために for_each が必要 + rule=combine) + +この wscript を実行すると、以下の結果が得られます。 + +.. code-block:: sh + + ./waf + Waf: Entering directory ... + [1/4] 0-number: -> build/number/0-number + [2/4] 2-number: -> build/number/2-number + [3/4] 1-number: -> build/number/1-number + [4/4] combined: build/number/2-number build/number/1-number build/number/0-number -> build/combined + $ cat build/combined + n=2 + n=1 + n=0 + +最初のルールにより、 ``n`` の値が異なる ``number`` メタノードが作られます。 +そして、この各ノードが、次のルールにより集約されています。 +二番目のルールには ``for_each=''`` がありますが、これを書くことにより、このルールが集約タスクのルールであると判断されます。 +これは代わりに ``aggregate_by='n'`` としても同じです。 + +集約タスクのタスクオブジェクト ``task`` は、通常のタスクオブジェクトと似たように扱うことができますが、いくつか注意点があります。 + +(1) ``task.inputs`` は ``source`` で指定したメタノードを集約した後の、ノードのリストを返します。 + この例では、 ``n`` の値の異なる三つのノードからなるリストを返します。 +(2) ``task.parameter`` は ``for_each`` で指定したパラメータの現在の値を辞書形式で返します。 + この場合は空の辞書です。 +(3) ``task.source_parameters`` は集約タスク固有のフィールドで、 ``task.inputs`` と組になっています。 + 現在 ``task.inputs == [2-number, 1-number, 0-number]`` となっていますが、このとき ``task.source_parameters == [{'n': 2}, {'n': 1}, {'n': 0}]`` となります。 + つまり、各ノードが対応するパラメータを、リスト形式で保持します。 + +これらのフィールドを扱うことにより、原理的には、複数のパラメータの組み合わせを束ねる集約タスクを自由に定義することができます。 +集約タスクに関するもう一つの注意は、入力ノードは一つのみである、という点です。 +これは、 ``task.inputs`` の各要素が、同じメタノードの異なるパラメータのノードである、ということからくる制限です。 + +@maflib.util.jason_aggregator +-------------------------------- + +maf では、上のように生で集約タスクを書く代わりに、特定の集約タスクを書きやすくするための仕組みが存在します。 +以下では、その中の代表的な二つである二つのデコレータである、 ``json_aggregator`` と ``aggregator`` を紹介します。 + +``json_aggregator`` は、 :py:func:`maflib.rules.min` や :py:func:`maflib.rules.max` など、 maf に用意された多くのルールで使われています。 +これは、複数の json の結果を集約して、一つの json にまとめる際に便利なデコレータです。 + +何が便利になるのかを見るために、まずは ``max()`` と動作と、それを上で紹介した生の集約タスクとして定義するとどうなるか、を説明します。 + +以下はクイックスタートで用いた ``wscript`` を少し修正したものです。 + +.. code-block:: python + + import maf + import maflib.util + import maflib.plot + + def configure(conf): pass + + def build(exp): + exp(source='news20.scale', + target='model', + parameters=maflib.util.product({ + 's': [0, 1, 2, 3], + 'C': [0.001, 0.01, 0.1, 1], + 'B': [-1, 1]}), # バイアス項を追加 + rule='liblinear-train -s ${s} -c ${C} -B ${B} ${SRC} ${TGT} > /dev/null') + + exp(source='news20.t.scale model', + target='accuracy', + rule='liblinear-predict ${SRC} /dev/null > ${TGT}') + + exp(source='accuracy', + target='accuracy.json', + rule=maflib.rules.convert_libsvm_accuracy) + + exp(source='accuracy.json', + target='max_accuracy.json', + aggregate_by='B', + rule=maflib.rules.max(key='accuracy')) + + exp(source='max_accuracy.json', + target='accuracy.png', + for_each='', + rule=maflib.plot.plot_line( + x = {'key': 'C', 'scale': 'log'}, + y = 'accuracy', + legend = {'key': 's'})) + + +@maflib.util.aggregator +-------------------------- + + + +