はじめに
こんにちは。株式会社マネーフォワードで主に機械学習関連の開発をしている安立と申します。
本稿では、グループ会社の HiTTO 株式会社との取り組みにおいて、機械学習推論処理に特化した AWS Inferentia チップを利用して大規模推論環境を構築したことについて、またその際に直面した問題や実現するために行った工夫についてお話したいと思います。
AWS Inferentia チップを弊社は今回初めて利用してみましたが、想像以上に速く利用法も簡単で驚きました。
builders.flash メールメンバー登録
弊社が直面していた課題
まず、AWS Inferentia を採用した理由の前に、本プロジェクトにおいて我々が直面していた課題についてご説明したいと思います。 もともと本プロジェクトは、HiTTO 株式会社が提供しているチャットボットサービスの学習・推論システムリプレースプロジェクトとしてスタートしました。(本稿では学習環境については触れませんが、こちらも Amazon SageMaker Training を利用したものにリプレースしました !) このプロジェクトが始まった当初、我々は以下のような課題を抱いていました。
AWS Inferentia を採用した理由
以上のような課題があるなかで、AWS の方々と相談した結果、候補としてあがったのが AWS Inferentia チップでした。この AWS Inferentia チップは AWS 独自の機械学習推論処理に特化したチップとなっており、 Amazon Elastic Compute Cloud (EC2) Inf1 インスタンスと呼ばれるインスタンスファミリーで利用可能です。 今回、最終的に我々はこの AWS Inferentia を採用することで課題を解決することができました。 AWS Inferentia チップを採用した大きな理由は以下の 3 つでした。
AWS Inferentia を利用する方法
では実際に AWS Inferentia チップを使って推論処理を行う方法をご紹介します。
といっても必要な事前準備としては、推論に利用したいモデルを AWS Inferentia チップで使えるようにコンパイルするだけです。
AWS Inferentia を利用する方法
では実際に AWS Inferentia チップを使って推論処理を行う方法をご紹介します。 といっても必要な事前準備としては、推論に利用したいモデルを AWS Inferentia チップで使えるようにコンパイルするだけです。
AWS Inferentia を使った推論構成
さて、ではこのコンパイルできたモデルを弊社でどのように利用しているかご紹介します。
ECS on EC2 で大量のサービスを並べる
本プロジェクトでは、利用する顧客ごとにモデルを作成・推論環境を提供する必要があるので、モデルは顧客数分存在し、膨大な数になります。実際には ECS on EC2 で、大量のサービスを並べるという手法を選択しています。
AWS Fargate が利用できないので若干のメンテナンスコストはあるものの、開発チームが SageMaker よりも ECS に関する知識・スキルがあった点などを理由にこの手法を選択しました。
大規模推論ならではの工夫したこと
このように多数のモデルを多数の ECS on EC2 で管理して推論サービスを提供するという形をとっていますが、いくつか問題点や詰まった点もありました。
まとめ
株式会社マネーフォワード・HiTTO株式会社において AWS Inferentia チップを活用して大規模推論環境を構築した話をさせていただきました。
いくつかの注意点はありましたが、このように AWS Inferentia を採用することで 短期間に高速な推論サービスを立ち上げることが可能 です。
正直なところ我々も最初は「Inferentia は推論専用チップという触れ込みだが、果たしてそんなに速くなるのか ?」と思っていましたが、今回使ってみてその性能にとても驚きました。
AWS では他にも独自チップの開発が進んでおり、直近では学習専用チップ AWS Traininum というチップを搭載した Trn1 インスタンスがプレビューアナウンスされており、こちらの性能もとても気になるところです !
ここまで読んでくださった方ありがとうございました。
本記事が機械学習サービスにおけるインフラ選定の一助となれば幸いです。
筆者プロフィール
安立 健人 (@ken11)
株式会社マネーフォワード
CTO室 AI推進部
旅するエンジニア。マネーフォワードにて ML 関連システムの開発を担当しています。
趣味で自然言語処理系の事前学習済みモデルの公開等もしています。
最近のマイブームは一晩中 YouTube を見続けることです。

Did you find what you were looking for today?
Let us know so we can improve the quality of the content on our pages