ITエンジニアのための勉強会・イベントレポート情報メディア

AIの軽量化に挑む、フロントエンドでの機械学習の魅力とは!?ストックマークエンジニアインタビュー(1)
skill

AIの軽量化に挑む、フロントエンドでの機械学習の魅力とは!?
ストックマークエンジニアインタビュー(1)

2019.10.18

 
  • このエントリーをはてなブックマークに追加

AIプロダクトが従来のITプロダクトと
大きく異なる点は?

私はチーフエンジニア という役職ですが、特定の領域、プロダクトを担当しているのではなく、すべてのプロダクトに対して、どのような技術を使うべきかを選定していく業務をしています。アーキテクトという言い方の方が近いかもしれません。

ストックマークは、現在3つのAIサービスを提供しています。 組織で使うニュース及びナレッジ共有プラットフォーム「Anews」、大量のテキストデータから経営の戦略的意思決定を強力にサポートする「Astrategy」、社内外のテキストデータや営業日報・商談メモを解析し、営業戦略を支援するサービス「Asales」を提供しています。

エンジニアの視点から見て、このようなAIプロダクトが従来のITプロダクトと大きく異なる点は、桁違いに大きなデータを扱うということです。日々の業務をするのに、何十万行もあるエクセル書類を扱わなければならないような 感覚です。ダウンロードに時間がかかるし、ダウンロードしたあとも、カクカクして使いづらいUIになってしまいます。人工知能の学術研究で精度向上にフォーカスしている場合ならそれで良いですが 、プロダクトとして使っていただくには「速度」は大きな問題になります。

AIプロダクトは、要求される精度を満たすというだけでなく、プロダクトとして現実的な時間内で応答できるようにするという2つの開発課題があるのです。



自然言語AI「BERT」の軽量化に挑戦

この数年で、Google翻訳の精度が格段に上がったことに気がつかれている方も多いでしょう。以前は珍訳も多かったですが、現在では、とても自然な文章に翻訳してくれるようになっています。こうした進歩は近年の自然言語処理領域における機械学習技術の急激な発展によるものです。特に2018年にGoogleが開発した汎用自然言語処理モデル「BERT」は非常に高い推論精度を出しています。しかし、これらの高精度な学習モデルには、サイズがものすごく大きくなるという問題があります。巨大な学習モデルは推論に時間がかかり、またユーザー端末にダウンロードすることもできないので、アウトプットをリアルタイムにユーザーに提供することが困難になります。そこで、私たちは学習モデルの軽量化に挑戦しています。

この軽量化は簡単ではありません。学習モデルを簡略化してサイズを小さくしようとすると、推論精度が落ちる可能性があります。そのため学術分野では精度を落とさず学習モデルサイズを小さくする研究が盛んに行われています。

しかし、プロダクト化という観点で考えると、多少精度を落としてでも、サイズを小さくして速度を向上した方がUXが向上する場合があります。そのため、ユーザーのニーズを考えて、軽量化手法を開発していく必要があります。ニーズによって、学習モデルも当然変わってきますし、「このようなニーズであれば精度は80%程度でもかまわない、それより、応答速度が速いことが求められる」というようにプロダクトによって精度と応答速度のバランスを見ながら、さまざまな軽量化を行なっています。



快適なユーザー体験を実現するには、
いかに通信を早く行うかも重要

学習モデルを軽量化するといっても、急に何百分の1のサイズにできるわけではありません。快適なUX(ユーザー体験)を実現するには、いかに通信を早く行うかも重要になってきます。

サーバーというのは、利用者から距離のあるところに置かれています。この間の通信に時間がかかります。そこで、利用者に地理的に近い場所に サーバーをたくさん立てて、そこで処理をしてしまうというのがCDNです。データのキャッシュをするだけでなく、簡単な機械学習の計算であれば、こうした「近い サーバー」で処理をしてくれるので、高速レスポンスが期待できます。

このCDNは、AWSなど多くのベンダーでサービス提供されていますが、最新の自然言語処理の機械学習エンジンをCDNに乗せた例は、私の知る限りまだありません。概念的には機械学習処理をCDNで実行することは可能なのですが、プロダクト化するにあたっては多くの課題が存在します。ストックマークは、ここに挑戦しています。Astrategyでは、CDNに対応した最初のバージョンをリリースしています。



