見出し画像

アルゴリズム開発の舞台裏、 開発を支えるパッケージ戦略とは

こんにちは、ACESの久野(@nokuuun)です。ACESのメンバーの”声”を伝えるPodcast『Voice of ACES』、今回はACESの開発の特徴、とりわけDeep Learning周りの社内基盤構築について聞いていこうと思います。


画像1

Devチームの組織体制

久野「ではまず3人の自己紹介からお願いします」

久保「久保です、ACESではアルゴリズムの開発責任者をやっています。もともとは松尾研でDeep Learning関係の研究をしていました」

三田村「三田村です。久保、中川と同じく共同創業者という形で参画していて、ソフトウェアエンジニアとして働いています。主にサーバー、インフラ周りを見ています」

中川「共同創業者で取締役の中川です。最近は『Delta』というクライアントさんとの共同DX事業全般の管理や運営などBizサイドがメインですが、もともとDeep Learningの研究を行っていて、アルゴリズム開発にも長く携わってきました」

久野「中川さんは、現在D3(博士課程3年目)なんですよね?」

中川「そうですね、今年を卒業イヤーにしたいです。笑」

久野「今回は、ACESでの開発の特徴、特にDeep Learning周りの社内基盤構築など中心にお話したいと思っています。まずとっかかりとして、いまの組織の体制について概要について教えてください」

久保「ACESは4部署制で動いているんですが、私と三田村は『Dev』の部署として技術基盤の開発を行っています。私がアルゴリズム側の責任を負っていて、三田村がソフトウェア側を担当しています。

アルゴリズム側でいうと、特にHuman Sensing(ヒューマンセンシング)の領域の開発を行っていて、音声認識とか自然言語処理といった他のドメインの開発も行っています。

ACESの中でも特に基盤のアルゴリズムを開発する部署なので、論文実装だったり研究開発的な側面も持ちつつも、ACESのプロジェクト、プロダクトで実際に使えるようなアルゴリズムを開発することが非常に重要になります。

メンバーに関しては、研究をしっかりやってる方が多いです。ただ必ずしもDeep Learningを対象に研究をしているわけではなく、研究のプロセスで培われた検証能力や知見を活かしているメンバーが多くいます」

画像2

久野「Human Sensingという言葉に耳馴染みない方もいらっしゃるかと思うので、簡単に説明をお願いします」

久保「Human Sensingは、人の動き全般を検出する技術なんですけど、例えば顔であれば表情、視線の向き、まばたきなどを検知したり、身体全体の姿勢、動きからどういう行動をしているかなど推定することができます」

久野「三田村さんソフトウェア側についてもご説明お願いします」

三田村「ソフトウェアチームは、開発されたアルゴリズムをより簡単にお客さんに使っていただくための、サービスやプロダクトを作っています。基本的にはサーバー、フロントに分かれており、サーバー側は機械学習のアルゴリズムを動かしてAPIとして渡すところ、フロント側はそれを受け取ってお客さんが触るインターフェースをつくる、ということをやっています。あとはモバイルアプリの開発なども最近は行っています。

ソフトウェアチームのメンバーは、ソフトウェアエンジニアとしてご自身の強みがあるのはもちろんなのですが、機械学習に興味がある、新しい技術をキャッチアップしたいというモチベーションの高い方が多く集まってるかなと思ってます。

直近だとフロントサイドの方が足りていないので絶賛募集中です!」

久野「中川さんは主にDX事業のBizサイドを中心にみてらっしゃいますが、技術サイドとはどういうふうなコミュニケーションとってますか?」

中川「そうですね、私が担当するDeltaチームはクライアントさんとのDX事業を進めるチームなのですが、チームの中のエンジニアとも都度コミュニケーションとりますし、チームの中だけでは完結しないようなACES全体の開発に関わる部分は、Devチームと連携をとっています。

なので特定のプロジェクトの開発設計をエンジニアと考えて設計することもありますし、ACES全体に関わる部分、たとえば『事業の観点からこういう技術が必要になりそうなんだけど、いまある基盤として何が使えそうか』とかもしくは『新しくどういう基盤をつくると良さそうか』などはDevチームと相談して進めています」

画像3

レバレッジを効かせるパッケージ化戦略とは

久野「ACESの特徴としては、DX事業のプロジェクトが複数走りつつ、プロダクトも複数開発している、という点にあると思うのですが、具体的にどのように実現してるんですか?」

久保「ACESの開発思想については、ちょうど先日テックブログにも書いたんですが、レバレッジを効かせるにはどうすればいいかを考えてやっています。創業間もない頃はプロジェクト型の事業がメインだったのですが、開発したアルゴリズムをプロジェクトごとに開発していては事業が線形にしか伸びないので、アルゴリズムが使える形で蓄積するように開発していました。社内でaces-visionと呼んでいるアルゴリズムのパッケージがあるのですが、アルゴリズムを開発していく中ですべてを統一化されたインターフェースのパッケージとしてまとめて誰でも利用できる形で運用しています。そのパッケージを用いて様々なプロジェクトにも対応できるようにしています」

画像4

