ワークフローの修正を題材にしたKnitfabのチュートリアルを公開しました
皆さんこんにちは。うまかいです。データの集積・活用に興味があります。
この記事は、機械学習支援基盤Knitfabのワークフローの修正を題材にした非公式のチュートリアルの概要・感想についての記事です。
チュートリアルのリンク
チュートリアルは下記をご覧ください。
チュートリアル中の新旧両方のデータ形式が使えることの図について、髙岡陽太@opstさんからアイデアを頂きました。
チュートリアルの概要
チュートリアルの前書きではデータマネジメントの難しさとKnitfabの特徴・メリットについて説明しています。
機械学習はデータと密接に繋がっているため、データの仕様が変更されたとき、機械学習プログラムを修正する必要がある
機械学習プログラムの再利用を容易にするため、データを加工する処理をワークフローに追加することが考えられるが、課題がある
ナイーブに全体をコピーして修正すると、データのバージョンの組み合わせごとにワークフローが作成されて管理が難しくなることがある
Knitfabはデータのタグの組み合わせでタスクの実行を判断するため、新規のタスクを追加するだけでデータ変更の改修が可能
変更前のワークフローも引き続き使用できる利点もある
チュートリアルは、データの変更に伴うKnitfabのワークフローの変更を題材に下記の流れで説明しています。
源泉となるデータを収集するサーバプログラムを作成してデータを収集する
源泉データを機械学習に入力できる形式に変換する加工処理を作成する
加工処理をKnitfabで実行すると、後続の訓練、評価まで逐次実行されることを確認する
データスキーマの変更に合わせて加工処理を追加することで、新たなデータ形式に対応できることを確認する
変更前のスキーマに対応する加工処理が残っていることもあわせて確認する
チュートリアルを作った感想
このチュートリアルはKnitfabの学習とデータマネジメントの学習を兼ねて作成しました。
以下ではチュートリアル作成を通してKnitfab(中でもタグベースのワークフロー)について思ったことを書いていきます。
Knitfabのワークフローの考え方が、Apache AirflowやAWS Step Functionsなどタスク同士の接続を直接定義するものとは異なることが理解できました
タスクの実行がタグで判断されるため、どのタスクが実行するのかはワークフロー実行前によく確認する必要がありそうです
v1.5.0で追加された`knit plan graph`コマンドにより、実行前にワークフロー全体が目視できるようになったので、確認作業が簡単になりました
プロジェクトが進むにつれてタグの種類を変更した場合でも、意図しないタスクの実行が起きないようにタグ付けの方針は注意すべきでしょう
タスクで発生するエラーの検知やタスクのリトライをワークフローのどの部分にどのように組み込むかはプロジェクトごとに検討できそうです
今後も、Knitfabでできることをチュートリアルやデモの作成を通して考えてみたいと思います。