同氏は、機械学習アプリ開発に役立つツールを開発フェーズごとに分けて以下の表のようにまとめています(日本語版があるものについてはリンクを挿入)。
Ian Xiao氏が推奨する機械学習ツール一覧
データベース | postgreSQL |
---|---|
実装・パイプライン | Github、PyCharmコミュニティ版、Pytest、CircleCi、Heroku、Streamlit |
アルゴリズムの探索 | Streamlit |
機械学習フレームワーク | Scikit-Learn、OpenAI Gym |
アルゴリズムの実験管理 | Atlas |
以上に挙げたツールに関して、代替品となるツールも紹介されています。
今後の機械学習アプリ開発環境は、AINOW翻訳記事『ディープラーニングはもう難しくない』で紹介した「Cortex」のような転移学習を意識したものや、Googleが開発している説明可能な機械学習モデルを開発するプラットフォーム「Explainable AI」のようなAI開発に固有な課題の解決を意識したものに進化していくかも知れません。
なお、以下の記事本文はIan Xiao氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。
目次
すべての怠惰なフルスタックデータサイエンティストが使うべき5つのツールセット
要約 ― 優れた機械学習アプリケーションを構築することは、ミシュランスタイルの料理を作るようなものである。よく組織化され、管理されたキッチンを持つことは非常に重要であるが、選択肢が多すぎて選ぶことができない。この記事では、私がプロフェッショナルなプロジェクトを提供する際に便利だと感じたツールをハイライトし、いくつかの考えと代替品を共有し、簡単なリアルタイム調査を行う(※訳註1)(参加した後にコミュニティが何を考えているかを見ることができる)。
・・・
他のツールに関する議論と同じように、本記事で披露するリストはすべてを網羅しているわけではない。しかしながら、私は最も便利でシンプルなツールに焦点を当てるようにしている。コメント欄でのフィードバックを歓迎しており、言及すべきより良い代替品があるならば、ぜひ知らせてほしい。
免責事項: この記事は何らかのツールを宣伝するものではなく、何らかのスポンサーも介在していない。私はデータサイエンスと機械学習という用語を互換性があるものとして使用している。
この記事が気に入った?そうならば、Medium、LinkedIn、Twitterで私をフォローしてください。あるいはコミュニケーション方法を学び、影響力のあるデータサイエンティストになりたい?そんな時は、私の「機械学習による影響力」ガイドをチェックしてください。
・・・
よくある質問
「どうやって良い機械学習アプリケーションを構築するか?」
この質問は、在学中のデータサイエンティスト志望者、転職を考えている就業者、そしてチームマネージャーとの会話の中で何度も様々な形で出てきた。
プロのデータサイエンス・プロジェクトを遂行することには様々な側面があり、説明するにあたっては他の多くの人々と同じように、私も台所での料理の喩えを使いたいと思う。材料(データ)、レシピ(デザイン)、料理のプロセス(あなたのユニークなアプローチを発揮するところ)、そして最後に実際の台所(ツール)だ。
そこでこの記事では、私のキッチンを紹介する。紹介するのは、フルスタックの機械学習アプリケーションを設計、開発、実装するために最も有用なツールである。紹介によって、システムと統合したり、本番環境で人間のユーザにサービスを提供したりするソリューションをハイライトする。
機械学習を提供する上での他の側面についてもっと知りたい場合は、こちらの私が執筆した記事をチェック頂きたい。
圧倒的な可能性
私たちは黄金時代を生きている。Googleで「機械学習ツール」と検索したり、コンサルタントに聞いたりすると、以下の画像に掲載されているようなものに出くわす。
画像を見ればわかるように、(あまりにも多くの)機械学習ツールがあり、可能な組み合わせは無限大だ。そのあまりの多さに混乱させられ、圧倒されることもある。だからこそ、機械学習ツールを絞り込んで読者諸氏の助けになろうと思う。とは言っても、完璧な組み合わせなど無い。ツールの組み合わせはすべて読者それぞれのニーズと制約に依存する。それゆえ、機械学習ツールを採りあげてから選別して、必要に応じて変更するようにしよう。
私が作成したリストは以下のような項目を優先している(順不同):
- 無料 💸
- 習得と設定が簡単🧸
- (採用実績とツールの成熟度から判断して)将来性が証明されている ♻️
- 研究目的より開発目的 🤖
- スタートアップあるいは大企業でも使え、さらには小規模あるいは大規模のプロジェクトでも通用する🚀
- ツールとして健全に動作する💪
注意: 私は仕事の99% でPython 🐍を使用している。そのため、選定したツールはネイティブの Python で動作するか、もしくは構築されている。RやJavaなどの他のプログラミング言語では試用していない。
・・・
1.冷蔵庫:データベース
PostgreSQL
拡張性と技術標準コンプライアンスを重視したフリーでオープンソースのリレーショナルデータベース管理システム( Relational DataBase Management System:略して「RDBMS」)。単一のコンピュータからデータウェアハウス、または多数の同時利用者を持つWebサービスまで、さまざまな作業量に対応できるように設計されている。
代替品:MySQL、SAS、IBM DB2、Oracle、MongoDB、Cloudera、GCP、AWS、Azure、PaperSpace
・・・
2.キッチンカウンター: 実装とパイプライン用のツール
パイプラインツールは開発のスピードと品質を左右する重要なツールだ。これらのツールを使うにあたっては、最小限の手作業で高速な反復処理ができなければならない。以下の画像で私が使ってみてよく動作するツール設定を示すが、詳細は私が執筆した12時間機械学習チャレンジの記事を参照して頂きたい。怠け者のデータサイエンティストは、プロジェクトの早い段階で私が実行した設定を試してみるべきである。
開発フェーズ
- PythonとPyCharmを使ってローカルな開発
- GitHubを使ってバージョン管理
- UIの変更を見るためにSteamlitのAPIを使ってローカルホストの開発
テストフェーズ
- PyTestを使って70以上の動的なテストケースに関して、単体テストと統合テストを自動化
- AIモデルに対して、テストケースを実行
- CircleCiを使ってGitにセーフガードコードをマージ
実装フェーズ
- GitHubを使ってHerokuに自動実装
- ソースコードが破損していないことを確認するために、CircleCiを使ってテストケースを実行
Github
GitHubはGitの分散型バージョン管理やソースコード管理(SCM)機能に加え、独自の機能を提供している。アクセス制御、バグ追跡、機能要求、タスク管理、Wikiなどのコラボレーション機能をすべてのプロジェクトに提供している。
PyCharmコミュニティ版
コンピュータプログラミングで使用される統合開発環境(IDE)で、特にPython言語に対応している。チェコのJetBrains社によって開発されている。このツールはコード解析、グラフィカルなデバッガ、統合された単体テスター、バージョン管理システム(VCSes)との統合を提供し、DjangoによるWeb開発とともにAnacondaによるデータサイエンスもサポートしている。
Pytest
Pytestを使用すると、小規模のテストコードを簡単に書くことができ、さらにはアプリケーションやライブラリのための複雑な機能テストをサポートするように拡張することができる。こうした機能により、手動テストの時間を大幅に節約することができる。コードに変更を加えるたびにテストを行う必要がある場合は、Pytest を使って自動化しよう。
代替品:Unittest
CircleCI
CircleCIは継続的インテグレーションとデプロイメントツールだ。このツールを使うとGithubへのコミット時に、リモートドッカーを使用して自動テストワークフローを作成する。CircleCIはPyTestによって設定されたテストケースに合格しないコミットを拒否する。この仕様により、特に大規模なチームで作業する場合、コードの品質が保証される。
代替品:Jenkins、Travis CI、Github Action
Heroku(ウェブホスティングが必要な場合のみ)
開発者がクラウド上でアプリケーションを完全に構築、実行、運用できるようにするプラットフォーム・アズ・ア・サービス(PaaS)。CircleCIやGithubと統合して自動実装も可能。
代替品:Google App Engine、AWS Elastic Compute Cloud、その他
Streamlit(インタラクティブなUIが必要な場合のみ)
Streamlitは、機械学習やデータサイエンスチームのためのオープンソースのアプリフレームワーク。ここ数年でわたしのお気に入りのツールのひとつとなった。私がStreamlitとこの節で言及した他のツールをどのように使ったかをチェックするには、私が作った動画推奨アプリやシミュレーションアプリをあたってほしい。
・・・
3.レシピを検索するiPad:探索ツール
Streamlit(再び)
Jupiterノートブックのことは忘れよう。忘れるのが正しいのだ。
Jupyterはデータを探索したり、分析したり、様々なデータやモデリング処理を試したりするための私のお勧めツールだった。しかし、以下のようなタスクをJupyterでいったい何回行ったか、私はもう思い出せない。
- (髪の毛を掻きむしりながら)デバッグに多くの時間を費やしたが、結局はコードを始めから実行するのを忘れていたことに気づいたことがよくあった。Streamlitは、こうした動作を修正している。
- ちょっとしたコード変更の際でも、Jupiterではデータパイプラインが再実行されるのをしばらく待たなければならなかった。Streamlitのキャッシュは、こうした動作を修正している。
- Jupyter から実行ファイルにコードを書き換えたり変換したりしなければならず、再テストに時間がかかっていました。しかし、Streamlit はショートカットを提供してくれる。
Jupiterを使うとストレスが溜まった🤯😭。それゆえ、私はStreamlitを使って初期の探索と最終的なフロントエンドを提供するようになった – まさに一石二鳥だ。以下の画像は、私の典型的なStreamlit画面設定を示している。左がPyCharm IDE、右が結果の可視化。この画像にならって、試して頂きたい。
代替品:Jupyterノートブック、Spyder from Anaconda、Microsoft Excel(これはホント)
・・・
4.包丁:機械学習フレームワーク
食べ物や切りたい方法に応じて現実の包丁を使い分けるように、機械学習フレームワークを選ぶ時には、用途に合ったものを選ぶと良いだろう。包丁には汎用品と専用品がある。
包丁を選ぶ際は、注意が必要だ。寿司包丁は光沢があるが、この包丁を使って骨を断つのは時間がかかる。取り組む仕事に合った道具を選ぶようにしよう。
Scikit-Learn(一般的な機械学習のユースケース向け)
Pythonで一般的な機械学習を行うためのフレームワーク。とりあえずはこれで十分。
代替品:なし。以上。
PyTorch (ディープラーニングのユースケース向け)
Torch ライブラリをベースにしたオープンソースの機械学習ライブラリ。ディープラーニングに焦点を当てているので、主にコンピュータビジョンや自然言語処理などのアプリケーションに使われている。主にFacebookのAI研究所(FAIR)が開発している。最近では、Open AIなどの有名なAI研究機関の多くがPyTorchを標準ツールとして使用している。
代替品:Tensorflow、Keras、Fast.ai
OpenAI Gym(強化学習のユースケース向け)
強化学習アルゴリズムを開発・比較するためのツールキット。APIやビジュアル環境を提供している。強化学習は、コミュニティが活発にツールを構築している分野である。十分にパッケージ化されたツールはまだ多くはない。
代替品:小規模なプロジェクトが多いが、Gymほど整備されているものは多くない。
・・・
5.コンロ:実験管理
Atlas
データサイエンティストがいくつかのスニペットで実験を設定し、その結果をWebベースのダッシュボードに表示することができる無料のツール。
免責事項:私はAltasを作ったDessaという会社で働いていた。
代替品:ML Flow、SageMaker、Comet、Weights&Biases、Data Robot、Domino
・・・
調査
純粋な興味から読者諸氏に聴きたいのだが、適切なツールを見つけるときに一番困るのは何だろうか?以下のアンケートで、あなたの考えを聞いてみたいと思う。これはライブアンケートなので、あなたが参加した後にコミュニティが何を考えているかを見ることができる。
1.冷蔵庫:データベース・インフラストラクチャ
2.キッチンカウンター:実装時のパイプライン
3.レシピを検索するiPad:探索ツール
4.包丁:機械学習フレームワーク
5.コンロ:実験管理
その他
アンケートの回答は、原文記事’ The Most Useful ML Tools 2020 ’から実行してほしい。アンケートに答えると以下のような画面が表示され、各選択肢の割合がわかる(以下の画像に表示された割合は一例であって、実際の割合とは異なる)
アンケート回答結果[/caption]・・・
別の見方
前述したように、機械学習ツールに関する完璧な組み合わせなど存在しない。すべてはあなたのニーズと制約に依存する。どのようなツールが利用可能で、どのように連携できるのか、別の視点からまとめた画像を以下に示す。
・・・
ミニチャレンジ
これらのツールの使い方をもっと知りたい場合は、取り組むプロジェクトを見つけるのが一番だ。現在のプロジェクトにツールを組み込むこともできるだろうし、あるいは12時間の機械学習チャレンジで試すこともできる。どうすればいいかわからない?私がいかにして、ツールや吟味されたプロセスを使って、ユーザをエンパワーするおすすめアプリを作ったかに関するMedium記事をチェックしよう。
この記事を読んで、読者諸氏が作れたものを見るのを楽しみにしてます。そして、作ったものをコミュニティで共有し、私にタグ付けしてツイートしてください 🙌。
・・・
この記事が気に入った?そうならば、Medium、LinkedIn、Twitterで私をフォローしてください。あるいはコミュニケーション方法を学び、影響力のあるデータサイエンティストになりたい?そんな時は、私の「機械学習による影響力」ガイドをチェックしてください。
以下は私が執筆した記事の一部です。
原文
『The Most Useful ML Tools 2020』
著者
Ian Xiao
翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)
編集
おざけん