中川「ACESで必要なDeep Learning技術は一連パッケージ化されてる、と口で言うのは簡単なのですが、いざ実現するとなると大変ではありました。それでもACESとしてそこに取り組んだのは、ひとつひとつの産業課題に向き合い効率的かつ高速に解決していくためにはそういう基盤が必要だと創業のタイミングで考えていたからです。簡単なことではなかったですが、共通化を理念として掲げて、Devチームが強力に推し進めてくれたことで、事業サイドも助かっていると感じています」

久野「パッケージ化、共通化していくにあたっては、個人の書き方の自由度というか、アルゴリズム実装の仕方の自由度とはトレードオフになっているのでしょうか?」

久保「そうですね、パッケージ化するので規約が明確に用意されるので、当然実装の自由度は落ちてくるところはあるかなと思います。ただ、規約があることによって実装しづらくなるかといえばそうとは限らなくて、それに則って書けばアルゴリズムが出来てくるので、高品質なアルゴリズムが早くできるという利点があります。

そして意図したことでもあるのですが、コードの書き方を揃え、実行環境やインターフェースが統一されることで、様々なプロジェクトやプロダクトにすぐに使えます。それによってより本質的な改善やUXの向上に集中できるので、仮に自由度が落ちたとしてもそれ以上のメリットがあると感じています」

中川「Deep Learningのコードって結構書き方が自由というか人それぞれになりやすく、ベストプラクティスが固まりにくいものもあると思うのですが、ACESでは使いやすい形で規約が進化してきたかなと思います。僕自身も研究でコードを書く際に、aces-visionの書き方を参考にするとスッキリ書けますし、ルールによってむしろ助けられてるようにも感じますね」

久保「アルゴリズムの開発されてる方、特にPyTorchとか使ってる方であれば、PyTorch Lightningの便利さはイメージつきやすいかとおもうのですが、それらも参考にしながら書きやすいものを目指しています」

三田村「あとは実行環境も共通性、再現性を意識しています。ACESでは早い段階からDockerを利用した環境構築を導入しているので、サーバーによって実行環境が違うといった問題が起きないようにしてきました」

久野「ソフトウェア開発側もアルゴリズム開発と同様の特徴があるのでしょうか?」

三田村「ソフトウェア開発においては、複数のアプリケーションを素早くつくることが求められており、むしろ個人の書き方を尊重して進めています。ソフトウェア側は言語や思想が人によって大きく違うというのと、それぞれの知見とか経験を活かすほうが開発速度が出るかと考えています。特にフロント側は技術の流行があって新しい技術を試してみたい方もいらっしゃるので、共通化にこだわりすぎずに、そのつど技術選択しています」

久野「話がaces−visionに戻りますが、構築にあたって大変だったことはありますか?」

久保「けっこう大変だったのが正直なところです。もともとaces−visionというパッケージをつくる前からパッケージ化の思想はあったんですが、アルゴリズムごとのパッケージになっていました。いまのaces-visionはすべてのアルゴリズムを統合したパッケージなのですが、統合するには設計を初期の段階から整えないといけなくなります。時間と労力がかなりかかりましたが、現在はアルゴリズムが増えてもパッケージ化されていることで楽になっています」

中川「パッケージングって言うほど簡単ではなくて、パッケージ化するからこその難しさとかメンテナンスの大変さとかも出てくるけど、それを上回るメリットをどう実現するかを久保と頭捻って考えました」

久保「aces-visionに変えるタイミングではほんとに変えていいのか、という議論を何度もしたんですが結果的に変えてよかったなと思っています」

今後の成長戦略

久野「最後に今後の成長戦略や、どういう人に来てほしいか教えてください」

久保「アルゴリズムエンジニアとしては、アルゴリズムによってどう価値を出すかをデザインできる人が合ってると思っています。もちろん最先端のアルゴリズムの実装ができるというスキルも大事なのですが、それと同様、あるいはそれ以上にアルゴリズムを手段として社会実装したものを価値に繋げられることを大事にできる人に来てもらえると嬉しいです。自分の研究を活かしたい、研究の知見を社会実装につなげたい、という人はぜひ来てください!」

三田村「ソフトウェア開発では、今後たくさんのプロダクトを作っていこうと考えています。先程ひとつひとつのプロダクトはあまり共通化していないと言いましたが、共通化できるところは共通化していく予定です。なので既存の開発を続けながら効率化、共通化の仕組みづくりを目指すような、チャレンジングなことをやっていきたい人を積極的に募集しています!」

中川「Deltaチームでいうと、Devチームが作ってくれた強力なアルゴリズムがあるので必ずしも自分がDeep Learningの経験がなくても大丈夫なのですが、技術を使って実際のお客さんの課題と向き合って、生のデータを元に仮説検証して実験繰り返すことが求められるのでそういうことが好きな人、また個別の業界の課題に踏み込んで泥臭い部分も含めて取り組める人は向いてると思います!」

ACESでは積極的に採用を行っています!

ACESでは、積極的に採用を行っています。ACESに興味をもっていただいた方がいらっしゃいましたら、お気軽にご連絡下さい!

メンバーとのカジュアル面談はこちらから↓



この記事が参加している募集

オープン社内報

この記事が気に入ったらサポートをしてみませんか?