2019年〜2021年についての振り返り

Asei Sugiyama
17 min readDec 29, 2021

--

TFX について同僚と議論した図 (2019年)

2019年1月に転職とともに東京に引っ越しました。気がついたらそこから3年が経過しています。この記事では3年間の活動を振り返っていきます。

転職と引っ越し (2019.01)

東京に来る前は名古屋のトヨタ系の情報子会社で働いていました。そこでは自然言語処理を用いたチャットボットを作っており、かなり楽しく仕事をしていました。

とはいえ、SIer 的な働き方が主な会社で、チームリーダーやプロジェクトマネージャーといった役割をしていたため、自分で手を動かせる範囲が徐々に限られてきていました。そのため、より自分で手を動かしたいと思い転職することにしました。

転職後の役割はデータサイエンティストです。顧客から受け取ったデータをもとに、手動で予測モデルを作成して精度評価を行ったり、予測結果をもとに実社会での PoC を行うような仕事です。この仕事をできたのは今でもありがたく思っています。

エンジニアからデータサイエンティストに転生したときには文化の違いに驚きました。BigQuery に複雑な SQL を発行して100を超えるカラムを持つテーブルを特徴量として作成する、仕様をもとに厳密に検証するのではなく使えそうだというカンを働かせてデータを集計する、といった経験は新鮮でした。転職しなかったら経験することはなかったでしょう。

転職直後は人生においてトップレベルに忙しい時期でした。というのも、共著で執筆していた書籍が出版される直前だったためです。

機械学習図鑑 (〜2019.04)

それは PyCon 2017 からはじまりました。打ち上げに参加したとき、目の前で「機械学習の本を書きたいんだよね」とおっしゃっている方がおり、もう少し伺ってみると共著者を探しているとのことでした。個人的に scikit-leran を触っていたこともあり、大変なことになるだろうと思いつつもチャレンジしてみることにしました。

そして大変なことになりました。僕は教師あり学習の箇所を担当したのですが、一度ほぼ全てを書き直しています。書き直しもすんなりとはいかず、線形回帰と正則化の書き直しは別メンバー (秋庭さん) に担当していただくなど他の方に支えられた執筆でした。

この本では数式を使わずに、図と文章で平易に機械学習アルゴリズムを説明するということに取り組みました。その後、同様のことがその後のさまざまなシーンで必要になります。この書籍の執筆で取り組めたことに感謝しています。

また、書籍の発売後にイベントに登壇させていただきました。名古屋在住時にこれほど大規模なイベントで話す機会はあまりなく、会場の立派さと人数に慄きました。また、住む場所が変わってコミュニティとのつながりが失われた時期だったので、コミュニティと関われる機会が大変ありがたかったことを覚えています。

TensorFlow Extended との出会い (2019.06)

なぜだかわかりませんが、「AI を仕事で使いたいんだけれどどうすればいい?」と聞かれることがよくあります。これは名古屋で働いていたときから継続しており、コミュニティ活動でも仕事 (上司及び顧客) でも質問される事項でした。質問されるたびに四苦八苦しながら答えていました。当時からよく参照していたのは仕事で始める機械学習 (当時は第1版) です。

他にも AI Transformation Playbook などを情報源にしていたのですが、なかなか実装まで行き着いているものはなく、抽象度の高いことしか話せない状況が続きました。そんなときに Google からも TensorFlow Extended (TFX) が発表されていることを知り、それが何者なのか気になってきました。

これについて調べてみてドハマリしました。TFX で取り組む問題である「機械学習を本番環境で活用する」という問題設定はその後の僕の活動のテーマとなりました。また TFX で行われた、機械学習パイプラインという概念の導入、コンポーネントを用いた典型的な概念の整理、ライブラリによる必要な機能の提供、これらすべてが衝撃的でした。

