はじめに
CRO技術部は2020年に発足した比較的新しい部署です。CROってどんな意味でしょう?弊社のCROはComputing Resource Optimization、コンピューティングリソースの最適化という意味で使用しています。さっくりとした言葉ですね。最適化という言葉が言葉の抽象度を上げています。コンピューティングリソースの最適化と言ってもお客様によって要求される仕様が違うのでお客様ごとに最適化の意味合いは異なってくるでしょう。最適化とはいったい何をもって最適化と言うのでしょうか?弊社が引き合いをいただくお客様からは
- このアプリケーションの処理速度を上げたい
- 必要機能を担保した上で消費電力を○○ワットまでに抑えたい
- この処理のレイテンシを○○ミリ秒までに抑えたい
など様々な要求があります。お客様の要求はスループット、レイテンシ、消費電力、コスト等、多岐にわたります。このような多くの要求に応えるためには、それ相応の知識や技術的手段を持っていなくてはなりません。さらに複数の要求が絡み合う案件の場合、全ての要求を最高レベルで満たすことは不可能なので、お客様に満足いただけるレベルの最適解を見つける必要があります。
弊社ではこれまで主にFPGAというコンピューティングリソースを活用しお客様の要求を満たす最適解を導き、様々な案件を成功させてきました。新しく発足したCRO技術部は、今まで強みとしてきたFPGAに、CPUとGPUを加え、これらの異種のコンピューティングリソースの最適利用を旗印に新規市場を開拓する部署として発足されました。
CRO技術部発足の経緯
なぜ扱うコンピューティングリソースを広げ、新規市場を開拓する必要がでてきたのでしょう?それを説明するには少し弊社について説明する必要があります。弊社は、
- RTL設計受託
- 映像コーデックを中心とした IPコア 開発
- そのIPコアとFPGA を活用した映像伝送機器関連のシステム開発
を主な事業としてきました。RTL設計・検証、各社FPGAに向けた合成のノウハウ、ファームウェア開発、ボード開発、筐体開発、の各分野にスペシャリストを擁し、コーデック規格、画像処理に精通している人材も多く在籍しています。特定の市場に対しては日本有数の技術力を擁しており、RTL設計からボード・製品の製造まで行える数少ない企業との自負があります。
しかし近年は主戦場としてきた放送市場の規模縮小等の外部環境の変化により現在の事業範囲のままでは先細りの危険性が高まってきました。中長期的な目線では新規市場開拓は避けられない課題となってきたのです。
ただいきなり新規市場といっても何も分からない市場に勝算なく挑めません。CRO技術部設立当時はサステナブルが提唱され始め、ムーアの法則が崩れると言われ始めた時代でした。チップの集積度は限界に近づいていくものの、近年のアプリケーションの要求はさらに増してきており複雑化しています。このままではアプリケーションの要求にチップの性能が追い付かないという可能性もあり得てきます。我々は日々高まるアプリケーションの要求にどう応えていくべきなのか考えました。
その解としてCPU、GPU、FPGA等の異なる特徴を持ったハードウェアチップを複合的に活用してアプリケーションの最適化設計を行うという考えに至りました。我々はFPGAのRTL設計という一般的にはレアな能力を持っています。さらに弊社の設立当初から培ってきたハードウェア設計経験は、ハードウェアチップ内部の動きを把握し、動作イメージを想像するノウハウにもなっています。CPU、GPUもハードウェアチップであることには変わりありません。これまでのハードウェア設計経験によりCPU、GPU内部を想像しながらのアプリケーション開発が行えることも弊社の強みになります。これらの強みを生かしてリソース最適化を行う、これが弊社におけるCROというコンセプトの始まりになります。
CRO技術部の事業内容
コンピューティングリソースの最適化のために我々が価値を提供できることとして以下の3点を挙げさせていただきます。
- 映像伝送技術を強みとしたソリューション提案
- ハードウェアを含めたリソース最適化
- 様々なアプリケーションを複合的に活用するオーケストレーション技術サポート
① 映像伝送技術を強みとしたソリューション提案
弊社にはハードウェア設計と並ぶもう一つの強みがあります。それは放送業界からも認められている映像伝送技術です。テレビ放送は放送が止まることは許されず、放送業界では多くのテストを通過した信頼性のある製品のみが採用されます。そのような市場で弊社の製品は受け入れられ、それと同時に映像伝送の技術を高めてきました。この映像伝送技術をこれまで我々がターゲットとしてきた市場とは異なる市場に対して還元していくこともCRO技術部の役割の一つとなっています。
例えば、コーデックに関する技術提案をCRO技術部では行っています。映像データ量は大きいのでデータ圧縮されて保存されることが一般的です。圧縮された映像データに対して何かしらの映像処理を行いたい場合は一度データを伸張させる必要があります。これをデコードと呼びます。映像処理後は今度は再度データを圧縮して保存したり他の場所に伝送したりというケースもあるかもしれません。この際行われる圧縮をエンコードと呼びます。我々はエンコード/デコードのコーデックと呼ばれる処理に特に強みを持っています。そしてこのコーデックは映像処理が行われる様々な場所で行われています。
コーデックは近年のOSSの普及に伴い、誰でも簡単に使用できるようになっていますが、知識を持って扱わなければ効率の良い圧縮にならなかったり、必要以上にコンピューティングリソースを消費したりしてしまう可能性があります。CRO技術部ではFFmpegやGStreamer等の既存のフレームワークを活用し、OSSの強みと弊社のノウハウの双方を活かしながら映像処理の最適化を行っています。
また近年は映像AIの技術進歩が目覚ましく、アプリケーションにAIを用いているケースも増えてきています。そしてAIの推論処理は多くのコンピューティングリソースを消費する処理です。推論処理自体はもちろんのこと、映像の伝送や加工等を行う推論の前後処理を含めて効率化しなければアプリケーション全体の最適化にはならないということをこれまでに経験してきました。我々はこれまで培ってきた映像伝送技術のノウハウを生かし、AI推論の前後処理まで含めた最適化の提案も行っています。
② ハードウェアを含めたリソース最適化
お客様からはCPU負荷の大きな処理をハードウェアにオフロードし高速化したいというご要望をよく頂きます。前述したコーデック処理や映像AI処理は負荷の大きな処理の典型例です(もちろんこれらの処理以外の高速化要望もあります)。お客様が最適化を行いたいコンピュータリソースは主にエッジ、クラウド(データセンター)、オンプレミスの大きく3つの領域に分かれます。CRO技術部ではこれらの領域の垣根なくハードウェアまで活用したリソースの最適化を行っています。
エッジ領域は処理がエッジ領域内で完結するため低レイテンシであること、セキュアに実装が可能であること等が特徴です。ただしコンピューティングリソースが限られてしまうため、負荷の大きな処理を行いたい場合は効率的な実装が必須となります。近年はエッジ領域でハードウェア処理を行うためのSystem on Module (SoM) と呼ばれる形態の製品があります。GPUであればNvidia社のJetsonシリーズ、FPGAであればAMD社のKriaシリーズが該当します。これらの製品を使用することで、エッジでも映像AI処理をリアルタイムで動作させることが可能になります。我々は時にはこれらの製品を活用することを候補に入れ、映像伝送や映像AIといった処理の最適化を行っています。
クラウド領域は様々なエッジと接続し、情報を収集することで多くの情報を扱え、尚且つ豊富な種類と量のコンピューティングリソースが揃っているため、扱う情報量に見合った大きな負荷の処理でも行うことができるのが特徴です。AWSであれば、GPUだとAI推論用途でよく使用されるG4インスタンス、FPGAだとF1インスタンスやコーデック処理に特化したVT1インスタンス等もあります。ただし扱うデータや処理負荷が大きいほど実装の難易度は上がります。またクラウド上のサーバを使用する場合、使用時間に応じて課金されることが一般的です。クラウドでは実装の柔軟性が高い分、ただ動けばよいという実装も可能ですが、サーバの使用時間はそのままコストに直結するため、いかに多くのデータを速く処理できるかという効率的な実装が求められます。我々は正しくコンピューティングリソースの知識を持ち、“処理が思い通りに動く”の先にある”コスト効率の良い実装”を心掛けています。
オンプレミスでは自社にサーバを構えることができることから、クラウドでは採用されていない特化用ボードや最新のボードを採用できるのがメリットとなります。我々はAI推論アクセラレータであるAMD社V70、コーデック処理のアクセラレータであるAMD社MA35D等の主に映像処理に特化したアクセラレーションカードを用いたリソース最適化の提案を行っています。これらのボードを用いてお客様の要望に合わせたアプリケーションを提供できることも我々の強みとしています。今後は現在弊社で開発中のアクセラレーションカードや、ASICを採用した最適化を行っていくことも検討中です。
③ 様々なアプリケーションを複合的に活用するオーケストレーション技術サポート
この事業は、②の事業を進めていく上で培ってきたノウハウを活用した事業です。②の事業を進めていく過程で、あることに気づきました。1つの(アクセラレーションカード等の)デバイスでアプリケーションが完結することは稀であると。いくらアクセラレーションカードが扱えて高速化の見通しが立ったとしても、実際にお客様が高速化したいアプリケーションと結合できなければ意味がないのです。
大規模なアプリケーションとなるとその重要性のイメージは容易かと思いますが、エッジ端末等の小規模なアプリケーションを考えても近年はIoTデバイスとして外部と通信可能なケースが多いことから、エッジ端末やデータセンター/クラウド等が密接に連携していることがあります。このようなケースでもアプリケーション同士の結合は必須となります。
これに気づいたことで、コンピューティングリソースの最適化を行いたいのであれば、アプリケーション全体の最適化を行う必要があり、アプリケーション全体の最適化を行いたいのであれば、アプリケーションを複合的に活用する技術の習得は必須であるという考えに至りました。
複数のアプリケーションを管理する技術をオーケストレーションと言います。CRO技術部では具体的にはコンテナオーケストレーションといった技術を日々習得中で、複数のアプリケーションの管理を含めた最適化を行っています。オーケストレーションはオーケストラに由来がある言葉です。オーケストラの指揮者は様々な奏者や楽器の個性を理解し演奏をまとめます。CPU、GPU、FPGAにはそれぞれメリットデメリットがあり個性があります。我々はその個性を十分に理解し適材適所にリソースを活用し最適化を行うことを目指しています。
最後に
CRO技術部発足から数年が立ちましたが、有難いことに引き合いを頂くお客様は増え、現在は監視カメラ解析、ドライブレコーダー解析、自動運転、量子コンピューティング等という分野からリソース最適化の要望を頂き、お客様の課題解決にご協力させていただいています。PoC(Proof of Concept:概念検証)案件も頂いており、世の中の最先端となる技術に先陣を切って関わっているのもCRO技術部の特徴です。発足当時は4人だった部員は現在11人(2024年4月現在)と倍以上になりました。今後もコンピューティングリソースの最適化を旗印に活動を続けてまいります。