ABEJA Platformを利用してモデル学習(Abeja Platform試用報告 第2弾)
こんにちは、GliaComputing研究員の時田です。
普段、機械学習モデルの学習にどのような環境を使われていますか?
モデルの学習環境としてはGPUや各種のミドルウェアの用意が必要であり、 一通り揃えるまでにも、また、メンテナンスにもコストがかかりますね。 そのような背景の中、AWSやGCP, Azureなどのクラウドベンダーが 機械学習向けのPaaSに力を入れているようです。
本記事では、機械学習向けPaaSの一つである「ABEJA Platform」を使って、 データセットの作成から学習、そして、学習済みモデルのWebサービス化までを 通してみました。 本記事はその試用レポートです。
第三者として、ABEJA Platformを利用して見た感想をまとめていこうと思います。
なお弊社では、株式会社ABEJA様のご協力により評価用ライセンスを発行していただいております。 本記事はそのライセンスの範囲で試行したものです。
目次
はじめに
ここ数年のブームの影響もあり、実際に機械学習に取り組んでいる方、多いと思います[1]このブログを読んでいらっしゃるということは、何らかの形で機械学習の取り組みに触れている方だと想像します。。 機械学習に取り組む環境としては、TensorflowなどのフレームワークやGPUを扱うためのミドルウェアが整備され、実装するだけならその気があれば誰でもできる状況にありますね。
しかし、効率的に機械学習の実験に取り組むためには計算機環境の整備が重要です[2]最近の機械学習アルゴリズムの主流は、モデル構造が複雑(非線形)で、 … Continue reading。高速な計算機と各種ソフトウェアの整備は、時間的にも費用的にもコストがかさみます[3]バージョンの不整合でライブラリが動かないなんて経験みなさんもありますよね?。
そのような中、AWS, GCP, Azureなどのクラウドベンダーが揃って機械学習用のPaaSを提供するようになってきており、ハードの用意や管理についてはだいぶ楽ができるようになってきています。今回は、そのような機械学習用PaaSの中で、株式会社ABEJAが提供する「ABEJA Platform」を利用して、モデルの学習とWebサービスとして公開するまでの試用レポートをまとめていきます。
本記事は、以前書いたABEJA Platformを利用してWebサービスを公開する手順をまとめた記事(下記記事)の続編となります。データの収集からモデルの学習、そしてWebサービスの公開までを通した試用レポートとなります。
本記事は、2章でABEJA Platformの概要と使ってみて良いと思った点/足りないなと感じた点をまとめます。3章以降では具体的にモデルの学習とWebサービスとしての公開までの詳細を記載していますので、概要を知りたい方は2章まで読んでいただけたらと思います。3章では具体的にどのようなタスクに取り組むのかを紹介し、4章で具体的にABEJA Platformを使ってモデルの学習から公開までの手順を紹介します。実際に今回作成したWebサービスについては5章をご覧ください。6章でまとめとなります。
ABEJA Platform
「ABEJA Platform」とは、機械学習用のPaaSとして株式会社ABEJAが提供するサービスです。 他のPaaSと同様に、GPUや各種のフレームワーク(Tensorflow, Chainer等)を備えた環境を利用することができます。 ABEJA Platformについて詳しく知りたい方は以下の公式Webをご覧ください。
また、当ブログの以前の記事も合わせてご覧いただけたらと思います。今回は、データの管理と学習部分に注目して試用した結果の報告となります。
ABEJA Platformの特徴
一般に機械学習モデルの開発は下図1の手順で進むと思います。1~5のプロセスは一直線で進むだけでなく、実験をする中で相互に行き来します[4]問題を見つけて何度も繰り返すということは機械学習プロジェクトに於いて非常に重要です。
ABEJA Platformは公式Webにある通り、これらのプロセスを容易にし、機械学習モデルの開発者がアルゴリズム開発(図1の②)に注力できるようになることを目指しているようです。特に、データの収集/管理からデプロイまでを通せるということと、検証サイクルを増やせるということを特徴とされています(図2、公式Web参照)。
また、ストレージ、CPU、GPUなどの計算環境も当然用意されています。
利用してみて感じたABEJA PlatformのPros./Cons.
ここでは、ABEJA Platformを利用してみて長所/短所と感じた点を列挙します。公式Webなどを拝見したところ、ABEJA Platformは図1の①、③、⑤に少なくとも現時点では注力しているサービスであると感じます。今後拡充していく部分は当然あると思いますが、これらの点に注目して現時点での使い勝手を見ていこうと思います。なお、Webサービスとして公開する部分については前回の記事で触れているので、今回はその部分にはあまり触れないつもりです。
次章から、具体的に実装した手順を紹介しながらこれらの点について詳しく紹介していきます。
Pros.
- アノテーションサービスとの連携(図1の①)
- ABEJAさんと直接契約しているアノテータの方々にアノテーション作業を依頼することができます。そのため、高品質なアノテーションデータが期待できます(実際に試してはいないのですが、話を聞く限りとても期待できそうです)。
- ソースコード、学習済みモデル、データセットがひとまとめで管理できる(図1の③)
- 機械学習モデル開発では、データ、モデル構造、ハイパーパラメータを試行錯誤することが必要になります。そのため、これらに加えて学習済みモデルを一纏めで管理していく必要があります[5]管理が雑だとどんなデータ、パラメータで学習したモデルがわからなくなり、効率的に実験を進められないですよね。
- ABEJA Platformでは、学習を実行するとこれらを自動的に一纏めで管理することができますので、いつどの実験を行ったかが容易に確認できます。
- 機械学習モデルの開発を効率的に進めるには、この管理の問題が重要であり、この点は良く考えていらっしゃるなと感じます。
- デプロイが容易、モデルの切り替えがシームレスに行える(図1の⑤)
- 前回の記事に記載していますが、WebAPIとして公開したり、エッジデバイスのデーモンとしてのデプロイが管理コンソールを使って視覚的に実行できます。
- データやハイパーパラメータを変えて学習したモデルを即座に実サービスに適用できます。この点は特別な技術が無くても容易に実現でき、Ops側の方が試行できるため変化に適応するのが容易ではないか感じます。
Cons.
独自のデータセットを使う場合、手順が整備されていない(図1の①)アノテーション作業をABEJA Platformで行えば、データを作成するのは容易とのことですが、独自のデータセットをimportしようとすると結構大変でした。まだドキュメントが整備されていない部分であり、ここは今後整備されるものと思います。← 本記事作成中に手順をQiitaの方にまとめてくださいました!こちらを参照ください。
- デバッグ環境が弱い(図1の②)
- デバッグは正直やりにくいです。ローカル環境でソースコードを作成し、ローカルで数iterationの動作確認するのが最も簡単な手順と思います。
- こちらの記事にあるようにPyCharm(有料版)を利用することでデバッグが容易になるようではあります。
- また、CLIを利用してlocalで学習ができるようになっており、そこで作成されたDockerコンテナに入ってデバッグするという手もあります。
- (2019/05/30追記)Visual Studio CodeがDockerコンテナ内のリモートデバッグ機能をサポートしたということで、VS Codeを使ったデバッグについて解説記事を書いていただきました!こちらを参照ください。
- モデルの評価がやりにくい(図1の④)
- 学習までは容易ですが、学習後のモデルを使って、validationデータで精度評価したり、学習時に交差検証するなどはサポートされていないようです。
- jupyter notebookが使えるので、独自に実装していけば何でもできそうですが、手順の整理をしていただけると助かるなと思います。
Cons.については、記事作成時点(2019年4月)で我々が触ってみたところの感想です。現在も開発は進んでいますし、サンプルコードやドキュメントの整理も日々進んでいます。デバッグ、評価の部分については今後サポートしていく予定と担当の方からも伺っていますので、今後の公式リリースに注目ください。
まとめ
以上、本記事では、ABEJA Platformを利用して、機械学習モデルを学習し、WebAPIとして公開する手順を紹介しました。
前回の記事でも記載しましたが、ABEJA Platformはあくまでプラットフォームであり、実装の制限があまりなく自由に扱えるのは良いですね。 また、ABEJA Platformの特長であるモデルのバージョン管理については、 利用するのは非常に簡単で、モデル、ソースコード、データセット、ハイパーパラメータをセットで管理できるので実験の管理がしやすいと思います。このあたりは、機械学習用プラットフォームと謳っているだけのことはあるなと思います。
一方、2.2節で記載していますが、交差検証やvalidationデータでの評価等が実際の実験では必要になってきます。しかし、それらをサポートする機能は今の所無いように思えます。jupyter notebookが使えたり、学習済みモデルファイルをダウンロードできたりするので、 自分で書いていけばなんでもできはしますが、そこは少しハードルがあるかなと感じました。
終わりに
ABEJA Platformを利用してみたいと思われた方、 問い合わせフォームが用意されていますのでご連絡していただけたらと思います。 また、本記事と合わせて質問等ありましたら弊社でも受けられますので、 お気軽にご連絡いただけたらと思います。
弊社では、様々な機械学習手法を扱いますが、最終的に「活用」ができなければ意味がないと考えています。 業務に合わせたモデル選択と業務アプリケーションとしての実装までをお手伝いさせていただきます。 お気軽にご連絡ください。
また、チョコボールが気になった方は、弊社社員の個人ブログですが、こちらも合わせてご参照いただけたらと思います。
チョコボール統計 – http://chocolate-ball.hatenablog.com
参考文献
[1] Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun. “Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks”, NIPS (2015). [2] Liu, Wei, et al. “SSD: Single Shot MultiBox Detector.” arXiv preprint arXiv:1512.02325 (2015).脚注
↑1 | このブログを読んでいらっしゃるということは、何らかの形で機械学習の取り組みに触れている方だと想像します。 |
---|---|
↑2 | 最近の機械学習アルゴリズムの主流は、モデル構造が複雑(非線形)で、 解析的にパラメータを決めることが困難(あるいは不可能)なケースが多いです。 そのため、探索的なアプローチがよく用いられます。 |
↑3 | バージョンの不整合でライブラリが動かないなんて経験みなさんもありますよね? |
↑4 | 問題を見つけて何度も繰り返すということは機械学習プロジェクトに於いて非常に重要です |
↑5 | 管理が雑だとどんなデータ、パラメータで学習したモデルがわからなくなり、効率的に実験を進められないですよね |
↑6 | 私のことなんですけどね |
↑7 | 学習済みモデルが公開はされていますが、公開されている学習済みモデルには「チョコボール」なんてクラス存在しないので、学習させる必要があります |
↑8 | 概念がわかってしまえば、難しいことは特に無かったです |
↑9 | この記事にあるように有料版のPyCharmを使えばデバッグはできるみたいです |
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント