Prefect 触ってみた

Naofumi Yamada

Naofumi Yamada

Data Engineer

Prefect 触ってみた

Airflow のようなワークフローツールで、手軽にタスクやフローが定義できて好いです。 Docker サーバと通信したり、Slack 通知するタスクがあったり、動的 DAG が作れたり、ローカルテストしやすかったりします。

Python 開発環境の Docker 化

Naofumi Yamada

Naofumi Yamada

Data Engineer

Python の環境 / パッケージ管理色々ありすぎ問題

Python の仮想環境やパッケージ管理周りのツールは種類が多くてどれ使ったら良いか分からないですね。 古参の Pip 派もいれば、安定の Pipenv、toml カッコ良いから Poetry、Pyflow など。

  • Pip
  • conda
  • Pipenv
  • Poetry
  • Pyflow

ここは悩まずに Docker にしてしまいましょう。 これで、開発マシンへの依存を Docker のみにすることができます。

Dockerfile

開発が進んだ際に debug と production でステージを分けやすいよう pipenv か poetry を使います。ここでは pipenv を使ってみましょう。

FROM python:3.8
RUN mkdir -p /usr/src/app && pip install pipenv
WORKDIR /usr/src/app
ONBUILD COPY Pipfile /usr/src/app/
ONBUILD RUN pipenv install -d
ONBUILD COPY . /usr/src/app

Makefile

Dockerfile だけでなく、Makefile でラップコマンドを用意しておくと、開発環境からよく使う作業を make xxx で実行できます。 ここでは、vet で型検査、fmt でコードフォーマット、doc でドキュメントビルド、test でテストをするように設定します。必要なライブラリは、Pipfile に書いておきましょう。

NAME=docker_example
LINT_IMAGE=transform_lint
build:
docker build -t ${NAME} .
vet: build
docker run -it --rm ${NAME} pipenv run mypy --ignore-missing-imports /src
fmt: build
docker run -it --rm -v $$(pwd):/src ${NAME} pipenv run autoflake -ri /src
docker run -it --rm -v $$(pwd):/src ${NAME} pipenv run isort -rc /src
docker run -it --rm -v $$(pwd):/src ${NAME} pipenv run black /src
doc: build
docker run -it --rm -v $$(pwd):/src ${NAME} pipenv run mkdocs build /src
test: build
docker run -it --rm ${NAME} pipenv run pytest /src

おしまい

Dockerfile と Makefile を作って、ライブラリを包んでやることでローカルマシンに依存しない環境ができました。Pipenv でもできますが、Makefile でコマンドもつけておくと、Linux 環境では make xxx で処理をラップできて捗ります。

BigQuery ML で Matrix Factorization

Naofumi Yamada

Naofumi Yamada

Data Engineer

BigQuery ML に Matrix Factorization が来た

日本時間 2020-04-18 に BigQuery ML の新モデル Matrix Factorization がベータリリースされました。

Matrix Factorization とは

user と item を入力として、似た rating 傾向のある人を参考に未知の rating を予想するものです。併売しそうな商品を推薦する際に使ったりできます。

BigQuery ML で使える TensorFlow モデルを作る

Naofumi Yamada

Naofumi Yamada

Data Engineer

はじめに

BigQuery ML は インポートした TensorFlow モデルでの予測 ができます。 BigQuery ML で使える TensorFlow モデルを作るために色々なドキュメントを往復したので、まとめておきます。 BigQuery ML を使って TensorFlow モデルを管理できれば、データソースとの転送を省略したり、 モデルや実行環境の管理を BigQuery と Cloud Storage に任せたりできます。

また SavedModel 形式は、予測に限らず数式を入れたりできるので、brainfuck が実装できるか遊んでみました(敗北)。

Google 共有ドライブ設計論

Naofumi Yamada

Naofumi Yamada

Data Engineer

はじめに

Google ドライブの共有ドライブ利用されていますか。 とても便利なサービスですが、Windows Server のファイルサービスのつもりで設計してハマったことがありました。 ハマらないポイントは、Google ドライブの設計理念に従うことです。

BigQuery データ品質のチェック方針

Naofumi Yamada

Naofumi Yamada

Data Engineer

目的

機械学習でデータを利用する際、十分にきれいなデータを入力した方が大抵のケースで有望です。 汚いデータも使わないよりはマシである可能性もありますが、そのようなデータは継続的に同程度の品質を持っているか検証が困難なことを認識して利用すべきでしょう。 しかし、十分にきれいなデータかどうかを保証する観点は少ないです。

この記事では、実際的な、データ品質チェックの方法論をまとめました。

BigQuery テーブル同士の一致判定

Naofumi Yamada

Naofumi Yamada

Data Engineer

はじめに

テーブルの一致判定のクエリを知りたい の対応記事です。 BigQuery テーブルは、リレーショナルデータベースに比べて、強い制約をかけにくいです。 そのため、テスト時には一致性検証が重要になってくるでしょう。 この記事では、BigQuery テーブル一致性を判定するクエリを紹介します。