AutoMLを使って文章年齢判定アプリを作ろうとしたけど、費用が思いのほか高かったのでリリース辞めた話
クソアプリアドベントカレンダー2021 その1 17日目の記事です。
このアドベントカレンダーを楽しみにしている方には申し訳ないのですが、作りかけたクソアプリのリリースを取りやめることにしました。
ただ、単に辞めてこっそりカレンダーから消すと引っ込みがつかないなと思ったので、過程の記事化と、学んだAutoMLの使い方を特設サイトに書き込んだもののURLをシェアします!
公開したページ
AutoMLを使って文章年齢判定アプリを作ろうとしたけど、費用が思いのほか高かったのでリリース辞めた
表題のとおりです。
いわゆるオジサン構文と呼ばれる文体ってあるじゃないですか?ということは文章を読むと年齢をある程度推察することってできるんじゃないかって思い立ったんですよね。
で、真面目に推察の精度を追い求めると年齢とそれなりの量の文章がセットになったデータセットを用意しないといけないだろうなと思うし、学習ロジックもいろいろと模索しないといけないんだろうなと思った矢先、クソアプリアドベントカレンダーがあるから、精度は度外視で、でもそれっぽく学習プロセスを経ている状態で、何らかの方法で文章を入力したらその文章を書いた人の年齢を当てるクソアプリを開発できないのかな!?と思いました。
(今思うと、文章って年齢に依存しているというより年代に依存しているのかもしれない。今年50歳の人と10年前に50歳の人の文章って必ずしも似ているとは限らないので、学習させるデータを用意するのはその点でも難しいのかも)
Cloud Natural LanguageのAutoMLを以前から触ってみたかったので、これを題材として、AutoMLに適当なデータを突っ込んで学習させたものをWebアプリから呼び出すというアイデアで、AutoMLのドキュメントを読むところからスタートしました。
ドキュメントが大変わかりやすく、シンプルに言うと特定の形式でCSV作って一定量以上のデータを突っ込んだら学習してくれますよ、というものでした。
ということでSNSや口コミサイトを漁って、年代別に文章を集めてCSV化したあと、GCPの管理画面から読み込んで学習させてみました。
そしてできあがったモデルは、AutoMLのSDKを通して容易にアクセスでき、Next.jsのAPI Routes機能を使ってセキュアに環境情報を取り扱ってテキストデータをリクエストすると年齢を予測して返してくれるところまで案外あっさり進みました。
しかし・・・
1日で1,500円!?
ふだんGCPはほとんど使っていないのですが、念のために価格アラートを仕込んでおいたことで、アラートがメールアドレス宛に飛んできました。
そこで初めて、「あ、Pricing調べるの忘れてたわ」ということに気がついたのです。慌てて見てみると。
トレーニングが時間あたり3.30ドルかかることがわかりました。たしかに4時間くらい掛かっていたので、それくらいの金額感になるのは納得がいきます。
続いて予測のほうですが、1,000件あたり5ドルとなっています。当然とはいえ、案外馬鹿にならない金額な気がします。別にバズらなければ大した金額にならないと思いますが、逆に言えばAutoMLを使っていますと公言したら、同時に予測するほど僕が破産することを伝えているようなものになるからです。
対策として、裏側でSupabaseなど適当な永続化ストアを使って一定件数以上リクエストが来たらそれ以上は利用を止める、といった実装をしてもよかったのですが、なんだか馬鹿らしい気がしてきたのと、一番はそこまで組む時間がありませんでした(汗
あと、導入が1時間あたり0.05ドルとなっており、これはモデルがデプロイされたまま放置していてもこのペースでお金がかかるということです(それも言われてみればそうかって思いますが)。
総じて、モデルの学習にお金がかかるのはなんとなく想定していたものの意外とハイペースで利用費が掛かるのと、当然ながらデプロイ後もずっと管理下に置かれるのでサーバー費用の感覚で継続的に代金が掛かるのが想定外でした。
何も残さないのもあれなので、特設ページをリリースした
せっかく作りかけたソースがあるので、そのソースにAutoMLの使い方をスクショとともに解説したLPをくっつけてリリースしておきました。
よかったらぜひ御覧ください!
教訓
- 機械学習は意外と高いよ
- 未知のサービスを使うときは、たとえクソアプリであろうと価格を見ておこう
Discussion