またこの当時、チュートリアルを動かそうとしてなかなか動かず焦っていたことも覚えています。そのため、独自のチュートリアルを作成して公開しようとしていました。結局これは完成しないまま不要になったのですが、このために色々と実装を触ったことも良い経験になりました。

そして、「機械学習を本番環境で活用する」という未知の問題に対してデータサイエンティストとしてではなく、ソフトウェアエンジニアとして取り組みたいという気持ちが強くなりました。

データサイエンティスト→ソフトウェアエンジニア (2019.07)

機械学習の本番適用に関する知識や経験を積むために、機械学習を用いたプロダクトを開発している現場に移ることにしました。会社の選定理由は人でした。エンジニアと個人的に話す機会が多く、この人達と働きたいと思ったことが一番の理由でした。また、機械学習を用いたチームでスクラムを導入し始めたというのも魅力的でした。

転職直後はソフトウェアエンジニアとして働きました。強いエンジニアのいる環境で、デザイナーとのプロトタイピングや要件定義、Javascript を用いた実装やテストを行えたことは良い経験です。

また、このころからデータを使うために必要な周辺知識の重要さに気が付き始めました。社内で実験デザインについての知識の布教をはじめたのはこのころです。

最近は実験デザインについて述べられることが多くなり、嬉しく思います。

TensorFlow User Group への参加 (2019.04〜)

少し時系列が前後しますが、TensorFlow User Group (tfug) への参加を行いはじめました。きっかけはこのイベントです。

このイベントのあとも翻訳活動を続け、TFX のガイドを翻訳したりしていました。この翻訳活動はひたすら楽しく、TensorFlow の検証を行うとともに、さまざまな方とレビューを通じて交流できたのは楽しい思い出です。

また、翻訳活動については GDG Tokyo 2019 で話す機会をいただきました。活動の成果をコミュニティに還元することは、その後も継続しました。

AI Platform Pipelines (2020.04〜)

業務で機械学習の実用化に向けて取り組む中、機械学習パイプラインの重要性が増してきました。社内には Cloud Composer で組まれたパイプラインが既にありました。そこで既存の実装に習い、新たなパイプラインを組んでみみたものの開発体験に課題を感じていました。

このタイミングで AI Platform Pipelines が出てきたので調査をはじめました。また、ちょうど TensorFlow Dev Summit 2020 の振り返りイベントが tfug で行われます。そのイベントで AI Platform Pipelines で TFX のパイプラインを走らせるデモをできる人が探されていたので立候補しました。AI Platform Pipelines について調査する必要があり調べていたので、タイミング的にもちょうどよかったためです。

AI Platform Pipelines のデモを TFX で行えたことは感慨深かったです。最初は動かすだけでも苦労した TFX ですが、着実に改善が行われて生き残り続けていることは素晴らしいことですし、それをコミュニティでデモできたのは本当に良かったと思います。

なんとなく動かせそうなことがわかった AI Platform Pipelines について、今度は業務で使うことにしました。いきなり本番環境への導入は難しかったので、社内で定型的な分析を行う業務をパイプラインとして実装しました。このあたりの取組については対外的に発表しました。

定型的な業務は効率的に回せるようになったものの、本番環境への導入や運用はまだ課題があると感じていたところ出てきたのが Vertex Pipelines でした。

Vertex Pipelines (2021.05〜)

Vertex Pipelines について、触ったときにすばらしいものだと思いました。実際、AI Platform Pipelines を運用できるように Kubernetes および Kubeflow の運用を覚えることはチャレンジしてみたものの著しく困難なことが分かっていました。ここを行わずに自在にリソースの確保ができる手段は喉から手が出るほど欲しかったものです。

また同時に、触ったときにとんでもない苦労をしました。かなり初期から触ったためドキュメントやサンプルが不足しており (現在はかなり改善されましたが) 仕様を知るためにはテストコードや実際の実装を見るしかない状態でした。このため、他の方が使い始めるときにも同様の苦労をすることが想定されました。

