TensorFlow TransformとApache Beamを使ったKubeflowコンポーネントの検証用リポジトリである。
基本はpipenvによるパッケージのバージョン管理を行う。
パイプラインの起動時にpip freeze > requrements.txt
を行ってからパイプライン、コンポーネントを起動する。
TBD
memo
DataflowPythonJobOpは、GCSにDataflowのPythonコードとrequirements.txtファイルを置いておくことが前提になっている。
そのため実際には、コードが複数ファイルにまたがる場合には利用できず、setup.pyを利用する場合にも使うことができないように思われる。
対応方法は以下になる。
- Dataflowのコンポーネントを独自に作成する。(他のコンポーネントと同様にコンテナ化)
- kfpからはコンテナを指定して使うようにする。
- gcp_resourcesを利用する。(パイプラインキャンセル時にDataflowもキャンセルさせるため)
componentsの中にはApache Beamで書かれたコードが存在する。 これらを直接起動するコマンドを記載する。 #TODO それぞれコンテナ化し、コンポーネントとして利用できるようにする。
プロジェクト名、バケット名は適宜変更すること
python components/wordcount/wc.py --output gs://ca-pubtex-ai-verification-dataflow/output_wordcount --runner DataflowRunner --project ca-pubtex-ai-verification --region us-central1 --staging_location gs://ca-pubtex-ai-verification-dataflow/staging --temp_location gs://ca-pubtex-ai-verification-dataflow/tmp --job_name=wordcount-job --requirements_file requirements.txt
プロジェクト名、バケット名は適宜変更すること
Dataflowのコードをローカルから起動する場合
python components/transform-tft/simple_sample.py --output_dir gs://ca-pubtex-ai-verification-dataflow/output_tft --runner DataflowRunner --project ca-pubtex-ai-verification --region us-central1 --staging_location gs://ca-pubtex-ai-verification-dataflow/staging --temp_location gs://ca-pubtex-ai-verification-dataflow/tmp --setup_file components/transform-tft/setup.py
kubeflowから呼び出すコンポーネントコードから、Dataflowのコードを起動する場合
pipenv run python src/run.py --project ca-pubtex-ai-verification --region us-central1 --temp_location gs://ca-pubtex-ai-verification-dataflow/tmp --setup_file ./setup.py --output_dir gs://ca-pubtex-ai-verification-dataflow/output_tft --gcp_resources /Path/to/gcp_resource.txt --output_dir_path /Path/to/tmp.txt
src/run.pyがコンポーネントとして起動する場合のエントリポイントである。(component.yamlを参照) --gcp_resourcesと--output_dir_pathはコンポーネントのoutputsであるため、outputsを書き込むためのファイルを事前に用意すること。