gRPCやブラウザ機械学習など、
前例のない最先端技術にも取り組む

通信に関する別のアプローチとして、Googleが開発したgRPCを利用したデータフローの最適化があります。gRPCを用いて複数の通信を同時並行で行い、ユーザーとAIがリアルタイムにインタラクションできる仕組みの構築に挑戦しています。

あとは、ブラウザ機械学習。一般的なウェブサイトだと、ブラウザでボタンを押すと、サーバーで何か計算をして、その結果をブラウザに表示します。これに対してストックマークでは、サーバーと通信をせず、ユーザーのPCで機械学習の計算を完結させてしまうような仕組みを構築しています。重いデータをサーバーと通信させる必要がなくなるため、UXの劇的な向上が見込まれます。最近のPCには、高速計算ができるGPUが搭載されているものがあります。また一般的なウェブサイトで使われているJavaScriptプログラムに加えて、より高速な処理を期待できるWebAssemblyプログラムを動作させることができるブラウザが普及しつつあります。これらを利用して、ユーザーのPCで機械学習計算をさせてしまうというのがブラウザ機械学習です。

自然言語を扱う機械学習エンジンを載せたプロダクトでは、こうした技術の利用はほとんど前例がありません。そのために、どのように実現すればいいのかというところから、自分たちで考えなければなりません。ここが面白く、やりがいのあるところです。

特に、フロントエンドエンジニアにとっては、ブラウザでの機械学習は挑戦しがいのある分野だと思います。従来のITシステムでは、ウェブの中だけで、UI/UXをいかによくするかということに集中することができました。しかしAI SaaSでは、バックエンドにおいて、ある機能を提供するための「最小の」システムやデータセットでさえも重すぎてUXが低下するという問題が発生します。UIだけでなく、UXをよくするためには、機械学習エンジニアのチームとの共同作業でデータフローの定義やプログラム開発をすることが必要になってきます。



ストックマークのエンジニアは、
他領域との共同作業が当たり前

ストックマークのエンジニアは、どのポジションであっても、このような他領域との共同作業があたりまえのように生じます。フロントエンドエンジニアはウェブの技術だけではなく、機械学習エンジニアと共同作業ができる程度の知識と経験が必要です。

しかも、AIの軽量化や通信の高速化は、世界中のAIエンジニアが挑戦している領域で、一応の理論は出てきているものの、プロダクト化していくための銀の弾はありません。AIを搭載した実際のSaaS開発では、多領域のエンジニアが集まってディスカッションをして、試行錯誤をしていくという進め方を取らざるを得ません。そのような仕事環境を通じて、自分のスキル領域を自然と広げていくことができます。



お客様がビジネスの現場で使う
プロダクト。価値を常に高め続ける

私たちストックマークは、AIとそれに関連した先進的な技術を非常に積極的に取り入れています。新技術の検討、検証は必ず行います。関連論文を読み込み、研究をし、新しい技術を提案してくれるR&Dチームと各プロダクトチームがディスカッションをして、どのような先端技術を取り入れれば、どのくらいUXが改善されるかということを議論しています。

私たちが、大学か研究所にいて、AIの研究をしているのであれば、UXを考えたり、軽量化に関する先端技術を取り入れたりする必要はありません。朝まで機械学習の計算をさせっぱなしにすればいいだけです。しかし、私たちが開発しているのは、お客様がビジネスの現場で使うプロダクト。お客様が私たちのプロダクトを使う上での価値を常に高め続ける必要があります。そのため、最先端技術に常に挑戦していくことが必須になっています。

お客様がスタート地点であり、お客様がゴール。エンジニアは、世界でまだ誰もやったことがない未知への挑戦ができる。それはサイエンティストとしてもエンジニアとしても、ものすごく楽しく、やりがいのある仕事です。



谷本龍一
ストックマークチーフエンジニア。大学,大学院時はシステム生物学、生物物理学を専攻。修士取得後、ストックマークに参画。プロダクトのシステムアーキテクチャ設計、AIエッジコンピューティング、スクラムマスターとして同社で働く。

AIの軽量化に挑む、フロントエンドでの機械学習の魅力とは!?ストックマークエンジニアインタビュー(1)

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW