We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
例えば以下のように書けるようにしたい。
import maf def configure(conf): pass def build(exp): exp(source='hoge1', target='piyo', parameters=[{'ttt':0}], rule='cat ${SRC} > ${TGT}') exp(source='hoge2', target='piyo', parameters=[{'ttt':1}], rule='cat ${SRC} > ${TGT}') exp(source='piyo', target='fuga_0', parameters=[{'ttt':0}], rule='cat ${SRC} > ${TGT}') exp(source='piyo', target='fuga_1', parameters=[{'ttt':1}], rule='cat ${SRC} > ${TGT}') exp(source='fuga_0', target='hoge2', aggregate_by='ttt', rule='cat ${SRC} > ${TGT}')
つまり、2パスの実験のようになっていて、2パス目は1パス目の結果に依存するが、各パスの実験は共通しているような場合をうまく書けるようにしたい。
現状だとmafのExperimentGraphは上のような実験をうまくパースできなくて、メタノード単位で依存関係解析をしているのでcyclic dependencyになってしまう。回避策として1パス目と2パス目でノード名を変えて同じ実験をコピペして書くこともできるが、これはそもそもmafを使うことでやらずに済ませたかったようなケースであり、できるだけやらなくて済むようにしたい。
解決するためにはExperimentContextを全体的に書きなおす必要がありそうで、特に依存解析の方法が大きく変わる。例えば以下のやり方がある。(以下、「解釈」とはそのタスクをwafに登録することを意味する)
まず、どのタスクのtargetにもなっていないsourceを列挙し、これらを"free node"とする。次に、sourceがすべてfree nodeなタスクを解釈し、そのタスクのtarget nodeとパラメータの組をfree nodeに加える。これを繰り返す。
ただし、以下の注意点がある。
以上を実装すれば、2パスの実験を簡潔に書けるようになる。また、依存関係の解析がより実験の実行順序に沿うようになるため、エラーの報告がしやすくなるかもしれない。一方、解析の計算効率は落ちる。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
例えば以下のように書けるようにしたい。
つまり、2パスの実験のようになっていて、2パス目は1パス目の結果に依存するが、各パスの実験は共通しているような場合をうまく書けるようにしたい。
現状だとmafのExperimentGraphは上のような実験をうまくパースできなくて、メタノード単位で依存関係解析をしているのでcyclic dependencyになってしまう。回避策として1パス目と2パス目でノード名を変えて同じ実験をコピペして書くこともできるが、これはそもそもmafを使うことでやらずに済ませたかったようなケースであり、できるだけやらなくて済むようにしたい。
解決するためにはExperimentContextを全体的に書きなおす必要がありそうで、特に依存解析の方法が大きく変わる。例えば以下のやり方がある。(以下、「解釈」とはそのタスクをwafに登録することを意味する)
まず、どのタスクのtargetにもなっていないsourceを列挙し、これらを"free node"とする。次に、sourceがすべてfree nodeなタスクを解釈し、そのタスクのtarget nodeとパラメータの組をfree nodeに加える。これを繰り返す。
ただし、以下の注意点がある。
以上を実装すれば、2パスの実験を簡潔に書けるようになる。また、依存関係の解析がより実験の実行順序に沿うようになるため、エラーの報告がしやすくなるかもしれない。一方、解析の計算効率は落ちる。
The text was updated successfully, but these errors were encountered: