こんにちは、株式会社ACESの開発部責任者の久保 (@seishin55) です。
ACESは「アルゴリズムで、社会はもっとシンプルになる。」というビジョンのもと、アルゴリズム事業を展開する会社です。これまで「ヒトの知見を数式化する」ために、画像認識アルゴリズムの開発を特に強みとして開発を行ってきました。さらに現在では、音声認識や自然言語処理といったアルゴリズム領域の開発やソフトウェアプロダクトの開発も行っています。そのため、アルゴリズムのエンジニアのみならず、フロントエンド、サーバーサイド、モバイル、インフラなど様々なポジションのエンジニアが活躍しています。
このように、様々な領域で様々なエンジニアが活躍しているにも関わらず、積極的な外部への情報発信をこれまで行ってきておらず、ACESは「謎の多き組織」になってしまっていました。そこで、ACESで「普段どのような開発が行われているか」、「どのような技術・アルゴリズムに注目しているか」、など、ACESの開発について、社外の方々に知ってもらいたいと思い、エンジニアブログを始めることにしました。
ブログを開設するにあたって、ACESがどのような開発を、どのような考えに基づいて行っているのかを紹介していきたいと思います。
ACESの開発概要
ACESの事業は、Deep Learningを中心としたアルゴリズムの価値を社会に届けるという考えのもと設計されています。事業の形態は、具体的には以下の2つに大別されます。
DXパートナー事業
1つ目の 「DXパートナー事業」は顧客の課題に対して、ACESが伴走して一緒に価値実現していくという形態です。ACESが強みとしているリアル産業では、まだまだアルゴリズムによって価値が出せる余地が大きいものの、実際に事業価値に落とし込むところには依然として難しさがあります。ACESはAIのプロフェッショナルの立場から、パートナーとして一緒にAIを事業に組み込んでいきます。
ところで、アルゴリズムを事業価値に落とし込むのはなぜ難しいのでしょうか? 確かに、2012年にDeep Learningアルゴリズムが注目されはじめ、特にここ数年で、アルゴリズムのパフォーマンスも大きく向上しましたし、様々なライブラリやサービスの登場で手軽にアルゴリズムを使用できるようになってきています。ただ、そのような潮流の中で、事業に簡単にアルゴリズムを組み込めるようになったかというと必ずしもそうではないのが現状かと思います。というのも、実際の現場では、Deep LearningモデルのInput/Ouputだけで完結することは多くなく、最終的な価値から逆算した上で、モデル構築や検証、オペレーションの実装などを行っていく必要があるためです。単にSOTA(State of the art / 最先端)のアルゴリズムを提供することが大事なのではなく、最終的な価値を実現するためのプロセスを回すことが大事だと考えています。ACESではこれを「アルゴリズムバリューデザイン」と呼んでいて、1つのコアコンピタンスになっていると思っています。
なお、「アルゴリズムバリューデザイン」を実現する上で、最先端のアルゴリズムの開発を疎かにしてもいいとは思っていません。むしろ、最先端のアルゴリズムを理解した上で選択できるようにしておく必要があります。つまり、単に精度が少し高いアルゴリズムを盲目的に実装することはやらずに、価値を実現する上で必要なものを選択することが大事だということです。そういった考え方に共感してくださる技術者・研究者の方はACESでチャレンジできることが多々あるので、是非ジョインしてほしいと思います。
アルゴリズムソフトウェア事業
次に、2つ目の「アルゴリズムソフトウェア事業」は、ACESで開発してきたアルゴリズム及びノウハウを生かして、アルゴリズムが組み込まれたソフトウェアを提供していく形態です。「DXパートナー事業」は個社ごとのバリューチェーンを意識した形態ですが、「アルゴリズムソフトウェア事業」では企業問わず、または、業界問わずに顕在化する共通の課題に対するソリューションを提供するところに大きな違いがあります。
例えば、現在、特に力を入れて開発を行っているのが、「ACES Meet」というオンライン商談の共有・解析サービスです。昨今ではオンライン会議が一般的になったことによって、商談等の会議がデジタル化され、活用できる土壌が整ってきており、そこに対するソリューションの提供を行っています。
アルゴリズムを十分に活用するためには、ソフトウェアプロダクトとしてすぐに価値を享受できる状態にして提供することには大きな価値があります。その意味でソフトウェアプロダクトの開発も広義の「アルゴリズムバリューデザイン」のひとつです。プロダクト開発の側面から、どのようにアルゴリズム価値を届けられるかのUXを一緒に創ってみたいという方に是非ジョインしてほしいです。
レバレッジを効かせる開発思想
ACESの開発の特徴のひとつに、レバレッジを効かせる開発を行っていることがあります。元々、プロジェクト型の事業がメインという背景もあり、単にプロジェクトごとに開発を行うだけでは規模の拡大に合わせて、事業は線形にしか伸びていきません。そこで、アルゴリズムをパッケージとしてまとめ上げ、パッケージとしてのアセットの蓄積と提供するアルゴリズムのライセンス提供による積み上げによる非線形な成長を意識して開発を行ってきました。
アルゴリズムパッケージ
現在では社内のパッケージは複数存在するのですが、特に初期から作り上げてきた社内パッケージの一つに、aces-vision
と名付けられたパッケージがあります。このパッケージは動画像系のDeep Learningを中心としたアルゴリズム群が共通の規約の元で実装され、統一されたインターフェース・環境で利用できるようになっています。
例えば以下は、aces-vision
によるクラス分類モデルの推論のサンプルです。モデルを選択して読み込み、モデルの設定や重み (model_hash
として定義)を指定するだけのシンプルなインターフェースでアルゴリズムを簡単に利用できます。このパッケージだけでも数十のアルゴリズムモデルが実装されていて、どのアルゴリズムも同様のやり方で利用可能です。動画での推論や複数のアルゴリズムを連続的に適用するためのラッパーも用意しているため、様々なケースに活用できます。
from acesvision.Classification import BasicModel model = BasicModel(model_hash='BasicModel_xxx_xxx') image = 'path/to/sample.jpg' # 1枚の画像の推論 model(image) # 複数枚の画像の推論 images = [image] * 3 model(images) # [1, 1, 1]
また、学習も以下のようなインターフェースで簡単に実行できます。学習済みの重みを使ったり、学習を再実行したりする各種オプションが実装されていたり、設定ファイルを変更することでオーグメンテーションやロス関数、Optimizerなどを変更できたりします。
from acesvision.Classification import BasicModel model = BasicModel( model_hash='BasicModel_xxx_xxx', dataset_hash='xxx_xxx', training=True, ) # 学習の実行 model.train(initialize='random')
全てのモデルの実装が、ベースとなるクラスを継承してすっきりと実装してあり、学習の実装もPyTorch Lightningのようにシンプルに実装できるように設計しています。そのため、新規のモデルの開発を行う場合も、質の高いアルゴリズムモデルを早く実装できるようになっています。
現在開発を行っている他のアルゴリズムパッケージにもaces-vision
の設計思想は継承されています。
アルゴリズム提供基盤とプロダクト
アルゴリズムを提供するにあたって、以下のようにアルゴリズムパッケージを中心とした技術の展開を考えて開発を行っています。
ACESではアルゴリズムを活用した単独のソフトウェアプロダクトを開発しているわけではなく、複数のソフトウェアプロダクトを開発しています。このような開発をするにあたって、全てを1から作ろうとするとコストが線形に積み上がってしまいます。そこで、ここでもレバレッジを効かせるために、アルゴリズムのソフトウェア利用のためのモジュールを基盤として切り離し、その基盤をプロダクト開発で活用するような疎結合な設計を取っています。これによって、複数のソフトウェアプロダクトを開発するときに、都度、共通の基盤が強化され、新規のプロダクト開発のコストが下がっていきます。これによって、プロダクト開発の回転率を高くすることができます。現在では基盤としては「ACES Platform」と呼んでいる社内のAPIの基盤が中心的に開発されています (どのような設計になっているかは別途記事になる予定です)。
その他にも、オンプレでの提供やモバイルパッケージの提供、エッジデバイスへの展開のための開発なども行っていますが、今後さらに力を入れたい項目となっています。開発思想に共感して、一緒に作り上げていってくださる方を絶賛募集中です。
おわりに
この記事ではACESの開発概要と開発思想についてご紹介しました。開発するアルゴリズムの詳細、基盤やソフトウェアプロダクト開発で使用されている技術の詳細は説明しきれませんでしたが、今後このエンジニアブログで紹介していきたいと思っています。(是非、「読者になる」や「シェア」等して頂けると励みになります!)
また、ACESでは各種ポジションで積極採用を行っています。この記事を読んで、「興味あり!」と思った方は是非応募頂きたいです。アルゴリズムエンジニアも引き続き募集していますし、フロントエンド、バックエンドのエンジニアなど広く募集しています。
ACESのリクルートページはこちら↓
Meetyも開設しているので、とりあえず話を聞いてみたいという方はこちらからどうぞ↓