
2025.08.01
災害大国・日本に求められる“命しか守れない防災”からの脱却 最長2週間先の気象災害予測による対応策
"Cost-efficient and scalable ML-experiments in AWS with spot-instances, Kubernetes and Horovod"がベストプラクティスだと思う理由(全2記事)
リンクをコピー
記事をブックマーク
大嶋悠司氏(以下、大嶋):結果です。アプリをリリースしましたが、タップしてくれる人は想定以上に少なかったです。さらにバーコード出品の増加率もほとんどなかったです。タップしてくれる人が少ないので、そもそも機能が使われていないので当たり前ですよね。
ここにいる方には当然かなというふうに思いますが、じゃあそのあと計測して改善していこうというフェーズが当然出てきますよねという話です。
今回、機械学習のモデルは、本かどうか。正確には本・DVD・ゲームか、それ以外かという二次分類でしかなくて、Image Classificationのタスクとしては非常に簡単なものでした。なのでちゃんとテストデータセットを用意して精度検証しても90パーセント近いPrecisionが出ています。なのでおそらくはモデルの精度をがんばるフェーズではないだろうという話になります。
じゃあモデルのレイテンシーはどうなのか。ということでいろいろな端末で検証してみましたが、それなりに古い端末でも30ミリsec前後で動いていることがわかりました。ということはそれほど体験を毀損しているとはこの段階では言えないということになります。
じゃあユーザーインターフェースがおかしいんじゃないの? という話になるわけです。まず一番簡単なところでは、ポップを表示している表示時間ですね。最初はデザインの段階で、あんまり長いこと出てくると邪魔に感じるお客さまも多いんじゃないですかねということで、4秒くらいかなというふうに感覚で決めましたが。
4秒って長いの短いの? ということを考えます。実際に各秒数でタップしたお客さまの数を計測します。4秒表示した場合だとこんな感じです。2秒が一番多いんですが、4秒以降ももしかしたらもっといるんじゃないの? という感じのグラフなわけですね。実際に8秒表示してみるとこんな感じに。ああやっぱり。半分くらいのお客さまは4秒じゃ足りなかったんじゃないの。というような結果になるわけです。なので表示時間は延ばしたほうがよさそう。
さらに疑問が出てくるわけです。8秒くらいでタップしているお客さまがいるということは、お客さまってけっこう文言しっかり読んでいるんじゃないの? それでちゃんと伝わっていないんじゃないの? ということが仮説として出てきます。お客さまとのインタラクションは十分ですか? ということですね。最初のバージョンで表示しているポップはこんな感じでした。「本・CD/DVD・ゲームの場合はバーコードで出品できます」と。なるほど。我々はこれでもわかります。なぜならメルカリを作っている人間なので。
でもそもそもバーコード出品をしたことがないお客さまにバーコード出品を使ってほしいという意識からこれを作っていたはずで、バーコードで出品できますってそもそも何を言っているのかわからないじゃないですか? っていうこと。
あとデザインとして、「使用する」というボタンがあるんですけれども、これはボタンだと認識されていないんじゃないの? という非常に単純なところから疑問というか、仮説が立つわけですね。なのでデザインを改善しました。
まず文言を変えました。「商品のバーコードを読み取ると出品に必要な情報を登録できます」と。バーコード出品できますではなくて、バーコード出品するとこんなにいいことがありますよというような文言に変える。ここにボタンがありますよということをわかりやすくする。
非常に簡単な変更ではあります。ただこの改善でもAndroid、iOSともにバーコード出品数増加に貢献しました。実際、デザイン改善前と比べて改善後はその効果が倍以上になっていることが確認できています。改善版はすでにリリースされてすべての端末上で動いているはずなので、ぜひお手元の端末で確認してください。
つまり我々EdgeチームはもともとMLをモバイル上で使う営みをしていたわけではなくて、UXを改善する営みをしているんだということをきちんと意識しようねという話です。
ただそのときに、今回はモデルの精度とかモデルのレイテンシーというのはとくに影響は大きくないだろうという結論になりましたけれども、それらも含めてデザインとすべてを総合的にモニタリングしていきましょうということになります。
一応今やっている話もこのあとにあるんですけれども、時間がちょっとあれなので。駆け足でちょっと。
もっと前の段階から、UXってどういうふうに作っていけるんだろうという話を考えたときに、Googleが出しているPAIRと呼ばれるPeople + AI Researchで言われている話で……。
自動化っていうのと拡張っていうのがあります。AIによって自動化していいタスクと、ユーザーに主導権を任せるんだけれどもAIがサポートするようなUIがありますよね。というような話があります。今回我々はどちらかと言うと拡張というのにフォーカスしてやっていこうとしています。
例えば今メルカリではAI出品というのがあって、写真を撮るとカテゴリとかブランドとか商品名というのを自動で入力してくれます。これは自動化の例ですね。
ただそれだと、何を書くのかわからないお客様には非常に有効になるんですが……。実際出品行動のサポートはは責任を伴う。自分の売上に関わるし。どういうふうな文言を考えたいかというお客さまもビジョンを持っている話になるので……。もうちょっと拡張的なサポートができないかということで、Mercari IMEという機能を現在開発しています。
すでにABテストの最中で、一部のお客様にはこれが表示されている感じです。メルカリ特有のワードをIMEのようなかたちでサジェストする。それによって商品の入力とかを簡単にしていくという機能です。これについては今後どこかで話す予定ですのでまたみなさまにお話できればと思います。
駆け足になりましたが、以上です。ありがとうございます。
上田隼也氏(以下、上田):ありがとうございました。質問です。TensorFlow Liteなどはエッジ文脈で語られることが多いですが、サーバーサイドでも普通にけっこう便利なんじゃないでしょうか? サーバーサイドもTensorFlow Liteでやろうというチャンスはありますか?
大嶋:そうですね。TensorFlow Liteをサーバーサイドでも使うことは可能ではありますが、現状だと、普通にという言い方はアレかもしれないですけれども、TensorFlow Servingでチューニングしたモデルを動かしたほうがサーバーサイドではレイテンシーが低いはずなので、現状サーバーサイドで使うという予定はないですね。
上田:そうですね。あと量子化して速度が短くなっても、うまみがそこまであるのか感もありますね。
大嶋:そうですね。実際、量子化しちゃうと、サーバーも普通のIntelのx86 CPUだと量子化したものよりも普通にFLOAT32でやったほうが速いということになります。ARMのCPUでチューニングされたランタイムだからUINT8のほうが速いということになっていたはずですね。
上田:なるほど、なるほど。次の質問です。わざわざ機械学習を使わなくてもほかのUI/UXの工夫でバーコード出品の利用率をもっと増加できそうな気がするんですけれども、機械学習を使うという意思決定はどういうふうにされたのでしょうか? という質問です。
大嶋:UI/UXの工夫でバーコード出品の利用率を増加できるという施策も、もちろんあります。ただこの施策についてはそもそも我々がまずエッジAI技術を使えるところはないかということで、今紹介したようなかたちで使えるんじゃないかという話で開発が始まったところがあります。
機械学習を使わないでUIのみでバーコード出品を増加させる施策も並列して走っていて、最終的に両方食い合うことはなくて、2つとも機能として載せたほうがバーコード出品の増加率は高いという結果になっているので、両方とも現状は乗せています。
なので機械学習のみでいく意思決定というのは、そもそも回っていなかったです。まあ難しいですよね。機械学習でやったほうがいいということって、実はそんなに多くないので……。意思決定は難しいと思いますね。
上田:そうですね。今回はいい感じに結果が出たからよかったねっていう感じですね。
大嶋:そうですね。
上田:次の質問です。full quantizationの大変な点を伺いたいですという質問ですね。
大嶋:full quantizationだと、さっき言ったように活性化関数が、この値が来たらこれを返すみたいなふうにマップを作らないといけないんですね。その際にRepresentation Datasetっていう、実際に来るであろうデータセットを表現するようなデータのサブセットを作って、それを入れて活性化関数の値を記録していくという作業があります。
そこでちゃんとしたデータセットを作れないと最終的な精度に大きく影響してしまうのと、メルカリの出品の画像のドメインが変わっていたときにそれをやるとモデルのメンテコストが上がるとか、いろいろな問題があったので今回は選んでいません。実際速度的に問題がある場合には、それをやる必要があるかなと思っています。
上田:ありがとうございます。次の質問です。FLOAT32からFLOAT16、もしくはUINT8に変換したモデルの場合、学習速度や予測速度はどれくらい向上するのでしょうか? という質問です。
大嶋:学習時はFLOAT32なので、学習速度は同じです。FLOAT32で学習したモデルをUINT8だったりFLOAT16に落とすということをしますが、推論速度は、モデルの構造にもよりますが、どれくらいだったかなぁ……。すみません、ちょっと私の記憶ですが30パーセントから40パーセントほど高速化したはずです。
上田:なるほど。1.5倍、1.34倍くらいですね。
大嶋:そうですね。なのでFLOAT32だと80ミリsecとかでちょっときつかったのが……あ、違うか。50ミリsecくらいで、もうちょっと短くしたいねということで30ミリsecに落とせたということになります。
上田:次の質問です。iOS、Android、いろいろなバージョンや端末の差分があると思うんですけれども、TensorFlow Liteはそういった違いも全部吸収してくれているのでしょうか? という質問です。
大嶋:そうですね、問題なくと言うか、どちらも一定以上の新しさは必要になります。本当に古い端末だと動かないです。iOSはまだマシなんですよね。バージョンいくつ以上だったらオッケーというくらいになりますけれども。
Androidはそもそも使われているCPUが違ったりするのでアプリ側で、Androidのこのバージョンで、かつCPUがこういうアーキテクチャであるものという指定を書いています。なのですべて吸収してくれるっていうことはないですね。
上田:逆にTensorFlow Lite側は、アプリが落ちるとか、メモリリークしちゃうとか、そういうネガティブなポイントとかってあるんですかね? けっこう扱いに気をつけないといろいろ起きちゃうみたいな……。
大嶋:まず単純に電池消費が激しくなるので、電池消費量はめっちゃ気をつけないといけないポイントです。かなり恐れていたんですけれども、TensorFlow Lite起因での障害というかアプリの劣化というのは、現状は大きくは見られていません。とはいえ今回は写真を撮ってその画像を推論するというワンショットの推論なんですけれども。
例えば、動画にずっとobject detectionをかけ続けるみたいなストリーミング処理を行わせるときは、デモアプリですらけっこうメモリリークを起こしたりしているので注意して見たほうがいいですね。
上田:なるほど、なるほど。
上田:なるほど。では残り2つの質問でちょうどいい感じですかね。エッジ側のモデルをアップデートしようとする場合にどうやってデプロイするんでしょうか? 何が必要なのでしょうか?
それからモデルのマネジメント。エッジで例えば、たぶんこういう質問だと思うんですけれども、モデルをアップデートしたい場合にどうやってコントロールするのかとか。という質問です。
大嶋:エッジ側のモデルのアップデートはそうなんですよ。そのとおりで難しい問題ですよね。今現状、実はさっきのバーコード出品のサジェスト機能は、アプリにモデルを同梱して配布しています。なので単純にアプリのサイズが増えています。
ただモデルのアップデートにアプリのアップデートも必要になるのは今後あまり良くないだろうという話になっているので。そこはあとからCDNから配布するとかする必要があるというふうに考えています。
その場合、なにかしらのメタデータをこちらで用意して、この端末はこういうアトリビュートの、例えばCPUはなにで、Androidバージョンはなにだよみたいな情報をサーバー側に送信して、それにちょうどいいモデルを配布するというような仕組みを現状考えています。
ただ、まあ、これは今考えているところなので、実際運用してみたらどうなるかはちょっとまだわからないですね。
上田:iOS用のTensorFlow LiteとかAndroid用のTensorFlow Liteみたいな?
大嶋:そうですね。それはやっぱりモデルもそれによって違うとかだとかっこいいじゃないですか(笑)。
上田:AIっぽいですよね(笑)。
上田:最後の質問です。学習時にMixed Precisionとかは試されましたか? と質問です。
大嶋:やっていないです。そこらへんまで十分にキャッチアップができていないのでMixed Precisionがどれくらい効果があって、どれくらいよいものなのかというのは、まだちょっと我々のチームでも検証が十分できていないので今回はとくに試していません。
上田:なるほど。じゃあもしみなさんがメルカリをインストールされると、手元に、もう自動的にTensorFlow Liteのモデルがインストールされると。
大嶋:そうですね。10年前とかの端末じゃなければたぶん動くと思います。
上田:いいですね! TensorFlow Liteで最低のAndroidのバージョン保証とかってAndroid5以上とか、そういう感じなんですかね?
大嶋:すみません、今ちょっとすぐには出てこないですが、まあそれくらいです。あとはAndroidのCPUが64じゃないと動かないという制限をかけています。そっちのほうがたぶん強いですね。それで最近のそれなりに新しいスマホということになります。
上田:みなさんもTensorFlow Liteの動きを確かめるためにメルカリをインストールしてもいいかもしれません。
大嶋:ぜひ使ってみてください。
上田:今日はありがとうございました。
大嶋:ありがとうございます。
続きを読むには会員登録
(無料)が必要です。
会員登録していただくと、すべての記事が制限なく閲覧でき、
スピーカーフォローや記事のブックマークなど、便利な機能がご利用いただけます。
すでに会員の方はこちらからログイン
名刺アプリ「Eight」をご利用中の方は
こちらを読み込むだけで、すぐに記事が読めます!
スマホで読み込んで
ログインまたは登録作業をスキップ
2025.09.17
“仕事が遅い人”が会議でやりがちなNG行動 北の達人・木下勝寿氏が教える効率的な打ち合わせ術
2025.09.16
日本人が英語学習で苦戦する根本的原因 「言いたいことの順番」が真逆になる英語と日本語
2025.09.18
「どうしたら英語が上達するか」は日本人特有の悩み 中国人・韓国人との“学ぶ姿勢”の違い
2025.09.17
英語ネイティブは「would」をどう使っているか? 「Do you like〜」と「Would you like〜」の違い
2025.09.16
“できる仕事のキャパが10倍になった” 東証上場社長を変えた習慣「ピッパの法則」の効果
2025.09.17
仕事に雑談は必要なのか? 重要性・効果と、社員同士が話しやすくなるコツを紹介
2025.09.22
「納得しないと動かない」困った部下の対処法 メンバーの主体性を引き出す伝え方
2025.09.10
人生の差は20代で決まる “指示待ち人間”で終わらないために積むべき4つの経験
2025.09.19
もっとも大変な管理職は“プレイング課長” それでもマネジメントを「罰ゲーム」と考えるべきでない理由
2025.09.17
“上司と合わない”ストレスから抜け出すために 会社を辞める前に実践したい思考法
START CAMP 2025
2025.07.18 - 2025.07.19
「リーダー1年目のマネジメント大全」刊行一周年トークイベント ~「優れたリーダー」を大解剖する夜~
2025.07.11 - 2025.07.11
管理職は罰ゲームではなかった!マネジメントスキル、リーダーシップは財産に!
2025.07.31 - 2025.07.31
厚生労働省「健康づくりのための睡眠ガイド2023」の産業現場での活かし方と国の健康睡眠施策トレンド
2025.09.01 - 2025.09.01
後回しを断ち切り“すぐやる人”になる最速メソッド|東証上場社長実践の後回し撲滅法
2025.06.24 - 2025.06.24