これまでの活動を通じて、このとき何をすべきか知っています。解説を書き、サンプルを書き、それを共有すれば誰かの役に立ちます。なぜなら、誰かの書いた解説を読み、サンプルを試し、僕が学んできたからです。

この取り組みの内容は PyConJP 2021 で登壇した際に共有できました。また、使ってみた結果を Google Cloud ML Summit 2021 といったイベントで登壇した際に共有できました。

このような取り組みを行う環境を提供してくれたことに深く感謝しています。その後さまざまな事例が出てきたため、現在はかなり取り組みやすくなっているのではないかと思います。

アドバイザー (2021.05〜)

フルタイムで働くさなか、マネーフォワードCTO室AI推進部で MLOps に関するアドバイザーをはじめました。ちょうど発足するときに MLOps の始め方についてたまたま会話できたことがあり、これまでの僕の経験で貢献できる箇所があるかと思い挑戦してみることにしました。

機械学習を用いるサービス開発についての一般的な解説をしたり、機械学習パイプライン、データバリデーション、公平性についての概要を解説したりしています。資料はご厚意もあり公開しています。

ここでも TFX の取り組みを多分に参考にしています。

わかったこと

これまでの活動を通じて分かったことがいくつかあります。

  • 「機械学習を本番適用する」という課題に挑戦する組織が増えてきている
  • その際に、大体どの組織も似たようなことで悩む
  • TFX といった他組織の取り組みを学習し、取捨選択を行って目の前の課題に適用することは、課題解決において役立つ
  • デプロイについてはある程度なんとかなってきた (課題はまだまだある)
  • 本番環境のデータについてやれることがあまりにも少ない

機械学習パイプラインを組んでみて分かったのは、それ自体がかなり複雑なアプリケーションだということでした。前処理とデプロイ、あるいはバッチ推論とその結果の書き出しはタスクが変わると必要な処理がかなり変わります。

一方、機械学習パイプラインについてはパターンが共有されるようになってきました。いくつかのパターンは仕事で始める機械学習 第2版でも触れられています。

最近は本番環境でのデータの検証について課題意識を持っています。とくに機械学習パイプラインが広まってきた今、これは今後取り組むべき課題になってくると感じています。具体的に書き出してみたのがこちらの記事です。

どうやら「機械学習を本番適用する」という課題に挑戦することも、MLOps と呼ばれている領域に取り組むことも、僕は好きだということが分かってきました。

次にやること

「機械学習を本番適用する」という課題は非常に奥深く、まだまだ取り組むべき課題が残っています。現状ではそれぞれのチームが個別に課題と向き合っており、業界としての解をまだ見いだせていない状況だと思います。そこにソフトウェアエンジニアとして取り組み、機械学習を本番適用するということをもっと楽にできるようにしていきたいと考えています。

「機械学習を本番適用する」ということにより集中して取り組める環境を求めて、2021年を通して情報収集と転職活動を行ってきました。さまざまな方にご対応いただいたことに感謝申し上げます。また、数社から良いオファーを頂いたきました。こちらについても改めて感謝申し上げます。

転職活動をするなか、風変わりなメッセージを LinkedIn で頂きました。英語です。しかし日本勤務です。僕の TFX や Kubeflow Pipelines についての取り組みを見てご連絡いただいたようです。TFX を作っていたと言っています。これが Citadel AI の CTO である Kenny さんとの出会いでした。

2022 年から Citadel AI でソフトウェアエンジニアとしてプロダクト開発をしつつ、かなりの割合で MLOps に関する情報発信を行っていく予定です。

Citadel AI ではまた挑戦をしたいと思います。これまでは TFX を追いかけてきました。これからは作る側に挑戦します。Citadel AI では TFX で培った MLOps の経験を生かしたプロダクトを作成していきます。これまではステージを見る側でしたが、そのステージに立ってみようと思います。

例のリストはありません!現場からは以上です!

--

--

Asei Sugiyama

The only thing that I can say about it might be too complicated. Just writing.