---
# System prepended metadata

title: 第4回ワークフローミートアップまとめ

---

第4回ワークフローミートアップまとめ
=============================


# プログラムやスクリプトを書き始めるときの TIPS



 かきはじめるときに、最初にやっておくとよいこと
## ruby(に限らずスクリプト系)ヘルプメッセージを出すようにする

* [cwl\-inspector/cwl\-inspector at 83ca399998b3effdb2d2df56334560eff3da4c56 · tom\-tan/cwl\-inspector](https://github.com/tom-tan/cwl-inspector/blob/83ca399998b3effdb2d2df56334560eff3da4c56/cwl-inspector)
 * `optparse` を使ってスクリプトをかきはじめている

## シェルスクリプトをかきはじめるときに、最初に想定される引数の処理を書いておく
* [pfastq\-dump/pfastq\-dump at master · inutano/pfastq\-dump](https://github.com/inutano/pfastq-dump/blob/master/bin/pfastq-dump)
 * だいたいこの形式で書き始めるとよいとのこと

# dockerコンテナ内で cwltool でDockerRequirementsでdockerを動かしたいとき

`requirement` に `docker` があるとき。

## 解決策１

いかの２つをやればよい

- `-v` でdocker.sockを、cwltool入dockerコンテナに渡す
- cwltool入docker の中にも、dockerコマンドをいれておく必要がある

### node について

`JavascriptRequirement` があるときは、　`node` が必要になるので、

- `node` を入れておいてない場合は、`node` のdockerコンテナをpullしてくる

# docker-machineが便利

docker-machineコマンドがあればdriverを指定するだけで、
docker入りの仮想マシンをいかのようなプラットフォームで作れる。
`az` コマンドなどはいれておかなくてよい。

- AWS
- Azure
- GCP
- vagrant

などなど


# まとめ

## 石井

### 紹介したスライド。

非常によいことが書いてあるようにおもっているが、
全部を一人でやらなければいけないような人たちには、
この問題の本質が、すぐには伝わりづらいかもしれない。


- [機械学習プロジェクトを頑健にする施策 ML Ops Study \#2 // Speaker Deck](https://speakerdeck.com/takahiko03/ji-jie-xue-xi-puroziekutowowan-jian-nisurushi-ce-ml-ops-study-number-2)

### 計測したデータのダンプ

現在実験をしているデータのダンプをおこなっている

- mysqlに関しては、ダンプができるようになった
- prometheus に関しては、要調査

将来的には、Go言語で書いて、ポータビリティをあげたい

### 次回以降の予定を調整

- ６月
    - [CWL-metrics](https://inutano.github.io/cwl-metrics/)の話(大田さん)
        - Accumulating container resource usage with workflow metadata
    - [awsub](https://github.com/otiai10/awsub)の話(落合さん)
        - Command line tool to run a batch jobs with ETL framework on AWS or other cloud computing resources
- ７月
- ８月

## 大田

- cwltool を走らせるとコンテナの消費リソースを取ってくれる [CWL-metrics](https://inutano.github.io/cwl-metrics/) リリースしたよ、つかってみてね 
- これを使っていろいろのCWLワークフローのメトリクスを取っていくぜ
    - このワークフローにこれくらいの入力サイズのデータを突っ込むとどれくらいメモリを食うのか、みたいなのに答えたい
    - これに食わせるワークフローを整備してはどんどんメトリクス取っていくモード
        - [pitagora-cwl](https://github.com/pitagora-galaxy/cwl)
            - これに入ってるツールのCWLを綺麗に書き直す = javascript requirement を外す
            - 走らせるために必要なサンプルデータとかを整える
            - 複数の入力に対してループさせるためのシェルを書く
            - こんな感じ
                - https://github.com/pitagora-galaxy/cwl/tree/master/tools/fastq-dump
                - https://github.com/pitagora-galaxy/cwl/blob/master/tools/fastq-dump/test/fastq-dump.sh


## 落合

-  進捗あり


## 後藤

- [BioRuby](https://github.com/bioruby/bioruby)のissueとpull requestを確認

## 末竹
```
最近、
- yml で workflow っぽいのを書いて
- それぞれの step を docker container にし
- docker-compose で立ち上げて
- swagger で書いた API と postgres で job 自体を管理して
- API をラップした CLI を作る
ってことを bioinfo と機械学習それぞれで、、、
```

のやつの、機械学習のそれを作っていた。  

- 機械学習は、command line tool が殆どないため、使用者は実行したいコードをガッツリ書かなければならない。
- そのため、CWL のような input, output をあまり明確に workflow yaml で書く必要がなく、実行したいコードの部分で input, tmp, output を扱ってあげればいい。っていう知見。
- Docker-compose の python SDK がないから欲しいなぁって思ってる。
- 理研の上司が、RAIDEN で溢れた機械学習の job をそのまま cloud に流せるようなシステムがめっちゃ欲しいらしい、、、、

## 丹生

- SRX ベースのワークフローエンジンをいじっていた
  - これまでの挙動 
    - 内部で複数の SRX 処理系が連携して各ステップが実行される
    - 各 SRX 処理系のログはファイルとして保存される
    - fluentd で、ログを集約して標準出力に表示
  - 課題
    - ログが完全に時系列順になっていない！
    - 複数ファイルを tail プラグインで集約しているが、異なるログファイルのログは必ずしも時系列順に並ばない
  - 解決策
    1. 一旦標準出力にすべて出す
    2. まとめて一つのファイルにリダイレクト
    3. fluentd で出力を加工
- conformance-test
```
5 tests passed, 79 failures, 47 unsupported features
```
- これからの目標
  - SRX のログを時系列にできたので、これを加工してワークフローとしてのログを出力したい
  - CWL-metrics 対応したい


## 池田

cromwellを利用したcwlの実行
（と言っても、現状ではcwltoolが必要。将来は単独で動作するようになるはず）

- docker を利用して cromwell の実行環境を作成
    - [0. cromwell でCWLを実行してみる](https://qiita.com/percipere/items/42ed510ef77d26e649e3)
- cromwell を利用して cwlのサンプルを実行
    - [1. cromwell でCWLを実行してみる](https://qiita.com/percipere/items/9a9c694cc7ef9fd4a67a)
- cwlが動作するcromwellの実行環境のDokcerfileを作成
    - [2. cromwell でCWLを実行してみる](https://qiita.com/percipere/items/c5409183bc7770e5c66e)